UNPKG

carbon-react

Version:

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

2 lines (1 loc) 964 B
import{useRef as r,useCallback as e,useEffect as t}from"react";import n from"../../../__internal__/modal/modal-manager.js";const o=({open:o,closeModal:c,modalRef:u,setTriggerRefocusFlag:l,triggerRefocusOnClose:s=!0,topModalOverride:a=!1,focusCallToActionElement:d})=>{const m=r(!1),i=r(!1),f=r(null),p=e((r=>{n.isTopmost(u.current)&&c(r)}),[u,c]),v=e((()=>{m.current||(document.addEventListener("keyup",p),m.current=!0)}),[p]),g=e((()=>{m.current&&(document.removeEventListener("keyup",p),m.current=!1)}),[p]);t((()=>{o?v():g()}),[v,o,g]),t((()=>()=>{g()}),[g]),t((()=>{!f.current&&d&&o&&(f.current=d)}),[o,d]);const M=e((r=>{i.current||(n.addModal(r,l,a),i.current=!0)}),[l,a]),T=e((r=>{i.current&&(n.removeModal(r,s),f.current&&setTimeout((()=>{var r;null===(r=f.current)||void 0===r||r.focus(),f.current=null}),0),i.current=!1)}),[s]);t((()=>{const r=u.current;o?M(r):T(r)}),[u,o,M,T]),t((()=>{const r=u.current;return()=>{T(r)}}),[u,T])};export{o as default};