@@ -29,8 +29,14 @@ export function init(id, invoke, options) {
2929 const menu = popover . toggleMenu ;
3030 const key = e . key ;
3131 if ( key === "Enter" || key === 'NumpadEnter' ) {
32- menu . classList . remove ( 'show' )
33- let index = indexOf ( el , activeItem )
32+ if ( popover . isPopover ) {
33+ popover . hide ( ) ;
34+ }
35+ else {
36+ menu . classList . remove ( 'show' ) ;
37+ }
38+ const activeItem = menu . querySelector ( '.active' ) ;
39+ let index = indexOf ( menu , activeItem )
3440 invoke . invokeMethodAsync ( confirmMethodCallback , index )
3541 }
3642 else if ( key === 'ArrowUp' || key === 'ArrowDown' ) {
@@ -64,7 +70,9 @@ export function init(id, invoke, options) {
6470 }
6571
6672 EventHandler . on ( el , 'shown.bs.dropdown' , shown ) ;
67- EventHandler . on ( el , 'keydown' , keydown )
73+
74+ const input = el . querySelector ( `#${ id } _input` ) ;
75+ EventHandler . on ( input , 'keydown' , keydown )
6876
6977 const onSearch = debounce ( async v => {
7078 search . parentElement . classList . add ( 'l' ) ;
@@ -73,6 +81,7 @@ export function init(id, invoke, options) {
7381 } ) ;
7482 if ( search ) {
7583 Input . composition ( search , onSearch ) ;
84+ EventHandler . on ( search , 'keydown' , keydown ) ;
7685 }
7786
7887 const select = {
@@ -123,10 +132,15 @@ export function dispose(id) {
123132 Data . remove ( id )
124133
125134 if ( select ) {
126- EventHandler . off ( select . el , 'shown.bs.dropdown' )
127- EventHandler . off ( select . el , 'keydown' ) ;
128- Popover . dispose ( select . popover )
129- Input . dispose ( select . search ) ;
135+ const { el, popover, search } = select
136+ EventHandler . off ( el , 'shown.bs.dropdown' )
137+ EventHandler . off ( el , 'keydown' ) ;
138+ Popover . dispose ( popover ) ;
139+
140+ if ( search ) {
141+ Input . dispose ( search ) ;
142+ EventHandler . off ( search , 'keydown' ) ;
143+ }
130144 }
131145}
132146
0 commit comments