define(["require", "exports", "./initializeFocusRects", "./setFocusVisibility", "./KeyCodes", "./keyboard"], function (require, exports, initializeFocusRects_1, setFocusVisibility_1, KeyCodes_1, keyboard_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); describe('initializeFocusRects', function () { var classNames = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any var mockWindow = { addEventListener: function (name, callback) { mockWindow[name] = callback; }, document: { body: { classList: { contains: function (name) { return classNames.indexOf(name) > -1; }, add: function (name) { return classNames.indexOf(name) < 0 && classNames.push(name); }, remove: function (name) { return classNames.indexOf(name) > -1 && classNames.splice(classNames.indexOf(name), 1); }, toggle: function (name, val) { var hasClass = classNames.indexOf(name) > -1; if (hasClass !== val) { if (hasClass) { classNames.splice(classNames.indexOf(name), 1); } else { classNames.push(name); } } }, }, }, }, }; var mockTarget = { ownerDocument: { defaultView: mockWindow, }, }; beforeEach(function () { classNames = []; // eslint-disable-next-line deprecation/deprecation (0, initializeFocusRects_1.initializeFocusRects)(mockWindow); }); it('can hint to show focus when you press a directional key', function () { mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.up }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); classNames = []; mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.down }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); classNames = []; mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.left }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); classNames = []; mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.right }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); classNames = []; mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.tab }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); classNames = []; mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.pageUp }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); classNames = []; mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.pageDown }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); classNames = []; mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.home }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); classNames = []; mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.end }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); }); it('no-ops when you press a non-directional key', function () { mockWindow.keydown({ target: mockTarget, which: 127 }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(false); // don't care about the state of the "hidden" class in this case }); it('can hint to hide focus on mouse click', function () { mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.down }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); mockWindow.mousedown({ target: mockTarget }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(true); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(false); }); it('can hint to show focus when you press a custom directional key', function () { mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.f6 }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(false); // don't care about the state of the "hidden" class in this case (0, keyboard_1.addDirectionalKeyCode)(KeyCodes_1.KeyCodes.f6); mockWindow.keydown({ target: mockTarget, which: KeyCodes_1.KeyCodes.f6 }); expect(classNames.indexOf(setFocusVisibility_1.IsFocusHiddenClassName) > -1).toEqual(false); expect(classNames.indexOf(setFocusVisibility_1.IsFocusVisibleClassName) > -1).toEqual(true); }); }); }); //# sourceMappingURL=initializeFocusRects.test.js.map