Outlook_Addin_LLM/node_modules/@fluentui/utilities/lib/setFocusVisibility.js

34 lines
1.7 KiB
JavaScript
Raw Normal View History

import { getWindow } from './dom/getWindow';
export var IsFocusVisibleClassName = 'ms-Fabric--isFocusVisible';
export var IsFocusHiddenClassName = 'ms-Fabric--isFocusHidden';
function updateClassList(el, enabled) {
if (el) {
el.classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName);
el.classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName);
}
}
/**
* Sets the visibility of focus styling.
*
* By default, focus styles (the box surrounding a focused Button, for example) only show up when navigational
* keypresses occur (through Tab, arrows, PgUp/PgDn, Home and End), and are hidden when mouse interactions occur.
* This API provides an imperative way to turn them on/off.
*
* A use case might be when you have a keypress like ctrl-f6 navigate to a particular region on the page,
* and want focus to show up.
*
* @param enabled - Whether to turn focus visibility on or off.
* @param target - Optional target from which to get window in case no `providerElem` has been specified.
* @param registeredProviders - Array of provider refs that are associated with a FocusRectsProvider. If no array
* is passed in, the classnames are attached to the document body that contains `target`.
*/
export function setFocusVisibility(enabled, target, registeredProviders) {
var _a;
if (registeredProviders) {
registeredProviders.forEach(function (ref) { return updateClassList(ref.current, enabled); });
}
else {
updateClassList((_a = getWindow(target)) === null || _a === void 0 ? void 0 : _a.document.body, enabled);
}
}
//# sourceMappingURL=setFocusVisibility.js.map