@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
JavaScript
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 };