ezux 1.1.19 → 1.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -1
- package/dist/{DeleteConfirmationModal-CukNDgtX.cjs → DeleteConfirmationModal-BM1PoL6P.cjs} +1 -1
- package/dist/{DeleteConfirmationModal-p8XGDGIw.js → DeleteConfirmationModal-B_tXm0N0.js} +4 -4
- package/dist/{EzEventModal-BrCBSXBM.cjs → EzEventModal-D1EzXBsQ.cjs} +1 -1
- package/dist/{EzEventModal-BDSHG11m.js → EzEventModal-D5lX9XuW.js} +2 -2
- package/dist/{EzFlow-CQFeY7DL.cjs → EzFlow-B4qRm5KH.cjs} +3 -3
- package/dist/{EzFlow-C74NbZA9.js → EzFlow-CEfPykao.js} +278 -278
- package/dist/EzKanban-2b9skOep.cjs +2 -0
- package/dist/{EzKanban-COcGidzh.js → EzKanban-CpYH8b8g.js} +86 -80
- package/dist/{EzLayout-CiaPLniV.js → EzLayout-DFxegglu.js} +30 -24
- package/dist/EzLayout-EYOfpFXs.cjs +1 -0
- package/dist/{EzScheduler-CjQbi1Na.js → EzScheduler-D7aH4KCY.js} +60 -55
- package/dist/EzScheduler-hC9PsLrI.cjs +1 -0
- package/dist/{EzSchedulerQuickAdd-BeNfGdWs.cjs → EzSchedulerQuickAdd-BYrV9PQ-.cjs} +1 -1
- package/dist/{EzSchedulerQuickAdd-BIC8xbSn.js → EzSchedulerQuickAdd-D0kGTzE3.js} +2 -2
- package/dist/{EzSchedulerToolbar-jMw8KB8k.js → EzSchedulerToolbar-BhlCMeOT.js} +2 -2
- package/dist/{EzSchedulerToolbar-ihfe-5Yd.cjs → EzSchedulerToolbar-Dy62PVnH.cjs} +1 -1
- package/dist/{EzSignature-7UHO5lSP.js → EzSignature-B-CPcf7e.js} +5 -2
- package/dist/{EzSignature-Df7UZ-IS.cjs → EzSignature-DcmWBPIL.cjs} +1 -1
- package/dist/EzTable-Bcq7TByw.cjs +3 -0
- package/dist/{EzTable-D2p1IWHc.js → EzTable-DLbb3nl7.js} +1296 -1161
- package/dist/EzTableEditDialog--8pD39Rp.cjs +1 -0
- package/dist/EzTableEditDialog-m0zW6r6z.js +100 -0
- package/dist/{EzTableFooter-DrLoWelo.js → EzTableFooter-BuTS3wDK.js} +1 -1
- package/dist/{EzTableToolbar-DwuumvWP.cjs → EzTableToolbar-BWjqKfwx.cjs} +1 -1
- package/dist/{EzTableToolbar-BH5z9fSJ.js → EzTableToolbar-BiRfKm9d.js} +2 -2
- package/dist/{EzTreeView-D1G0Aomc.js → EzTreeView-B2B_Ruwm.js} +37 -37
- package/dist/EzTreeView-DLoPKe2i.cjs +1 -0
- package/dist/{KanbanBoard-BsZP_PJi.js → KanbanBoard-CRF0-mYa.js} +119 -119
- package/dist/{KanbanBoard-C9bjU_gk.cjs → KanbanBoard-DdXD-Zjt.cjs} +1 -1
- package/dist/advanced.cjs +2 -2
- package/dist/advanced.es.js +30 -29
- package/dist/card-NlCLCGFb.cjs +1 -0
- package/dist/{card-ZUNxcdIM.js → card-urNaa5h-.js} +1 -1
- package/dist/{checkbox-BrCh_Iid.cjs → checkbox-B9yPkCYi.cjs} +1 -1
- package/dist/{checkbox-DRkQuB4W.js → checkbox-BTuckDEm.js} +1 -1
- package/dist/components/EzTable/EzTableEditDialog.d.ts +1 -1
- package/dist/components/EzTable/hooks/useTableFiltering.d.ts +6 -6
- package/dist/components/EzTable/hooks/useTableHistory.d.ts +3 -3
- package/dist/components/EzTable/hooks/useTableImperative.d.ts +9 -6
- package/dist/components/EzTable/hooks/useTableState.d.ts +12 -12
- package/dist/components/EzTable/types/EzTableProps.d.ts +9 -1
- package/dist/ezux.css +1 -1
- package/dist/flow.cjs +1 -1
- package/dist/flow.es.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.es.js +20 -20
- package/dist/input-CcRi0LeO.js +14 -0
- package/dist/input-DOh8O0iX.cjs +1 -0
- package/dist/kanban.cjs +1 -1
- package/dist/kanban.es.js +2 -2
- package/dist/layout.cjs +1 -1
- package/dist/layout.es.js +1 -1
- package/dist/mock-services.cjs +1 -1
- package/dist/mock-services.es.js +1 -1
- package/dist/scheduler.cjs +1 -1
- package/dist/scheduler.es.js +1 -1
- package/dist/signature.cjs +1 -1
- package/dist/signature.es.js +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.es.js +1 -1
- package/dist/theme-vars.css +25 -5
- package/dist/treeview.cjs +1 -1
- package/dist/treeview.es.js +1 -1
- package/package.json +39 -36
- package/dist/EzKanban-DokdXGqQ.cjs +0 -2
- package/dist/EzLayout-BGnqFtvO.cjs +0 -1
- package/dist/EzScheduler-B8nV1VWY.cjs +0 -1
- package/dist/EzTable-CEXvJR1t.cjs +0 -3
- package/dist/EzTableEditDialog-BXnnYSSy.cjs +0 -1
- package/dist/EzTableEditDialog-Ccd5XoHm.js +0 -84
- package/dist/EzTreeView-KMGlU4ax.cjs +0 -1
- package/dist/card-CPlRZxbq.cjs +0 -1
- package/dist/input-CYlvlbF7.cjs +0 -1
- package/dist/input-Cj3sQK3M.js +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./button-BBMwzUtG.cjs"),t=require("./input-DOh8O0iX.cjs"),n=require("./label-BGgvoZWD.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=({open:a,onClose:o,onSave:s,columns:c,initialData:l,isNew:u,onFormRender:d})=>{let[f,p]=(0,r.useState)({});(0,r.useEffect)(()=>{a&&(p(l||{}),d?.({form:{data:l||{},columns:c},mode:u?`Add`:`Edit`}))},[a,l,c,u,d]);let[m,h]=(0,r.useOptimistic)(f,(e,t)=>({...e,...t})),[g,_,v]=(0,r.useActionState)(async(e,t)=>{let n={...f};return b.forEach(e=>{let r=e.accessorKey,i=t.get(r);i!==null&&(n[r]=i)}),(0,r.startTransition)(()=>{h(n)}),await s(n),o(),n},l||{});if(!a)return null;let y=(e,t)=>{p(n=>({...n,[e]:t}))},b=c.filter(e=>e.accessorKey&&e.meta?.isEditable!==!1&&e.id!==`actions`&&e.id!==`select`);return(0,i.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm animate-in fade-in-0`,children:(0,i.jsxs)(`form`,{action:_,className:`bg-background w-full max-w-lg rounded-lg border shadow-lg p-6 space-y-6 animate-in zoom-in-95 slide-in-from-bottom-2`,role:`dialog`,"aria-modal":`true`,children:[(0,i.jsxs)(`div`,{className:`flex flex-col space-y-1.5 text-center sm:text-left`,children:[(0,i.jsx)(`h2`,{className:`text-lg font-semibold leading-none tracking-tight`,children:u?`Add New Record`:`Edit Record`}),(0,i.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:u?`Enter details for the new record.`:`Make changes to the record below.`})]}),(0,i.jsx)(`div`,{className:`grid gap-4 py-4 max-h-[60vh] overflow-y-auto pr-2`,children:b.map(e=>{let r=e.accessorKey,a=m[r]??``;return(0,i.jsxs)(`div`,{className:`grid grid-cols-4 items-center gap-4`,children:[(0,i.jsx)(n.t,{htmlFor:r,className:`text-right`,children:typeof e.header==`string`?e.header:r}),(0,i.jsx)(t.t,{id:r,name:r,value:a,onChange:e=>y(r,e.target.value),className:`col-span-3`})]},r)})}),(0,i.jsxs)(`div`,{className:`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,children:[(0,i.jsx)(e.t,{variant:`outline`,type:`button`,onClick:o,disabled:v,children:`Cancel`}),(0,i.jsx)(e.t,{type:`submit`,disabled:v,children:v?`Saving...`:`Save Changes`})]})]})})};exports.EzTableEditDialog=a;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { t as e } from "./button-CYyNwV8S.js";
|
|
2
|
+
import { t } from "./input-CcRi0LeO.js";
|
|
3
|
+
import { t as n } from "./label-DWEV--5W.js";
|
|
4
|
+
import { startTransition as r, useActionState as i, useEffect as a, useOptimistic as o, useState as s } from "react";
|
|
5
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/EzTable/EzTableEditDialog.tsx
|
|
7
|
+
var u = ({ open: u, onClose: d, onSave: f, columns: p, initialData: m, isNew: h, onFormRender: g }) => {
|
|
8
|
+
let [_, v] = s({});
|
|
9
|
+
a(() => {
|
|
10
|
+
u && (v(m || {}), g?.({
|
|
11
|
+
form: {
|
|
12
|
+
data: m || {},
|
|
13
|
+
columns: p
|
|
14
|
+
},
|
|
15
|
+
mode: h ? "Add" : "Edit"
|
|
16
|
+
}));
|
|
17
|
+
}, [
|
|
18
|
+
u,
|
|
19
|
+
m,
|
|
20
|
+
p,
|
|
21
|
+
h,
|
|
22
|
+
g
|
|
23
|
+
]);
|
|
24
|
+
let [y, b] = o(_, (e, t) => ({
|
|
25
|
+
...e,
|
|
26
|
+
...t
|
|
27
|
+
})), [x, S, C] = i(async (e, t) => {
|
|
28
|
+
let n = { ..._ };
|
|
29
|
+
return T.forEach((e) => {
|
|
30
|
+
let r = e.accessorKey, i = t.get(r);
|
|
31
|
+
i !== null && (n[r] = i);
|
|
32
|
+
}), r(() => {
|
|
33
|
+
b(n);
|
|
34
|
+
}), await f(n), d(), n;
|
|
35
|
+
}, m || {});
|
|
36
|
+
if (!u) return null;
|
|
37
|
+
let w = (e, t) => {
|
|
38
|
+
v((n) => ({
|
|
39
|
+
...n,
|
|
40
|
+
[e]: t
|
|
41
|
+
}));
|
|
42
|
+
}, T = p.filter((e) => e.accessorKey && e.meta?.isEditable !== !1 && e.id !== "actions" && e.id !== "select");
|
|
43
|
+
return /* @__PURE__ */ c("div", {
|
|
44
|
+
className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm animate-in fade-in-0",
|
|
45
|
+
children: /* @__PURE__ */ l("form", {
|
|
46
|
+
action: S,
|
|
47
|
+
className: "bg-background w-full max-w-lg rounded-lg border shadow-lg p-6 space-y-6 animate-in zoom-in-95 slide-in-from-bottom-2",
|
|
48
|
+
role: "dialog",
|
|
49
|
+
"aria-modal": "true",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ l("div", {
|
|
52
|
+
className: "flex flex-col space-y-1.5 text-center sm:text-left",
|
|
53
|
+
children: [/* @__PURE__ */ c("h2", {
|
|
54
|
+
className: "text-lg font-semibold leading-none tracking-tight",
|
|
55
|
+
children: h ? "Add New Record" : "Edit Record"
|
|
56
|
+
}), /* @__PURE__ */ c("p", {
|
|
57
|
+
className: "text-sm text-muted-foreground",
|
|
58
|
+
children: h ? "Enter details for the new record." : "Make changes to the record below."
|
|
59
|
+
})]
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ c("div", {
|
|
62
|
+
className: "grid gap-4 py-4 max-h-[60vh] overflow-y-auto pr-2",
|
|
63
|
+
children: T.map((e) => {
|
|
64
|
+
let r = e.accessorKey, i = y[r] ?? "";
|
|
65
|
+
return /* @__PURE__ */ l("div", {
|
|
66
|
+
className: "grid grid-cols-4 items-center gap-4",
|
|
67
|
+
children: [/* @__PURE__ */ c(n, {
|
|
68
|
+
htmlFor: r,
|
|
69
|
+
className: "text-right",
|
|
70
|
+
children: typeof e.header == "string" ? e.header : r
|
|
71
|
+
}), /* @__PURE__ */ c(t, {
|
|
72
|
+
id: r,
|
|
73
|
+
name: r,
|
|
74
|
+
value: i,
|
|
75
|
+
onChange: (e) => w(r, e.target.value),
|
|
76
|
+
className: "col-span-3"
|
|
77
|
+
})]
|
|
78
|
+
}, r);
|
|
79
|
+
})
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ l("div", {
|
|
82
|
+
className: "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
|
|
83
|
+
children: [/* @__PURE__ */ c(e, {
|
|
84
|
+
variant: "outline",
|
|
85
|
+
type: "button",
|
|
86
|
+
onClick: d,
|
|
87
|
+
disabled: C,
|
|
88
|
+
children: "Cancel"
|
|
89
|
+
}), /* @__PURE__ */ c(e, {
|
|
90
|
+
type: "submit",
|
|
91
|
+
disabled: C,
|
|
92
|
+
children: C ? "Saving..." : "Save Changes"
|
|
93
|
+
})]
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
})
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
//#endregion
|
|
100
|
+
export { u as EzTableEditDialog };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as e } from "./EzLayout-
|
|
1
|
+
import { p as e } from "./EzLayout-DFxegglu.js";
|
|
2
2
|
import { _ as t } from "./EzProvider-AlmsYIDk.js";
|
|
3
3
|
import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
4
|
import { flexRender as a } from "@tanstack/react-table";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-
|
|
1
|
+
const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-DOh8O0iX.cjs"),r=require("./dropdown-menu-BRP0tyR_.cjs");let i=require("react");i=e.y(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");var s=e.v({EzTableToolbar:()=>c}),c=(0,i.memo)(({globalFilter:s,setGlobalFilter:c,onExportExcel:l,onExportCSV:u,onExportPDF:d,enableChangeTracking:f,canUndo:p,canRedo:m,undo:h,redo:g,isPending:_,onAdd:v,onSave:y,onDiscard:b,enableEditing:x,enableHiding:S,changes:C,table:w})=>{let T=e.n(),E=(typeof s==`string`?s:s?.quickSearch)??``,[D,O]=(0,i.useState)(E);(0,i.useEffect)(()=>{O(E)},[E]),(0,i.useEffect)(()=>{let e=setTimeout(()=>{D!==E&&c(typeof s==`object`&&s?{...s,quickSearch:D}:D)},300);return()=>clearTimeout(e)},[D,c,E]);let k=(0,i.useCallback)(e=>{O(e.target.value)},[]);return(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-y-2 px-1`,children:[(0,o.jsxs)(`div`,{className:`flex flex-1 flex-wrap items-center gap-2`,children:[x&&v&&(0,o.jsxs)(t.t,{variant:`default`,size:`sm`,className:`h-8 shadow-sm bg-primary hover:bg-primary/90 text-primary-foreground`,onClick:v,children:[(0,o.jsx)(a.Plus,{className:`mr-1.5 h-3.5 w-3.5`}),`Add New`]}),x&&(C?.added||0)+(C?.edited||0)+(C?.deleted||0)>0&&(0,o.jsxs)(`div`,{className:`flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300`,children:[(0,o.jsxs)(t.t,{variant:`default`,size:`sm`,className:`h-8 bg-success hover:bg-success/90 text-success-foreground shadow-sm font-bold gap-1.5`,onClick:y,children:[(0,o.jsx)(a.Save,{className:`h-3.5 w-3.5`}),`Save`]}),(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`h-8 border-error/20 text-error hover:bg-error/5 hover:text-error font-bold gap-1.5`,onClick:b,children:[(0,o.jsx)(a.XCircle,{className:`h-3.5 w-3.5`}),`Discard`]})]}),(0,o.jsxs)(`div`,{className:`relative`,children:[(0,o.jsx)(n.t,{placeholder:`Filter all columns...`,value:D,onChange:k,className:e._(`h-8 min-w-[150px] flex-1 lg:max-w-[250px]`,_&&`opacity-70`)}),_&&(0,o.jsx)(a.Loader2,{className:`absolute right-2 top-1/2 -translate-y-1/2 w-4 h-4 animate-spin text-muted-foreground`})]}),f&&(0,o.jsxs)(`div`,{className:`flex items-center gap-1 ml-2 border-l border-border pl-2`,children:[(0,o.jsx)(t.t,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,disabled:!p,onClick:h,title:`Undo`,children:(0,o.jsx)(a.Undo,{className:`h-4 w-4`})}),(0,o.jsx)(t.t,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,disabled:!m,onClick:g,title:`Redo`,children:(0,o.jsx)(a.Redo,{className:`h-4 w-4`})})]})]}),(0,o.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[S&&w&&(0,o.jsxs)(r.t,{children:[(0,o.jsx)(r.h,{asChild:!0,children:(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`h-8 gap-2`,children:[(0,o.jsx)(a.Columns3,{className:`w-4 h-4`}),` Columns`]})}),(0,o.jsx)(r.r,{align:`end`,className:`w-[180px]`,children:w.getAllLeafColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide()).map(e=>(0,o.jsx)(r.n,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:typeof e.columnDef.header==`string`?e.columnDef.header:e.id.replace(/_/g,` `)||`Unnamed Column`},e.id))})]}),(u||l||d)&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>window.print(),className:`h-8 gap-2`,children:[(0,o.jsx)(a.Printer,{className:`w-4 h-4`}),` Print`]}),u&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{u?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing CSV export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export CSV`]}),l&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{l?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing Excel export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export Excel`]}),d&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{d?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing PDF export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export PDF`]})]})]})]})});c.displayName=`EzTableToolbar`,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { p as e } from "./EzLayout-
|
|
1
|
+
import { p as e } from "./EzLayout-DFxegglu.js";
|
|
2
2
|
import { _ as t, n } from "./EzProvider-AlmsYIDk.js";
|
|
3
3
|
import { t as r } from "./button-CYyNwV8S.js";
|
|
4
|
-
import { t as i } from "./input-
|
|
4
|
+
import { t as i } from "./input-CcRi0LeO.js";
|
|
5
5
|
import { h as a, n as o, r as s, t as c } from "./dropdown-menu-B_7_K13o.js";
|
|
6
6
|
import { memo as l, useCallback as u, useEffect as d, useState as f } from "react";
|
|
7
7
|
import { Columns3 as p, Download as m, Loader2 as h, Plus as g, Printer as _, Redo as v, Save as y, Undo as b, XCircle as x } from "lucide-react";
|
|
@@ -3,9 +3,9 @@ import { n, t as r } from "./EzErrorBoundary-C7a6VisX.js";
|
|
|
3
3
|
import { t as i } from "./useService-CnCBGG3G.js";
|
|
4
4
|
import { t as a } from "./useComponentState-DiSFLYju.js";
|
|
5
5
|
import { n as o, t as s } from "./useInitCoreServices-CuBrviDM.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { _ as c, t as l } from "./EzContextMenu-srLxujt8.js";
|
|
7
|
+
import { t as u } from "./useServiceState-CkrJZm1D.js";
|
|
8
|
+
import { a as d, i as f, t as p } from "./HighlightText-DNA2R2uf.js";
|
|
9
9
|
import { memo as m, useCallback as h, useEffect as g, useMemo as _, useRef as v, useState as y } from "react";
|
|
10
10
|
import { AlertTriangle as b, Check as x, ChevronDown as S, ChevronRight as C, Loader2 as w, RefreshCw as T } from "lucide-react";
|
|
11
11
|
import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
|
|
@@ -64,7 +64,7 @@ var R = class {
|
|
|
64
64
|
}).map((e) => ({
|
|
65
65
|
...e,
|
|
66
66
|
children: e.children ? B(e.children, t) : void 0
|
|
67
|
-
})), V =
|
|
67
|
+
})), V = f, H = d, U = (e) => {
|
|
68
68
|
let { data: t, fields: n, sortOrder: r, onDataSourceChanged: i, onDataBound: o } = e, { state: s, setState: c } = a({ initialState: {
|
|
69
69
|
internalTreeData: t,
|
|
70
70
|
loadingNodes: /* @__PURE__ */ new Set()
|
|
@@ -252,7 +252,7 @@ var R = class {
|
|
|
252
252
|
let n = [], r = (e, a = 0) => {
|
|
253
253
|
e.forEach((e) => {
|
|
254
254
|
let o = i ? i.get(e.id) : void 0;
|
|
255
|
-
if ((i
|
|
255
|
+
if ((!i || o?.matches) === !1) return;
|
|
256
256
|
n.push({
|
|
257
257
|
node: e,
|
|
258
258
|
level: a
|
|
@@ -423,7 +423,7 @@ var R = class {
|
|
|
423
423
|
g
|
|
424
424
|
]));
|
|
425
425
|
}, q = (e) => {
|
|
426
|
-
let n = t(), r =
|
|
426
|
+
let n = t(), r = u("I18nService")?.dir || "ltr", { serviceRegistry: a, api: s } = o(e), { dir: c, apiRef: l, searchTerm: d } = e, f = c === "auto" || !c ? r : c, { treeData: p, setInternalTreeData: m, loadingNodes: v, setLoadingNodes: b, updateNode: x } = U(e), S = _(() => e.service ? e.service : e.serviceName ? n.get(e.serviceName) : null, [e.service, e.serviceName]);
|
|
427
427
|
g(() => {
|
|
428
428
|
S && S.loadNodes().then((e) => {
|
|
429
429
|
m(e);
|
|
@@ -450,7 +450,7 @@ var R = class {
|
|
|
450
450
|
let { selectedNodes: T, setInternalSelectedNodes: E, toggleSelect: D, checkedNodes: O, setInternalCheckedNodes: k, indeterminateNodes: A, setIndeterminateNodes: j, toggleCheck: M, updateCheckState: N } = W(e, C, p), { expandedNodes: P, setInternalExpandedNodes: F, toggleExpand: I } = ee(e, p, x, b, S), { flattenedNodes: L } = G(p, P, d), [z, B] = y(null), V = h((t, n) => {
|
|
451
451
|
x(t, { label: n }), e.onNodeRename?.(t, n);
|
|
452
452
|
}, [x, e.onNodeRename]);
|
|
453
|
-
return K(e, p, m, P, F, O, k, E, j, N, L, C, B,
|
|
453
|
+
return K(e, p, m, P, F, O, k, E, j, N, L, C, B, l, s), {
|
|
454
454
|
state: {
|
|
455
455
|
treeData: p,
|
|
456
456
|
expandedNodes: P,
|
|
@@ -507,7 +507,7 @@ var R = class {
|
|
|
507
507
|
})
|
|
508
508
|
]
|
|
509
509
|
})
|
|
510
|
-
}), Y = m(({ node: t, level: n, isExpanded: r, isSelected: i, isChecked: a, isIndeterminate: o, isLoading: s, onToggleExpand: c, onToggleSelect:
|
|
510
|
+
}), Y = m(({ node: t, level: n, isExpanded: r, isSelected: i, isChecked: a, isIndeterminate: o, isLoading: s, onToggleExpand: c, onToggleSelect: u, onToggleCheck: d, onRename: f, showCheckboxes: m, allowEditing: h, searchTerm: _, style: b, onKeyDown: T, tabIndex: k, autoFocus: A, slots: j, slotProps: M, allowTextWrap: N, animation: F, checkOnClick: L, fullRowSelect: R, fullRowNavigable: z, onNodeClicked: B, onDrawNode: V, isEditing: H, onEditingChange: U, dir: ee }) => {
|
|
511
511
|
let [W, G] = y(!1), [K, q] = y(t.label);
|
|
512
512
|
g(() => {
|
|
513
513
|
H !== void 0 && H !== W && (G(H), H && q(t.label));
|
|
@@ -548,17 +548,17 @@ var R = class {
|
|
|
548
548
|
}) : D(r ? S : C, { className: "w-4 h-4" }) : null, fe = () => m ? ue ? /* @__PURE__ */ D(ue, {
|
|
549
549
|
checked: a,
|
|
550
550
|
indeterminate: o,
|
|
551
|
-
onChange: () =>
|
|
551
|
+
onChange: () => d(t.id),
|
|
552
552
|
...M?.checkbox
|
|
553
553
|
}) : /* @__PURE__ */ O("div", {
|
|
554
554
|
"data-testid": `tree-checkbox-${t.id}`,
|
|
555
555
|
onClick: (e) => {
|
|
556
|
-
e.stopPropagation(),
|
|
556
|
+
e.stopPropagation(), d(t.id);
|
|
557
557
|
},
|
|
558
558
|
className: e("w-4 h-4 me-2 flex items-center justify-center rounded border-2 transition-all cursor-pointer", a ? "bg-primary border-primary text-primary-foreground" : o ? "bg-background border-primary shadow-[0_0_0_1px_inset_rgba(var(--primary),0.1)]" : "bg-background border-slate-500 dark:border-slate-400 hover:border-primary/50"),
|
|
559
559
|
children: [a && /* @__PURE__ */ D(x, { className: "w-3.5 h-3.5 stroke-[3]" }), o && /* @__PURE__ */ D("div", { className: "w-2.5 h-0.5 bg-primary rounded-full" })]
|
|
560
560
|
}) : null;
|
|
561
|
-
return /* @__PURE__ */ D(
|
|
561
|
+
return /* @__PURE__ */ D(l, {
|
|
562
562
|
contextId: "tree-node",
|
|
563
563
|
data: t,
|
|
564
564
|
onAction: (e) => {
|
|
@@ -577,7 +577,7 @@ var R = class {
|
|
|
577
577
|
h && e.key === "F2" && (e.stopPropagation(), G(!0), q(t.label)), Z?.onKeyDown && Z.onKeyDown(e), T(e, t.id);
|
|
578
578
|
},
|
|
579
579
|
onClick: () => {
|
|
580
|
-
|
|
580
|
+
u(t.id), B?.(t.id), L && m && d(t.id);
|
|
581
581
|
},
|
|
582
582
|
className: e("flex items-center py-1.5 px-2 cursor-pointer hover:bg-muted/50 rounded-md w-full group outline-none focus:ring-1 focus:ring-primary/30 select-none", i ? "bg-primary/10 text-primary" : "text-foreground", X ? "bg-primary/5" : "", F ? "transition-all duration-200" : ""),
|
|
583
583
|
style: {
|
|
@@ -592,8 +592,8 @@ var R = class {
|
|
|
592
592
|
isChecked: a,
|
|
593
593
|
isIndeterminate: o,
|
|
594
594
|
onToggleExpand: () => c(t.id),
|
|
595
|
-
onToggleSelect: () =>
|
|
596
|
-
onToggleCheck: () =>
|
|
595
|
+
onToggleSelect: () => u(t.id),
|
|
596
|
+
onToggleCheck: () => d(t.id),
|
|
597
597
|
...M?.node || {}
|
|
598
598
|
}) : /* @__PURE__ */ O(E, { children: [
|
|
599
599
|
$ || s ? /* @__PURE__ */ D("button", {
|
|
@@ -625,7 +625,7 @@ var R = class {
|
|
|
625
625
|
onDoubleClick: (e) => {
|
|
626
626
|
e.stopPropagation(), ie();
|
|
627
627
|
},
|
|
628
|
-
children: /* @__PURE__ */ D(
|
|
628
|
+
children: /* @__PURE__ */ D(p, {
|
|
629
629
|
text: t.label,
|
|
630
630
|
highlight: _
|
|
631
631
|
})
|
|
@@ -637,8 +637,8 @@ var R = class {
|
|
|
637
637
|
Y.displayName = "EzTreeViewItem";
|
|
638
638
|
//#endregion
|
|
639
639
|
//#region src/components/EzTreeView/EzVirtualTree.tsx
|
|
640
|
-
var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, indeterminateNodes: a, loadingNodes: o, onToggleExpand: s, onToggleSelect:
|
|
641
|
-
let { rowVirtualizer: N, parentRef: P, getVirtualItems: I } =
|
|
640
|
+
var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, indeterminateNodes: a, loadingNodes: o, onToggleExpand: s, onToggleSelect: l, onToggleCheck: u, onNodeRename: d, className: f, dir: p, showCheckboxes: m, allowEditing: g, searchTerm: v, slots: b, slotProps: x, allowTextWrap: S, animation: C, checkOnClick: w, fullRowSelect: T, fullRowNavigable: E, onKeyPress: O, onNodeClicked: k, onDrawNode: A, editingNodeId: j, setEditingNodeId: M }) => {
|
|
641
|
+
let { rowVirtualizer: N, parentRef: P, getVirtualItems: I } = c({
|
|
642
642
|
rowCount: t.length,
|
|
643
643
|
rowHeight: 32,
|
|
644
644
|
overscanCount: 10,
|
|
@@ -647,7 +647,7 @@ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, inde
|
|
|
647
647
|
let e = /* @__PURE__ */ new Map();
|
|
648
648
|
return t.forEach((t, n) => e.set(t.node.id, n)), e;
|
|
649
649
|
}, [t]), V = h((e, r, i) => {
|
|
650
|
-
let a = p === "rtl", o = a ? "ArrowLeft" : "ArrowRight",
|
|
650
|
+
let a = p === "rtl", o = a ? "ArrowLeft" : "ArrowRight", c = a ? "ArrowRight" : "ArrowLeft";
|
|
651
651
|
if (e.key === "ArrowDown") {
|
|
652
652
|
e.preventDefault();
|
|
653
653
|
let n = Math.min(t.length - 1, r + 1);
|
|
@@ -657,26 +657,26 @@ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, inde
|
|
|
657
657
|
let t = Math.max(0, r - 1);
|
|
658
658
|
z(t), N.scrollToIndex(t);
|
|
659
659
|
} else if (e.key === o) e.preventDefault(), (i.children?.length || i.children && !i.isLeaf || !i.isLoaded && !i.isLeaf) && !n.has(i.id) ? s(i.id) : i.children?.length && n.has(i.id) && r + 1 < t.length && t[r + 1].level > (i.level ?? 0) && (z(r + 1), N.scrollToIndex(r + 1));
|
|
660
|
-
else if (e.key ===
|
|
660
|
+
else if (e.key === c) {
|
|
661
661
|
if (e.preventDefault(), n.has(i.id)) s(i.id);
|
|
662
662
|
else if (i.parentId) {
|
|
663
663
|
let e = B.get(i.parentId);
|
|
664
664
|
e !== void 0 && (z(e), N.scrollToIndex(e));
|
|
665
665
|
}
|
|
666
|
-
} else (e.key === "Enter" || e.key === " ") && (e.preventDefault(), m ?
|
|
666
|
+
} else (e.key === "Enter" || e.key === " ") && (e.preventDefault(), m ? u(i.id) : l(i.id));
|
|
667
667
|
}, [
|
|
668
668
|
t,
|
|
669
669
|
n,
|
|
670
670
|
s,
|
|
671
|
-
c,
|
|
672
671
|
l,
|
|
672
|
+
u,
|
|
673
673
|
m,
|
|
674
674
|
B,
|
|
675
675
|
N
|
|
676
676
|
]);
|
|
677
677
|
return /* @__PURE__ */ D("div", {
|
|
678
678
|
ref: P,
|
|
679
|
-
className: e("absolute inset-0 overflow-y-auto bg-background border rounded-lg shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20",
|
|
679
|
+
className: e("absolute inset-0 overflow-y-auto bg-background border rounded-lg shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20", f),
|
|
680
680
|
dir: p,
|
|
681
681
|
role: "tree",
|
|
682
682
|
onKeyDown: (e) => O?.(e),
|
|
@@ -690,24 +690,24 @@ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, inde
|
|
|
690
690
|
items: t.map((e) => e.node.id),
|
|
691
691
|
strategy: L,
|
|
692
692
|
children: I().map((e) => {
|
|
693
|
-
let { node:
|
|
693
|
+
let { node: c, level: f } = t[e.index], h = R === e.index;
|
|
694
694
|
return /* @__PURE__ */ D(Y, {
|
|
695
|
-
node:
|
|
695
|
+
node: c,
|
|
696
696
|
level: f,
|
|
697
|
-
isExpanded: n.has(
|
|
698
|
-
isSelected: r.has(
|
|
699
|
-
isChecked: i.has(
|
|
700
|
-
isIndeterminate: a.has(
|
|
701
|
-
isLoading: o.has(
|
|
702
|
-
hasChildren: !!
|
|
697
|
+
isExpanded: n.has(c.id),
|
|
698
|
+
isSelected: r.has(c.id),
|
|
699
|
+
isChecked: i.has(c.id),
|
|
700
|
+
isIndeterminate: a.has(c.id),
|
|
701
|
+
isLoading: o.has(c.id),
|
|
702
|
+
hasChildren: !!c.children?.length || c.children && !c.isLeaf || !c.isLoaded && !c.isLeaf,
|
|
703
703
|
onToggleExpand: s,
|
|
704
|
-
onToggleSelect:
|
|
705
|
-
onToggleCheck:
|
|
706
|
-
onRename:
|
|
704
|
+
onToggleSelect: l,
|
|
705
|
+
onToggleCheck: u,
|
|
706
|
+
onRename: d,
|
|
707
707
|
showCheckboxes: m,
|
|
708
708
|
allowEditing: g,
|
|
709
709
|
searchTerm: v,
|
|
710
|
-
onKeyDown: (t) => V(t, e.index,
|
|
710
|
+
onKeyDown: (t) => V(t, e.index, c),
|
|
711
711
|
style: {
|
|
712
712
|
position: "absolute",
|
|
713
713
|
top: `${e.start}px`,
|
|
@@ -726,10 +726,10 @@ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, inde
|
|
|
726
726
|
fullRowNavigable: E,
|
|
727
727
|
onNodeClicked: k,
|
|
728
728
|
onDrawNode: A,
|
|
729
|
-
isEditing: j ===
|
|
730
|
-
onEditingChange: (e) => M(e ?
|
|
729
|
+
isEditing: j === c.id,
|
|
730
|
+
onEditingChange: (e) => M(e ? c.id : null),
|
|
731
731
|
dir: p
|
|
732
|
-
},
|
|
732
|
+
}, c.id);
|
|
733
733
|
})
|
|
734
734
|
})
|
|
735
735
|
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./EzErrorBoundary-d_2g-_EK.cjs"),n=require("./useService-CyF782jv.cjs"),r=require("./useComponentState-Wcz6pjd6.cjs"),i=require("./useInitCoreServices-DlALVDNx.cjs"),a=require("./EzContextMenu-BCUoEQp5.cjs"),o=require("./useServiceState-PyYQWxHi.cjs"),s=require("./HighlightText-BViuwe03.cjs");let c=require("react");c=e.y(c,1);let l=require("lucide-react"),u=require("react/jsx-runtime"),d=require("@dnd-kit/core"),f=require("@dnd-kit/utilities"),p=require("@dnd-kit/sortable");var m=class{name=`HierarchyService`;nodeMap=new Map;constructor(){}registerNode(e){this.nodeMap.set(e.id,e)}unregisterNode(e){this.nodeMap.delete(e)}getParent(e){let t=this.nodeMap.get(e);if(t&&t.parentId)return this.nodeMap.get(t.parentId)}getChildren(e){let t=this.nodeMap.get(e);return t&&t.children?t.children.map(e=>this.nodeMap.get(e)).filter(e=>!!e):[]}getDescendants(e){let t=[],n=[...this.nodeMap.get(e)?.children||[]];for(;n.length>0;){let e=n.pop();t.push(e);let r=this.nodeMap.get(e);r?.children&&n.push(...r.children)}return t}getAncestors(e){let t=[],n=this.nodeMap.get(e)?.parentId;for(;n;)t.push(n),n=this.nodeMap.get(n)?.parentId;return t}getNode(e){return this.nodeMap.get(e)}cleanup(){this.nodeMap.clear()}},h=(e,t)=>t?{id:t.id?e[t.id]:e.id,label:t.text?e[t.text]:e.label,children:t.children?e[t.children]:e.children,icon:t.icon?e[t.icon]:e.icon,...e}:e,g=(e,t)=>!t||t===`None`?e:[...e].sort((e,n)=>{let r=e.label.localeCompare(n.label);return t===`Ascending`?r:-r}).map(e=>({...e,children:e.children?g(e.children,t):void 0})),_=s.i,v=s.a,y=e=>{let{data:t,fields:n,sortOrder:i,onDataSourceChanged:a,onDataBound:o}=e,{state:s,setState:l}=r.t({initialState:{internalTreeData:t,loadingNodes:new Set}}),u=(0,c.useRef)(!1),d=(0,c.useCallback)(e=>{l(t=>({...t,internalTreeData:typeof e==`function`?e(t.internalTreeData):e}))},[l]),f=(0,c.useCallback)(e=>{l(t=>({...t,loadingNodes:typeof e==`function`?e(t.loadingNodes):e}))},[l]),{internalTreeData:p,loadingNodes:m}=s,_=(0,c.useMemo)(()=>{let e=p;if(n){let t=e=>e.map(e=>{let r=h(e,n);return r.children&&=t(r.children),r});e=t(e)}return i&&(e=g(e,i)),e},[p,n,i]),y=(0,c.useRef)(t);return(0,c.useEffect)(()=>{y.current!==t&&(d(t),a?.(),y.current=t)},[t,a]),(0,c.useEffect)(()=>{u.current&&o?.()},[_,o]),(0,c.useEffect)(()=>(u.current=!0,()=>{u.current=!1}),[]),{treeData:_,setInternalTreeData:d,loadingNodes:m,setLoadingNodes:f,updateNode:(0,c.useCallback)((e,t)=>{d(n=>v(n,e,t))},[d])}},b=(e,t,n,r,i)=>{let{expandedNodes:a,onNodeExpanding:o,onNodeExpanded:s,onNodeCollapsing:l,onNodeCollapsed:u,onNodeExpand:d,onLoadChildren:f,onActionFailure:p}=e,[m,h]=(0,c.useState)(new Set),g=a?new Set(a):m;return{expandedNodes:g,setInternalExpandedNodes:h,toggleExpand:(0,c.useCallback)(async e=>{let c=g.has(e),m=!c;if(m){if(o?.(e)===!1)return}else if(l?.(e)===!1)return;if(m&&(f||i)){let a=_(t,e);if(a&&!a.isLoaded&&!a.isLeaf){r(t=>new Set(t).add(e));try{n(e,{children:i?await i.loadNodes(e):await f(e),isLoaded:!0})}catch(e){p?.(e);return}finally{r(t=>{let n=new Set(t);return n.delete(e),n})}}}let v=new Set(g);c?v.delete(e):v.add(e),a||h(v),d?.(e,m),m?s?.(e):u?.(e)},[g,t,f,d,a,o,l,s,u,p,n,r,i])}},x=(e,t,n)=>{let{selectedNodes:r,checkedNodes:i,selectionMode:a=`single`,onSelectionChange:o,onCheckedChange:s,onNodeSelecting:l,onNodeSelected:u,onNodeChecking:d,onNodeChecked:f,autoCheck:p=!0}=e,[m,h]=(0,c.useState)(new Set),g=r?new Set(r):m,[_,v]=(0,c.useState)(new Set),y=i?new Set(i):_,[b,x]=(0,c.useState)(new Set),S=(0,c.useCallback)(e=>{if(l?.(e)===!1)return;let t=new Set(a===`multiple`?g:[]);t.has(e)?t.delete(e):t.add(e),r||h(t),o?.(Array.from(t)),u?.(e)},[g,a,o,r,l,u]),C=(0,c.useCallback)((e,n)=>{let r=new Set(y),a=new Set(b),o=t.getDescendants(e),c=t.getAncestors(e);n?(r.add(e),a.delete(e),p&&o.forEach(e=>{r.add(e),a.delete(e)})):(r.delete(e),a.delete(e),p&&o.forEach(e=>{r.delete(e),a.delete(e)})),p&&c.forEach(e=>{let n=t.getChildren(e),i=n.every(e=>r.has(e.id)),o=n.every(e=>!r.has(e.id)&&!a.has(e.id));i?(r.add(e),a.delete(e)):o?(r.delete(e),a.delete(e)):(r.delete(e),a.add(e))}),x(a),i||v(r),s?.(Array.from(r)),f?.(e,n)},[y,b,t,s,p,i,f]),w=(0,c.useCallback)(e=>{let t=y.has(e);d?.(e,!t)!==!1&&C(e,!t)},[y,C,d]);return(0,c.useEffect)(()=>{if(!p||!t||!n.length)return;let e=new Set,r=new Set(y),a=t=>{if(!(t.children&&t.children.length>0))return{isChecked:r.has(t.id),isIndeterminate:!1};let n=t.children.map(e=>a(e)),i=n.every(e=>!e.isChecked&&!e.isIndeterminate);return n.every(e=>e.isChecked&&!e.isIndeterminate)?(r.add(t.id),{isChecked:!0,isIndeterminate:!1}):i?(r.delete(t.id),{isChecked:!1,isIndeterminate:!1}):(r.delete(t.id),e.add(t.id),{isChecked:!1,isIndeterminate:!0})};n.forEach(e=>a(e)),Array.from(b).sort().join(`,`)!==Array.from(e).sort().join(`,`)&&x(e),Array.from(y).sort().join(`,`)!==Array.from(r).sort().join(`,`)&&(i||v(r),s?.(Array.from(r)))},[y,t,p,n,i,s,v]),{selectedNodes:g,setInternalSelectedNodes:h,toggleSelect:S,checkedNodes:y,setInternalCheckedNodes:v,indeterminateNodes:b,setIndeterminateNodes:x,toggleCheck:w,updateCheckState:C}},S=(e,t,n=``)=>{let r=n.toLowerCase(),i=(0,c.useMemo)(()=>{if(!r)return null;let t=new Map,n=e=>{if(t.has(e.id))return t.get(e.id);let i=(e.label||``).toLowerCase().includes(r),a=!1;if(e.children)for(let t of e.children)n(t).matches&&(a=!0);let o={matches:i||a,hasChildMatch:a};return t.set(e.id,o),o};return e.forEach(e=>n(e)),t},[e,r]);return{flattenedNodes:(0,c.useMemo)(()=>{let n=[],r=(e,a=0)=>{e.forEach(e=>{let o=i?i.get(e.id):void 0;if((!i||o?.matches)===!1)return;n.push({node:e,level:a});let s=i&&o?.hasChildMatch;(t.has(e.id)||s)&&e.children&&r(e.children,a+1)})};return r(e),n},[e,t,i])}},C=(n,r,i,a,o,s,l,u,d,f,p,m,h,g,y={})=>{let b=e.n(),{expandedNodes:x,checkedNodes:S,selectedNodes:C,onNodeExpand:w,onCheckedChange:T,onSelectionChange:E,onNodeEditing:D}=n;t.n(g,(0,c.useMemo)(()=>{let e={expandAll:()=>{let e=Array.from(m.nodeMap.keys());x?w?.(e[0],!0):o(new Set(e))},collapseAll:()=>{x?w?.(``,!1):o(new Set)},checkAll:()=>{let e=Array.from(m.nodeMap.keys());S?T?.(e):(l(new Set(e)),d(new Set))},uncheckAll:()=>{S?T?.([]):(l(new Set),d(new Set))},selectNode:e=>{C?E?.([e]):u(new Set([e]))},expandNode:(e,t=!0)=>{x?w?.(e,t):o(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})},checkNode:(e,t=!0)=>f(e,t),getFlattenedNodes:()=>p,addNodes:(e,t,n)=>{if(!t)i(t=>{let r=[...t];return n===void 0?r.push(...e):r.splice(n,0,...e),r});else{let r=i=>i.map(i=>{if(i.id===t){let t=[...i.children||[]];return n===void 0?t.push(...e):t.splice(n,0,...e),{...i,children:t}}return i.children?{...i,children:r(i.children)}:i});i(e=>r(e))}b.get(`NotificationService`)?.show({type:`success`,message:`${e.length} Node(s) Added`,duration:2e3})},removeNodes:e=>{let t=new Set(e),n=e=>e.filter(e=>!t.has(e.id)).map(e=>({...e,children:e.children?n(e.children):void 0}));i(e=>n(e)),b.get(`NotificationService`)?.show({type:`success`,message:`${e.length} Node(s) Removed`,duration:2e3})},updateNode:(e,t)=>{i(n=>v(n,e,t)),b.get(`NotificationService`)?.show({type:`success`,message:`Node Updated Successfully`,duration:2e3})},moveNodes:(e,t,n)=>{let a=[],o=new Set(e),s=e=>e.filter(e=>o.has(e.id)?(a.push(e),!1):!0).map(e=>({...e,children:e.children?s(e.children):void 0})),c=s(r),l=e=>e.map(e=>{if(e.id===t){let t=[...e.children||[]];return n===void 0?t.push(...a):t.splice(n,0,...a),{...e,children:t}}return e.children?{...e,children:l(e.children)}:e});i(l(c)),b.get(`NotificationService`)?.show({type:`success`,message:`Nodes Moved Successfully`,duration:2e3})},getNode:e=>_(r,e),getTreeData:()=>r,ensureVisible:e=>{let t=m.getAncestors(e);x?(t.forEach(e=>w?.(e,!0)),w?.(e,!0)):o(n=>{let r=new Set(n);return t.forEach(e=>r.add(e)),r.add(e),r})},beginEdit:e=>{_(r,e)&&D?.(e)!==!1&&h(e)},disableNodes:(e,t=!0)=>{e.forEach(e=>{i(n=>v(n,e,{disabled:t}))})},enableNodes:e=>{e.forEach(e=>{i(t=>v(t,e,{disabled:!1}))})},getAllCheckedNodes:()=>Array.from(s),getDisabledNodes:()=>{let e=[],t=n=>{n.forEach(n=>{n.disabled&&e.push(n.id),n.children&&t(n.children)})};return t(r),e}};return{...y,...e}},[m,r,a,s,x,S,C,w,T,E,D,i,o,l,u,d,f,p,h,y]))},w=t=>{let r=e.n(),a=o.t(`I18nService`)?.dir||`ltr`,{serviceRegistry:s,api:l}=i.n(t),{dir:u,apiRef:d,searchTerm:f}=t,p=u===`auto`||!u?a:u,{treeData:h,setInternalTreeData:g,loadingNodes:_,setLoadingNodes:v,updateNode:w}=y(t),T=(0,c.useMemo)(()=>t.service?t.service:t.serviceName?r.get(t.serviceName):null,[t.service,t.serviceName]);(0,c.useEffect)(()=>{T&&T.loadNodes().then(e=>{g(e)})},[T,g]);let E=n.t(`HierarchyService`,()=>new m,s||r),D=(0,c.useCallback)((e,t=0,n)=>{e.forEach(e=>{let r={id:e.id,level:t,parentId:n,children:e.children?.map(e=>e.id)};E.registerNode(r),e.children&&D(e.children,t+1,e.id)})},[E]);(0,c.useEffect)(()=>{E&&(E.cleanup(),D(h))},[h,E,D]);let{selectedNodes:O,setInternalSelectedNodes:k,toggleSelect:A,checkedNodes:j,setInternalCheckedNodes:M,indeterminateNodes:N,setIndeterminateNodes:P,toggleCheck:F,updateCheckState:I}=x(t,E,h),{expandedNodes:L,setInternalExpandedNodes:R,toggleExpand:z}=b(t,h,w,v,T),{flattenedNodes:B}=S(h,L,f),[V,H]=(0,c.useState)(null),U=(0,c.useCallback)((e,n)=>{w(e,{label:n}),t.onNodeRename?.(e,n)},[w,t.onNodeRename]);return C(t,h,g,L,R,j,M,k,P,I,B,E,H,d,l),{state:{treeData:h,expandedNodes:L,selectedNodes:O,checkedNodes:j,indeterminateNodes:N,loadingNodes:_,flattenedNodes:B,editingNodeId:V},actions:{toggleExpand:z,toggleSelect:A,toggleCheck:F,handleNodeRename:U,setEditingNodeId:H},config:{allowTextWrap:t.allowTextWrap,animation:t.animation,checkOnClick:t.checkOnClick,fullRowSelect:t.fullRowSelect,fullRowNavigable:t.fullRowNavigable,onKeyPress:t.onKeyPress,onNodeClicked:t.onNodeClicked,onDrawNode:t.onDrawNode},dir:p,baseApi:l}},T=()=>(0,u.jsx)(`div`,{className:`flex flex-col items-center justify-center min-h-screen p-4`,children:(0,u.jsxs)(`div`,{className:`flex flex-col items-center gap-4 max-w-md w-full`,children:[(0,u.jsx)(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-destructive/10`,children:(0,u.jsx)(l.AlertTriangle,{className:`w-8 h-8 text-destructive`})}),(0,u.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-center`,children:[(0,u.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Tree View Error`}),(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Something went wrong with the tree view. Please refresh the page or try again.`})]}),(0,u.jsxs)(`button`,{onClick:()=>window.location.reload(),className:`flex items-center gap-2 px-4 py-2 text-sm font-medium text-primary hover:bg-primary/10 rounded-md transition-colors`,children:[(0,u.jsx)(l.RefreshCw,{className:`w-4 h-4`}),`Refresh Page`]})]})}),E=(0,c.memo)(({node:t,level:n,isExpanded:r,isSelected:i,isChecked:o,isIndeterminate:d,isLoading:m,onToggleExpand:h,onToggleSelect:g,onToggleCheck:_,onRename:v,showCheckboxes:y,allowEditing:b,searchTerm:x,style:S,onKeyDown:C,tabIndex:w,autoFocus:T,slots:E,slotProps:D,allowTextWrap:O,animation:k,checkOnClick:A,fullRowSelect:j,fullRowNavigable:M,onNodeClicked:N,onDrawNode:P,isEditing:F,onEditingChange:I,dir:L})=>{let[R,z]=(0,c.useState)(!1),[B,V]=(0,c.useState)(t.label);(0,c.useEffect)(()=>{F!==void 0&&F!==R&&(z(F),F&&V(t.label))},[F,R,t.label]),(0,c.useEffect)(()=>{P?.(t)},[t,P]);let{setNodeRef:H,transform:U,isDragging:W,attributes:G,listeners:K,transition:q}=(0,p.useSortable)({id:t.id,data:{node:t,type:`tree-item`,level:n}}),J=(0,c.useRef)(null),Y=e=>{H(e),J.current=e};(0,c.useEffect)(()=>{T&&J.current&&!R&&J.current.focus({preventScroll:!0})},[T,R]);let ee=()=>{b&&(z(!0),V(t.label),I?.(!0))},te=e=>{e.key===`Enter`?(v(t.id,B),z(!1),I?.(!1)):e.key===`Escape`&&(V(t.label),z(!1),I?.(!1))},X=t.children&&t.children.length>0||t.children&&!t.isLeaf||!t.isLoaded&&!t.isLeaf,ne=n*20+(X?0:20),re={...S,transform:f.CSS.Translate.toString(U)?`${S.transform||``} ${f.CSS.Translate.toString(U)}`:S.transform,transition:q||S.transition,opacity:W?.3:1,zIndex:W?999:`auto`},Z=E?.node,Q=E?.expandIcon,$=E?.checkbox,ie=()=>m?(0,u.jsx)(l.Loader2,{className:`w-3.5 h-3.5 animate-spin`}):X?Q?(0,u.jsx)(Q,{isExpanded:r,isLoading:m,...D?.expandIcon}):r?(0,u.jsx)(l.ChevronDown,{className:`w-4 h-4`}):(0,u.jsx)(l.ChevronRight,{className:`w-4 h-4`}):null,ae=()=>y?$?(0,u.jsx)($,{checked:o,indeterminate:d,onChange:()=>_(t.id),...D?.checkbox}):(0,u.jsxs)(`div`,{"data-testid":`tree-checkbox-${t.id}`,onClick:e=>{e.stopPropagation(),_(t.id)},className:e._(`w-4 h-4 me-2 flex items-center justify-center rounded border-2 transition-all cursor-pointer`,o?`bg-primary border-primary text-primary-foreground`:d?`bg-background border-primary shadow-[0_0_0_1px_inset_rgba(var(--primary),0.1)]`:`bg-background border-slate-500 dark:border-slate-400 hover:border-primary/50`),children:[o&&(0,u.jsx)(l.Check,{className:`w-3.5 h-3.5 stroke-[3]`}),d&&(0,u.jsx)(`div`,{className:`w-2.5 h-0.5 bg-primary rounded-full`})]}):null;return(0,u.jsx)(a.t,{contextId:`tree-node`,data:t,onAction:e=>{e===`edit`&&b&&(z(!0),V(t.label))},children:(0,u.jsx)(`div`,{ref:Y,...G,...K,role:`treeitem`,"data-testid":`tree-item-${t.id}`,"aria-expanded":X?r:void 0,"aria-selected":i,tabIndex:w,onKeyDown:e=>{b&&e.key===`F2`&&(e.stopPropagation(),z(!0),V(t.label)),K?.onKeyDown&&K.onKeyDown(e),C(e,t.id)},onClick:()=>{g(t.id),N?.(t.id),A&&y&&_(t.id)},className:e._(`flex items-center py-1.5 px-2 cursor-pointer hover:bg-muted/50 rounded-md w-full group outline-none focus:ring-1 focus:ring-primary/30 select-none`,i?`bg-primary/10 text-primary`:`text-foreground`,W?`bg-primary/5`:``,k?`transition-all duration-200`:``),style:{...re,paddingInlineStart:`${ne}px`},children:Z?(0,u.jsx)(Z,{node:t,level:n,isExpanded:r,isSelected:i,isChecked:o,isIndeterminate:d,onToggleExpand:()=>h(t.id),onToggleSelect:()=>g(t.id),onToggleCheck:()=>_(t.id),...D?.node||{}}):(0,u.jsxs)(u.Fragment,{children:[X||m?(0,u.jsx)(`button`,{"data-testid":`expand-button`,onClick:e=>{e.stopPropagation(),h(t.id)},onPointerDown:e=>e.stopPropagation(),className:`w-5 h-5 flex items-center justify-center me-1 text-muted-foreground hover:text-foreground hover:bg-muted rounded focus:outline-none transition-colors`,tabIndex:-1,children:ie()}):null,ae(),t.icon&&(0,u.jsx)(`span`,{className:`me-2 flex-shrink-0 text-muted-foreground group-hover:text-foreground transition-colors`,children:t.icon}),R?(0,u.jsx)(`input`,{"data-testid":`tree-item-edit-input`,autoFocus:!0,value:B,onChange:e=>V(e.target.value),onKeyDown:te,onBlur:()=>z(!1),onClick:e=>e.stopPropagation(),className:`flex-1 bg-background border border-primary rounded px-1 text-sm outline-none`}):(0,u.jsx)(`span`,{className:`text-base font-semibold flex-1 ${O?`whitespace-normal`:`truncate`}`,onDoubleClick:e=>{e.stopPropagation(),ee()},children:(0,u.jsx)(s.t,{text:t.label,highlight:x})})]})})})});E.displayName=`EzTreeViewItem`;var D=(0,c.memo)(({items:t,expandedNodes:n,selectedNodes:r,checkedNodes:i,indeterminateNodes:o,loadingNodes:s,onToggleExpand:l,onToggleSelect:d,onToggleCheck:f,onNodeRename:m,className:h,dir:g,showCheckboxes:_,allowEditing:v,searchTerm:y,slots:b,slotProps:x,allowTextWrap:S,animation:C,checkOnClick:w,fullRowSelect:T,fullRowNavigable:D,onKeyPress:O,onNodeClicked:k,onDrawNode:A,editingNodeId:j,setEditingNodeId:M})=>{let{rowVirtualizer:N,parentRef:P,getVirtualItems:F}=a._({rowCount:t.length,rowHeight:32,overscanCount:10,progressiveRendering:!0}),[I,L]=(0,c.useState)(0),R=(0,c.useMemo)(()=>{let e=new Map;return t.forEach((t,n)=>e.set(t.node.id,n)),e},[t]),z=(0,c.useCallback)((e,r,i)=>{let a=g===`rtl`,o=a?`ArrowLeft`:`ArrowRight`,s=a?`ArrowRight`:`ArrowLeft`;if(e.key===`ArrowDown`){e.preventDefault();let n=Math.min(t.length-1,r+1);L(n),N.scrollToIndex(n)}else if(e.key===`ArrowUp`){e.preventDefault();let t=Math.max(0,r-1);L(t),N.scrollToIndex(t)}else if(e.key===o)e.preventDefault(),(i.children?.length||i.children&&!i.isLeaf||!i.isLoaded&&!i.isLeaf)&&!n.has(i.id)?l(i.id):i.children?.length&&n.has(i.id)&&r+1<t.length&&t[r+1].level>(i.level??0)&&(L(r+1),N.scrollToIndex(r+1));else if(e.key===s){if(e.preventDefault(),n.has(i.id))l(i.id);else if(i.parentId){let e=R.get(i.parentId);e!==void 0&&(L(e),N.scrollToIndex(e))}}else(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_?f(i.id):d(i.id))},[t,n,l,d,f,_,R,N]);return(0,u.jsx)(`div`,{ref:P,className:e._(`absolute inset-0 overflow-y-auto bg-background border rounded-lg shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20`,h),dir:g,role:`tree`,onKeyDown:e=>O?.(e),children:(0,u.jsx)(`div`,{style:{height:`${N.getTotalSize()}px`,width:`100%`,position:`relative`},children:(0,u.jsx)(p.SortableContext,{items:t.map(e=>e.node.id),strategy:p.verticalListSortingStrategy,children:F().map(e=>{let{node:a,level:c}=t[e.index],p=I===e.index;return(0,u.jsx)(E,{node:a,level:c,isExpanded:n.has(a.id),isSelected:r.has(a.id),isChecked:i.has(a.id),isIndeterminate:o.has(a.id),isLoading:s.has(a.id),hasChildren:!!a.children?.length||a.children&&!a.isLeaf||!a.isLoaded&&!a.isLeaf,onToggleExpand:l,onToggleSelect:d,onToggleCheck:f,onRename:m,showCheckboxes:_,allowEditing:v,searchTerm:y,onKeyDown:t=>z(t,e.index,a),style:{position:`absolute`,top:`${e.start}px`,left:0,width:`100%`,height:`${e.size}px`},tabIndex:p?0:-1,autoFocus:p,slots:b,slotProps:x,allowTextWrap:S,animation:C,checkOnClick:w,fullRowSelect:T,fullRowNavigable:D,onNodeClicked:k,onDrawNode:A,isEditing:j===a.id,onEditingChange:e=>M(e?a.id:null),dir:g},a.id)})})})})});D.displayName=`EzVirtualTree`;var O=({onDragEnd:e,onDragStart:t})=>{let[n,r]=(0,c.useState)(null),[i,a]=(0,c.useState)(null),[o,s]=(0,c.useState)(`inside`);return{sensors:(0,d.useSensors)((0,d.useSensor)(d.PointerSensor,{activationConstraint:{distance:8}})),activeNode:n,dragOverNode:i,dragPosition:o,handleDragStart:(0,c.useCallback)(e=>{let{active:n}=e,i=n.data.current?.node;i&&(r(i),t?.(i))},[t]),handleDragOver:(0,c.useCallback)(e=>{e.preventDefault();let{active:t,over:n}=e;if(!n)return;let r=t.data.current?.node,i=n.data.current?.node;if(r&&i&&r.id!==i.id){let e=n.rect,t=e.top+e.height/2;t<e.top+10?s(`before`):t>e.bottom-10?s(`after`):s(`inside`),a(i)}},[]),handleDragEnd:(0,c.useCallback)(t=>{let{active:c,over:l}=t;c&&l&&n&&i&&e(n,i,o),r(null),a(null),s(`inside`)},[n,i,o,e])}},k=n=>{i.t();let{state:{expandedNodes:r,selectedNodes:a,checkedNodes:o,indeterminateNodes:s,loadingNodes:c,flattenedNodes:l,editingNodeId:f},actions:{toggleExpand:p,toggleSelect:m,toggleCheck:h,handleNodeRename:g,setEditingNodeId:_},config:{allowTextWrap:v,animation:y,checkOnClick:b,fullRowSelect:x,fullRowNavigable:S,onKeyPress:C,onNodeClicked:E,onDrawNode:k},dir:A}=w(n),{handleDragEnd:j,sensors:M}=O({onDragEnd:(e,t,r)=>{n.onNodeDrop&&n.onNodeDrop(e,t,r)}});return(0,u.jsx)(t.t,{fallback:(0,u.jsx)(T,{}),children:(0,u.jsx)(`div`,{className:e._(`relative flex-1 w-full h-full min-h-0`,n.className),children:(0,u.jsx)(d.DndContext,{sensors:M,collisionDetection:d.closestCenter,onDragEnd:j,children:(0,u.jsx)(D,{items:l,expandedNodes:r,selectedNodes:a,checkedNodes:o,indeterminateNodes:s,loadingNodes:c,onToggleExpand:p,onToggleSelect:m,onToggleCheck:h,onNodeRename:g,dir:A,showCheckboxes:n.showCheckboxes,allowEditing:n.allowEditing,searchTerm:n.searchTerm,slots:n.slots,slotProps:n.slotProps,allowTextWrap:v,animation:y,checkOnClick:b,fullRowSelect:x,fullRowNavigable:S,onKeyPress:C,onNodeClicked:E,onDrawNode:k,editingNodeId:f,setEditingNodeId:_})})})})};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return k}});
|