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

103 lines
6.6 KiB
JavaScript
Raw Normal View History

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