UNPKG

mantine-entity

Version:

A library combining Mantine, TanStack Query, and Mantine React Table for efficient entity management

45 lines (44 loc) 3.87 kB
"use client"; import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { Container, Flex, Group, Text } from "@mantine/core"; import { Suspense, useMemo } from "react"; import { BackButton, CreateButton } from "./action-button"; import RenderTable from "./render-table"; import RenderCreateForm from "./render-create-form"; import RenderUpdateForm from "./render-update-form"; import RenderDetailView from "./render-detail-view"; import { capitalizeTxt } from "../../utils/string"; import NotFoundLayout from "../../components/not-found-layout"; const renderComponent = ({ params, table, form, queryBuilder, rootConfig, q, requestParams, navigator, searchParams, LinkComponent, currentPermissions, appMainPath }) => { const { method, feat } = params; switch (method) { case "create": return (_jsx(RenderCreateForm, { feat: feat, fields: form?.fields ?? [], defaultValues: form?.defaultValues, queryBuilder: queryBuilder, rootConfig: rootConfig, mapDefaultValue: form?.mapDefaultValue, disableOn: form?.disableOn, hiddenOn: form?.hiddenOn, requestParams: requestParams, navigator: navigator, searchParams: searchParams, appMainPath: appMainPath })); case "update": return (_jsx(RenderUpdateForm, { feat: feat, fields: form?.fields ?? [], mapDefaultValue: form?.mapDefaultValue, defaultValues: form?.defaultValues, queryBuilder: queryBuilder, rootConfig: rootConfig, disableOn: form?.disableOn, hiddenOn: form?.hiddenOn, requestParams: requestParams, navigator: navigator, searchParams: searchParams, appMainPath: appMainPath })); case "view": return (_jsx(RenderDetailView, { feat: feat, queryBuilder: queryBuilder, rootConfig: rootConfig, requestParams: requestParams, searchParams: searchParams, appMainPath: appMainPath })); case "list": return (_jsx(RenderTable, { feat: feat, columns: table?.columns, filters: table?.filters, queryBuilder: queryBuilder, accessorKey: table?.accessorKey, rootConfig: rootConfig, renderCustomActions: table?.renderCustomActions, q: q, requestParams: requestParams, searchParams: searchParams, LinkComponent: LinkComponent, currentPermissions: currentPermissions, appMainPath: appMainPath })); default: return _jsx(NotFoundLayout, {}); } }; const EntityProvider = ({ params, queryBuilder, table, form, rootConfig, q, currentPermissions, LinkComponent, requestParams, navigator, searchParams, appMainPath }) => { const { feat, method } = useMemo(() => params, [params]); return (_jsxs(Container, { fluid: true, className: "min-h-screen relative", p: 0, children: [_jsxs(Flex, { fz: 16, fw: 600, justify: "space-between", className: "p-2 items-center", children: [method !== "list" ? (_jsxs(Group, { gap: 20, children: [_jsx(BackButton, { path: feat, LinkComponent: LinkComponent, currentPermissions: currentPermissions, appMainPath: appMainPath }), _jsxs(Flex, { align: "center", gap: 4, className: "gap-4 items-center ", children: [_jsx(Text, { fz: 20, fw: 500, children: capitalizeTxt(method) }), _jsx(Text, { fz: 20, fw: 500, children: capitalizeTxt(feat) })] })] })) : (_jsx(Text, { fz: 20, fw: 500, children: capitalizeTxt(feat) })), method === "list" && queryBuilder?.create && (_jsx(CreateButton, { path: feat, LinkComponent: LinkComponent, currentPermissions: currentPermissions, appMainPath: appMainPath }))] }), _jsx(Suspense, { children: renderComponent({ params, queryBuilder, table, form, rootConfig, q, LinkComponent, requestParams, navigator, searchParams, currentPermissions, appMainPath }) })] })); }; export { EntityProvider };