From cbf5d2d877853c627e0f1cb7af5ec660b027bc0f Mon Sep 17 00:00:00 2001 From: Rizky Date: Tue, 5 Mar 2024 12:29:18 +0700 Subject: [PATCH] wip fix --- .../ed/panel/side/prop-master/prop-form.tsx | 135 ++++++++++++------ .../src/nova/ed/panel/tree/node/item/name.tsx | 17 ++- app/web/src/utils/types/meta-fn.ts | 13 +- 3 files changed, 115 insertions(+), 50 deletions(-) diff --git a/app/web/src/nova/ed/panel/side/prop-master/prop-form.tsx b/app/web/src/nova/ed/panel/side/prop-master/prop-form.tsx index cd22e5fe..d0387ea8 100644 --- a/app/web/src/nova/ed/panel/side/prop-master/prop-form.tsx +++ b/app/web/src/nova/ed/panel/side/prop-master/prop-form.tsx @@ -60,51 +60,100 @@ export const EdPropPopoverForm: FC<{ closing && "hidden" )} > -
- {[ - { label: "TXT", type: "text" }, - { label: "OPT", type: "option" }, - { label: "JSX", type: "content-element" }, - ].map((e) => { - return ( -
{ - if (e.type === "content-element") { - mprop.doc?.transact(() => { +
+
+ {[ + { label: "TXT", type: "text" }, + { label: "OPT", type: "option" }, + { label: "JSX", type: "content-element" }, + ].map((e) => { + return ( +
{ + if (e.type === "content-element") { + mprop.doc?.transact(() => { + mmeta.set("type", e.type as any); + if (!mprop.get("content")) { + const json = { + id: createId(), + name: name, + type: "item", + dim: { w: "full", h: "full" }, + childs: [], + adv: { + css: "", + }, + } as IItem; + const map = new Y.Map() as MItem; + syncronize(map as any, fillID(json)); + mprop.set("content", map); + } + }); + } else { mmeta.set("type", e.type as any); - if (!mprop.get("content")) { - const json = { - id: createId(), - name: name, - type: "item", - dim: { w: "full", h: "full" }, - childs: [], - adv: { - css: "", - }, - } as IItem; - const map = new Y.Map() as MItem; - syncronize(map as any, fillID(json)); - mprop.set("content", map); - } - }); - } else { - mmeta.set("type", e.type as any); - } - propPopover.render(); - }} + } + propPopover.render(); + }} + > + {e.label} +
+ ); + })} +
+ + {type === "text" && ( +
{ + mprop.doc?.transact(() => { + (mprop.parent as any)?.forEach((p: any, k: string) => { + console.log(k, p); + + if (k === name) { + p.set("is_name", !p.get("is_name")); + } else { + p.set("is_name", false); + } + }); + }); + }} + > + - {e.label} -
- ); - })} + {!mprop.get("is_name") ? ( + + + + ) : ( + + + + )} + + Default Name +
+ )}
Name
diff --git a/app/web/src/nova/ed/panel/tree/node/item/name.tsx b/app/web/src/nova/ed/panel/tree/node/item/name.tsx index 8c688460..fdc12cc9 100644 --- a/app/web/src/nova/ed/panel/tree/node/item/name.tsx +++ b/app/web/src/nova/ed/panel/tree/node/item/name.tsx @@ -140,6 +140,18 @@ const Name: FC<{ name: string; is_jsx_prop: boolean; meta?: IMeta }> = ({ meta, }) => { if (is_jsx_prop) { + let comp_label = ""; + for (const prop of Object.values(meta?.item.component?.props || {})) { + if (prop.is_name) { + try { + eval(`comp_label = ${prop.valueBuilt}`); + } catch (e) {} + if (typeof comp_label !== "string" && typeof comp_label !== "number") { + comp_label = "asdas"; + } + } + } + return (
= ({ > P -
{name}
+
+ {name} + {comp_label && `: ${comp_label}`} +
{meta && meta.mitem && } {meta && !meta.mitem && ( ;