Outlook_Addin_LLM/node_modules/@fluentui/react-tabster/lib/hooks/useFocusableGroup.js

33 lines
1.1 KiB
JavaScript
Raw Normal View History

import { getGroupper, GroupperTabbabilities } from 'tabster';
import { useTabsterAttributes } from './useTabsterAttributes';
import { useTabster } from './useTabster';
/**
* A hook that returns the necessary tabster attributes to support groupping.
* @param options - Options to configure keyboard navigation
*/ export const useFocusableGroup = (options)=>{
const tabster = useTabster();
if (tabster) {
getGroupper(tabster);
}
return useTabsterAttributes({
groupper: {
tabbability: getTabbability(options === null || options === void 0 ? void 0 : options.tabBehavior)
},
focusable: {
ignoreKeydown: options === null || options === void 0 ? void 0 : options.ignoreDefaultKeydown
}
});
};
const getTabbability = (tabBehavior)=>{
switch(tabBehavior){
case 'unlimited':
return GroupperTabbabilities.Unlimited;
case 'limited':
return GroupperTabbabilities.Limited;
case 'limited-trap-focus':
return GroupperTabbabilities.LimitedTrapFocus;
default:
return undefined;
}
};