carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 3.25 kB
JavaScript
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useRef as r,useState as t,useEffect as n,useCallback as l}from"react";import{TransitionGroup as a,CSSTransition as i}from"react-transition-group";import c from"../../hooks/__internal__/useScrollBlock/useScrollBlock.js";import{Portal as s}from"../../components/portal/portal.js";import{getDocument as d}from"../dom/globals.js";import m from"../utils/helpers/events/events.js";import p from"../../hooks/__internal__/useModalManager/useModalManager.js";import{StyledModal as u,StyledModalBackground as f}from"./modal.style.js";import b from"./modal.context.js";function O(e,o,r){return o in e?Object.defineProperty(e,o,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[o]=r,e}function g(e){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{},t=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),t.forEach((function(o){O(e,o,r[o])}))}return e}const y=300,j=O=>{var{children:j,"data-element":v,"data-role":h="modal",open:P,onCancel:k,disableEscKey:w=!1,disableClose:E,enableBackgroundUI:M=!1,topModalOverride:S,restoreFocusOnClose:C=!0}=O,_=function(e,o){if(null==e)return{};var r,t,n=function(e,o){if(null==e)return{};var r,t,n={},l=Object.keys(e);for(t=0;t<l.length;t++)r=l[t],o.indexOf(r)>=0||(n[r]=e[r]);return n}(e,o);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(t=0;t<l.length;t++)r=l[t],o.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(O,["children","data-element","data-role","open","onCancel","disableEscKey","disableClose","enableBackgroundUI","topModalOverride","restoreFocusOnClose"]);const x=r(null),I=r(null),R=r(null),[B,D]=t(!1),[F,N]=t(!1),{blockScroll:T,allowScroll:K}=c();n((()=>{M||(P?T():K())}),[K,T,M,P]),n((()=>()=>{M||K()}),[K,M]);const A=l((e=>{k&&!E&&!w&&m.isEscKey(e)&&(e.stopImmediatePropagation(),k(e))}),[E,w,k]),U=d();let q,z;return p({open:P,closeModal:A,modalRef:x,setTriggerRefocusFlag:N,topModalOverride:S,focusCallToActionElement:C&&U?U.activeElement:void 0}),P&&(q=M?null:e(f,{ref:I,"data-element":"modal-background","data-role":"modal-background",transitionName:"modal-background",transitionTime:y}),z=j),e(s,{children:o(u,(G=g({"data-component":"modal","data-element":v,"data-role":h,"data-state":P&&B?"open":"closed",transitionName:"modal",transitionTime:y,topModalOverride:S,ref:x},_),H={children:[e(a,{children:q&&e(i,{nodeRef:I,appear:!0,classNames:"modal-background",timeout:y,onEntered:()=>D(!0),onExiting:()=>D(!1),children:q},"modal")}),e(a,{children:z&&e(i,{nodeRef:R,appear:!0,classNames:"modal",timeout:y,children:e(b.Provider,{value:{isAnimationComplete:B,triggerRefocusFlag:F,isInModal:!0},children:e("div",{ref:R,children:z})})})})]},H=null!=H?H:{},Object.getOwnPropertyDescriptors?Object.defineProperties(G,Object.getOwnPropertyDescriptors(H)):function(e){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);o.push.apply(o,r)}return o}(Object(H)).forEach((function(e){Object.defineProperty(G,e,Object.getOwnPropertyDescriptor(H,e))})),G))});var G,H};export{j as default};