mirror of
https://github.com/tenrok/vue-select.git
synced 2026-05-17 02:29:37 +03:00
98c278b2bb
BREAKING: mixins are no longer exported from the index (and will likely be converted to hooks)
80 lines
2.4 KiB
JavaScript
80 lines
2.4 KiB
JavaScript
import { it, describe, expect, vi, afterEach } from 'vitest'
|
|
import typeAheadPointer from '@/mixins/typeAheadPointer.js'
|
|
import { mountDefault } from '@tests/helpers.js'
|
|
|
|
describe('Custom Keydown Handlers', () => {
|
|
let spy
|
|
afterEach(() => {
|
|
if (spy) spy.mockClear()
|
|
})
|
|
|
|
it('can use the map-keydown prop to trigger custom behaviour', async () => {
|
|
const onKeyDown = vi.fn()
|
|
const Select = mountDefault({
|
|
mapKeydown: (defaults, vm) => ({ ...defaults, 32: onKeyDown }),
|
|
})
|
|
|
|
await Select.get('input').trigger('keydown.space')
|
|
|
|
expect(onKeyDown.mock.calls.length).toBe(1)
|
|
})
|
|
|
|
it('selectOnKeyCodes should trigger a selection for custom keycodes', () => {
|
|
spy = vi.spyOn(typeAheadPointer.methods, 'typeAheadSelect')
|
|
|
|
const Select = mountDefault({
|
|
selectOnKeyCodes: [32],
|
|
})
|
|
|
|
Select.get('input').trigger('keydown.space')
|
|
|
|
expect(spy).toHaveBeenCalledTimes(1)
|
|
})
|
|
|
|
it('even works when combining selectOnKeyCodes with map-keydown', () => {
|
|
spy = vi.spyOn(typeAheadPointer.methods, 'typeAheadSelect')
|
|
|
|
const onKeyDown = vi.fn()
|
|
const Select = mountDefault({
|
|
mapKeydown: (defaults, vm) => ({ ...defaults, 32: onKeyDown }),
|
|
selectOnKeyCodes: [9],
|
|
})
|
|
|
|
Select.get('input').trigger('keydown.space')
|
|
expect(onKeyDown.mock.calls.length).toBe(1)
|
|
|
|
Select.get('input').trigger('keydown.tab')
|
|
expect(spy).toHaveBeenCalledTimes(1)
|
|
})
|
|
|
|
describe('CompositionEvent support', () => {
|
|
it('will not select a value with enter if the user is composing', () => {
|
|
spy = vi.spyOn(typeAheadPointer.methods, 'typeAheadSelect')
|
|
|
|
const Select = mountDefault()
|
|
|
|
Select.get('input').trigger('compositionstart')
|
|
Select.get('input').trigger('keydown.enter')
|
|
expect(spy).toHaveBeenCalledTimes(0)
|
|
|
|
Select.get('input').trigger('compositionend')
|
|
Select.get('input').trigger('keydown.enter')
|
|
expect(spy).toHaveBeenCalledTimes(1)
|
|
})
|
|
|
|
it('will not select a value with tab if the user is composing', () => {
|
|
spy = vi.spyOn(typeAheadPointer.methods, 'typeAheadSelect')
|
|
|
|
const Select = mountDefault({ selectOnTab: true })
|
|
|
|
Select.get('input').trigger('compositionstart')
|
|
Select.get('input').trigger('keydown.tab')
|
|
expect(spy).toHaveBeenCalledTimes(0)
|
|
|
|
Select.get('input').trigger('compositionend')
|
|
Select.get('input').trigger('keydown.tab')
|
|
expect(spy).toHaveBeenCalledTimes(1)
|
|
})
|
|
})
|
|
})
|