From 4e818ae458078b03fa58c2185e63e01f486f47c6 Mon Sep 17 00:00:00 2001 From: Rizky Date: Tue, 30 Jan 2024 19:32:44 +0700 Subject: [PATCH] wip fix --- .../src/nova/ed/panel/side/prop-instance.tsx | 22 +++++++++++++++++-- app/web/src/nova/ed/panel/tree/search.tsx | 16 +++++++++----- .../src/nova/vi/render/script/eval-prop.tsx | 2 +- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/app/web/src/nova/ed/panel/side/prop-instance.tsx b/app/web/src/nova/ed/panel/side/prop-instance.tsx index cc13fd12..aa57eb17 100644 --- a/app/web/src/nova/ed/panel/side/prop-instance.tsx +++ b/app/web/src/nova/ed/panel/side/prop-instance.tsx @@ -47,8 +47,26 @@ export const EdSidePropInstance: FC<{ meta: IMeta }> = ({ meta }) => { const cprop = m.toJSON() as any; const type = m.get("meta")?.get("type") || "text"; const visible = mprop?.get("visible") || ""; - if (visible) { - return; + + if (visible && visible !== "true") { + try { + const arg: any = {}; + if (meta.item.script?.props) { + for (const [k, v] of Object.entries(meta.item.script?.props)) { + eval(`arg.${k} = ${v.value}`); + } + } + + const visible_fn = new Function( + ...Object.keys(arg), + `return ${visible}` + ); + const res = visible_fn(...Object.values(arg)); + if (!res) { + return; + } + } catch (e) { + } } if (!local.showJSX && type === "content-element") { diff --git a/app/web/src/nova/ed/panel/tree/search.tsx b/app/web/src/nova/ed/panel/tree/search.tsx index ca6a0082..9721b7b5 100644 --- a/app/web/src/nova/ed/panel/tree/search.tsx +++ b/app/web/src/nova/ed/panel/tree/search.tsx @@ -34,17 +34,23 @@ export const EdTreeSearch = () => { local.render(); }} > -
+
{ + e.preventDefault(); + }} + > { local.sref = ref; }} type="search" - autoComplete="off" + autoComplete="new-password" className={cx("flex-1 outline-none px-2 text-[13px] ")} placeholder="Search..." - value={p.ui.tree.search} + value={p.ui.tree.search || ""} spellCheck={false} onInput={(e) => { local.cursor = e.currentTarget.selectionStart; @@ -70,7 +76,7 @@ export const EdTreeSearch = () => { } }} /> -
+ {(local.focus || local.hover || p.ui.tree.search) && (
diff --git a/app/web/src/nova/vi/render/script/eval-prop.tsx b/app/web/src/nova/vi/render/script/eval-prop.tsx index cb173beb..d9e44625 100644 --- a/app/web/src/nova/vi/render/script/eval-prop.tsx +++ b/app/web/src/nova/vi/render/script/eval-prop.tsx @@ -94,7 +94,7 @@ export const viEvalProps = ( return null; }, }; - + arg[name] = val; if (passprop) {