From f44456cbdfd6662a26765fd74f7020c44b637566 Mon Sep 17 00:00:00 2001 From: rizky Date: Wed, 31 Jul 2024 03:56:12 -0700 Subject: [PATCH] fix gen-form --- comps/form/gen/gen-form.ts | 101 ++++++++++++++++++------------------- comps/md/gen/md-form.ts | 29 +++++++++-- 2 files changed, 74 insertions(+), 56 deletions(-) diff --git a/comps/form/gen/gen-form.ts b/comps/form/gen/gen-form.ts index 1c9626f..1d7d93c 100755 --- a/comps/form/gen/gen-form.ts +++ b/comps/form/gen/gen-form.ts @@ -147,71 +147,68 @@ export const generateForm = async ( walkGenForm(new_body, existing_childs as any); } - if (item.edit) { - const current_body = propFromItem(item)?.body?.value as IItem; + const prop_item = propFromItem(item); + const current_body = prop_item?.body?.value as IItem; - if (current_body) { - const mapping = mapCompItemTree(new_body, { - shouldAdd({ item }) { - if (item.component?.props?.sub_type?.value === "table-edit") - return "add-skip-children"; + if (current_body) { + const mapping = mapCompItemTree(new_body, { + shouldAdd({ item }) { + if (item.component?.props?.sub_type?.value === "table-edit") + return "add-skip-children"; - return "add"; - }, - }); + return "add"; + }, + }); - reduceItemMapping(current_body, mapping, (old_item, new_item) => { - const pold = propFromItem(old_item); - const pnew = propFromItem(new_item); - - let result = old_item; - if ( - result.component && - result.component?.id === "32550d01-42a3-4b15-a04a-2c2d5c3c8e67" - ) { - if (pold.type.value !== pnew.type.value) { - result = new_item; - } else if (pold.sub_type.value !== pnew.sub_type.value) { - result = new_item; - } - - copyProps(old_item, new_item, [ - "placeholder", - "label", - "link__url", - "ext__width", - "opt__load_trigger", - "ext__on_change", - "ext__description", - "ext__show_label", - "ext__disabled", - "ext__prefix", - "ext__suffix", - ]); - } - - return result; - }); + reduceItemMapping(current_body, mapping, (old_item, new_item) => { + const pold = propFromItem(old_item); + const pnew = propFromItem(new_item); + let result = old_item; if ( - mapping["32550d01-42a3-4b15-a04a-2c2d5c3c8e67"] && - Object.keys(mapping["32550d01-42a3-4b15-a04a-2c2d5c3c8e67"]).length > - 0 + result.component && + result.component?.id === "32550d01-42a3-4b15-a04a-2c2d5c3c8e67" ) { - for (const val of Object.values( - mapping["32550d01-42a3-4b15-a04a-2c2d5c3c8e67"] - )) { - current_body.childs?.[0]?.childs.push(val); + if (pold.type.value !== pnew.type.value) { + result = new_item; + } else if (pold.sub_type.value !== pnew.sub_type.value) { + result = new_item; } + + copyProps(old_item, new_item, [ + "placeholder", + "label", + "link__url", + "ext__width", + "opt__load_trigger", + "ext__on_change", + "ext__description", + "ext__show_label", + "ext__disabled", + "ext__prefix", + "ext__suffix", + ]); } - if (current_body?.childs?.length > 0) { - new_body = current_body; + return result; + }); + + if ( + mapping["32550d01-42a3-4b15-a04a-2c2d5c3c8e67"] && + Object.keys(mapping["32550d01-42a3-4b15-a04a-2c2d5c3c8e67"]).length > 0 + ) { + for (const val of Object.values( + mapping["32550d01-42a3-4b15-a04a-2c2d5c3c8e67"] + )) { + current_body.childs?.[0]?.childs.push(val); } } + + if (current_body?.childs?.length > 0) { + new_body = current_body; + } } - console.log(result); if (commit) { Object.keys(result).map((e) => { item.edit.setProp(e, result[e]); diff --git a/comps/md/gen/md-form.ts b/comps/md/gen/md-form.ts index a13c45b..a30bd48 100755 --- a/comps/md/gen/md-form.ts +++ b/comps/md/gen/md-form.ts @@ -29,7 +29,7 @@ export const generateMDForm = async ( mode: "raw", value: `({ md: typeof md !== "undefined" ? md : undefined })`, }, - on_load: { + on_load: { mode: "string", value: "", }, @@ -43,9 +43,9 @@ export const generateMDForm = async ( name: "item", childs: [], }), - }, + }, }; - const newitem: any = { + const raw_new_item: any = { type: "item", name: "item", component: { @@ -53,7 +53,28 @@ export const generateMDForm = async ( props, }, }; - generateForm(async (props: any) => {}, props, newitem, false, true); + + let cur_item = ( + item.edit.childs + .find((e) => e.name.includes("child")) + ?.edit?.childs?.find((e) => e.name === "tab")?.component?.props as any + )?.child?.content?.childs?.[0]; + + if (cur_item) { + const new_item = createItem(raw_new_item) as IItem; + for (const [k, v] of Object.entries(new_item.component?.props || {})) { + if (cur_item.component) { + const prop = v as any; + if (prop.meta.type !== "content-element") { + cur_item.component.props[k] = v; + } + } + } + } else { + cur_item = raw_new_item; + } + + generateForm(async (props: any) => {}, props, cur_item, false, true); tab_detail?.edit.setProp("breadcrumb", { mode: "raw",