Skip to content

Commit

Permalink
fix(ld-select): typeahead with none-matching query
Browse files Browse the repository at this point in the history
  • Loading branch information
borisdiakur committed Jul 27, 2021
1 parent e3cf971 commit 6eff101
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
13 changes: 8 additions & 5 deletions src/liquid/components/ld-select/ld-select.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,14 @@ export class LdSelect {
return
}

index = [newQuery, ...values]
.sort()
.findIndex(
(value) => value.toLowerCase().indexOf(newQuery.toLowerCase()) === 0
)
index = 0
for (let i = 0; i < values.length; i++) {
if (newQuery.toLowerCase() < values[i].toLowerCase()) {
index = i + 1
break
}
}

if (index > 0) {
options[index - 1].focus()
}
Expand Down
26 changes: 26 additions & 0 deletions src/liquid/components/ld-select/test/ld-select.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1308,6 +1308,32 @@ describe('ld-select', () => {
expect(spyFocusPine).toHaveBeenCalledTimes(1)
expect(spyFocusBana).toHaveBeenCalledTimes(0)
expect(spyFocusPlum).toHaveBeenCalledTimes(1)

await new Promise((resolve) => setTimeout(resolve, 600))

doc.activeElement = btnTrigger
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'i' }))
await page.waitForChanges()
await new Promise((resolve) => setTimeout(resolve))

expect(spyFocusAppl).toHaveBeenCalledTimes(0)
expect(spyFocusPear).toHaveBeenCalledTimes(3)
expect(spyFocusPine).toHaveBeenCalledTimes(1)
expect(spyFocusBana).toHaveBeenCalledTimes(0)
expect(spyFocusPlum).toHaveBeenCalledTimes(1)

await new Promise((resolve) => setTimeout(resolve, 600))

doc.activeElement = btnTrigger
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'z' }))
await page.waitForChanges()
await new Promise((resolve) => setTimeout(resolve))

expect(spyFocusAppl).toHaveBeenCalledTimes(0)
expect(spyFocusPear).toHaveBeenCalledTimes(3)
expect(spyFocusPine).toHaveBeenCalledTimes(1)
expect(spyFocusBana).toHaveBeenCalledTimes(0)
expect(spyFocusPlum).toHaveBeenCalledTimes(1)
})

// TODO: Write tests for disabled and aria-disabled ld-select
Expand Down

0 comments on commit 6eff101

Please sign in to comment.