@@ -33,7 +33,6 @@ import {
33
33
} from "@ui5/webcomponents-base/dist/Keys.js" ;
34
34
import UI5Date from "@ui5/webcomponents-localization/dist/dates/UI5Date.js" ;
35
35
import type Popover from "./Popover.js" ;
36
- import type ResponsivePopover from "./ResponsivePopover.js" ;
37
36
import TimePickerTemplate from "./TimePickerTemplate.js" ;
38
37
import type DateTimeInput from "./DateTimeInput.js" ;
39
38
import type { InputAccInfo } from "./Input.js" ;
@@ -314,6 +313,12 @@ class TimePicker extends UI5Element implements IFormInputElement {
314
313
@query ( "[ui5-time-selection-clocks]" )
315
314
_timeSelectionClocks ?: TimeSelectionClocks ;
316
315
316
+ @query ( "[ui5-popover]" )
317
+ _inputsPopover ! : Popover ;
318
+
319
+ @query ( "[ui5-datetime-input]" )
320
+ _dateTimeInput ! : DateTimeInput ;
321
+
317
322
tempValue ?: string ;
318
323
319
324
@i18n ( "@ui5/webcomponents" )
@@ -408,12 +413,19 @@ class TimePicker extends UI5Element implements IFormInputElement {
408
413
return ! isDesktop ( ) && ( isPhone ( ) || isTablet ( ) ) ;
409
414
}
410
415
416
+ get shouldDisplayValueStateMessageInResponsivePopover ( ) {
417
+ return this . hasValueStateText && ! this . _inputsPopover ?. open ;
418
+ }
419
+
411
420
onTimeSelectionChange ( e : CustomEvent < TimeSelectionChangeEventDetail > ) {
412
421
this . tempValue = e . detail . value ; // every time the user changes the time selection -> update tempValue
413
422
}
414
423
415
424
_togglePicker ( ) {
416
425
this . open = ! this . open ;
426
+ if ( this . _isMobileDevice ) {
427
+ this . _inputsPopover . open = false ;
428
+ }
417
429
}
418
430
419
431
submitPickers ( ) {
@@ -445,7 +457,7 @@ class TimePicker extends UI5Element implements IFormInputElement {
445
457
*/
446
458
openInputsPopover ( ) {
447
459
this . tempValue = this . value && this . isValid ( this . value ) ? this . value : this . getFormat ( ) . format ( UI5Date . getInstance ( ) ) ;
448
- const popover = this . _getInputsPopover ( ) ;
460
+ const popover = this . _inputsPopover ;
449
461
popover . opener = this ;
450
462
popover . open = true ;
451
463
this . _isInputsPopoverOpen = true ;
@@ -457,7 +469,7 @@ class TimePicker extends UI5Element implements IFormInputElement {
457
469
* @returns Resolves when the Inputs popover is closed
458
470
*/
459
471
closeInputsPopover ( ) {
460
- const popover = this . _getInputsPopover ( ) ;
472
+ const popover = this . _inputsPopover ;
461
473
popover . open = false ;
462
474
}
463
475
@@ -483,7 +495,7 @@ class TimePicker extends UI5Element implements IFormInputElement {
483
495
}
484
496
485
497
onInputsPopoverAfterOpen ( ) {
486
- const popover = this . _getInputsPopover ( ) ;
498
+ const popover = this . _inputsPopover ;
487
499
popover . querySelector < TimeSelectionInputs > ( "[ui5-time-selection-inputs]" ) ! . _addNumericAttributes ( ) ;
488
500
}
489
501
@@ -560,20 +572,8 @@ class TimePicker extends UI5Element implements IFormInputElement {
560
572
return ! this . disabled && this . _isMobileDevice ;
561
573
}
562
574
563
- _getPopover ( ) {
564
- return this . shadowRoot ! . querySelector < ResponsivePopover > ( "[ui5-responsive-popover]" ) ! ;
565
- }
566
-
567
- _getInputsPopover ( ) {
568
- return this . shadowRoot ! . querySelector < Popover > ( "[ui5-popover]" ) ! ;
569
- }
570
-
571
- _getDateTimeInput ( ) : DateTimeInput {
572
- return this . shadowRoot ! . querySelector < DateTimeInput > ( "[ui5-datetime-input]" ) ! ;
573
- }
574
-
575
575
_getInputField ( ) {
576
- const input = this . _getDateTimeInput ( ) ;
576
+ const input = this . _dateTimeInput ;
577
577
return input && input . getInputDOMRef ( ) ;
578
578
}
579
579
@@ -588,7 +588,7 @@ class TimePicker extends UI5Element implements IFormInputElement {
588
588
589
589
const target = e . target as HTMLElement ;
590
590
591
- if ( target && this . open && this . _getDateTimeInput ( ) . id === target . id && ( isTabNext ( e ) || isTabPrevious ( e ) || isF6Next ( e ) || isF6Previous ( e ) ) ) {
591
+ if ( target && this . open && this . _dateTimeInput . id === target . id && ( isTabNext ( e ) || isTabPrevious ( e ) || isF6Next ( e ) || isF6Previous ( e ) ) ) {
592
592
this . _togglePicker ( ) ;
593
593
}
594
594
if ( this . open ) {
@@ -703,15 +703,15 @@ class TimePicker extends UI5Element implements IFormInputElement {
703
703
* Hides mobile device keyboard by temporary setting the input to readonly state.
704
704
*/
705
705
_hideMobileKeyboard ( ) {
706
- this . _getDateTimeInput ( ) . readonly = true ;
707
- setTimeout ( ( ) => { this . _getDateTimeInput ( ) . readonly = false ; } , 0 ) ;
706
+ this . _dateTimeInput . readonly = true ;
707
+ setTimeout ( ( ) => { this . _dateTimeInput . readonly = false ; } , 0 ) ;
708
708
}
709
709
710
710
_onfocusin ( e : FocusEvent ) {
711
711
if ( this . _isMobileDevice ) {
712
712
this . _hideMobileKeyboard ( ) ;
713
713
if ( this . _isInputsPopoverOpen ) {
714
- const popover = this . _getInputsPopover ( ) ;
714
+ const popover = this . _inputsPopover ;
715
715
popover . applyFocus ( ) ;
716
716
}
717
717
e . preventDefault ( ) ;
@@ -754,6 +754,10 @@ class TimePicker extends UI5Element implements IFormInputElement {
754
754
return this . valueState !== ValueState . None ;
755
755
}
756
756
757
+ get shouldDisplayValueStateMessageOnDesktop ( ) {
758
+ return this . valueStateMessage . length > 0 && ! this . open && ! this . _isMobileDevice ;
759
+ }
760
+
757
761
get classes ( ) {
758
762
return {
759
763
popover : {
0 commit comments