UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 1.13 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../../../__internal__/modal/modal-manager.js");exports.default=({open:t,closeModal:u,modalRef:c,setTriggerRefocusFlag:n,triggerRefocusOnClose:l=!0,topModalOverride:s=!1,focusCallToActionElement:o})=>{const a=e.useRef(!1),f=e.useRef(!1),d=e.useRef(null),i=e.useCallback((e=>{r.default.isTopmost(c.current)&&u(e)}),[c,u]),m=e.useCallback((()=>{a.current||(document.addEventListener("keyup",i),a.current=!0)}),[i]),v=e.useCallback((()=>{a.current&&(document.removeEventListener("keyup",i),a.current=!1)}),[i]);e.useEffect((()=>{t?m():v()}),[m,t,v]),e.useEffect((()=>()=>{v()}),[v]),e.useEffect((()=>{!d.current&&o&&t&&(d.current=o)}),[t,o]);const p=e.useCallback((e=>{f.current||(r.default.addModal(e,n,s),f.current=!0)}),[n,s]),E=e.useCallback((e=>{f.current&&(r.default.removeModal(e,l),d.current&&setTimeout((()=>{var e;null===(e=d.current)||void 0===e||e.focus(),d.current=null}),0),f.current=!1)}),[l]);e.useEffect((()=>{const e=c.current;t?p(e):E(e)}),[c,t,p,E]),e.useEffect((()=>{const e=c.current;return()=>{E(e)}}),[c,E])};