@@ -303,8 +303,6 @@ class DatePicker extends UI5Element {
303
303
allowTargetOverlap : true ,
304
304
stayOpenOnScroll : true ,
305
305
afterClose : ( ) => {
306
- const calendar = this . responsivePopover . querySelector ( `#${ this . _id } -calendar` ) ;
307
-
308
306
this . _isPickerOpen = false ;
309
307
310
308
if ( isPhone ( ) ) {
@@ -315,13 +313,20 @@ class DatePicker extends UI5Element {
315
313
this . _focusInputAfterClose = false ;
316
314
}
317
315
318
- calendar . _hideMonthPicker ( ) ;
319
- calendar . _hideYearPicker ( ) ;
316
+ const calendar = this . responsivePopover . querySelector ( `#${ this . _id } -calendar` ) ;
317
+ if ( calendar ) {
318
+ calendar . _hideMonthPicker ( ) ;
319
+ calendar . _hideYearPicker ( ) ;
320
+ }
320
321
} ,
321
322
afterOpen : ( ) => {
322
323
const calendar = this . responsivePopover . querySelector ( `#${ this . _id } -calendar` ) ;
323
- const dayPicker = calendar . shadowRoot . querySelector ( `#${ calendar . _id } -daypicker` ) ;
324
324
325
+ if ( ! calendar ) {
326
+ return ;
327
+ }
328
+
329
+ const dayPicker = calendar . shadowRoot . querySelector ( `#${ calendar . _id } -daypicker` ) ;
325
330
const selectedDay = dayPicker . shadowRoot . querySelector ( ".ui5-dp-item--selected" ) ;
326
331
const today = dayPicker . shadowRoot . querySelector ( ".ui5-dp-item--now" ) ;
327
332
let focusableDay = selectedDay || today ;
@@ -346,7 +351,7 @@ class DatePicker extends UI5Element {
346
351
} ;
347
352
348
353
this . _calendar = {
349
- onSelectedDatesChange : this . _handleCalendarSelectedDatesChange . bind ( this ) ,
354
+ onSelectedDatesChange : this . _handleCalendarChange . bind ( this ) ,
350
355
selectedDates : [ ] ,
351
356
} ;
352
357
@@ -534,6 +539,18 @@ class DatePicker extends UI5Element {
534
539
return this . i18nBundle . getText ( INPUT_SUGGESTIONS_TITLE ) ;
535
540
}
536
541
542
+ get phone ( ) {
543
+ return isPhone ( ) ;
544
+ }
545
+
546
+ get showHeader ( ) {
547
+ return this . phone ;
548
+ }
549
+
550
+ get showFooter ( ) {
551
+ return this . phone ;
552
+ }
553
+
537
554
getFormat ( ) {
538
555
if ( this . _isPattern ) {
539
556
this . _oDateFormat = DateFormat . getInstance ( {
@@ -579,6 +596,10 @@ class DatePicker extends UI5Element {
579
596
return this . i18nBundle . getText ( DATEPICKER_OPEN_ICON_TITLE ) ;
580
597
}
581
598
599
+ get openIconName ( ) {
600
+ return "appointment-2" ;
601
+ }
602
+
582
603
get dateAriaDescription ( ) {
583
604
return this . i18nBundle . getText ( DATEPICKER_DATE_ACC_TEXT ) ;
584
605
}
@@ -596,35 +617,49 @@ class DatePicker extends UI5Element {
596
617
return ! this . disabled && ! this . readonly ;
597
618
}
598
619
599
- _handleCalendarSelectedDatesChange ( event ) {
620
+ _handleCalendarChange ( event ) {
600
621
const iNewValue = event . detail . dates && event . detail . dates [ 0 ] ;
601
622
602
623
if ( this . _calendar . selectedDates . indexOf ( iNewValue ) !== - 1 ) {
603
624
this . closePicker ( ) ;
604
- return ;
625
+ return false ;
605
626
}
606
627
607
- this . value = this . getFormat ( ) . format (
608
- new Date ( CalendarDate . fromTimestamp (
609
- iNewValue * 1000 ,
610
- this . _primaryCalendarType
611
- ) . valueOf ( ) ) ,
612
- true
613
- ) ;
614
- this . _calendar . timestamp = iNewValue ;
628
+ const fireChange = this . _handleCalendarSelectedDatesChange ( event , iNewValue ) ;
629
+
630
+ if ( fireChange ) {
631
+ this . fireEvent ( "change" , { value : this . value , valid : true } ) ;
632
+ // Angular two way data binding
633
+ this . fireEvent ( "value-changed" , { value : this . value , valid : true } ) ;
634
+ }
635
+
636
+ this . closePicker ( ) ;
637
+ }
638
+
639
+ _handleCalendarSelectedDatesChange ( event , newValue ) {
640
+ this . _updateValueCalendarSelectedDatesChange ( newValue ) ;
641
+
642
+ this . _calendar . timestamp = newValue ;
615
643
this . _calendar . selectedDates = event . detail . dates ;
616
644
this . _focusInputAfterClose = true ;
617
- this . closePicker ( ) ;
618
645
619
646
if ( this . isInValidRange ( this . _getTimeStampFromString ( this . value ) ) ) {
620
647
this . valueState = ValueState . None ;
621
648
} else {
622
649
this . valueState = ValueState . Error ;
623
650
}
624
651
625
- this . fireEvent ( "change" , { value : this . value , valid : true } ) ;
626
- // Angular two way data binding
627
- this . fireEvent ( "value-changed" , { value : this . value , valid : true } ) ;
652
+ return true ;
653
+ }
654
+
655
+ _updateValueCalendarSelectedDatesChange ( newValue ) {
656
+ this . value = this . getFormat ( ) . format (
657
+ new Date ( CalendarDate . fromTimestamp (
658
+ newValue * 1000 ,
659
+ this . _primaryCalendarType
660
+ ) . valueOf ( ) ) ,
661
+ true
662
+ ) ;
628
663
}
629
664
630
665
/**
0 commit comments