From 04cc355087b89ae17daa38471c4fd9753a615e48 Mon Sep 17 00:00:00 2001 From: Stan Wohlwend Date: Sat, 18 May 2024 11:26:54 +0200 Subject: [PATCH] More SmartForms --- .../team-permissions/page-client.tsx | 27 +++++-------- .../data-table/team-permission-table.tsx | 40 +++++++++---------- .../src/components/permission-field.tsx | 10 ++--- .../src/components/smart-form.tsx | 9 +++-- 4 files changed, 39 insertions(+), 47 deletions(-) diff --git a/packages/stack-server/src/app/(main)/(protected)/projects/[projectId]/team-permissions/page-client.tsx b/packages/stack-server/src/app/(main)/(protected)/projects/[projectId]/team-permissions/page-client.tsx index dae2a44ae..f994d34da 100644 --- a/packages/stack-server/src/app/(main)/(protected)/projects/[projectId]/team-permissions/page-client.tsx +++ b/packages/stack-server/src/app/(main)/(protected)/projects/[projectId]/team-permissions/page-client.tsx @@ -5,7 +5,7 @@ import { useAdminApp } from "../use-admin-app"; import { Button } from "@/components/ui/button"; import { PermissionListField } from "@/components/permission-field"; import { PageLayout } from "../page-layout"; -import { FormDialog } from "@/components/form-dialog"; +import { FormDialog, SmartFormDialog } from "@/components/form-dialog"; import { InputField } from "@/components/form-fields"; import { TeamPermissionTable } from "@/components/data-table/team-permission-table"; @@ -43,28 +43,21 @@ function CreateDialog(props: { const permissions = stackAdminApp.usePermissionDefinitions(); const formSchema = yup.object({ - id: yup.string().required().notOneOf(permissions.map((p) => p.id), "ID already exists"), - description: yup.string(), - containPermissionIds: yup.array().of(yup.string().required()).required(), + id: yup.string().required().notOneOf(permissions.map((p) => p.id), "ID already exists").label("ID"), + description: yup.string().label("Description"), + containPermissionIds: yup.array().of(yup.string().required()).required().default([]).meta({ + stackFormFieldRender: (props) => ( + + ), + }), }); - const defaultValues = { - containPermissionIds: [], - }; - return ( - <> - - - - - )} onSubmit={async (values) => { await stackAdminApp.createPermissionDefinition({ id: values.id, @@ -75,4 +68,4 @@ function CreateDialog(props: { }} cancelButton />; -} \ No newline at end of file +} diff --git a/packages/stack-server/src/components/data-table/team-permission-table.tsx b/packages/stack-server/src/components/data-table/team-permission-table.tsx index 566d9e7b9..a163ebad5 100644 --- a/packages/stack-server/src/components/data-table/team-permission-table.tsx +++ b/packages/stack-server/src/components/data-table/team-permission-table.tsx @@ -6,7 +6,7 @@ import { DataTableColumnHeader } from "./elements/column-header"; import { DataTable } from "./elements/data-table"; import { ActionCell, BadgeCell, TextCell } from "./elements/cells"; import { SearchToolbarItem } from "./elements/toolbar-items"; -import { FormDialog } from "../form-dialog"; +import { FormDialog, SmartFormDialog } from "../form-dialog"; import { InputField } from "../form-fields"; import { ActionDialog } from "../action-dialog"; import { useAdminApp } from "@/app/(main)/(protected)/projects/[projectId]/use-admin-app"; @@ -34,31 +34,29 @@ function EditDialog(props: { } const formSchema = yup.object({ - id: yup.string().required().notOneOf(permissions.map((p) => p.id).filter(p => p !== props.selectedPermissionId), "ID already exists"), - description: yup.string(), - containPermissionIds: yup.array().of(yup.string().required()).required(), - }); - - return ( - <> - - + id: yup.string() + .required() + .notOneOf(permissions.map((p) => p.id).filter(p => p !== props.selectedPermissionId), "ID already exists") + .label("ID"), + description: yup.string().label("Description"), + containPermissionIds: yup.array().of(yup.string().required()).required().meta({ + stackFormFieldRender: (innerProps) => ( - - )} + ), + }), + }).default(currentPermission); + + return { await stackAdminApp.updatePermissionDefinition(props.selectedPermissionId, values); }} diff --git a/packages/stack-server/src/components/permission-field.tsx b/packages/stack-server/src/components/permission-field.tsx index 0e90aad96..4c12e513e 100644 --- a/packages/stack-server/src/components/permission-field.tsx +++ b/packages/stack-server/src/components/permission-field.tsx @@ -182,11 +182,7 @@ export function PermissionListField(props: { ); const inheritedFrom = contain && ancestors.length > 0 && `(from ${ancestors.join(', ')})`; return ( -