From a13b3ef577b7b942c3fe3ce877cd48254171d9b8 Mon Sep 17 00:00:00 2001 From: rizrmd Date: Wed, 13 Mar 2024 21:09:11 -0700 Subject: [PATCH] wip fix --- comps/list/Tree.tsx | 28 +++++++++++++++++++++------- comps/ui/skeleton.tsx | 2 +- utils/globals.d.ts | 1 + 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/comps/list/Tree.tsx b/comps/list/Tree.tsx index eadc5ea..1c17681 100755 --- a/comps/list/Tree.tsx +++ b/comps/list/Tree.tsx @@ -14,6 +14,7 @@ export const Tree = ({ tree, renderRow, className, + rowHeight, onChange, drag, }: { @@ -21,6 +22,7 @@ export const Tree = ({ tree: T[]; drag?: boolean; onChange?: (rows: T[]) => Promise | void; + rowHeight?: number; renderRow: (arg: { row: T; style: any; dragHandle: any }) => ReactNode; }) => { const local = useLocal({ @@ -29,8 +31,8 @@ export const Tree = ({ children: generateTreeChildren({ renderRow, updateNode: (data, arg) => { - if (typeof arg.sort_idx === "number") { - data.sort_idx = arg.sort_idx; + for (const [k, v] of Object.entries(arg)) { + (data as any)[k] = v; } local.update[data.id] = { ...data }; @@ -86,10 +88,12 @@ export const Tree = ({ } }} > - {local.width && local.height && ( + {local.width > 0 && local.height > 0 && ( (tree: T[]) => { parent.children = []; } - parent.children.push(s); - scan(s.id, s as T); + if (!parent.children.find((e) => e.id === s.id)) { + parent.children.push(s); + scan(s.id, s as T); + } } } }; @@ -145,8 +151,16 @@ const generateTreeChildren = (arg: { return (({ node, style, dragHandle }) => { let sort_idx = node.data.sort_idx; if (typeof sort_idx === "string") sort_idx = parseInt(sort_idx); - if (!node.isDragging && sort_idx !== node.rowIndex) { - updateNode(node.data, { sort_idx: node.rowIndex } as Partial); + + let parent_id: any = node.parent?.id; + if (parent_id === "__REACT_ARBORIST_INTERNAL_ROOT__") parent_id = null; + if (!node.isDragging) { + if (sort_idx !== node.rowIndex) { + updateNode(node.data, { sort_idx: node.rowIndex } as Partial); + } + if (parent_id !== node.data.id_parent) { + updateNode(node.data, { id_parent: parent_id } as Partial); + } } return renderRow({ row: node.data, style, dragHandle }); diff --git a/comps/ui/skeleton.tsx b/comps/ui/skeleton.tsx index 12cee7a..c892efa 100755 --- a/comps/ui/skeleton.tsx +++ b/comps/ui/skeleton.tsx @@ -6,7 +6,7 @@ function Skeleton({ }: React.HTMLAttributes) { return (
) diff --git a/utils/globals.d.ts b/utils/globals.d.ts index 7fbfac3..92e976f 100755 --- a/utils/globals.d.ts +++ b/utils/globals.d.ts @@ -6,3 +6,4 @@ declare var params: any; declare var cx: any; declare var preload: (urls: string[] | string) => any; declare var navigate: (link: string) => void; +declare var siteurl: (path: string) => string;