diff --git a/app/web/src/nova/ed/logic/ed-global.ts b/app/web/src/nova/ed/logic/ed-global.ts index 3da24582..1d78a987 100644 --- a/app/web/src/nova/ed/logic/ed-global.ts +++ b/app/web/src/nova/ed/logic/ed-global.ts @@ -226,7 +226,7 @@ export const EDGlobal = { }, page: { open: null as null | ((page_id: string) => void), - form: null as null | PageItem, + form: null as null | Partial, }, script: { open: false, diff --git a/app/web/src/nova/ed/panel/main/main.tsx b/app/web/src/nova/ed/panel/main/main.tsx index 8ab89cae..72a1c249 100644 --- a/app/web/src/nova/ed/panel/main/main.tsx +++ b/app/web/src/nova/ed/panel/main/main.tsx @@ -11,13 +11,13 @@ export const EdMain = () => { return (
-
+
{!!p.page.building && } {!p.page.building && code.mode !== "" && ( { cur = pagePicker.tree.find((e) => e.id === parent_id); } } - local.tree.open(parents); + if (parents.length === 0) { + local.tree.open("page-root"); + } else { + local.tree.open(parents); + } } }); - }, [p.ui.popup.page.open]); + }, [p.ui.popup.page.open, p.page.cur.id, pagePicker.site_id]); if (!p.ui.popup.page.open) return null; @@ -106,22 +110,28 @@ export const EdPagePop = () => { p.ui.popup.page.form = null; p.render(); }} - onSave={async (page) => { + onSave={async (page, isNew) => { p.ui.popup.page.form = null; - const found = pagePicker.tree.find( - (e) => e.id === page.id && e.data?.type === "page" - ); - if (found) { - for (const [k, v] of Object.entries(found.data || {})) { - if (page[k]) { - (found.data as any)[k] = page[k]; + if (isNew) { + p.render(); + await reloadPagePicker(p); + navigate(`/ed/${p.site.id}/${page.id}`); + } else { + const found = pagePicker.tree.find( + (e) => e.id === page.id && e.data?.type === "page" + ); + if (found) { + for (const [k, v] of Object.entries(found.data || {})) { + if (page[k]) { + (found.data as any)[k] = page[k]; + } } + found.text = page.name; } - found.text = page.name; - } - p.render(); + p.render(); + } }} /> )} diff --git a/app/web/src/nova/ed/panel/popup/page/page-tree.tsx b/app/web/src/nova/ed/panel/popup/page/page-tree.tsx index d6f67811..d6bd1dba 100644 --- a/app/web/src/nova/ed/panel/popup/page/page-tree.tsx +++ b/app/web/src/nova/ed/panel/popup/page/page-tree.tsx @@ -128,6 +128,12 @@ export const edPageTreeRender: NodeRender = ( className="btn transition-all bg-white flex items-center border px-1 hover:border-blue-300 hover:bg-blue-100" onClick={(e) => { e.stopPropagation(); + + p.ui.popup.page.form = { + id_site: p.site.id, + id_folder: item.id === "root" ? null : item.id, + }; + p.render(); }} > + Page diff --git a/app/web/src/nova/ed/panel/popup/script/monaco.tsx b/app/web/src/nova/ed/panel/popup/script/monaco.tsx index 27ffcf9e..03e5e9d5 100644 --- a/app/web/src/nova/ed/panel/popup/script/monaco.tsx +++ b/app/web/src/nova/ed/panel/popup/script/monaco.tsx @@ -142,6 +142,9 @@ export const ScriptMonaco = () => { tabSize: 2, useTabStops: true, }} + language={ + { css: "scss", js: "typescript", html: "html" }[p.ui.popup.script.mode] + } onMount={async (editor, monaco) => { local.editor = editor; editor.focus();