Files
2025-03-07 19:22:02 +01:00

25 lines
1.1 KiB
JavaScript

import * as React from 'react';
import { getModalizer } from 'tabster';
import { useTimeout } from '@fluentui/react-utilities';
import { useTabster } from './useTabster';
/**
* Returns a function that activates a modal by element from the modal or modal container.
*/ export function useActivateModal() {
const tabster = useTabster();
const modalizerAPI = tabster ? getModalizer(tabster) : undefined;
const [setActivateModalTimeout] = useTimeout();
const activateModal = React.useCallback((elementFromModal)=>{
// We call the actual activation function on the next tick, because with the typical use case,
// the hook will be called on the same tick when other Tabster attributes are being applied,
// and on the current tick the element has just received the attributes, but Tabster has not
// instantiated the Modalizer yet.
setActivateModalTimeout(()=>{
modalizerAPI === null || modalizerAPI === void 0 ? void 0 : modalizerAPI.activate(elementFromModal);
}, 0);
}, [
modalizerAPI,
setActivateModalTimeout
]);
return activateModal;
}