UNPKG

@tsc_tech/medusa-plugin-notification-template

Version:
65 lines (64 loc) 2.22 kB
import { jsx } from "react/jsx-runtime"; import { FocusModal, clx } from "@medusajs/ui"; import { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { RouteModalProvider } from "../route-modal-provider/route-provider.js"; import { useRouteModal } from "../route-modal-provider/use-route-modal.js"; import { StackedModalProvider } from "../stacked-modal-provider/stacked-modal-provider.js"; import "../stacked-modal-provider/stacked-modal-context.js"; import { useStateAwareTo } from "../../../../hooks/use-state-aware-to.js"; const Root = ({ prev = "..", children }) => { const navigate = useNavigate(); const [open, setOpen] = useState(false); const [stackedModalOpen, onStackedModalOpen] = useState(false); const to = useStateAwareTo(prev); useEffect(() => { setOpen(true); return () => { setOpen(false); onStackedModalOpen(false); }; }, []); const handleOpenChange = (open2) => { if (!open2) { document.body.style.pointerEvents = "auto"; navigate(to, { replace: true }); return; } setOpen(open2); }; return /* @__PURE__ */ jsx(FocusModal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsx(RouteModalProvider, { prev: to, children: /* @__PURE__ */ jsx(StackedModalProvider, { onOpenChange: onStackedModalOpen, children: /* @__PURE__ */ jsx(Content, { stackedModalOpen, children }) }) }) }); }; const Content = ({ stackedModalOpen, children }) => { const { __internal } = useRouteModal(); const shouldPreventClose = !__internal.closeOnEscape; return /* @__PURE__ */ jsx( FocusModal.Content, { onEscapeKeyDown: shouldPreventClose ? (e) => { e.preventDefault(); } : void 0, className: clx({ "!bg-ui-bg-disabled !inset-x-5 !inset-y-3": stackedModalOpen }), children } ); }; const Header = FocusModal.Header; const Title = FocusModal.Title; const Description = FocusModal.Description; const Footer = FocusModal.Footer; const Body = FocusModal.Body; const Close = FocusModal.Close; const RouteFocusModal = Object.assign(Root, { Header, Title, Body, Description, Footer, Close }); export { RouteFocusModal };