@@ -6,6 +6,7 @@ export default class Combobox {
6
6
input : HTMLTextAreaElement | HTMLInputElement
7
7
keyboardEventHandler : ( event : KeyboardEvent ) => void
8
8
compositionEventHandler : ( event : Event ) => void
9
+ inputHandler : ( event : Event ) => void
9
10
10
11
constructor ( input : HTMLTextAreaElement | HTMLInputElement , list : HTMLElement ) {
11
12
this . input = input
@@ -20,6 +21,7 @@ export default class Combobox {
20
21
21
22
this . keyboardEventHandler = event => keyboardBindings ( event , this )
22
23
this . compositionEventHandler = event => trackComposition ( event , this )
24
+ this . inputHandler = this . clearSelection . bind ( this )
23
25
input . setAttribute ( 'role' , 'combobox' )
24
26
input . setAttribute ( 'aria-controls' , list . id )
25
27
input . setAttribute ( 'aria-expanded' , 'false' )
@@ -42,6 +44,7 @@ export default class Combobox {
42
44
this . input . setAttribute ( 'aria-expanded' , 'true' )
43
45
this . input . addEventListener ( 'compositionstart' , this . compositionEventHandler )
44
46
this . input . addEventListener ( 'compositionend' , this . compositionEventHandler )
47
+ this . input . addEventListener ( 'input' , this . inputHandler )
45
48
; ( this . input as HTMLElement ) . addEventListener ( 'keydown' , this . keyboardEventHandler )
46
49
this . list . addEventListener ( 'click' , commitWithElement )
47
50
}
@@ -51,6 +54,7 @@ export default class Combobox {
51
54
this . input . setAttribute ( 'aria-expanded' , 'false' )
52
55
this . input . removeEventListener ( 'compositionstart' , this . compositionEventHandler )
53
56
this . input . removeEventListener ( 'compositionend' , this . compositionEventHandler )
57
+ this . input . removeEventListener ( 'input' , this . inputHandler )
54
58
; ( this . input as HTMLElement ) . removeEventListener ( 'keydown' , this . keyboardEventHandler )
55
59
this . list . removeEventListener ( 'click' , commitWithElement )
56
60
}
@@ -128,6 +132,7 @@ function keyboardBindings(event: KeyboardEvent, combobox: Combobox) {
128
132
}
129
133
break
130
134
default :
135
+ if ( ctrlBindings && event . ctrlKey ) break
131
136
combobox . clearSelection ( )
132
137
}
133
138
}
0 commit comments