wip fix reload

This commit is contained in:
Rizky 2023-11-25 12:46:41 +07:00
parent 607c034254
commit fd0b71bc8f
5 changed files with 100 additions and 3 deletions

View File

@ -223,7 +223,7 @@ export const EDGlobal = {
list: {} as Record<string, string>,
},
page: {
go: () => {},
open: null as null | ((page_id: string) => void),
form: null as null | {},
},
script: {

View File

@ -7,7 +7,12 @@ export const EdPagePicker = () => {
return (
<TopBtn
onClick={(e) => {}}
onClick={(e) => {
p.ui.popup.page.open = (page_id) => {
navigate(`/ed/${p.site.id}/${page_id}`);
};
p.render();
}}
innerClassName="flex items-center justify-center space-x-2"
>
<div

View File

@ -1,3 +1,55 @@
import { Tree as DNDTree, DndProvider, MultiBackend, getBackendOptions } from "@minoru/react-dnd-treeview";
import { useEffect } from "react";
import { useGlobal, useLocal } from "web-utils";
import { Loading } from "../../../../../utils/ui/loading";
import { Modal } from "../../../../../utils/ui/modal";
import { EDGlobal } from "../../../logic/ed-global";
import { pagePicker, reloadPagePicker } from "./page-reload";
import { PageItem, edPageTreeRender } from "./page-tree";
export const EdPagePop = () => {
return <div className="">Hello world</div>;
const p = useGlobal(EDGlobal, "EDITOR");
const local = useLocal({});
const TypedTree = DNDTree<PageItem>;
pagePicker.render = local.render;
useEffect(() => {
p.ui.popup.page.open = () => {};
(async () => {
if (pagePicker.status === "ready") {
reloadPagePicker(p);
}
})();
}, [p.site.id]);
if (!p.ui.popup.page.open) return null;
return (
<>
{pagePicker.status === "loading" && <Loading note="listing-page" />}
<Modal
open
onOpenChange={(open) => {
if (!open) {
p.ui.popup.page.open = null;
p.render();
}
}}
>
<div className="absolute inset-[5%] bg-white flex">
<div className="relative flex flex-1">
<DndProvider backend={MultiBackend} options={getBackendOptions()}>
<TypedTree
tree={pagePicker.tree}
rootId={"root"}
onDrop={() => {}}
render={edPageTreeRender}
/>
</DndProvider>
</div>
</div>
</Modal>
</>
);
};

View File

@ -0,0 +1,34 @@
import { NodeModel } from "@minoru/react-dnd-treeview";
import { PageItem } from "./page-tree";
import { PG } from "../../../logic/ed-global";
export const pagePicker = {
tree: [] as NodeModel<PageItem>[],
status: "ready" as "loading" | "ready",
render: () => {},
};
export const reloadPagePicker = async (p: PG) => {
pagePicker.status = "loading";
pagePicker.render();
const pages = await db.page.findMany({
where: { id_site: p.site.id, is_deleted: false },
select: {
id: true,
name: true,
id_layout: true,
is_default_layout: true,
id_folder: true,
url: true,
},
});
const folders = await db.page_folder.findMany({
where: { id_site: p.site.id },
select: { id: true, is_deleted: false, name: true, parent_id: true },
});
pagePicker.status = "ready";
pagePicker.render();
};

View File

@ -0,0 +1,6 @@
export type PageItem = {
id: string;
};
export const edPageTreeRender = () => {
return <></>;
};