UNPKG

@premieroctet/next-admin

Version:

Next-Admin provides a customizable and turnkey admin dashboard for applications built with Next.js and powered by the Prisma ORM. It aims to simplify the development process by providing a turnkey admin system that can be easily integrated into your proje

54 lines (53 loc) 1.97 kB
import { jsx, jsxs } from "react/jsx-runtime"; import { createContext, useCallback, useContext, useMemo, useState } from "react"; import ClientActionDialog_mjs_default from "../components/ClientActionDialog.mjs"; import { useRouterInternal } from "../hooks/useRouterInternal.mjs"; import { useMessage } from "./MessageContext.mjs"; const ClientActionDialogContext_ClientActionDialogContext = /*#__PURE__*/ createContext({}); const ClientActionDialogProvider = ({ children, componentsMap })=>{ const [isOpen, setIsOpen] = useState(false); const [dialogData, setDialogData] = useState(null); const { showMessage } = useMessage(); const { router } = useRouterInternal(); const onClose = (message)=>{ setIsOpen(false); router.refresh(); if (message) showMessage({ type: message.type, message: message.message }); clearData(); }; const open = useCallback((dialogParams)=>{ setIsOpen(true); const component = componentsMap?.[dialogParams.action.id]; setDialogData({ ...dialogParams, action: { ...dialogParams.action, component } }); }, []); const clearData = ()=>{ setDialogData(null); }; const contextValue = useMemo(()=>({ open }), [ open ]); return /*#__PURE__*/ jsxs(ClientActionDialogContext_ClientActionDialogContext.Provider, { value: contextValue, children: [ children, isOpen && dialogData && /*#__PURE__*/ jsx(ClientActionDialog_mjs_default, { ...dialogData, onClose: onClose }) ] }); }; const useClientActionDialog = ()=>useContext(ClientActionDialogContext_ClientActionDialogContext); const ClientActionDialogContext = ClientActionDialogProvider; export { ClientActionDialogContext as default, useClientActionDialog };