UNPKG

bananas-commerce-admin

Version:

What's this, an admin for apes?

73 lines 2.89 kB
import React, { useContext, useState } from "react"; import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; import DialogActions from "@mui/material/DialogActions"; import DialogContent from "@mui/material/DialogContent"; import DialogTitle from "@mui/material/DialogTitle"; const DialogContext = React.createContext({ title: "", children: null, cb: (ok) => void ok, open: false, makeOpen: () => Promise.resolve(false), dialogProps: {}, ok: "Ok", cancel: "Cancel", }); function DialogContextProvider(props) { const [title, setTitle] = useState(""); const [children, setChildren] = useState(null); const [open, setOpen] = useState(false); const [ok, setOk] = useState("Ok"); const [cancel, setCancel] = useState("Cancel"); const [dialogProps, setDialogProps] = useState({}); return (React.createElement(DialogContext.Provider, { value: { makeOpen: (title, children, options) => { setTitle(title); setChildren(children); setOpen(true); if (options?.ok !== undefined) { setOk(options.ok); } if (options?.cancel !== undefined) { setCancel(options.cancel); } if (options?.dialogProps) { setDialogProps(options.dialogProps); } return new Promise((resolve) => { const event = (e) => { window.removeEventListener("dialogclick", event); resolve(e.detail); }; window.addEventListener("dialogclick", event); }); }, title, children, open, cb: (ok) => { window.dispatchEvent(new CustomEvent("dialogclick", { detail: ok })); setOpen(false); }, dialogProps, ok, cancel, } }, props.children)); } export function BcomDialog() { const ctx = useContext(DialogContext); return (React.createElement(Dialog, { ...ctx.dialogProps, open: ctx.open, sx: { p: 0, ...ctx.dialogProps.sx } }, React.createElement(DialogContent, null, React.createElement(DialogTitle, null, ctx.title), React.createElement(DialogContent, null, ctx.children), React.createElement(DialogActions, null, ctx.cancel && React.createElement(Button, { onClick: () => ctx.cb(false) }, ctx.cancel), ctx.ok && React.createElement(Button, { onClick: () => ctx.cb(true) }, ctx.ok))))); } export function useDialog() { const { makeOpen } = useContext(DialogContext); return makeOpen; } export default DialogContextProvider; //# sourceMappingURL=DialogContext.js.map