fix overwrite of entity config (e.g. empty label)

This commit is contained in:
dswbx
2025-01-23 09:02:58 +01:00
parent 7dd42fbff3
commit ba936604a3
4 changed files with 11 additions and 5 deletions

View File

@@ -43,7 +43,11 @@ export function useBkndData() {
return { return {
config: async (partial: Partial<TAppDataEntity["config"]>): Promise<boolean> => { config: async (partial: Partial<TAppDataEntity["config"]>): Promise<boolean> => {
console.log("patch config", entityName, partial); 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) fields: entityFieldActions(bkndActions, entityName)
}; };

View File

@@ -16,6 +16,7 @@ export type JsonSchemaFormProps = any & {
uiSchema?: any; uiSchema?: any;
direction?: "horizontal" | "vertical"; direction?: "horizontal" | "vertical";
onChange?: (value: any, isValid: () => boolean) => void; onChange?: (value: any, isValid: () => boolean) => void;
cleanOnChange?: boolean;
}; };
export type JsonSchemaFormRef = { export type JsonSchemaFormRef = {
@@ -36,6 +37,7 @@ export const JsonSchemaForm = forwardRef<JsonSchemaFormRef, JsonSchemaFormProps>
templates, templates,
fields, fields,
widgets, widgets,
cleanOnChange,
...props ...props
}, },
ref ref
@@ -51,8 +53,8 @@ export const JsonSchemaForm = forwardRef<JsonSchemaFormRef, JsonSchemaFormProps>
return false; return false;
}; };
const handleChange = ({ formData }: any, e) => { const handleChange = ({ formData }: any, e) => {
const clean = JSON.parse(JSON.stringify(formData)); const clean = cleanOnChange !== false ? JSON.parse(JSON.stringify(formData)) : formData;
//console.log("Data changed: ", clean, JSON.stringify(formData, null, 2)); console.log("Data changed: ", clean, { cleanOnChange });
setValue(clean); setValue(clean);
onChange?.(clean, () => isValid(clean)); onChange?.(clean, () => isValid(clean));
}; };

View File

@@ -201,7 +201,7 @@ const EntityContextMenu = ({
separator, separator,
{ {
icon: IconSettings, icon: IconSettings,
label: "Settings", label: "Advanced",
onClick: () => onClick: () =>
navigate(routes.settings.path(["data", "entities", entity.name]), { navigate(routes.settings.path(["data", "entities", entity.name]), {
absolute: true absolute: true

View File

@@ -41,7 +41,7 @@ export function DataEntityList({ params }) {
const [navigate] = useNavigate(); const [navigate] = useNavigate();
const search = useSearch(searchSchema, { const search = useSearch(searchSchema, {
select: entity.getSelect(undefined, "form"), select: entity.getSelect(undefined, "form"),
sort: undefined sort: entity.getDefaultSort()
}); });
const $q = useApiQuery( const $q = useApiQuery(