@workday/canvas-kit-react
Version:
The parent module that contains all Workday Canvas Kit React components
31 lines (30 loc) • 1.03 kB
JavaScript
import React from 'react';
import screenfull from 'screenfull';
import { createElemPropsHook } from '@workday/canvas-kit-react/common';
import { usePopupModel } from './usePopupModel';
/**
* Closes the popup when fullscreen is exited. Entering/exiting fullscreen changes the context of
* the entire screen. This should be added to popup types that are very context sensitive like
* Tooltips.
*/
export const useCloseOnFullscreenExit = createElemPropsHook(usePopupModel)(model => {
const handler = React.useCallback((event) => {
if (!screenfull.isFullscreen) {
model.events.hide(event);
}
}, [model.events]);
const visible = model.state.visibility !== 'hidden';
React.useEffect(() => {
if (!visible) {
return;
}
if (screenfull.isEnabled) {
screenfull.on('change', handler);
return () => {
screenfull.off('change', handler);
};
}
return;
}, [handler, visible]);
return {};
});