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