@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 • 669 B
JavaScript
import{Fragment as o,jsx as e,jsxs as n}from"react/jsx-runtime";import{createElement as r,memo as t,useEffect as c,useRef as m,useState as l}from"react";import{createPortal as d}from"react-dom";const i=t((({controller:t,BackdropComponent:i})=>{const[s,u]=l(null),p=m(document.createElement("div"));if(c((()=>{const o=p.current;o.id="modal-container",document.body.appendChild(o);const e=t.subscribe((o=>{u(o)}));return()=>{document.body.removeChild(o),e()}}),[t]),!s)return null;const a={onClose:t.onClose,onResolve:t.onResolve,isOpen:!0},C=n(o,{children:[i&&e(i,{children:r(s.component,a)}),!i&&r(s.component,a)]});return d(C,p.current)}));export{i as ModalContainer};