Skip to content
This repository was archived by the owner on Mar 2, 2018. It is now read-only.

Commit c5187cd

Browse files
author
Antoine WEBER
committed
ADD directive output to know when the component close
1 parent ff12391 commit c5187cd

File tree

2 files changed

+29
-21
lines changed

2 files changed

+29
-21
lines changed

app/directive-test.component.ts

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ moment['locale']('en-ca'); //e.g. fr-ca
1010
var templateStr = `
1111
<div id="my-div">
1212
<h1>Ng2 DateTime Picker Test</h1>
13-
13+
1414
<fieldset id="test1"><legend><h2>Open from a button</h2></legend>
1515
<ng2-utils-1>
1616
<input [(ngModel)]="date1" />
@@ -22,11 +22,11 @@ var templateStr = `
2222
date1: {{date1}}
2323
<pre>{{templateStr | htmlCode:'ng2-utils-1'}}</pre>
2424
</fieldset>
25-
25+
2626
<fieldset id="test2"><legend><h2>min date, max date, disabled dates</h2></legend>
2727
<ng2-utils-2>
2828
<input
29-
[(ngModel)]="date2"
29+
[(ngModel)]="date2"
3030
ng2-datetime-picker
3131
[disabled-dates]="date2DisabledDates"
3232
[min-date]="date2MinDate"
@@ -37,37 +37,38 @@ var templateStr = `
3737
<a href="javascript:void(0)" (click)="myDate=defaultValue">set myDate</a><br/>
3838
<pre>{{templateStr | htmlCode:'ng2-utils-2'}}</pre>
3939
</fieldset>
40-
40+
4141
<fieldset id="test3"><legend><h2>time only</h2></legend>
4242
<ng2-utils-4>
4343
<input [(ngModel)]="date3"
44-
ng2-datetime-picker
44+
ng2-datetime-picker
4545
date-format="DD-MM-YYYY hh:mm"
4646
time-only="true"
4747
minute-step="5"
48+
(popupClosed)="doOnClose($event)"
4849
close-on-select="false" />
4950
</ng2-utils-4>
5051
<pre>{{templateStr | htmlCode:'ng2-utils-4'}}</pre>
5152
</fieldset>
52-
53+
5354
<fieldset id="test4"><legend><h2>with timezone</h2></legend>
5455
<ng2-utils-6>
55-
<input
56-
[(ngModel)]="date4"
56+
<input
57+
[(ngModel)]="date4"
5758
ng2-datetime-picker
5859
[date-format]="date4TimezoneFormat" />
5960
dateWithTimezone: {{dateWithTimezone}}
6061
<br/>
6162
</ng2-utils-6>
6263
<pre>{{templateStr | htmlCode:'ng2-utils-6'}}</pre>
6364
</fieldset>
64-
65+
6566
<fieldset id="test5"><legend><h2>Reactive form</h2></legend>
6667
<ng2-utils-3>
6768
<form [formGroup]="myForm">
68-
<input
69+
<input
6970
required
70-
formControlName="date"
71+
formControlName="date"
7172
ng2-datetime-picker
7273
close-on-select="false"/>
7374
</form>
@@ -76,7 +77,7 @@ var templateStr = `
7677
<br/>myForm.dirty: {{myForm.dirty}}
7778
<br/>myForm.controls.date.dirty: {{myForm.controls.date.dirty}}
7879
<br/>
79-
<a href="javascript:void()"
80+
<a href="javascript:void()"
8081
(click)="myForm.controls.date.patchValue('2015-06-30')">
8182
2015-06-30
8283
</a>
@@ -91,7 +92,7 @@ var templateStr = `
9192
</ng2-utils-3>
9293
<pre>{{templateStr | htmlCode:'ng2-utils-3'}}</pre>
9394
</fieldset>
94-
95+
9596
</div>
9697
`;
9798

@@ -136,4 +137,8 @@ export class DirectiveTestComponent {
136137
//moment.tz.setDefault('US/Central'); // Set the default timezone that moment will use
137138
}
138139

140+
private doOnClose(event:boolean){
141+
alert(" Do something on close ");
142+
}
143+
139144
}

src/ng2-datetime-picker.directive.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export class Ng2DatetimePickerDirective implements OnInit, OnChanges {
4848
@Input('ngModel') ngModel: any;
4949
@Output('ngModelChange') ngModelChange = new EventEmitter();
5050
@Output('valueChanged') valueChanged = new EventEmitter();
51+
@Output('popupClosed') popupClosed = new EventEmitter();
5152

5253
private el: HTMLInputElement; /* input element */
5354
private ng2DatetimePickerEl: HTMLElement; /* dropdown element */
@@ -233,7 +234,7 @@ export class Ng2DatetimePickerDirective implements OnInit, OnChanges {
233234
component.closing$.subscribe(() => {
234235
this.closeOnSelect !== "false" && this.hideDatetimePicker();
235236
});
236-
237+
237238
//Hack not to fire tab keyup event
238239
this.justShown = true;
239240
setTimeout(() => this.justShown = false, 100);
@@ -246,19 +247,21 @@ export class Ng2DatetimePickerDirective implements OnInit, OnChanges {
246247

247248
hideDatetimePicker = (event?):void => {
248249
if (this.componentRef) {
249-
if ( /* invoked by clicking on somewhere in document */
250-
event &&
250+
if (
251+
/* invoked by clicking on somewhere in document */
252+
(event &&
251253
event.type === 'click' &&
252254
event.target !== this.el &&
253-
!this.elementIn(event.target, this.ng2DatetimePickerEl)
255+
!this.elementIn(event.target, this.ng2DatetimePickerEl))
256+
|| 
257+
/* invoked by function call */
258+
!event
254259
) {
255260
this.componentRef.destroy();
256261
this.componentRef = undefined;
257-
} else if (!event) { /* invoked by function call */
258-
this.componentRef.destroy();
259-
this.componentRef = undefined;
262+
this.popupClosed.emit(true);
260263
}
261-
event && event.stopPropagation();
264+
event && event.stopPropagation();
262265
}
263266
};
264267

0 commit comments

Comments
 (0)