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 (
-