@vegajs/modal-controller
Version:
A flexible modal management system for React applications, featuring ModalContainer, ModalProvider, and ModalController components for advanced and intuitive modal workflows.
1 lines • 1.1 kB
JavaScript
;var e,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,c={};((e,r)=>{for(var o in r)t(e,o,{get:r[o],enumerable:!0})})(c,{ModalContainer:()=>s}),module.exports=(e=c,((e,c,l,u)=>{if(c&&"object"===typeof c||"function"===typeof c)for(let a of o(c))n.call(e,a)||a===l||t(e,a,{get:()=>c[a],enumerable:!(u=r(c,a))||u.enumerable});return e})(t({},"__esModule",{value:!0}),e));var l=require("react/jsx-runtime"),u=require("react"),a=require("react-dom");const s=(0,u.memo)((({controller:e,BackdropComponent:t})=>{const[r,o]=(0,u.useState)(null),n=(0,u.useRef)(document.createElement("div"));if((0,u.useEffect)((()=>{const t=n.current;t.id="modal-container",document.body.appendChild(t);const r=e.subscribe((e=>{o(e)}));return()=>{document.body.removeChild(t),r()}}),[e]),!r)return null;const c={onClose:e.onClose,onResolve:e.onResolve,isOpen:!0},s=(0,l.jsxs)(l.Fragment,{children:[t&&(0,l.jsx)(t,{children:(0,u.createElement)(r.component,c)}),!t&&(0,u.createElement)(r.component,c)]});return(0,a.createPortal)(s,n.current)}));