77 OnDestroy
88} from "@angular/core" ;
99import { FlatpickrOptions } from "ng2-flatpickr" ;
10+ import flatpickr from "flatpickr" ;
1011import rangePlugin from "flatpickr/dist/plugins/rangePlugin" ;
1112
12-
1313@Component ( {
1414 selector : "ibm-date-picker" ,
1515 template : `
@@ -41,7 +41,7 @@ import rangePlugin from "flatpickr/dist/plugins/rangePlugin";
4141 [invalid]="invalid"
4242 [invalidText]="invalidText"
4343 [skeleton]="skeleton"
44- (valueChange)="valueChange.emit ($event)">
44+ (valueChange)="onInputValueChange ($event, 0 )">
4545 </ibm-date-picker-input>
4646 </div>
4747
@@ -57,7 +57,7 @@ import rangePlugin from "flatpickr/dist/plugins/rangePlugin";
5757 [invalid]="invalid"
5858 [invalidText]="invalidText"
5959 [skeleton]="skeleton"
60- (valueChange)="valueChange.emit ($event)">
60+ (valueChange)="onInputValueChange ($event, 1 )">
6161 </ibm-date-picker-input>
6262 </div>
6363 </div>
@@ -87,11 +87,11 @@ export class DatePicker implements OnDestroy {
8787
8888 @Input ( ) placeholder = "mm/dd/yyyy" ;
8989
90- @Input ( ) pattern = "\d{1,2}/\d{1,2}/\d{4}" ;
90+ @Input ( ) pattern = "\\ d{1,2}/\\ d{1,2}/\ \d{4}" ;
9191
9292 @Input ( ) id = `datepicker-${ DatePicker . datePickerCount ++ } ` ;
9393
94- @Input ( ) value : Array < any > ;
94+ @Input ( ) value : Array < any > = [ ] ;
9595
9696 @Input ( ) theme : "light" | "dark" = "dark" ;
9797
@@ -175,6 +175,22 @@ export class DatePicker implements OnDestroy {
175175 } ) ;
176176 }
177177
178+ onInputValueChange ( event : string , index : number ) : void {
179+ const eventDate = flatpickr . parseDate ( event , this . dateFormat , true ) ;
180+ const previousDate = flatpickr . parseDate ( this . value [ index ] , this . dateFormat , true ) ;
181+ if ( eventDate ) {
182+ if ( ! previousDate || previousDate . getTime ( ) !== eventDate . getTime ( ) ) {
183+ this . value = [ ...this . value ] ;
184+ this . value [ index ] = eventDate ;
185+ }
186+ } else {
187+ if ( previousDate || event ) {
188+ this . value = [ ...this . value ] ;
189+ this . value [ index ] = undefined ;
190+ }
191+ }
192+ }
193+
178194 ngOnDestroy ( ) {
179195 // clean up our flatpickr element - needed because the wrapper doesn't handle this
180196 const ng2FlatPickrElement = this . elementRef . nativeElement . querySelector ( ".ng2-flatpickr-input-container" ) ;
0 commit comments