import { mountDefault } from "../helpers"; describe("Custom Keydown Handlers", () => { it("can use the map-keydown prop to trigger custom behaviour", () => { const onKeyDown = jest.fn(); const Select = mountDefault({ mapKeydown: (defaults, vm) => ({ ...defaults, 32: onKeyDown }) }); Select.find({ ref: "search" }).trigger("keydown.space"); expect(onKeyDown.mock.calls.length).toBe(1); }); it("selectOnKeyCodes should trigger a selection for custom keycodes", () => { const Select = mountDefault({ selectOnKeyCodes: [32] }); const spy = jest.spyOn(Select.vm, "typeAheadSelect"); Select.find({ ref: "search" }).trigger("keydown.space"); expect(spy).toHaveBeenCalledTimes(1); }); it("even works when combining selectOnKeyCodes with map-keydown", () => { const onKeyDown = jest.fn(); const Select = mountDefault({ mapKeydown: (defaults, vm) => ({ ...defaults, 32: onKeyDown }), selectOnKeyCodes: [9] }); const spy = jest.spyOn(Select.vm, "typeAheadSelect"); Select.find({ ref: "search" }).trigger("keydown.space"); expect(onKeyDown.mock.calls.length).toBe(1); Select.find({ ref: "search" }).trigger("keydown.tab"); expect(spy).toHaveBeenCalledTimes(1); }); describe("CompositionEvent support", () => { it("will not select a value with enter if the user is composing", () => { const Select = mountDefault(); const spy = jest.spyOn(Select.vm, "typeAheadSelect"); Select.find({ ref: "search" }).trigger("compositionstart"); Select.find({ ref: "search" }).trigger("keydown.enter"); expect(spy).toHaveBeenCalledTimes(0); Select.find({ ref: "search" }).trigger("compositionend"); Select.find({ ref: "search" }).trigger("keydown.enter"); expect(spy).toHaveBeenCalledTimes(1); }); it("will not select a value with tab if the user is composing", () => { const Select = mountDefault({ selectOnTab: true }); const spy = jest.spyOn(Select.vm, "typeAheadSelect"); Select.find({ ref: "search" }).trigger("compositionstart"); Select.find({ ref: "search" }).trigger("keydown.tab"); expect(spy).toHaveBeenCalledTimes(0); Select.find({ ref: "search" }).trigger("compositionend"); Select.find({ ref: "search" }).trigger("keydown.tab"); expect(spy).toHaveBeenCalledTimes(1); }); }); });