UNPKG

bananas-commerce-admin

Version:

What's this, an admin for apes?

49 lines 2.02 kB
import React from "react"; import { useSearchParams } from "react-router-dom"; import TabContext from "@mui/lab/TabContext"; import { useApi } from "../contexts/ApiContext"; import { useRouter } from "../contexts/RouterContext"; const PageContext = React.createContext(undefined); export const usePage = () => React.useContext(PageContext); export const Page = ({ defaultTab = "default", tabSearchParam, children, }) => { const [searchParams, setSearchParams] = useSearchParams(); const tabSearchParamName = (tabSearchParam === true ? "tab" : tabSearchParam) ?? undefined; const initialTab = tabSearchParamName ? (searchParams.get(tabSearchParamName) ?? defaultTab) : location.hash ? location.hash.slice(1) : defaultTab; const [selectedTab, setTab] = React.useState(initialTab); const handleTabChange = (tab) => { if (tabSearchParamName) { // Set current tab as URL query param if (tab != defaultTab) { searchParams.set(tabSearchParamName, tab); } else { searchParams.delete(tabSearchParamName); } setSearchParams(searchParams); } else { // Set current tab as URL hash const url = new URL(location.toString()); const hash = tab != defaultTab ? tab : ""; url.hash = `#${hash}`; history.pushState({}, "", url); } setTab(tab); }; const { getCurrent } = useRouter(); const { route: currentRoute } = getCurrent(); const api = useApi(); // TODO: Skip replacing once bcom contrib tabs are adjusted const contrib = api.findContrib(currentRoute.id.replace(".", ":")); const context = { changeTab: handleTabChange, contrib: contrib, }; return (React.createElement(PageContext.Provider, { value: context }, React.createElement(TabContext, { value: selectedTab }, children))); }; //# sourceMappingURL=Page.js.map