dishui 0.0.64 → 0.0.65
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/dist/components/Badge/index.js +12 -9
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/Button/index.js +43 -40
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Card/index.d.ts +11 -0
- package/dist/components/Card/index.js +62 -37
- package/dist/components/Card/index.js.map +1 -1
- package/dist/components/Chart/Chart.js.map +1 -1
- package/dist/components/Checkbox/index.js +32 -30
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/Demo/index.js.map +1 -1
- package/dist/components/EmptyState/index.d.ts +4 -1
- package/dist/components/EmptyState/index.js +3 -3
- package/dist/components/EmptyState/index.js.map +1 -1
- package/dist/components/FileUploader/DropZone.js.map +1 -1
- package/dist/components/FileUploader/FileItem.js.map +1 -1
- package/dist/components/FileUploader/FileUploader.js.map +1 -1
- package/dist/components/FileUploader/UploadQueue.js.map +1 -1
- package/dist/components/Input/index.js +30 -30
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/Label/index.js +41 -40
- package/dist/components/Label/index.js.map +1 -1
- package/dist/components/List/index.js +47 -32
- package/dist/components/List/index.js.map +1 -1
- package/dist/components/Markdown/Markdown.js +61 -57
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/markdownComponents.js +49 -49
- package/dist/components/Markdown/markdownComponents.js.map +1 -1
- package/dist/components/Modal/index.d.ts +7 -3
- package/dist/components/Modal/index.js +77 -65
- package/dist/components/Modal/index.js.map +1 -1
- package/dist/components/Page/index.d.ts +58 -0
- package/dist/components/Page/index.js +74 -0
- package/dist/components/Page/index.js.map +1 -0
- package/dist/components/PageHeader/index.js.map +1 -1
- package/dist/components/Select/index.js +0 -3
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/SidebarToggleButton/index.js.map +1 -1
- package/dist/components/StatCard/index.d.ts +3 -1
- package/dist/components/StatCard/index.js +39 -11
- package/dist/components/StatCard/index.js.map +1 -1
- package/dist/components/Table/index.js +103 -85
- package/dist/components/Table/index.js.map +1 -1
- package/dist/components/Tabs/index.d.ts +19 -5
- package/dist/components/Tabs/index.js +32 -13
- package/dist/components/Tabs/index.js.map +1 -1
- package/dist/components/Tree/Tree.js.map +1 -1
- package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
- package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js +141 -134
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +81 -78
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/themes.js +59 -59
- package/dist/components/pro/CodeEditor/themes.js.map +1 -1
- package/dist/components/pro/DataTable/DataTable.js +49 -48
- package/dist/components/pro/DataTable/DataTable.js.map +1 -1
- package/dist/components/pro/DataTable/Filters.js +42 -42
- package/dist/components/pro/DataTable/Filters.js.map +1 -1
- package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
- package/dist/components/pro/DataTable/PivotView.js +35 -32
- package/dist/components/pro/DataTable/PivotView.js.map +1 -1
- package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
- package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
- package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
- package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
- package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
- package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
- package/dist/components/pro/DataTable/tanstack-table.js +37 -37
- package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
- package/dist/components/pro/FileExplorer/Breadcrumb.js +53 -53
- package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
- package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileIcon.js +22 -22
- package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
- package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
- package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
- package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
- package/dist/components/pro/Flow/Flow.js +496 -494
- package/dist/components/pro/Flow/Flow.js.map +1 -1
- package/dist/components/pro/Flow/FlowCanvas.js +916 -917
- package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
- package/dist/components/pro/Flow/edges/EdgeRenderer.js +59 -59
- package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLayoutActions.js +9 -11
- package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
- package/dist/components/pro/Flow/lines/FreehandTool.js +9 -9
- package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/LineRenderer.js +5 -5
- package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/DataNodeView.js +113 -93
- package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
- package/dist/components/pro/Flow/nodes/Model3DView.js +1 -1
- package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeRenderer.js +118 -118
- package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
- package/dist/components/pro/Flow/nodes/shapes.js +1 -3
- package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
- package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
- package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
- package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
- package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowToolbar.js +97 -97
- package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
- package/dist/components/pro/Flow/panels/InspectorPanel.js +57 -57
- package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/OutlinePanel.js +26 -22
- package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/PresentationMode.js +18 -16
- package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
- package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
- package/dist/components/pro/Flow/panels/ShapePalette.js +109 -104
- package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
- package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
- package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
- package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
- package/dist/contexts/AppContext.js.map +1 -1
- package/dist/dishui.css +1 -1
- package/dist/hooks/useTableColumns.js +7 -8
- package/dist/hooks/useTableColumns.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +227 -221
- package/dist/layouts/MainLayout.js +22 -22
- package/dist/layouts/MainLayout.js.map +1 -1
- package/dist/layouts/Navbar.js.map +1 -1
- package/dist/layouts/Sidebar.js +94 -73
- package/dist/layouts/Sidebar.js.map +1 -1
- package/dist/layouts/headbar/Headbar.js.map +1 -1
- package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js +11 -11
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
- package/dist/utils/i18n.js +10 -10
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/menu.js.map +1 -1
- package/dist/utils/routerBuilder.js +17 -15
- package/dist/utils/routerBuilder.js.map +1 -1
- package/dist/utils/themes.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useReactTable as
|
|
3
|
-
import { TableToolbar as
|
|
4
|
-
import { TableHeader as
|
|
5
|
-
import { TableBody as
|
|
6
|
-
import { TablePagination as
|
|
1
|
+
import Je from "../../Table/index.js";
|
|
2
|
+
import { useReactTable as Ke } from "./tanstack-table.js";
|
|
3
|
+
import { TableToolbar as Qe } from "./components/TableToolbar.js";
|
|
4
|
+
import { TableHeader as Ue } from "./components/TableHeader.js";
|
|
5
|
+
import { TableBody as Ze } from "./components/TableBody.js";
|
|
6
|
+
import { TablePagination as et } from "./components/TablePagination.js";
|
|
7
7
|
import { deepEqual as w, useControllableState as y } from "../../../hooks/useControllableState.js";
|
|
8
|
-
import { createTreeSortingFns as
|
|
9
|
-
import { useColumnDragReorder as
|
|
10
|
-
import ae, { useCallback as A, useEffect as R, useMemo as g, useRef as
|
|
11
|
-
import { Fragment as
|
|
12
|
-
function
|
|
8
|
+
import { createTreeSortingFns as tt, findAllChildRowIds as nt, flattenTreeData as ot, treeRowAnimationStyles as rt } from "./treeDataUtils.js";
|
|
9
|
+
import { useColumnDragReorder as lt } from "./useColumnDragReorder.js";
|
|
10
|
+
import ae, { useCallback as A, useEffect as R, useMemo as g, useRef as st, useState as V } from "react";
|
|
11
|
+
import { Fragment as it, jsx as o, jsxs as P } from "react/jsx-runtime";
|
|
12
|
+
function Ft({ data: a, columns: f, className: ce = "", enableSorting: de = !0, enableFiltering: at = !0, enablePagination: F = !0, enableSelection: X = !0, enableColumnReordering: Y = !0, enableColumnResizing: ct = !0, manualFiltering: $ = !1, enableExpanding: l = !1, subDataKey: O = "subs", onRowExpand: ue, expandedRows: fe = {}, onExpandedRowsChange: me, getRowId: C, indentSize: he = 16, enableTreeSort: M = !0, toolbar: pe = {
|
|
13
13
|
enabled: !1,
|
|
14
14
|
enableColumnSelector: !1,
|
|
15
15
|
enableFiltering: !1,
|
|
16
16
|
enableBulkActions: !1
|
|
17
|
-
}, customFilterPanel: ge, onRowClick: Ce, onRowDoubleClick:
|
|
18
|
-
const [J, K] = y(Te, ke, w), [k, Ae] = y(xe, De, w), [Q, Ve] = y(Ee, Ie, w), [E, Oe] = y(Ne, Le, w), [
|
|
17
|
+
}, customFilterPanel: ge, onRowClick: Ce, onRowDoubleClick: be, onRowMouseEnter: ve, onRowMouseLeave: Se, onCellClick: we, onCellDoubleClick: ye, onCellMouseEnter: _e, onCellMouseLeave: Re, onColumnClick: dt, onColumnMouseEnter: Fe, onColumnMouseLeave: Me, onTableClick: ut, onTableMouseEnter: ft, onTableMouseLeave: mt, pageSize: x = 10, pageIndex: D = 0, onPageChange: T, onPageSizeChange: W, selectedRows: xe = {}, onRowSelectionChange: De, sortingState: Te = [], onSortingChange: ke, columnFilters: Ee = [], onColumnFiltersChange: Ie, columnVisibility: Ne = {}, onColumnVisibilityChange: Le, columnOrder: G = [], onColumnOrderChange: ze, extensions: m = [] }) {
|
|
18
|
+
const [J, K] = y(Te, ke, w), [k, Ae] = y(xe, De, w), [Q, Ve] = y(Ee, Ie, w), [E, Oe] = y(Ne, Le, w), [b, U] = y(G, ze, w), [h, We] = y(fe, me, w), [je, Be] = V(null), j = st(!1), { draggedColumnId: Z, handleDragStart: ee, handleDragOver: qe, handleDrop: te } = lt(b, U), ne = A((e) => {
|
|
19
19
|
K((t) => typeof e == "function" ? e(t) : e);
|
|
20
20
|
}, [K]);
|
|
21
21
|
R(() => {
|
|
22
|
-
if (!j.current && f.length > 0)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
if (!j.current && f.length > 0)
|
|
23
|
+
if (G.length === 0 && b.length === 0) {
|
|
24
|
+
j.current = !0;
|
|
25
|
+
const e = f.map((t) => "accessorKey" in t ? t.accessorKey : t.id);
|
|
26
|
+
U(e);
|
|
27
|
+
} else j.current = !0;
|
|
27
28
|
}, [f]);
|
|
28
29
|
const He = (e, t) => {
|
|
29
30
|
const n = !h[e], i = {
|
|
30
31
|
...h,
|
|
31
32
|
[e]: n
|
|
32
33
|
};
|
|
33
|
-
n ||
|
|
34
|
+
n || nt(t, e, O, C).forEach((u) => {
|
|
34
35
|
i[u] = !1;
|
|
35
36
|
}), We(i), ue?.(t, n);
|
|
36
|
-
}, I = A((e, t = 0, n = "", i = !0, u = [], r = !1) =>
|
|
37
|
+
}, I = A((e, t = 0, n = "", i = !0, u = [], r = !1) => ot(e, h, O, C, t, n, i, u, r), [
|
|
37
38
|
h,
|
|
38
39
|
C,
|
|
39
40
|
O
|
|
@@ -82,7 +83,7 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
82
83
|
f,
|
|
83
84
|
l,
|
|
84
85
|
M
|
|
85
|
-
]), le = g(() => l && M ?
|
|
86
|
+
]), le = g(() => l && M ? tt() : void 0, [l, M]), Pe = g(() => ({
|
|
86
87
|
data: oe,
|
|
87
88
|
columns: re,
|
|
88
89
|
pageCount: Math.ceil(L.length / s),
|
|
@@ -93,7 +94,7 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
93
94
|
rowSelection: k,
|
|
94
95
|
columnFilters: Q,
|
|
95
96
|
columnVisibility: E,
|
|
96
|
-
columnOrder:
|
|
97
|
+
columnOrder: b.length > 0 ? b : void 0,
|
|
97
98
|
pagination: {
|
|
98
99
|
pageIndex: c,
|
|
99
100
|
pageSize: s
|
|
@@ -123,7 +124,7 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
123
124
|
k,
|
|
124
125
|
Q,
|
|
125
126
|
E,
|
|
126
|
-
|
|
127
|
+
b,
|
|
127
128
|
X,
|
|
128
129
|
F,
|
|
129
130
|
le,
|
|
@@ -134,11 +135,11 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
134
135
|
T,
|
|
135
136
|
W,
|
|
136
137
|
L
|
|
137
|
-
])), _ = A((e, t) => {
|
|
138
|
+
]), d = Ke(Pe), _ = A((e, t) => {
|
|
138
139
|
if (C) return C(e, t);
|
|
139
140
|
const n = e;
|
|
140
141
|
return n && n.__id != null ? String(n.__id) : String(t);
|
|
141
|
-
}, [C]),
|
|
142
|
+
}, [C]), v = g(() => {
|
|
142
143
|
const e = d.getSelectedRowModel().rows.map((t) => t.original);
|
|
143
144
|
return {
|
|
144
145
|
table: d,
|
|
@@ -160,7 +161,7 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
160
161
|
window.removeEventListener("click", e), window.removeEventListener("scroll", e, !0);
|
|
161
162
|
};
|
|
162
163
|
}, [p]);
|
|
163
|
-
const
|
|
164
|
+
const Xe = A((e, t, n, i) => {
|
|
164
165
|
if (m.length === 0) return;
|
|
165
166
|
const u = n?.id ?? "", r = {
|
|
166
167
|
value: n?.id != null ? t[n.id] : void 0,
|
|
@@ -168,7 +169,7 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
168
169
|
rowId: _(t, i),
|
|
169
170
|
rowIndex: i,
|
|
170
171
|
columnId: u
|
|
171
|
-
}, S = m.flatMap((
|
|
172
|
+
}, S = m.flatMap((Ge) => Ge.contextMenu?.(r, v) ?? []);
|
|
172
173
|
S.length && (e.preventDefault(), q({
|
|
173
174
|
x: e.clientX,
|
|
174
175
|
y: e.clientY,
|
|
@@ -177,48 +178,48 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
177
178
|
}));
|
|
178
179
|
}, [
|
|
179
180
|
m,
|
|
180
|
-
|
|
181
|
+
v,
|
|
181
182
|
_
|
|
182
183
|
]), se = m.map((e) => e.toolbar ? {
|
|
183
184
|
name: e.name,
|
|
184
|
-
node: e.toolbar(
|
|
185
|
+
node: e.toolbar(v)
|
|
185
186
|
} : null).filter((e) => !!e && !!e.node), ie = m.map((e) => e.footer ? {
|
|
186
187
|
name: e.name,
|
|
187
|
-
node: e.footer(
|
|
188
|
+
node: e.footer(v)
|
|
188
189
|
} : null).filter((e) => !!e && !!e.node);
|
|
189
190
|
let H;
|
|
190
191
|
for (const e of m) {
|
|
191
|
-
const t = e.renderContent?.(
|
|
192
|
+
const t = e.renderContent?.(v);
|
|
192
193
|
if (t !== void 0) {
|
|
193
194
|
H = t;
|
|
194
195
|
break;
|
|
195
196
|
}
|
|
196
197
|
}
|
|
197
|
-
const
|
|
198
|
+
const Ye = (e) => {
|
|
198
199
|
c !== e && (z(e), T?.(e));
|
|
199
|
-
},
|
|
200
|
+
}, $e = (e) => {
|
|
200
201
|
d.getColumn(e)?.toggleVisibility();
|
|
201
202
|
};
|
|
202
203
|
return R(() => {
|
|
203
204
|
const e = document.createElement("style");
|
|
204
|
-
return e.textContent =
|
|
205
|
+
return e.textContent = rt, document.head.appendChild(e), () => {
|
|
205
206
|
document.head.removeChild(e);
|
|
206
207
|
};
|
|
207
208
|
}, []), /* @__PURE__ */ P("div", {
|
|
208
209
|
className: `w-full ${ce}`,
|
|
209
210
|
children: [
|
|
210
|
-
/* @__PURE__ */ o(
|
|
211
|
+
/* @__PURE__ */ o(Qe, {
|
|
211
212
|
toolbar: pe,
|
|
212
213
|
table: d,
|
|
213
214
|
columns: f,
|
|
214
|
-
columnOrderState:
|
|
215
|
+
columnOrderState: b,
|
|
215
216
|
visibilityState: E,
|
|
216
217
|
activeFilter: je,
|
|
217
218
|
setActiveFilter: Be,
|
|
218
219
|
customFilterPanel: ge,
|
|
219
220
|
draggedColumnId: Z,
|
|
220
221
|
handleDragStart: ee,
|
|
221
|
-
toggleColumnVisibility:
|
|
222
|
+
toggleColumnVisibility: $e,
|
|
222
223
|
rowSelection: k,
|
|
223
224
|
data: a,
|
|
224
225
|
enableColumnReordering: Y,
|
|
@@ -231,11 +232,11 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
231
232
|
H !== void 0 ? /* @__PURE__ */ o("div", {
|
|
232
233
|
className: "w-full",
|
|
233
234
|
children: H
|
|
234
|
-
}) : /* @__PURE__ */ P(
|
|
235
|
+
}) : /* @__PURE__ */ P(it, { children: [/* @__PURE__ */ o("div", {
|
|
235
236
|
className: "overflow-x-auto",
|
|
236
|
-
children: /* @__PURE__ */ P(
|
|
237
|
+
children: /* @__PURE__ */ P(Je, {
|
|
237
238
|
className: "table-sm w-full",
|
|
238
|
-
children: [/* @__PURE__ */ o(
|
|
239
|
+
children: [/* @__PURE__ */ o(Ue, {
|
|
239
240
|
table: d,
|
|
240
241
|
visibilityState: E,
|
|
241
242
|
enableSorting: de,
|
|
@@ -246,12 +247,12 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
246
247
|
handleDragStart: ee,
|
|
247
248
|
handleDragOver: qe,
|
|
248
249
|
handleDrop: te
|
|
249
|
-
}), /* @__PURE__ */ o(
|
|
250
|
+
}), /* @__PURE__ */ o(Ze, {
|
|
250
251
|
table: d,
|
|
251
252
|
expandedRowsState: h,
|
|
252
253
|
onRowClick: Ce,
|
|
253
|
-
onRowDoubleClick:
|
|
254
|
-
onRowMouseEnter:
|
|
254
|
+
onRowDoubleClick: be,
|
|
255
|
+
onRowMouseEnter: ve,
|
|
255
256
|
onRowMouseLeave: Se,
|
|
256
257
|
onCellClick: we,
|
|
257
258
|
onCellDoubleClick: ye,
|
|
@@ -261,17 +262,17 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
261
262
|
indentSize: he,
|
|
262
263
|
handleRowExpand: He,
|
|
263
264
|
extensions: m,
|
|
264
|
-
extensionApi:
|
|
265
|
+
extensionApi: v,
|
|
265
266
|
getRowId: _,
|
|
266
|
-
onCellContextMenu:
|
|
267
|
+
onCellContextMenu: Xe
|
|
267
268
|
})]
|
|
268
269
|
})
|
|
269
|
-
}), /* @__PURE__ */ o(
|
|
270
|
+
}), /* @__PURE__ */ o(et, {
|
|
270
271
|
enablePagination: F,
|
|
271
272
|
table: d,
|
|
272
273
|
internalPageIndex: c,
|
|
273
274
|
internalPageSize: s,
|
|
274
|
-
handlePageChange:
|
|
275
|
+
handlePageChange: Ye,
|
|
275
276
|
setInternalPageSize: B,
|
|
276
277
|
setInternalPageIndex: z,
|
|
277
278
|
onPageSizeChange: W,
|
|
@@ -302,7 +303,7 @@ function Rt({ data: a, columns: f, className: ce = "", enableSorting: de = !0, e
|
|
|
302
303
|
});
|
|
303
304
|
}
|
|
304
305
|
export {
|
|
305
|
-
|
|
306
|
+
Ft as default
|
|
306
307
|
};
|
|
307
308
|
|
|
308
309
|
//# sourceMappingURL=DataTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.js","names":[],"sources":["../../../../src/components/pro/DataTable/DataTable.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useMemo, useCallback } from 'react';\nimport {\n useReactTable,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n RowSelectionState,\n OnChangeFn,\n Updater,\n SortingFnOption,\n SortingFn,\n} from './tanstack-table';\nimport Table from '../../Table';\nimport { TableToolbar } from './components/TableToolbar';\nimport { TableHeader } from './components/TableHeader';\nimport { TableBody } from './components/TableBody';\nimport { TablePagination } from './components/TablePagination';\nimport { DataTableProps } from './types';\nimport type {\n DataTableApi,\n DataTableCellContext,\n DataTableExtension,\n DataTableMenuItem,\n} from './extension';\nimport { useControllableState, deepEqual } from '../../../hooks/useControllableState';\nimport { treeRowAnimationStyles, findAllChildRowIds, flattenTreeData, createTreeSortingFns } from './treeDataUtils';\nimport { useColumnDragReorder } from './useColumnDragReorder';\n\nexport * from './types';\n\nfunction DataTable<T extends object>({\n data,\n columns,\n className = '',\n enableSorting = true,\n enableFiltering = true,\n enablePagination = true,\n enableSelection = true,\n enableColumnReordering = true,\n enableColumnResizing = true,\n manualFiltering = false,\n enableExpanding = false,\n subDataKey = 'subs',\n onRowExpand,\n expandedRows = {},\n onExpandedRowsChange,\n getRowId,\n indentSize = 16,\n enableTreeSort = true,\n toolbar = {\n enabled: false,\n enableColumnSelector: false,\n enableFiltering: false,\n enableBulkActions: false,\n },\n customFilterPanel,\n onRowClick,\n onRowDoubleClick,\n onRowMouseEnter,\n onRowMouseLeave,\n onCellClick,\n onCellDoubleClick,\n onCellMouseEnter,\n onCellMouseLeave,\n onColumnClick,\n onColumnMouseEnter,\n onColumnMouseLeave,\n onTableClick,\n onTableMouseEnter,\n onTableMouseLeave,\n pageSize = 10,\n pageIndex = 0,\n onPageChange,\n onPageSizeChange,\n selectedRows = {},\n onRowSelectionChange,\n sortingState = [],\n onSortingChange,\n columnFilters = [],\n onColumnFiltersChange,\n columnVisibility = {},\n onColumnVisibilityChange,\n columnOrder = [],\n onColumnOrderChange,\n extensions = [],\n}: DataTableProps<T>) {\n const [sorting, setSorting] = useControllableState<SortingState>(\n sortingState, onSortingChange, deepEqual,\n );\n const [rowSelection, setRowSelection] = useControllableState<RowSelectionState>(\n selectedRows, onRowSelectionChange, deepEqual,\n );\n const [columnFiltersState, setColumnFiltersState] = useControllableState<ColumnFiltersState>(\n columnFilters, onColumnFiltersChange, deepEqual,\n );\n const [visibilityState, setVisibilityState] = useControllableState<VisibilityState>(\n columnVisibility, onColumnVisibilityChange, deepEqual,\n );\n const [columnOrderState, setColumnOrderState] = useControllableState<string[]>(\n columnOrder, onColumnOrderChange, deepEqual,\n );\n const [expandedRowsState, setExpandedRowsState] = useControllableState<Record<string, boolean>>(\n expandedRows, onExpandedRowsChange, deepEqual,\n );\n\n const [activeFilter, setActiveFilter] = useState<string | null>(null);\n const hasInitializedRef = useRef(false);\n\n const {\n draggedColumnId,\n handleDragStart,\n handleDragOver,\n handleDrop,\n } = useColumnDragReorder(columnOrderState, setColumnOrderState);\n\n const handleSortingChange = useCallback<OnChangeFn<SortingState>>((updater) => {\n setSorting((old) => (typeof updater === 'function' ? updater(old) : updater));\n }, [setSorting]);\n\n useEffect(() => {\n if (!hasInitializedRef.current && columns.length > 0) {\n if (columnOrder.length === 0 && columnOrderState.length === 0) {\n hasInitializedRef.current = true;\n const initialOrder = columns.map(col =>\n 'accessorKey' in col ? col.accessorKey as string : col.id as string,\n );\n setColumnOrderState(initialOrder);\n } else {\n hasInitializedRef.current = true;\n }\n }\n }, [columns]);\n\n const handleRowExpand = (rowId: string, row: T) => {\n const newExpandedState = !(expandedRowsState[rowId] || false);\n const newExpandedRows = { ...expandedRowsState, [rowId]: newExpandedState };\n\n if (!newExpandedState) {\n const childRows = findAllChildRowIds(row, rowId, subDataKey, getRowId);\n childRows.forEach(childId => { newExpandedRows[childId] = false; });\n }\n\n setExpandedRowsState(newExpandedRows);\n onRowExpand?.(row, newExpandedState);\n };\n\n const flattenData = useCallback(\n (items: T[], depth = 0, parentId = '', isParentExpanded = true, result: any[] = [], onlyTopLevel = false) =>\n flattenTreeData(items, expandedRowsState, subDataKey, getRowId, depth, parentId, isParentExpanded, result, onlyTopLevel),\n [expandedRowsState, getRowId, subDataKey],\n );\n\n const flattenedData = useMemo(\n () => (enableExpanding ? flattenData(data) : data),\n [data, enableExpanding, flattenData],\n );\n\n const topLevelData = useMemo(\n () => (enableExpanding ? flattenData(data, 0, '', true, [], true) : data),\n [data, enableExpanding, flattenData],\n );\n\n const [internalPageIndex, setInternalPageIndex] = useState(pageIndex);\n const [internalPageSize, setInternalPageSize] = useState(pageSize);\n\n useEffect(() => { if (pageIndex !== internalPageIndex) setInternalPageIndex(pageIndex); }, [pageIndex]);\n useEffect(() => { if (pageSize !== internalPageSize) setInternalPageSize(pageSize); }, [pageSize]);\n\n const currentPageData = useMemo(() => {\n if (!enablePagination) return flattenedData;\n\n const startIndex = internalPageIndex * internalPageSize;\n const endIndex = startIndex + internalPageSize;\n const currentPageTopLevelData = topLevelData.slice(startIndex, endIndex);\n\n if (enableExpanding) {\n const rowsMap = new Map();\n currentPageTopLevelData.forEach((topRow: any) => rowsMap.set(topRow.__id, topRow));\n currentPageTopLevelData.forEach((topRow: any) => {\n if (expandedRowsState[topRow.__id]) {\n flattenedData.forEach((row: any) => {\n if (row.__parentId?.startsWith(topRow.__id)) rowsMap.set(row.__id, row);\n });\n }\n });\n const result: any[] = [];\n flattenedData.forEach((row: any) => { if (rowsMap.has(row.__id)) result.push(row); });\n return result;\n }\n\n return currentPageTopLevelData;\n }, [flattenedData, topLevelData, internalPageIndex, internalPageSize, enablePagination, enableExpanding, expandedRowsState]);\n\n const processedColumns = useMemo(() => {\n if (!enableExpanding || !enableTreeSort) return columns;\n return columns.map(column => {\n if (column.enableSorting === false) return column;\n return { ...column, sortFn: 'treeSortAsc' as SortingFnOption<T> };\n });\n }, [columns, enableExpanding, enableTreeSort]);\n\n const customSortFns = useMemo(\n () =>\n enableExpanding && enableTreeSort\n ? (createTreeSortingFns<T>() as Record<string, SortingFn<T>>)\n : undefined,\n [enableExpanding, enableTreeSort],\n );\n\n const tableCore = useMemo(() => ({\n data: currentPageData,\n columns: processedColumns,\n pageCount: Math.ceil(topLevelData.length / internalPageSize),\n manualPagination: true,\n manualFiltering,\n state: {\n sorting,\n rowSelection,\n columnFilters: columnFiltersState,\n columnVisibility: visibilityState,\n columnOrder: columnOrderState.length > 0 ? columnOrderState : undefined,\n pagination: { pageIndex: internalPageIndex, pageSize: internalPageSize },\n },\n enableRowSelection: enableSelection,\n onRowSelectionChange: setRowSelection,\n onSortingChange: handleSortingChange,\n onColumnFiltersChange: setColumnFiltersState,\n onColumnVisibilityChange: setVisibilityState,\n onPaginationChange: (updater: Updater<{ pageIndex: number; pageSize: number }>) => {\n const currentPagination = { pageIndex: internalPageIndex, pageSize: internalPageSize };\n const newPagination = typeof updater === 'function' ? updater(currentPagination) : updater;\n\n if (newPagination.pageSize !== internalPageSize) {\n setInternalPageSize(newPagination.pageSize);\n onPageSizeChange?.(newPagination.pageSize);\n }\n if (newPagination.pageIndex !== internalPageIndex) {\n setInternalPageIndex(newPagination.pageIndex);\n onPageChange?.(newPagination.pageIndex);\n }\n },\n // v9:自定义排序函数注册表(由 useReactTable 包装器合入 features 的 sortFns)。\n sortFns: customSortFns,\n initialState: { pagination: { pageIndex: 0, pageSize: internalPageSize } },\n }), [\n currentPageData, processedColumns, sorting, rowSelection, columnFiltersState,\n visibilityState, columnOrderState, enableSelection, enablePagination, customSortFns,\n manualFiltering, handleSortingChange, internalPageSize, internalPageIndex, onPageChange,\n onPageSizeChange, topLevelData,\n ]);\n\n const table = useReactTable<T>(tableCore as any);\n\n // --- 扩展 API -----------------------------------------------------------\n const resolveRowId = useCallback(\n (row: T, index: number): string => {\n if (getRowId) return getRowId(row, index);\n const anyRow = row as any;\n if (anyRow && anyRow.__id != null) return String(anyRow.__id);\n return String(index);\n },\n [getRowId],\n );\n\n const extensionApi: DataTableApi<T> = useMemo(() => {\n const selectedRowData = table\n .getSelectedRowModel()\n .rows.map((r) => r.original);\n return {\n table,\n data,\n rows: table.getRowModel().rows,\n selectedRows: selectedRowData,\n getRowId: resolveRowId,\n };\n }, [table, data, resolveRowId, rowSelection]);\n\n // --- 右键菜单(由扩展贡献) --------------------------------------------\n const [contextMenu, setContextMenu] = useState<{\n x: number;\n y: number;\n items: DataTableMenuItem<T>[];\n ctx: DataTableCellContext<T>;\n } | null>(null);\n\n useEffect(() => {\n if (!contextMenu) return;\n const close = () => setContextMenu(null);\n window.addEventListener('click', close);\n window.addEventListener('scroll', close, true);\n return () => {\n window.removeEventListener('click', close);\n window.removeEventListener('scroll', close, true);\n };\n }, [contextMenu]);\n\n const handleCellContextMenu = useCallback(\n (e: React.MouseEvent, row: T, column: any, rowIndex: number) => {\n if (extensions.length === 0) return;\n const columnId = column?.id ?? '';\n const value =\n column?.id != null ? (row as any)[column.id] : undefined;\n const ctx: DataTableCellContext<T> = {\n value,\n row,\n rowId: resolveRowId(row, rowIndex),\n rowIndex,\n columnId,\n };\n const items = extensions.flatMap(\n (ext) => ext.contextMenu?.(ctx, extensionApi) ?? [],\n );\n if (!items.length) return;\n e.preventDefault();\n setContextMenu({ x: e.clientX, y: e.clientY, items, ctx });\n },\n [extensions, extensionApi, resolveRowId],\n );\n\n // 收集工具栏 / 底部 / 主体接管的扩展贡献。\n const toolbarExtras = extensions\n .map((ext) =>\n ext.toolbar ? { name: ext.name, node: ext.toolbar(extensionApi) } : null,\n )\n .filter((x): x is { name: string; node: React.ReactNode } => !!x && !!x.node);\n\n const footerExtras = extensions\n .map((ext) =>\n ext.footer ? { name: ext.name, node: ext.footer(extensionApi) } : null,\n )\n .filter((x): x is { name: string; node: React.ReactNode } => !!x && !!x.node);\n\n let overrideContent: React.ReactNode | undefined = undefined;\n for (const ext of extensions) {\n const out = ext.renderContent?.(extensionApi);\n if (out !== undefined) {\n overrideContent = out;\n break;\n }\n }\n\n const handlePageChange = (newPage: number) => {\n if (internalPageIndex === newPage) return;\n setInternalPageIndex(newPage);\n onPageChange?.(newPage);\n };\n\n const toggleColumnVisibility = (columnId: string) => {\n table.getColumn(columnId)?.toggleVisibility();\n };\n\n useEffect(() => {\n const styleElement = document.createElement('style');\n styleElement.textContent = treeRowAnimationStyles;\n document.head.appendChild(styleElement);\n return () => { document.head.removeChild(styleElement); };\n }, []);\n\n return (\n <div className={`w-full ${className}`}>\n <TableToolbar\n toolbar={toolbar}\n table={table}\n columns={columns}\n columnOrderState={columnOrderState}\n visibilityState={visibilityState}\n activeFilter={activeFilter}\n setActiveFilter={setActiveFilter}\n customFilterPanel={customFilterPanel}\n draggedColumnId={draggedColumnId}\n handleDragStart={handleDragStart}\n toggleColumnVisibility={toggleColumnVisibility}\n rowSelection={rowSelection}\n data={data}\n enableColumnReordering={enableColumnReordering}\n handleDrop={handleDrop}\n />\n\n {/* 扩展贡献的工具栏控件 */}\n {toolbarExtras.length > 0 && (\n <div className=\"flex flex-wrap items-start gap-3 mb-4\">\n {toolbarExtras.map((item) => (\n <React.Fragment key={item.name}>{item.node}</React.Fragment>\n ))}\n </div>\n )}\n\n {overrideContent !== undefined ? (\n // 扩展接管了主体渲染(如 Pivot 透视模式)。\n <div className=\"w-full\">{overrideContent}</div>\n ) : (\n <>\n <div className=\"overflow-x-auto\">\n <Table className=\"table-sm w-full\">\n <TableHeader\n table={table}\n visibilityState={visibilityState}\n enableSorting={enableSorting}\n enableColumnReordering={enableColumnReordering}\n draggedColumnId={draggedColumnId}\n onColumnMouseEnter={onColumnMouseEnter}\n onColumnMouseLeave={onColumnMouseLeave}\n handleDragStart={handleDragStart}\n handleDragOver={handleDragOver}\n handleDrop={handleDrop}\n />\n <TableBody\n table={table}\n expandedRowsState={expandedRowsState}\n onRowClick={onRowClick}\n onRowDoubleClick={onRowDoubleClick}\n onRowMouseEnter={onRowMouseEnter}\n onRowMouseLeave={onRowMouseLeave}\n onCellClick={onCellClick}\n onCellDoubleClick={onCellDoubleClick}\n onCellMouseEnter={onCellMouseEnter}\n onCellMouseLeave={onCellMouseLeave}\n enableExpanding={enableExpanding}\n indentSize={indentSize}\n handleRowExpand={handleRowExpand}\n extensions={extensions}\n extensionApi={extensionApi}\n getRowId={resolveRowId}\n onCellContextMenu={handleCellContextMenu}\n />\n </Table>\n </div>\n\n <TablePagination\n enablePagination={enablePagination}\n table={table}\n internalPageIndex={internalPageIndex}\n internalPageSize={internalPageSize}\n handlePageChange={handlePageChange}\n setInternalPageSize={setInternalPageSize}\n setInternalPageIndex={setInternalPageIndex}\n onPageSizeChange={onPageSizeChange}\n onPageChange={onPageChange}\n />\n </>\n )}\n\n {/* 扩展贡献的底部控件 */}\n {footerExtras.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-3 mt-4\">\n {footerExtras.map((item) => (\n <React.Fragment key={item.name}>{item.node}</React.Fragment>\n ))}\n </div>\n )}\n\n {/* 扩展贡献的右键菜单 */}\n {contextMenu && (\n <ul\n className=\"menu bg-base-100 rounded-box shadow-lg border border-base-300 z-1000 p-1\"\n style={{\n position: 'fixed',\n top: contextMenu.y,\n left: contextMenu.x,\n minWidth: 160,\n }}\n >\n {contextMenu.items.map((item) =>\n item.separator ? (\n <li key={item.key} className=\"my-1 border-t border-base-300\" />\n ) : (\n <li key={item.key}>\n <button\n type=\"button\"\n disabled={item.disabled}\n onClick={() => {\n item.onSelect?.(contextMenu.ctx);\n setContextMenu(null);\n }}\n >\n {item.label}\n </button>\n </li>\n ),\n )}\n </ul>\n )}\n </div>\n );\n}\n\nexport default DataTable;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTable.js","names":[],"sources":["../../../../src/components/pro/DataTable/DataTable.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useMemo, useCallback } from 'react';\nimport {\n useReactTable,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n RowSelectionState,\n OnChangeFn,\n Updater,\n SortingFnOption,\n SortingFn,\n} from './tanstack-table';\nimport Table from '../../Table';\nimport { TableToolbar } from './components/TableToolbar';\nimport { TableHeader } from './components/TableHeader';\nimport { TableBody } from './components/TableBody';\nimport { TablePagination } from './components/TablePagination';\nimport { DataTableProps } from './types';\nimport type {\n DataTableApi,\n DataTableCellContext,\n DataTableExtension,\n DataTableMenuItem,\n} from './extension';\nimport { useControllableState, deepEqual } from '../../../hooks/useControllableState';\nimport { treeRowAnimationStyles, findAllChildRowIds, flattenTreeData, createTreeSortingFns } from './treeDataUtils';\nimport { useColumnDragReorder } from './useColumnDragReorder';\n\nexport * from './types';\n\nfunction DataTable<T extends object>({\n data,\n columns,\n className = '',\n enableSorting = true,\n enableFiltering = true,\n enablePagination = true,\n enableSelection = true,\n enableColumnReordering = true,\n enableColumnResizing = true,\n manualFiltering = false,\n enableExpanding = false,\n subDataKey = 'subs',\n onRowExpand,\n expandedRows = {},\n onExpandedRowsChange,\n getRowId,\n indentSize = 16,\n enableTreeSort = true,\n toolbar = {\n enabled: false,\n enableColumnSelector: false,\n enableFiltering: false,\n enableBulkActions: false,\n },\n customFilterPanel,\n onRowClick,\n onRowDoubleClick,\n onRowMouseEnter,\n onRowMouseLeave,\n onCellClick,\n onCellDoubleClick,\n onCellMouseEnter,\n onCellMouseLeave,\n onColumnClick,\n onColumnMouseEnter,\n onColumnMouseLeave,\n onTableClick,\n onTableMouseEnter,\n onTableMouseLeave,\n pageSize = 10,\n pageIndex = 0,\n onPageChange,\n onPageSizeChange,\n selectedRows = {},\n onRowSelectionChange,\n sortingState = [],\n onSortingChange,\n columnFilters = [],\n onColumnFiltersChange,\n columnVisibility = {},\n onColumnVisibilityChange,\n columnOrder = [],\n onColumnOrderChange,\n extensions = [],\n}: DataTableProps<T>) {\n const [sorting, setSorting] = useControllableState<SortingState>(\n sortingState, onSortingChange, deepEqual,\n );\n const [rowSelection, setRowSelection] = useControllableState<RowSelectionState>(\n selectedRows, onRowSelectionChange, deepEqual,\n );\n const [columnFiltersState, setColumnFiltersState] = useControllableState<ColumnFiltersState>(\n columnFilters, onColumnFiltersChange, deepEqual,\n );\n const [visibilityState, setVisibilityState] = useControllableState<VisibilityState>(\n columnVisibility, onColumnVisibilityChange, deepEqual,\n );\n const [columnOrderState, setColumnOrderState] = useControllableState<string[]>(\n columnOrder, onColumnOrderChange, deepEqual,\n );\n const [expandedRowsState, setExpandedRowsState] = useControllableState<Record<string, boolean>>(\n expandedRows, onExpandedRowsChange, deepEqual,\n );\n\n const [activeFilter, setActiveFilter] = useState<string | null>(null);\n const hasInitializedRef = useRef(false);\n\n const {\n draggedColumnId,\n handleDragStart,\n handleDragOver,\n handleDrop,\n } = useColumnDragReorder(columnOrderState, setColumnOrderState);\n\n const handleSortingChange = useCallback<OnChangeFn<SortingState>>((updater) => {\n setSorting((old) => (typeof updater === 'function' ? updater(old) : updater));\n }, [setSorting]);\n\n useEffect(() => {\n if (!hasInitializedRef.current && columns.length > 0) {\n if (columnOrder.length === 0 && columnOrderState.length === 0) {\n hasInitializedRef.current = true;\n const initialOrder = columns.map(col =>\n 'accessorKey' in col ? col.accessorKey as string : col.id as string,\n );\n setColumnOrderState(initialOrder);\n } else {\n hasInitializedRef.current = true;\n }\n }\n }, [columns]);\n\n const handleRowExpand = (rowId: string, row: T) => {\n const newExpandedState = !(expandedRowsState[rowId] || false);\n const newExpandedRows = { ...expandedRowsState, [rowId]: newExpandedState };\n\n if (!newExpandedState) {\n const childRows = findAllChildRowIds(row, rowId, subDataKey, getRowId);\n childRows.forEach(childId => { newExpandedRows[childId] = false; });\n }\n\n setExpandedRowsState(newExpandedRows);\n onRowExpand?.(row, newExpandedState);\n };\n\n const flattenData = useCallback(\n (items: T[], depth = 0, parentId = '', isParentExpanded = true, result: any[] = [], onlyTopLevel = false) =>\n flattenTreeData(items, expandedRowsState, subDataKey, getRowId, depth, parentId, isParentExpanded, result, onlyTopLevel),\n [expandedRowsState, getRowId, subDataKey],\n );\n\n const flattenedData = useMemo(\n () => (enableExpanding ? flattenData(data) : data),\n [data, enableExpanding, flattenData],\n );\n\n const topLevelData = useMemo(\n () => (enableExpanding ? flattenData(data, 0, '', true, [], true) : data),\n [data, enableExpanding, flattenData],\n );\n\n const [internalPageIndex, setInternalPageIndex] = useState(pageIndex);\n const [internalPageSize, setInternalPageSize] = useState(pageSize);\n\n useEffect(() => { if (pageIndex !== internalPageIndex) setInternalPageIndex(pageIndex); }, [pageIndex]);\n useEffect(() => { if (pageSize !== internalPageSize) setInternalPageSize(pageSize); }, [pageSize]);\n\n const currentPageData = useMemo(() => {\n if (!enablePagination) return flattenedData;\n\n const startIndex = internalPageIndex * internalPageSize;\n const endIndex = startIndex + internalPageSize;\n const currentPageTopLevelData = topLevelData.slice(startIndex, endIndex);\n\n if (enableExpanding) {\n const rowsMap = new Map();\n currentPageTopLevelData.forEach((topRow: any) => rowsMap.set(topRow.__id, topRow));\n currentPageTopLevelData.forEach((topRow: any) => {\n if (expandedRowsState[topRow.__id]) {\n flattenedData.forEach((row: any) => {\n if (row.__parentId?.startsWith(topRow.__id)) rowsMap.set(row.__id, row);\n });\n }\n });\n const result: any[] = [];\n flattenedData.forEach((row: any) => { if (rowsMap.has(row.__id)) result.push(row); });\n return result;\n }\n\n return currentPageTopLevelData;\n }, [flattenedData, topLevelData, internalPageIndex, internalPageSize, enablePagination, enableExpanding, expandedRowsState]);\n\n const processedColumns = useMemo(() => {\n if (!enableExpanding || !enableTreeSort) return columns;\n return columns.map(column => {\n if (column.enableSorting === false) return column;\n return { ...column, sortFn: 'treeSortAsc' as SortingFnOption<T> };\n });\n }, [columns, enableExpanding, enableTreeSort]);\n\n const customSortFns = useMemo(\n () =>\n enableExpanding && enableTreeSort\n ? (createTreeSortingFns<T>() as Record<string, SortingFn<T>>)\n : undefined,\n [enableExpanding, enableTreeSort],\n );\n\n const tableCore = useMemo(() => ({\n data: currentPageData,\n columns: processedColumns,\n pageCount: Math.ceil(topLevelData.length / internalPageSize),\n manualPagination: true,\n manualFiltering,\n state: {\n sorting,\n rowSelection,\n columnFilters: columnFiltersState,\n columnVisibility: visibilityState,\n columnOrder: columnOrderState.length > 0 ? columnOrderState : undefined,\n pagination: { pageIndex: internalPageIndex, pageSize: internalPageSize },\n },\n enableRowSelection: enableSelection,\n onRowSelectionChange: setRowSelection,\n onSortingChange: handleSortingChange,\n onColumnFiltersChange: setColumnFiltersState,\n onColumnVisibilityChange: setVisibilityState,\n onPaginationChange: (updater: Updater<{ pageIndex: number; pageSize: number }>) => {\n const currentPagination = { pageIndex: internalPageIndex, pageSize: internalPageSize };\n const newPagination = typeof updater === 'function' ? updater(currentPagination) : updater;\n\n if (newPagination.pageSize !== internalPageSize) {\n setInternalPageSize(newPagination.pageSize);\n onPageSizeChange?.(newPagination.pageSize);\n }\n if (newPagination.pageIndex !== internalPageIndex) {\n setInternalPageIndex(newPagination.pageIndex);\n onPageChange?.(newPagination.pageIndex);\n }\n },\n // v9:自定义排序函数注册表(由 useReactTable 包装器合入 features 的 sortFns)。\n sortFns: customSortFns,\n initialState: { pagination: { pageIndex: 0, pageSize: internalPageSize } },\n }), [\n currentPageData, processedColumns, sorting, rowSelection, columnFiltersState,\n visibilityState, columnOrderState, enableSelection, enablePagination, customSortFns,\n manualFiltering, handleSortingChange, internalPageSize, internalPageIndex, onPageChange,\n onPageSizeChange, topLevelData,\n ]);\n\n const table = useReactTable<T>(tableCore as any);\n\n // --- 扩展 API -----------------------------------------------------------\n const resolveRowId = useCallback(\n (row: T, index: number): string => {\n if (getRowId) return getRowId(row, index);\n const anyRow = row as any;\n if (anyRow && anyRow.__id != null) return String(anyRow.__id);\n return String(index);\n },\n [getRowId],\n );\n\n const extensionApi: DataTableApi<T> = useMemo(() => {\n const selectedRowData = table\n .getSelectedRowModel()\n .rows.map((r) => r.original);\n return {\n table,\n data,\n rows: table.getRowModel().rows,\n selectedRows: selectedRowData,\n getRowId: resolveRowId,\n };\n }, [table, data, resolveRowId, rowSelection]);\n\n // --- 右键菜单(由扩展贡献) --------------------------------------------\n const [contextMenu, setContextMenu] = useState<{\n x: number;\n y: number;\n items: DataTableMenuItem<T>[];\n ctx: DataTableCellContext<T>;\n } | null>(null);\n\n useEffect(() => {\n if (!contextMenu) return;\n const close = () => setContextMenu(null);\n window.addEventListener('click', close);\n window.addEventListener('scroll', close, true);\n return () => {\n window.removeEventListener('click', close);\n window.removeEventListener('scroll', close, true);\n };\n }, [contextMenu]);\n\n const handleCellContextMenu = useCallback(\n (e: React.MouseEvent, row: T, column: any, rowIndex: number) => {\n if (extensions.length === 0) return;\n const columnId = column?.id ?? '';\n const value =\n column?.id != null ? (row as any)[column.id] : undefined;\n const ctx: DataTableCellContext<T> = {\n value,\n row,\n rowId: resolveRowId(row, rowIndex),\n rowIndex,\n columnId,\n };\n const items = extensions.flatMap(\n (ext) => ext.contextMenu?.(ctx, extensionApi) ?? [],\n );\n if (!items.length) return;\n e.preventDefault();\n setContextMenu({ x: e.clientX, y: e.clientY, items, ctx });\n },\n [extensions, extensionApi, resolveRowId],\n );\n\n // 收集工具栏 / 底部 / 主体接管的扩展贡献。\n const toolbarExtras = extensions\n .map((ext) =>\n ext.toolbar ? { name: ext.name, node: ext.toolbar(extensionApi) } : null,\n )\n .filter((x): x is { name: string; node: React.ReactNode } => !!x && !!x.node);\n\n const footerExtras = extensions\n .map((ext) =>\n ext.footer ? { name: ext.name, node: ext.footer(extensionApi) } : null,\n )\n .filter((x): x is { name: string; node: React.ReactNode } => !!x && !!x.node);\n\n let overrideContent: React.ReactNode | undefined = undefined;\n for (const ext of extensions) {\n const out = ext.renderContent?.(extensionApi);\n if (out !== undefined) {\n overrideContent = out;\n break;\n }\n }\n\n const handlePageChange = (newPage: number) => {\n if (internalPageIndex === newPage) return;\n setInternalPageIndex(newPage);\n onPageChange?.(newPage);\n };\n\n const toggleColumnVisibility = (columnId: string) => {\n table.getColumn(columnId)?.toggleVisibility();\n };\n\n useEffect(() => {\n const styleElement = document.createElement('style');\n styleElement.textContent = treeRowAnimationStyles;\n document.head.appendChild(styleElement);\n return () => { document.head.removeChild(styleElement); };\n }, []);\n\n return (\n <div className={`w-full ${className}`}>\n <TableToolbar\n toolbar={toolbar}\n table={table}\n columns={columns}\n columnOrderState={columnOrderState}\n visibilityState={visibilityState}\n activeFilter={activeFilter}\n setActiveFilter={setActiveFilter}\n customFilterPanel={customFilterPanel}\n draggedColumnId={draggedColumnId}\n handleDragStart={handleDragStart}\n toggleColumnVisibility={toggleColumnVisibility}\n rowSelection={rowSelection}\n data={data}\n enableColumnReordering={enableColumnReordering}\n handleDrop={handleDrop}\n />\n\n {/* 扩展贡献的工具栏控件 */}\n {toolbarExtras.length > 0 && (\n <div className=\"flex flex-wrap items-start gap-3 mb-4\">\n {toolbarExtras.map((item) => (\n <React.Fragment key={item.name}>{item.node}</React.Fragment>\n ))}\n </div>\n )}\n\n {overrideContent !== undefined ? (\n // 扩展接管了主体渲染(如 Pivot 透视模式)。\n <div className=\"w-full\">{overrideContent}</div>\n ) : (\n <>\n <div className=\"overflow-x-auto\">\n <Table className=\"table-sm w-full\">\n <TableHeader\n table={table}\n visibilityState={visibilityState}\n enableSorting={enableSorting}\n enableColumnReordering={enableColumnReordering}\n draggedColumnId={draggedColumnId}\n onColumnMouseEnter={onColumnMouseEnter}\n onColumnMouseLeave={onColumnMouseLeave}\n handleDragStart={handleDragStart}\n handleDragOver={handleDragOver}\n handleDrop={handleDrop}\n />\n <TableBody\n table={table}\n expandedRowsState={expandedRowsState}\n onRowClick={onRowClick}\n onRowDoubleClick={onRowDoubleClick}\n onRowMouseEnter={onRowMouseEnter}\n onRowMouseLeave={onRowMouseLeave}\n onCellClick={onCellClick}\n onCellDoubleClick={onCellDoubleClick}\n onCellMouseEnter={onCellMouseEnter}\n onCellMouseLeave={onCellMouseLeave}\n enableExpanding={enableExpanding}\n indentSize={indentSize}\n handleRowExpand={handleRowExpand}\n extensions={extensions}\n extensionApi={extensionApi}\n getRowId={resolveRowId}\n onCellContextMenu={handleCellContextMenu}\n />\n </Table>\n </div>\n\n <TablePagination\n enablePagination={enablePagination}\n table={table}\n internalPageIndex={internalPageIndex}\n internalPageSize={internalPageSize}\n handlePageChange={handlePageChange}\n setInternalPageSize={setInternalPageSize}\n setInternalPageIndex={setInternalPageIndex}\n onPageSizeChange={onPageSizeChange}\n onPageChange={onPageChange}\n />\n </>\n )}\n\n {/* 扩展贡献的底部控件 */}\n {footerExtras.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-3 mt-4\">\n {footerExtras.map((item) => (\n <React.Fragment key={item.name}>{item.node}</React.Fragment>\n ))}\n </div>\n )}\n\n {/* 扩展贡献的右键菜单 */}\n {contextMenu && (\n <ul\n className=\"menu bg-base-100 rounded-box shadow-lg border border-base-300 z-1000 p-1\"\n style={{\n position: 'fixed',\n top: contextMenu.y,\n left: contextMenu.x,\n minWidth: 160,\n }}\n >\n {contextMenu.items.map((item) =>\n item.separator ? (\n <li key={item.key} className=\"my-1 border-t border-base-300\" />\n ) : (\n <li key={item.key}>\n <button\n type=\"button\"\n disabled={item.disabled}\n onClick={() => {\n item.onSelect?.(contextMenu.ctx);\n setContextMenu(null);\n }}\n >\n {item.label}\n </button>\n </li>\n ),\n )}\n </ul>\n )}\n </div>\n );\n}\n\nexport default DataTable;\n"],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ var R = /* @__PURE__ */ k({
|
|
|
14
14
|
}), p = ({ column: e, placeholder: i = "搜索..." }) => {
|
|
15
15
|
const [n, s] = f(""), r = g(n, 300);
|
|
16
16
|
return v(() => {
|
|
17
|
-
const
|
|
18
|
-
|
|
17
|
+
const l = e.getFilterValue() || "";
|
|
18
|
+
l !== n && s(l);
|
|
19
19
|
}, [e.getFilterValue()]), v(() => {
|
|
20
20
|
e.setFilterValue(r || void 0);
|
|
21
21
|
}, [r]), /* @__PURE__ */ h("div", {
|
|
@@ -23,8 +23,8 @@ var R = /* @__PURE__ */ k({
|
|
|
23
23
|
children: [/* @__PURE__ */ t("input", {
|
|
24
24
|
type: "text",
|
|
25
25
|
value: n,
|
|
26
|
-
onChange: (
|
|
27
|
-
s(
|
|
26
|
+
onChange: (l) => {
|
|
27
|
+
s(l.target.value);
|
|
28
28
|
},
|
|
29
29
|
placeholder: i,
|
|
30
30
|
className: "input input-bordered input-sm w-full"
|
|
@@ -49,10 +49,10 @@ var R = /* @__PURE__ */ k({
|
|
|
49
49
|
})]
|
|
50
50
|
});
|
|
51
51
|
}, b = ({ column: e, min: i, max: n, step: s = 1 }) => {
|
|
52
|
-
const [r, o] = f(""), [
|
|
52
|
+
const [r, o] = f(""), [l, a] = f(""), d = g(r, 300), c = g(l, 300);
|
|
53
53
|
return v(() => {
|
|
54
54
|
const u = e.getFilterValue(), N = u && u[0] !== void 0 ? String(u[0]) : "", w = u && u[1] !== void 0 ? String(u[1]) : "";
|
|
55
|
-
N !== r && o(N), w !==
|
|
55
|
+
N !== r && o(N), w !== l && a(w);
|
|
56
56
|
}, [e.getFilterValue()]), v(() => {
|
|
57
57
|
const u = [d === "" ? void 0 : Number(d), c === "" ? void 0 : Number(c)];
|
|
58
58
|
u[0] === void 0 && u[1] === void 0 ? e.setFilterValue(void 0) : e.setFilterValue(u);
|
|
@@ -76,9 +76,9 @@ var R = /* @__PURE__ */ k({
|
|
|
76
76
|
/* @__PURE__ */ t("span", { children: "至" }),
|
|
77
77
|
/* @__PURE__ */ t("input", {
|
|
78
78
|
type: "number",
|
|
79
|
-
value:
|
|
79
|
+
value: l,
|
|
80
80
|
onChange: (u) => {
|
|
81
|
-
|
|
81
|
+
a(u.target.value);
|
|
82
82
|
},
|
|
83
83
|
placeholder: "最大值",
|
|
84
84
|
min: i,
|
|
@@ -87,10 +87,10 @@ var R = /* @__PURE__ */ k({
|
|
|
87
87
|
className: "input input-bordered input-sm w-full"
|
|
88
88
|
})
|
|
89
89
|
]
|
|
90
|
-
}), (r ||
|
|
90
|
+
}), (r || l) && /* @__PURE__ */ t("button", {
|
|
91
91
|
className: "btn btn-ghost btn-xs self-end",
|
|
92
92
|
onClick: () => {
|
|
93
|
-
o(""),
|
|
93
|
+
o(""), a(""), e.setFilterValue(void 0);
|
|
94
94
|
},
|
|
95
95
|
children: "清除"
|
|
96
96
|
})]
|
|
@@ -98,24 +98,24 @@ var R = /* @__PURE__ */ k({
|
|
|
98
98
|
}, m = ({ column: e, options: i, placeholder: n = "全部" }) => {
|
|
99
99
|
const [s, r] = f("");
|
|
100
100
|
return v(() => {
|
|
101
|
-
const
|
|
102
|
-
r(
|
|
101
|
+
const l = e.getFilterValue();
|
|
102
|
+
r(l !== void 0 ? String(l) : "");
|
|
103
103
|
}, [e.getFilterValue()]), /* @__PURE__ */ t("div", {
|
|
104
104
|
className: "mt-2",
|
|
105
105
|
children: /* @__PURE__ */ h("select", {
|
|
106
106
|
value: s,
|
|
107
|
-
onChange: (
|
|
108
|
-
const
|
|
109
|
-
r(
|
|
107
|
+
onChange: (l) => {
|
|
108
|
+
const a = l.target.value;
|
|
109
|
+
r(a), a === "" ? e.setFilterValue(void 0) : e.setFilterValue(a);
|
|
110
110
|
},
|
|
111
111
|
className: "select select-bordered select-sm w-full",
|
|
112
112
|
children: [/* @__PURE__ */ t("option", {
|
|
113
113
|
value: "",
|
|
114
114
|
children: n
|
|
115
|
-
}), i.map((
|
|
116
|
-
value:
|
|
117
|
-
children:
|
|
118
|
-
},
|
|
115
|
+
}), i.map((l, a) => /* @__PURE__ */ t("option", {
|
|
116
|
+
value: l.value,
|
|
117
|
+
children: l.label
|
|
118
|
+
}, a))]
|
|
119
119
|
})
|
|
120
120
|
});
|
|
121
121
|
}, V = ({ column: e, trueLabel: i = "是", falseLabel: n = "否", allLabel: s = "全部" }) => {
|
|
@@ -132,17 +132,17 @@ var R = /* @__PURE__ */ k({
|
|
|
132
132
|
value: "false",
|
|
133
133
|
label: n
|
|
134
134
|
}
|
|
135
|
-
], [o,
|
|
135
|
+
], [o, l] = f("");
|
|
136
136
|
return v(() => {
|
|
137
137
|
const d = e.getFilterValue();
|
|
138
|
-
|
|
138
|
+
l(d !== void 0 ? String(d) : "");
|
|
139
139
|
}, [e.getFilterValue()]), /* @__PURE__ */ t("div", {
|
|
140
140
|
className: "mt-2",
|
|
141
141
|
children: /* @__PURE__ */ t("select", {
|
|
142
142
|
value: o,
|
|
143
143
|
onChange: (d) => {
|
|
144
144
|
const c = d.target.value;
|
|
145
|
-
|
|
145
|
+
l(c), c === "" ? e.setFilterValue(void 0) : e.setFilterValue(c === "true");
|
|
146
146
|
},
|
|
147
147
|
className: "select select-bordered select-sm w-full",
|
|
148
148
|
children: r.map((d, c) => /* @__PURE__ */ t("option", {
|
|
@@ -152,14 +152,14 @@ var R = /* @__PURE__ */ k({
|
|
|
152
152
|
})
|
|
153
153
|
});
|
|
154
154
|
}, F = ({ column: e }) => {
|
|
155
|
-
const [i, n] = f(""), [s, r] = f(""), o = g(i, 300),
|
|
155
|
+
const [i, n] = f(""), [s, r] = f(""), o = g(i, 300), l = g(s, 300);
|
|
156
156
|
return v(() => {
|
|
157
|
-
const
|
|
157
|
+
const a = e.getFilterValue(), d = a && a[0] ? a[0] : "", c = a && a[1] ? a[1] : "";
|
|
158
158
|
d !== i && n(d), c !== s && r(c);
|
|
159
159
|
}, [e.getFilterValue()]), v(() => {
|
|
160
|
-
const
|
|
161
|
-
!
|
|
162
|
-
}, [o,
|
|
160
|
+
const a = [o || void 0, l || void 0];
|
|
161
|
+
!a[0] && !a[1] ? e.setFilterValue(void 0) : e.setFilterValue(a);
|
|
162
|
+
}, [o, l]), /* @__PURE__ */ h("div", {
|
|
163
163
|
className: "flex flex-col gap-1 mt-2",
|
|
164
164
|
children: [/* @__PURE__ */ h("div", {
|
|
165
165
|
className: "flex items-center gap-2",
|
|
@@ -167,8 +167,8 @@ var R = /* @__PURE__ */ k({
|
|
|
167
167
|
/* @__PURE__ */ t("input", {
|
|
168
168
|
type: "date",
|
|
169
169
|
value: i,
|
|
170
|
-
onChange: (
|
|
171
|
-
n(
|
|
170
|
+
onChange: (a) => {
|
|
171
|
+
n(a.target.value);
|
|
172
172
|
},
|
|
173
173
|
className: "input input-bordered input-sm w-full"
|
|
174
174
|
}),
|
|
@@ -176,8 +176,8 @@ var R = /* @__PURE__ */ k({
|
|
|
176
176
|
/* @__PURE__ */ t("input", {
|
|
177
177
|
type: "date",
|
|
178
178
|
value: s,
|
|
179
|
-
onChange: (
|
|
180
|
-
r(
|
|
179
|
+
onChange: (a) => {
|
|
180
|
+
r(a.target.value);
|
|
181
181
|
},
|
|
182
182
|
className: "input input-bordered input-sm w-full"
|
|
183
183
|
})
|
|
@@ -193,22 +193,22 @@ var R = /* @__PURE__ */ k({
|
|
|
193
193
|
}, x = ({ column: e, options: i, placeholder: n = "选择选项" }) => {
|
|
194
194
|
const [s, r] = f([]);
|
|
195
195
|
return v(() => {
|
|
196
|
-
const
|
|
197
|
-
r(
|
|
196
|
+
const l = e.getFilterValue();
|
|
197
|
+
r(l || []);
|
|
198
198
|
}, [e.getFilterValue()]), /* @__PURE__ */ h("div", {
|
|
199
199
|
className: "mt-2",
|
|
200
200
|
children: [/* @__PURE__ */ t("select", {
|
|
201
201
|
multiple: !0,
|
|
202
202
|
value: s,
|
|
203
|
-
onChange: (
|
|
204
|
-
const
|
|
205
|
-
r(
|
|
203
|
+
onChange: (l) => {
|
|
204
|
+
const a = Array.from(l.target.selectedOptions, (d) => d.value);
|
|
205
|
+
r(a), a.length === 0 ? e.setFilterValue(void 0) : e.setFilterValue(a);
|
|
206
206
|
},
|
|
207
207
|
className: "select select-bordered select-sm w-full max-h-32",
|
|
208
|
-
children: i.map((
|
|
209
|
-
value:
|
|
210
|
-
children:
|
|
211
|
-
},
|
|
208
|
+
children: i.map((l, a) => /* @__PURE__ */ t("option", {
|
|
209
|
+
value: l.value,
|
|
210
|
+
children: l.label
|
|
211
|
+
}, a))
|
|
212
212
|
}), s.length > 0 && /* @__PURE__ */ h("div", {
|
|
213
213
|
className: "flex justify-between mt-1",
|
|
214
214
|
children: [/* @__PURE__ */ h("span", {
|
|
@@ -253,7 +253,7 @@ var R = /* @__PURE__ */ k({
|
|
|
253
253
|
default:
|
|
254
254
|
return /* @__PURE__ */ t(p, { column: e });
|
|
255
255
|
}
|
|
256
|
-
};
|
|
256
|
+
}, l = e.columnDef.header && typeof e.columnDef.header == "string" ? e.columnDef.header : e.id;
|
|
257
257
|
return /* @__PURE__ */ h("div", {
|
|
258
258
|
className: "card bg-base-100 shadow-lg p-4 w-64 z-50",
|
|
259
259
|
children: [
|
|
@@ -261,7 +261,7 @@ var R = /* @__PURE__ */ k({
|
|
|
261
261
|
className: "flex justify-between items-center mb-2",
|
|
262
262
|
children: [/* @__PURE__ */ t("h3", {
|
|
263
263
|
className: "font-medium",
|
|
264
|
-
children:
|
|
264
|
+
children: l
|
|
265
265
|
}), /* @__PURE__ */ t("button", {
|
|
266
266
|
className: "btn btn-ghost btn-xs",
|
|
267
267
|
onClick: i,
|