105 lines
6.2 KiB
JavaScript
105 lines
6.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var initializeFocusRects_1 = require("./initializeFocusRects");
|
|
var setFocusVisibility_1 = require("./setFocusVisibility");
|
|
var KeyCodes_1 = require("./KeyCodes");
|
|
var keyboard_1 = require("./keyboard");
|
|
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
|