UNPKG

bananas-commerce-admin

Version:

What's this, an admin for apes?

42 lines 1.81 kB
import React, { useMemo } from "react"; import TabList from "@mui/lab/TabList"; import { useUser } from "../contexts/UserContext"; import { hasAccess } from "../util/has_access"; import { usePage } from "./Page"; import { Tab } from "./Tab"; export const Tabs = ({ onChange, data, children, scrollButtons = "auto", variant = "scrollable", sx: passedSx, ...props }) => { const page = usePage(); const { user } = useUser(); const sx = useMemo(() => ({ display: "flex", pl: 3, transform: "translateY(1px)", ".MuiTabs-flexContainer": { gap: 3, height: "100%", }, ...passedSx, }), [passedSx]); const handleTabChange = (_, newTab) => { page.changeTab(newTab); if (onChange != null) { onChange(newTab); } }; return (React.createElement(TabList, { scrollButtons: scrollButtons, sx: sx, variant: variant, onChange: handleTabChange, ...props }, children, page.contrib .filter((operation) => operation.method === "GET" && operation.component?.variant === "tab") .map((operation) => { if (operation.component?.predicate && data && !operation.component?.predicate(data)) { return null; } if (!hasAccess(user, operation.component?.permission, operation.component?.group)) { return null; } const value = operation.id.match(/\w+\.contrib:(?<name>.+)/)?.groups?.name; const Icon = operation.component?.icon; return (value && (React.createElement(Tab, { key: operation.id, icon: Icon && React.createElement(Icon, null), label: operation.component?.title ?? value, value: value }))); }))); }; //# sourceMappingURL=Tabs.js.map