From ba936604a3bda8042b6ac385a9b5b006acaae524 Mon Sep 17 00:00:00 2001 From: dswbx Date: Thu, 23 Jan 2025 09:02:58 +0100 Subject: [PATCH] fix overwrite of entity config (e.g. empty label) --- app/src/ui/client/schema/data/use-bknd-data.ts | 6 +++++- app/src/ui/components/form/json-schema/JsonSchemaForm.tsx | 6 ++++-- app/src/ui/routes/data/_data.root.tsx | 2 +- app/src/ui/routes/data/data.$entity.index.tsx | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/ui/client/schema/data/use-bknd-data.ts b/app/src/ui/client/schema/data/use-bknd-data.ts index 7ab5d9b..315d692 100644 --- a/app/src/ui/client/schema/data/use-bknd-data.ts +++ b/app/src/ui/client/schema/data/use-bknd-data.ts @@ -43,7 +43,11 @@ export function useBkndData() { return { config: async (partial: Partial): Promise => { console.log("patch config", entityName, partial); - return await bkndActions.patch("data", `entities.${entityName}.config`, partial); + return await bkndActions.overwrite( + "data", + `entities.${entityName}.config`, + partial + ); }, fields: entityFieldActions(bkndActions, entityName) }; diff --git a/app/src/ui/components/form/json-schema/JsonSchemaForm.tsx b/app/src/ui/components/form/json-schema/JsonSchemaForm.tsx index 8b79f70..f73ce83 100644 --- a/app/src/ui/components/form/json-schema/JsonSchemaForm.tsx +++ b/app/src/ui/components/form/json-schema/JsonSchemaForm.tsx @@ -16,6 +16,7 @@ export type JsonSchemaFormProps = any & { uiSchema?: any; direction?: "horizontal" | "vertical"; onChange?: (value: any, isValid: () => boolean) => void; + cleanOnChange?: boolean; }; export type JsonSchemaFormRef = { @@ -36,6 +37,7 @@ export const JsonSchemaForm = forwardRef templates, fields, widgets, + cleanOnChange, ...props }, ref @@ -51,8 +53,8 @@ export const JsonSchemaForm = forwardRef return false; }; const handleChange = ({ formData }: any, e) => { - const clean = JSON.parse(JSON.stringify(formData)); - //console.log("Data changed: ", clean, JSON.stringify(formData, null, 2)); + const clean = cleanOnChange !== false ? JSON.parse(JSON.stringify(formData)) : formData; + console.log("Data changed: ", clean, { cleanOnChange }); setValue(clean); onChange?.(clean, () => isValid(clean)); }; diff --git a/app/src/ui/routes/data/_data.root.tsx b/app/src/ui/routes/data/_data.root.tsx index f7281ef..3ef6a49 100644 --- a/app/src/ui/routes/data/_data.root.tsx +++ b/app/src/ui/routes/data/_data.root.tsx @@ -201,7 +201,7 @@ const EntityContextMenu = ({ separator, { icon: IconSettings, - label: "Settings", + label: "Advanced", onClick: () => navigate(routes.settings.path(["data", "entities", entity.name]), { absolute: true diff --git a/app/src/ui/routes/data/data.$entity.index.tsx b/app/src/ui/routes/data/data.$entity.index.tsx index 135595e..960a4b6 100644 --- a/app/src/ui/routes/data/data.$entity.index.tsx +++ b/app/src/ui/routes/data/data.$entity.index.tsx @@ -41,7 +41,7 @@ export function DataEntityList({ params }) { const [navigate] = useNavigate(); const search = useSearch(searchSchema, { select: entity.getSelect(undefined, "form"), - sort: undefined + sort: entity.getDefaultSort() }); const $q = useApiQuery(