Outlook_Addin_LLM/node_modules/@fluentui/utilities/lib-commonjs/initializeFocusRects.test.js

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