11import Data from "../../modules/data.js"
2+ import EventHandler from "../../modules/event-handler.js"
23import Popover from "../../modules/base-popover.js"
34
45export function init ( id , invoke , options ) {
@@ -18,11 +19,27 @@ export function init(id, invoke, options) {
1819 }
1920 }
2021 } ) ;
22+ const input = el . querySelector ( '.datetime-picker-input' ) ;
2123 const dateTimePicker = {
22- el ,
24+ input ,
2325 popover
2426 }
25- Data . set ( id , dateTimePicker )
27+ Data . set ( id , dateTimePicker ) ;
28+
29+ EventHandler . on ( input , 'keydown' , e => {
30+ if ( e . key === 'Tab' && popover . isShown ( ) ) {
31+ popover . hide ( ) ;
32+ }
33+ } ) ;
34+ EventHandler . on ( input , 'keyup' , e => {
35+ if ( e . key === 'Escape' ) {
36+ popover . hide ( ) ;
37+ input . blur ( ) ;
38+ }
39+ else if ( e . key === 'Tab' ) {
40+ popover . show ( ) ;
41+ }
42+ } ) ;
2643}
2744
2845export function hide ( id ) {
@@ -37,6 +54,9 @@ export function dispose(id) {
3754 Data . remove ( id )
3855
3956 if ( data ) {
40- Popover . dispose ( data . popover )
57+ const { input, popover } = data ;
58+ EventHandler . off ( input , 'keydown' ) ;
59+ EventHandler . off ( input , 'keyup' ) ;
60+ Popover . dispose ( popover )
4161 }
4262}
0 commit comments