UNPKG

@ducor/react

Version:

admin template ui interface

30 lines (29 loc) 1.17 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { createContext, useContext, useState } from "react"; // Create the context with a default empty value const MenuContext = createContext(undefined); // Provider component export const MenuProvider = ({ children, }) => { const [menu, setMenu] = useState([]); // Function to add a new menu item const addMenuItem = (item, parentId) => { if (parentId) { // Find the parent and add the item as a child setMenu((prevMenu) => prevMenu.map((menuItem) => menuItem.id === parentId ? Object.assign(Object.assign({}, menuItem), { children: [...(menuItem.children || []), item] }) : menuItem)); } else { // Add to the root menu setMenu((prevMenu) => [...prevMenu, item]); } }; return (_jsx(MenuContext.Provider, { value: { menu, addMenuItem }, children: children })); }; // Custom hook to use the MenuContext export const useMenu = () => { const context = useContext(MenuContext); if (!context) { throw new Error("useMenu must be used within a MenuProvider"); } return context; };