Skip to content

Commit dfbf7c5

Browse files
author
Andrew Leach
committed
Spike on separation of concerns
1 parent fc59f27 commit dfbf7c5

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/index.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ export default class Combobox {
8080
;(this.input as HTMLElement).addEventListener('keydown', this.keyboardEventHandler)
8181
this.list.addEventListener('click', commitWithElement)
8282
this.indicateDefaultOption()
83+
this.selectFirstItemIfNeeded()
8384
}
8485

8586
stop(): void {
@@ -97,7 +98,11 @@ export default class Combobox {
9798
Array.from(this.list.querySelectorAll<HTMLElement>('[role="option"]:not([aria-disabled="true"])'))
9899
.filter(visible)[0]
99100
?.setAttribute('data-combobox-option-default', 'true')
100-
} else if (this.firstOptionSelectionMode === 'selected' && visible(this.list)) {
101+
}
102+
}
103+
104+
selectFirstItemIfNeeded(): void {
105+
if (this.firstOptionSelectionMode === 'selected') {
101106
this.navigate(1)
102107
}
103108
}
@@ -142,7 +147,9 @@ export default class Combobox {
142147
el.removeAttribute('aria-selected')
143148
}
144149

145-
this.indicateDefaultOption()
150+
if (this.firstOptionSelectionMode === 'active') {
151+
this.indicateDefaultOption()
152+
}
146153
}
147154
}
148155

@@ -188,6 +195,7 @@ function keyboardBindings(event: KeyboardEvent, combobox: Combobox) {
188195
default:
189196
if (event.ctrlKey) break
190197
combobox.clearSelection()
198+
combobox.selectFirstItemIfNeeded()
191199
}
192200
}
193201

0 commit comments

Comments
 (0)