@sth87/shadcn-design-system 0.1.6 → 0.1.8

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.
Files changed (73) hide show
  1. package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
  2. package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
  3. package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -1
  4. package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -1
  5. package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -1
  6. package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
  7. package/dist/cjs/components/Table/data-table-toolbar.cjs +2 -0
  8. package/dist/cjs/components/Table/data-table-toolbar.cjs.map +1 -0
  9. package/dist/cjs/components/Table/data-table-view-options.cjs +2 -0
  10. package/dist/cjs/components/Table/data-table-view-options.cjs.map +1 -0
  11. package/dist/cjs/components/Table/data-table.cjs +1 -1
  12. package/dist/cjs/components/Table/data-table.cjs.map +1 -1
  13. package/dist/cjs/components/Table/select-column.cjs +2 -0
  14. package/dist/cjs/components/Table/select-column.cjs.map +1 -0
  15. package/dist/cjs/hooks/use-data-table.cjs +1 -1
  16. package/dist/cjs/hooks/use-data-table.cjs.map +1 -1
  17. package/dist/cjs/index.cjs +1 -1
  18. package/dist/cjs/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs +2 -0
  19. package/dist/cjs/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs.map +1 -0
  20. package/dist/cjs/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs +6 -0
  21. package/dist/cjs/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs.map +1 -0
  22. package/dist/cjs/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs +2 -0
  23. package/dist/cjs/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs.map +1 -0
  24. package/dist/cjs/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs +2 -0
  25. package/dist/cjs/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.map +1 -0
  26. package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
  27. package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
  28. package/dist/cjs/styles/index.css +1 -1
  29. package/dist/esm/components/ImageViewer/ImageViewer.js +3 -3
  30. package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
  31. package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -1
  32. package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -1
  33. package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -1
  34. package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
  35. package/dist/esm/components/Table/data-table-toolbar.js +116 -0
  36. package/dist/esm/components/Table/data-table-toolbar.js.map +1 -0
  37. package/dist/esm/components/Table/data-table-view-options.js +258 -0
  38. package/dist/esm/components/Table/data-table-view-options.js.map +1 -0
  39. package/dist/esm/components/Table/data-table.js +1 -1
  40. package/dist/esm/components/Table/data-table.js.map +1 -1
  41. package/dist/esm/components/Table/select-column.js +33 -0
  42. package/dist/esm/components/Table/select-column.js.map +1 -0
  43. package/dist/esm/hooks/use-data-table.js +68 -64
  44. package/dist/esm/hooks/use-data-table.js.map +1 -1
  45. package/dist/esm/index.js +211 -197
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +57 -0
  48. package/dist/esm/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js.map +1 -0
  49. package/dist/esm/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js +2345 -0
  50. package/dist/esm/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js.map +1 -0
  51. package/dist/esm/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +440 -0
  52. package/dist/esm/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js.map +1 -0
  53. package/dist/esm/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +236 -0
  54. package/dist/esm/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js.map +1 -0
  55. package/dist/esm/packages/ui/src/components/table.js +5 -5
  56. package/dist/esm/packages/ui/src/components/table.js.map +1 -1
  57. package/dist/esm/styles/index.css +1 -1
  58. package/dist/types/components/Table/TableFilter/data-table-date-filter.d.ts +1 -2
  59. package/dist/types/components/Table/TableFilter/data-table-date-filter.d.ts.map +1 -1
  60. package/dist/types/components/Table/TableFilter/data-table-filter-popover.d.ts +1 -2
  61. package/dist/types/components/Table/TableFilter/data-table-filter-popover.d.ts.map +1 -1
  62. package/dist/types/components/Table/TableFilter/data-table-slider-filter.d.ts +1 -2
  63. package/dist/types/components/Table/TableFilter/data-table-slider-filter.d.ts.map +1 -1
  64. package/dist/types/components/Table/data-table-column-header.d.ts +1 -2
  65. package/dist/types/components/Table/data-table-column-header.d.ts.map +1 -1
  66. package/dist/types/components/Table/data-table-toolbar.d.ts +4 -3
  67. package/dist/types/components/Table/data-table-toolbar.d.ts.map +1 -1
  68. package/dist/types/components/Table/data-table-view-options.d.ts +12 -3
  69. package/dist/types/components/Table/data-table-view-options.d.ts.map +1 -1
  70. package/dist/types/components/Table/index.d.ts +7 -0
  71. package/dist/types/components/Table/index.d.ts.map +1 -1
  72. package/dist/types/hooks/use-data-table.d.ts.map +1 -1
  73. package/package.json +4 -1
@@ -0,0 +1,258 @@
1
+ import { jsxs as x, Fragment as G, jsx as r } from "react/jsx-runtime";
2
+ import { useSensors as K, useSensor as O, DndContext as $, closestCenter as H, KeyboardSensor as q, PointerSensor as J } from "../../node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js";
3
+ import { arrayMove as Q, SortableContext as U, verticalListSortingStrategy as W, sortableKeyboardCoordinates as X, useSortable as Y } from "../../node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js";
4
+ import { CSS as Z } from "../../node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js";
5
+ import { Check as _, Settings2 as ee, GripVertical as te } from "lucide-react";
6
+ import * as h from "react";
7
+ import se from "../Command/Command.js";
8
+ import { Popover as re } from "../Popover/index.js";
9
+ import "@radix-ui/react-slot";
10
+ import "../../packages/ui/src/components/button.js";
11
+ import "../../packages/ui/src/components/button-group.js";
12
+ import "../../packages/ui/src/components/input.js";
13
+ import "../../packages/ui/src/components/textarea.js";
14
+ import "@radix-ui/react-label";
15
+ import { cn as N } from "../../packages/ui/src/lib/utils.js";
16
+ import "../../packages/ui/src/components/select.js";
17
+ import "../../packages/ui/src/components/combobox.js";
18
+ import "@radix-ui/react-tooltip";
19
+ import "react-day-picker";
20
+ import "../../packages/ui/src/components/popover.js";
21
+ import "@radix-ui/react-separator";
22
+ import "../../packages/ui/src/components/switch.js";
23
+ import "vaul";
24
+ import "@radix-ui/react-scroll-area";
25
+ import "../../packages/ui/src/components/tree-view.js";
26
+ import "@radix-ui/react-alert-dialog";
27
+ import "@radix-ui/react-avatar";
28
+ import "../../packages/ui/src/components/badge.js";
29
+ import "../../packages/ui/src/components/checkbox.js";
30
+ import "@radix-ui/react-collapsible";
31
+ import "cmdk";
32
+ import "@radix-ui/react-dialog";
33
+ import "@radix-ui/react-dropdown-menu";
34
+ import "../../packages/ui/src/components/input-otp.js";
35
+ import "../../packages/ui/src/components/radio-group.js";
36
+ import "../../packages/ui/src/components/sidebar.js";
37
+ import "@radix-ui/react-slider";
38
+ import "../../packages/ui/src/components/tabs.js";
39
+ import "../../packages/ui/src/components/toggle.js";
40
+ import D from "../Checkbox/Checkbox.js";
41
+ import P from "../Button/Button.js";
42
+ function qe({
43
+ table: s,
44
+ variant: o = "command",
45
+ labels: n,
46
+ triggerIcon: c = /* @__PURE__ */ r(ee, { className: "ds:text-muted-foreground" }),
47
+ trigger: d,
48
+ content: f,
49
+ contentClassName: g,
50
+ ...u
51
+ }) {
52
+ const l = s.getState().columnOrder, a = s.getState().columnPinning, i = h.useMemo(
53
+ () => w(s, l, a).filter(
54
+ (e) => typeof e.accessorFn < "u" && e.getCanHide()
55
+ ),
56
+ [s, l, a]
57
+ ), C = h.useCallback(
58
+ (e) => e.columnDef.meta?.label ?? (typeof e.columnDef.header == "string" ? e.columnDef.header : e.id),
59
+ []
60
+ ), y = K(
61
+ O(J),
62
+ O(q, {
63
+ coordinateGetter: X
64
+ })
65
+ ), t = h.useMemo(
66
+ () => i.map((e) => e.id),
67
+ [i]
68
+ ), T = i.every((e) => e.getIsVisible()), z = i.some((e) => e.getIsVisible()), A = h.useCallback(
69
+ (e) => {
70
+ i.forEach((p) => p.toggleVisibility(e));
71
+ },
72
+ [i]
73
+ ), L = h.useCallback(
74
+ (e) => {
75
+ const { active: p, over: S } = e;
76
+ if (!S || p.id === S.id) return;
77
+ const V = t.indexOf(String(p.id)), k = t.indexOf(String(S.id));
78
+ if (V === -1 || k === -1) return;
79
+ const B = Q(t, V, k), I = new Set(t), R = [...B], E = w(s).map(
80
+ (m) => I.has(m.id) ? R.shift() ?? m.id : m.id
81
+ ), v = s.getState().columnPinning, F = {
82
+ ...v,
83
+ left: v?.left?.filter((m) => !I.has(m)),
84
+ right: v?.right?.filter(
85
+ (m) => !I.has(m)
86
+ )
87
+ };
88
+ s.setColumnOrder(E), s.setColumnPinning(F);
89
+ },
90
+ [t, s]
91
+ ), M = [
92
+ {
93
+ type: "group",
94
+ heading: "",
95
+ items: i.map((e) => ({
96
+ type: "item",
97
+ onClick: () => e.toggleVisibility(!e.getIsVisible()),
98
+ children: /* @__PURE__ */ x(G, { children: [
99
+ /* @__PURE__ */ r("span", { className: "ds:truncate", children: C(e) }),
100
+ /* @__PURE__ */ r(
101
+ _,
102
+ {
103
+ className: N(
104
+ "ds:ml-auto ds:size-4 ds:shrink-0",
105
+ e.getIsVisible() ? "ds:opacity-100" : "ds:opacity-0"
106
+ )
107
+ }
108
+ )
109
+ ] })
110
+ }))
111
+ }
112
+ ], b = {
113
+ trigger: n?.trigger ?? "View",
114
+ searchPlaceholder: n?.searchPlaceholder ?? "Search columns...",
115
+ selectAll: n?.selectAll ?? "Chọn tất cả",
116
+ reset: n?.reset ?? "Đặt lại"
117
+ }, j = /* @__PURE__ */ x("div", { className: "ds:flex ds:w-full ds:flex-col", children: [
118
+ /* @__PURE__ */ x("div", { className: "ds:flex ds:items-center ds:gap-3 ds:px-3 ds:py-3", children: [
119
+ /* @__PURE__ */ r(
120
+ D,
121
+ {
122
+ "aria-label": "Toggle all columns",
123
+ checked: T ? !0 : z ? "indeterminate" : !1,
124
+ onCheckedChange: (e) => A(e === !0)
125
+ }
126
+ ),
127
+ /* @__PURE__ */ r("span", { className: "ds:text-sm ds:font-medium ds:text-foreground", children: b.selectAll })
128
+ ] }),
129
+ /* @__PURE__ */ r("div", { className: "ds:mx-3 ds:h-px ds:bg-border" }),
130
+ /* @__PURE__ */ r(
131
+ $,
132
+ {
133
+ sensors: y,
134
+ collisionDetection: H,
135
+ onDragEnd: L,
136
+ children: /* @__PURE__ */ r(
137
+ U,
138
+ {
139
+ items: t,
140
+ strategy: W,
141
+ children: /* @__PURE__ */ r("div", { className: "ds:flex ds:max-h-80 ds:flex-col ds:overflow-y-auto ds:py-2", children: i.map((e) => /* @__PURE__ */ r(
142
+ ie,
143
+ {
144
+ id: e.id,
145
+ label: C(e),
146
+ checked: e.getIsVisible(),
147
+ onCheckedChange: (p) => e.toggleVisibility(p === !0)
148
+ },
149
+ e.id
150
+ )) })
151
+ }
152
+ )
153
+ }
154
+ ),
155
+ /* @__PURE__ */ r("div", { className: "ds:mx-3 ds:h-px ds:bg-border" }),
156
+ /* @__PURE__ */ r(
157
+ P,
158
+ {
159
+ type: "button",
160
+ variant: "ghost",
161
+ size: "sm",
162
+ className: "ds:mx-3 ds:my-2 ds:text-primary hover:ds:text-primary",
163
+ onClick: () => {
164
+ s.resetColumnVisibility(), s.resetColumnOrder(), s.resetColumnPinning();
165
+ },
166
+ children: b.reset
167
+ }
168
+ )
169
+ ] });
170
+ return /* @__PURE__ */ r(
171
+ re,
172
+ {
173
+ trigger: d ?? /* @__PURE__ */ x(
174
+ P,
175
+ {
176
+ "aria-label": "Toggle columns",
177
+ role: "combobox",
178
+ variant: "outline",
179
+ size: "sm",
180
+ className: "ds:ml-auto ds:h-8 ds:font-normal ds:lg:flex",
181
+ children: [
182
+ c,
183
+ b.trigger
184
+ ]
185
+ }
186
+ ),
187
+ content: f ?? (o === "draggable" ? j : /* @__PURE__ */ r(se, { items: M, search: b.searchPlaceholder })),
188
+ contentClassName: N(
189
+ "ds:p-0",
190
+ o === "draggable" ? "ds:w-72" : "ds:w-44",
191
+ g
192
+ ),
193
+ ...u
194
+ }
195
+ );
196
+ }
197
+ function w(s, o = s.getState().columnOrder, n = s.getState().columnPinning) {
198
+ const c = s.getAllLeafColumns(), d = new Map(c.map((t) => [t.id, t])), f = c.map((t) => t.id), g = o ?? [], u = [
199
+ ...g.filter((t) => d.has(t)),
200
+ ...f.filter((t) => !g.includes(t))
201
+ ], l = n ?? {}, a = (l.left ?? []).filter((t) => d.has(t)), i = (l.right ?? []).filter((t) => d.has(t)), C = /* @__PURE__ */ new Set([...a, ...i]), y = u.filter((t) => !C.has(t));
202
+ return [...a, ...y, ...i].map((t) => d.get(t)).filter((t) => !!t);
203
+ }
204
+ function ie({
205
+ id: s,
206
+ label: o,
207
+ checked: n,
208
+ onCheckedChange: c
209
+ }) {
210
+ const {
211
+ attributes: d,
212
+ listeners: f,
213
+ setNodeRef: g,
214
+ transform: u,
215
+ transition: l,
216
+ isDragging: a
217
+ } = Y({ id: s });
218
+ return /* @__PURE__ */ x(
219
+ "div",
220
+ {
221
+ ref: g,
222
+ className: N(
223
+ "ds:flex ds:min-h-11 ds:items-center ds:gap-3 ds:px-3 ds:text-sm ds:text-foreground",
224
+ a && "ds:bg-accent"
225
+ ),
226
+ style: {
227
+ transform: Z.Transform.toString(u),
228
+ transition: l
229
+ },
230
+ children: [
231
+ /* @__PURE__ */ r(
232
+ "button",
233
+ {
234
+ type: "button",
235
+ className: "ds:flex ds:size-5 ds:shrink-0 ds:cursor-grab ds:items-center ds:justify-center ds:text-muted-foreground active:ds:cursor-grabbing",
236
+ "aria-label": `Reorder ${o}`,
237
+ ...d,
238
+ ...f,
239
+ children: /* @__PURE__ */ r(te, { className: "ds:size-4" })
240
+ }
241
+ ),
242
+ /* @__PURE__ */ r(
243
+ D,
244
+ {
245
+ "aria-label": `Toggle ${o}`,
246
+ checked: n,
247
+ onCheckedChange: c
248
+ }
249
+ ),
250
+ /* @__PURE__ */ r("span", { className: "ds:min-w-0 ds:flex-1 ds:truncate ds:font-medium", children: o })
251
+ ]
252
+ }
253
+ );
254
+ }
255
+ export {
256
+ qe as DataTableViewOptions
257
+ };
258
+ //# sourceMappingURL=data-table-view-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-view-options.js","sources":["../../../../src/components/Table/data-table-view-options.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport type {\n Column,\n ColumnOrderState,\n ColumnPinningState,\n Table,\n} from \"@tanstack/react-table\";\nimport { Check, GripVertical, Settings2 } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"../Button\";\nimport { Checkbox } from \"../Checkbox\";\nimport Command, { type CommandItemType } from \"../Command/Command\";\nimport { Popover } from \"../Popover\";\nimport { cn } from \"@dsui/ui\";\n\nexport type DataTableViewOptionsVariant = \"command\" | \"draggable\";\n\nexport interface DataTableViewOptionsLabels {\n trigger?: React.ReactNode;\n searchPlaceholder?: string;\n selectAll?: React.ReactNode;\n reset?: React.ReactNode;\n}\n\nexport interface DataTableViewOptionsProps<TData> extends React.ComponentProps<\n typeof Popover\n> {\n table: Table<TData>;\n variant?: DataTableViewOptionsVariant;\n labels?: DataTableViewOptionsLabels;\n triggerIcon?: React.ReactNode;\n}\n\nexport function DataTableViewOptions<TData>({\n table,\n variant = \"command\",\n labels,\n triggerIcon = <Settings2 className=\"ds:text-muted-foreground\" />,\n trigger,\n content,\n contentClassName,\n ...props\n}: DataTableViewOptionsProps<TData>) {\n const columnOrder = table.getState().columnOrder;\n const columnPinning = table.getState().columnPinning;\n\n const columns = React.useMemo(\n () =>\n getOrderedTableColumns(table, columnOrder, columnPinning).filter(\n (column) =>\n typeof column.accessorFn !== \"undefined\" && column.getCanHide()\n ),\n [table, columnOrder, columnPinning]\n );\n\n const getColumnLabel = React.useCallback(\n (column: (typeof columns)[number]) =>\n column.columnDef.meta?.label ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id),\n []\n );\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const columnIds = React.useMemo(\n () => columns.map((column) => column.id),\n [columns]\n );\n\n const allColumnsVisible = columns.every((column) => column.getIsVisible());\n const someColumnsVisible = columns.some((column) => column.getIsVisible());\n\n const onToggleAll = React.useCallback(\n (checked: boolean) => {\n columns.forEach((column) => column.toggleVisibility(checked));\n },\n [columns]\n );\n\n const onDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (!over || active.id === over.id) return;\n\n const oldIndex = columnIds.indexOf(String(active.id));\n const newIndex = columnIds.indexOf(String(over.id));\n\n if (oldIndex === -1 || newIndex === -1) return;\n\n const orderedOptionIds = arrayMove(columnIds, oldIndex, newIndex);\n const optionIdSet = new Set(columnIds);\n const pendingOptionIds = [...orderedOptionIds];\n const nextColumnOrder = getOrderedTableColumns(table).map((column) =>\n optionIdSet.has(column.id)\n ? (pendingOptionIds.shift() ?? column.id)\n : column.id\n );\n const currentColumnPinning = table.getState().columnPinning;\n const nextColumnPinning = {\n ...currentColumnPinning,\n left: currentColumnPinning?.left?.filter((id) => !optionIdSet.has(id)),\n right: currentColumnPinning?.right?.filter(\n (id) => !optionIdSet.has(id)\n ),\n };\n\n table.setColumnOrder(nextColumnOrder);\n table.setColumnPinning(nextColumnPinning);\n },\n [columnIds, table]\n );\n\n const items: CommandItemType[] = [\n {\n type: \"group\",\n heading: \"\",\n items: columns.map((column) => ({\n type: \"item\" as const,\n onClick: () => column.toggleVisibility(!column.getIsVisible()),\n children: (\n <>\n <span className=\"ds:truncate\">{getColumnLabel(column)}</span>\n <Check\n className={cn(\n \"ds:ml-auto ds:size-4 ds:shrink-0\",\n column.getIsVisible() ? \"ds:opacity-100\" : \"ds:opacity-0\"\n )}\n />\n </>\n ),\n })),\n },\n ];\n\n const resolvedLabels = {\n trigger: labels?.trigger ?? \"View\",\n searchPlaceholder: labels?.searchPlaceholder ?? \"Search columns...\",\n selectAll: labels?.selectAll ?? \"Chọn tất cả\",\n reset: labels?.reset ?? \"Đặt lại\",\n };\n\n const defaultDraggableContent = (\n <div className=\"ds:flex ds:w-full ds:flex-col\">\n <div className=\"ds:flex ds:items-center ds:gap-3 ds:px-3 ds:py-3\">\n <Checkbox\n aria-label=\"Toggle all columns\"\n checked={\n allColumnsVisible\n ? true\n : someColumnsVisible\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => onToggleAll(checked === true)}\n />\n <span className=\"ds:text-sm ds:font-medium ds:text-foreground\">\n {resolvedLabels.selectAll}\n </span>\n </div>\n <div className=\"ds:mx-3 ds:h-px ds:bg-border\" />\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={onDragEnd}\n >\n <SortableContext\n items={columnIds}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"ds:flex ds:max-h-80 ds:flex-col ds:overflow-y-auto ds:py-2\">\n {columns.map((column) => (\n <DataTableDraggableColumnOption\n key={column.id}\n id={column.id}\n label={getColumnLabel(column)}\n checked={column.getIsVisible()}\n onCheckedChange={(checked) =>\n column.toggleVisibility(checked === true)\n }\n />\n ))}\n </div>\n </SortableContext>\n </DndContext>\n <div className=\"ds:mx-3 ds:h-px ds:bg-border\" />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"ds:mx-3 ds:my-2 ds:text-primary hover:ds:text-primary\"\n onClick={() => {\n table.resetColumnVisibility();\n table.resetColumnOrder();\n table.resetColumnPinning();\n }}\n >\n {resolvedLabels.reset}\n </Button>\n </div>\n );\n\n return (\n <Popover\n trigger={\n trigger ?? (\n <Button\n aria-label=\"Toggle columns\"\n role=\"combobox\"\n variant=\"outline\"\n size=\"sm\"\n className=\"ds:ml-auto ds:h-8 ds:font-normal ds:lg:flex\"\n >\n {triggerIcon}\n {resolvedLabels.trigger}\n </Button>\n )\n }\n content={\n content ??\n (variant === \"draggable\" ? (\n defaultDraggableContent\n ) : (\n <Command items={items} search={resolvedLabels.searchPlaceholder} />\n ))\n }\n contentClassName={cn(\n \"ds:p-0\",\n variant === \"draggable\" ? \"ds:w-72\" : \"ds:w-44\",\n contentClassName\n )}\n {...props}\n />\n );\n}\n\nfunction getOrderedTableColumns<TData>(\n table: Table<TData>,\n columnOrder: ColumnOrderState = table.getState().columnOrder,\n columnPinning: ColumnPinningState = table.getState().columnPinning\n) {\n const allColumns = table.getAllLeafColumns();\n const columnById = new Map(allColumns.map((column) => [column.id, column]));\n const columnIds = allColumns.map((column) => column.id);\n const order = columnOrder ?? [];\n const orderedIds = [\n ...order.filter((id) => columnById.has(id)),\n ...columnIds.filter((id) => !order.includes(id)),\n ];\n const pinning = columnPinning ?? {};\n const leftIds = (pinning.left ?? []).filter((id) => columnById.has(id));\n const rightIds = (pinning.right ?? []).filter((id) => columnById.has(id));\n const pinnedIds = new Set([...leftIds, ...rightIds]);\n const centerIds = orderedIds.filter((id) => !pinnedIds.has(id));\n\n return [...leftIds, ...centerIds, ...rightIds]\n .map((id) => columnById.get(id))\n .filter((column): column is Column<TData, unknown> => Boolean(column));\n}\n\ninterface DataTableDraggableColumnOptionProps {\n id: string;\n label: React.ReactNode;\n checked: boolean;\n onCheckedChange: React.ComponentProps<typeof Checkbox>[\"onCheckedChange\"];\n}\n\nfunction DataTableDraggableColumnOption({\n id,\n label,\n checked,\n onCheckedChange,\n}: DataTableDraggableColumnOptionProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id });\n\n return (\n <div\n ref={setNodeRef}\n className={cn(\n \"ds:flex ds:min-h-11 ds:items-center ds:gap-3 ds:px-3 ds:text-sm ds:text-foreground\",\n isDragging && \"ds:bg-accent\"\n )}\n style={{\n transform: CSS.Transform.toString(transform),\n transition,\n }}\n >\n <button\n type=\"button\"\n className=\"ds:flex ds:size-5 ds:shrink-0 ds:cursor-grab ds:items-center ds:justify-center ds:text-muted-foreground active:ds:cursor-grabbing\"\n aria-label={`Reorder ${label}`}\n {...attributes}\n {...listeners}\n >\n <GripVertical className=\"ds:size-4\" />\n </button>\n <Checkbox\n aria-label={`Toggle ${label}`}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <span className=\"ds:min-w-0 ds:flex-1 ds:truncate ds:font-medium\">\n {label}\n </span>\n </div>\n );\n}\n"],"names":["DataTableViewOptions","table","variant","labels","triggerIcon","jsx","Settings2","trigger","content","contentClassName","props","columnOrder","columnPinning","columns","React","getOrderedTableColumns","column","getColumnLabel","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","columnIds","allColumnsVisible","someColumnsVisible","onToggleAll","checked","onDragEnd","event","active","over","oldIndex","newIndex","orderedOptionIds","arrayMove","optionIdSet","pendingOptionIds","nextColumnOrder","currentColumnPinning","nextColumnPinning","id","items","jsxs","Fragment","Check","cn","resolvedLabels","defaultDraggableContent","Checkbox","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","DataTableDraggableColumnOption","Button","Popover","Command","allColumns","columnById","order","orderedIds","pinning","leftIds","rightIds","pinnedIds","centerIds","label","onCheckedChange","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","GripVertical"],"mappings":"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"}
@@ -64,7 +64,7 @@ function po({
64
64
  "div",
65
65
  {
66
66
  className: a(
67
- "ds:overflow-auto ds:rounded-md ds:border ds-border-border",
67
+ "ds:overflow-auto ds:rounded-md ds:border ds:border-border",
68
68
  s && "ds:blur-sm"
69
69
  ),
70
70
  children: /* @__PURE__ */ i(b, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.js","sources":["../../../../src/components/Table/data-table.tsx"],"sourcesContent":["import { flexRender, type Table as TanstackTable } from \"@tanstack/react-table\";\nimport type * as React from \"react\";\n\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport {\n cn,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@dsui/ui\";\nimport { getCommonPinningStyles } from \"@/utils/data-table\";\nimport { DataTableColumnHeader } from \"./data-table-column-header\";\n\nexport interface DataTableProps<TData> extends React.ComponentProps<\"div\"> {\n table: TanstackTable<TData>;\n actionBar?: React.ReactNode;\n pagination?:\n | boolean\n | Omit<React.ComponentProps<typeof DataTablePagination<TData>>, \"table\">;\n sticky?: boolean | { offsetHeader?: number; offsetScroll?: number };\n bordered?: boolean;\n loading?: boolean;\n footer?: (currentPageData: TData[]) => React.ReactNode;\n}\n\nexport function DataTable<TData>({\n table,\n actionBar,\n children,\n className,\n pagination = true,\n sticky,\n bordered,\n loading,\n footer,\n ...props\n}: DataTableProps<TData>) {\n return (\n <div\n className={cn(\n \"ds:flex ds:w-full ds:flex-col ds:gap-2.5 ds:relative\",\n className\n )}\n {...props}\n >\n {children}\n {loading && (\n <div className=\"ds:absolute ds:inset-0 ds:bg-background/50 ds:flex ds:items-center ds:justify-center ds:z-20\">\n Loading...\n </div>\n )}\n <div\n className={cn(\n \"ds:overflow-auto ds:rounded-md ds:border ds-border-border\",\n loading && \"ds:blur-sm\"\n )}\n >\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n style={{\n ...getCommonPinningStyles({ column: header.column }),\n }}\n >\n {header.isPlaceholder ? null : header.column.columnDef\n .header ? (\n typeof header.column.columnDef.header === \"function\" ? (\n flexRender(\n header.column.columnDef.header,\n header.getContext()\n )\n ) : (\n <DataTableColumnHeader column={header.column} />\n )\n ) : null}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n style={{\n ...getCommonPinningStyles({ column: cell.column }),\n }}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={table.getAllColumns().length}\n className=\"ds:h-24 ds:text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n {footer && (\n <tfoot>\n <TableRow>\n <TableCell colSpan={table.getAllColumns().length}>\n {footer(table.getRowModel().rows.map((row) => row.original))}\n </TableCell>\n </TableRow>\n </tfoot>\n )}\n </Table>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-2.5\">\n {pagination && (\n <DataTablePagination\n table={table}\n {...(pagination === true ? {} : pagination)}\n />\n )}\n {actionBar &&\n table.getFilteredSelectedRowModel().rows.length > 0 &&\n actionBar}\n </div>\n </div>\n );\n}\n"],"names":["DataTable","table","actionBar","children","className","pagination","sticky","bordered","loading","footer","props","jsxs","cn","jsx","Table","TableHeader","headerGroup","TableRow","header","TableHead","getCommonPinningStyles","flexRender","DataTableColumnHeader","TableBody","row","cell","TableCell","DataTablePagination"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.js","sources":["../../../../src/components/Table/data-table.tsx"],"sourcesContent":["import { flexRender, type Table as TanstackTable } from \"@tanstack/react-table\";\nimport type * as React from \"react\";\n\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport {\n cn,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@dsui/ui\";\nimport { getCommonPinningStyles } from \"@/utils/data-table\";\nimport { DataTableColumnHeader } from \"./data-table-column-header\";\n\nexport interface DataTableProps<TData> extends React.ComponentProps<\"div\"> {\n table: TanstackTable<TData>;\n actionBar?: React.ReactNode;\n pagination?:\n | boolean\n | Omit<React.ComponentProps<typeof DataTablePagination<TData>>, \"table\">;\n sticky?: boolean | { offsetHeader?: number; offsetScroll?: number };\n bordered?: boolean;\n loading?: boolean;\n footer?: (currentPageData: TData[]) => React.ReactNode;\n}\n\nexport function DataTable<TData>({\n table,\n actionBar,\n children,\n className,\n pagination = true,\n sticky,\n bordered,\n loading,\n footer,\n ...props\n}: DataTableProps<TData>) {\n return (\n <div\n className={cn(\n \"ds:flex ds:w-full ds:flex-col ds:gap-2.5 ds:relative\",\n className\n )}\n {...props}\n >\n {children}\n {loading && (\n <div className=\"ds:absolute ds:inset-0 ds:bg-background/50 ds:flex ds:items-center ds:justify-center ds:z-20\">\n Loading...\n </div>\n )}\n <div\n className={cn(\n \"ds:overflow-auto ds:rounded-md ds:border ds:border-border\",\n loading && \"ds:blur-sm\"\n )}\n >\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n style={{\n ...getCommonPinningStyles({ column: header.column }),\n }}\n >\n {header.isPlaceholder ? null : header.column.columnDef\n .header ? (\n typeof header.column.columnDef.header === \"function\" ? (\n flexRender(\n header.column.columnDef.header,\n header.getContext()\n )\n ) : (\n <DataTableColumnHeader column={header.column} />\n )\n ) : null}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n style={{\n ...getCommonPinningStyles({ column: cell.column }),\n }}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={table.getAllColumns().length}\n className=\"ds:h-24 ds:text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n {footer && (\n <tfoot>\n <TableRow>\n <TableCell colSpan={table.getAllColumns().length}>\n {footer(table.getRowModel().rows.map((row) => row.original))}\n </TableCell>\n </TableRow>\n </tfoot>\n )}\n </Table>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-2.5\">\n {pagination && (\n <DataTablePagination\n table={table}\n {...(pagination === true ? {} : pagination)}\n />\n )}\n {actionBar &&\n table.getFilteredSelectedRowModel().rows.length > 0 &&\n actionBar}\n </div>\n </div>\n );\n}\n"],"names":["DataTable","table","actionBar","children","className","pagination","sticky","bordered","loading","footer","props","jsxs","cn","jsx","Table","TableHeader","headerGroup","TableRow","header","TableHead","getCommonPinningStyles","flexRender","DataTableColumnHeader","TableBody","row","cell","TableCell","DataTablePagination"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import c from "../Checkbox/Checkbox.js";
3
+ function n(s) {
4
+ return {
5
+ id: "select",
6
+ header: ({ table: e }) => /* @__PURE__ */ l("div", { className: "ds:flex ds:items-center ds:justify-center", children: /* @__PURE__ */ l(
7
+ c,
8
+ {
9
+ checked: e.getIsAllPageRowsSelected() || e.getIsSomePageRowsSelected() && "indeterminate",
10
+ onCheckedChange: (t) => e.toggleAllPageRowsSelected(!!t),
11
+ "aria-label": "Select all"
12
+ }
13
+ ) }),
14
+ cell: ({ row: e }) => /* @__PURE__ */ l("div", { className: "ds:flex ds:items-center ds:justify-center", children: /* @__PURE__ */ l(
15
+ c,
16
+ {
17
+ checked: e.getIsSelected(),
18
+ onCheckedChange: (t) => e.toggleSelected(!!t),
19
+ "aria-label": "Select row"
20
+ }
21
+ ) }),
22
+ size: 36,
23
+ enableSorting: !1,
24
+ enableHiding: !1,
25
+ enableColumnFilter: !1,
26
+ ...s
27
+ };
28
+ }
29
+ const i = n;
30
+ export {
31
+ i as selectColumn
32
+ };
33
+ //# sourceMappingURL=select-column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-column.js","sources":["../../../../src/components/Table/select-column.tsx"],"sourcesContent":["import type {\n CellContext,\n ColumnDef,\n HeaderContext,\n} from \"@tanstack/react-table\";\nimport { Checkbox } from \"@/components/Checkbox\";\n\nfunction createSelectColumn<TData>(\n props?: Partial<ColumnDef<TData>>\n): ColumnDef<TData> {\n return {\n id: \"select\",\n header: ({ table }: HeaderContext<TData, unknown>) => (\n <div className=\"ds:flex ds:items-center ds:justify-center\">\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all\"\n />\n </div>\n ),\n cell: ({ row }: CellContext<TData, unknown>) => (\n <div className=\"ds:flex ds:items-center ds:justify-center\">\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Select row\"\n />\n </div>\n ),\n size: 36,\n enableSorting: false,\n enableHiding: false,\n enableColumnFilter: false,\n ...props,\n };\n}\n\nexport const selectColumn = createSelectColumn;\n"],"names":["createSelectColumn","props","table","jsx","Checkbox","value","row","selectColumn"],"mappings":";;AAOA,SAASA,EACPC,GACkB;AAClB,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ,CAAC,EAAE,OAAAC,EAAA,MACT,gBAAAC,EAAC,OAAA,EAAI,WAAU,6CACb,UAAA,gBAAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SACEF,EAAM,yBAAA,KACLA,EAAM,+BAA+B;AAAA,QAExC,iBAAiB,CAACG,MAAUH,EAAM,0BAA0B,CAAC,CAACG,CAAK;AAAA,QACnE,cAAW;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,IAEF,MAAM,CAAC,EAAE,KAAAC,EAAA,MACP,gBAAAH,EAAC,OAAA,EAAI,WAAU,6CACb,UAAA,gBAAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAASE,EAAI,cAAA;AAAA,QACb,iBAAiB,CAACD,MAAUC,EAAI,eAAe,CAAC,CAACD,CAAK;AAAA,QACtD,cAAW;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,IAEF,MAAM;AAAA,IACN,eAAe;AAAA,IACf,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,GAAGJ;AAAA,EAAA;AAEP;AAEO,MAAMM,IAAeP;"}
@@ -1,95 +1,97 @@
1
- import { useReactTable as oe, getFacetedMinMaxValues as ne, getFacetedUniqueValues as ie, getFacetedRowModel as se, getSortedRowModel as ae, getPaginationRowModel as re, getFilteredRowModel as le, getCoreRowModel as ce } from "@tanstack/react-table";
2
- import { useQueryState as A, parseAsInteger as v, parseAsArrayOf as ue, parseAsString as Y, useQueryStates as ge } from "nuqs";
1
+ import { useReactTable as ie, getFacetedMinMaxValues as se, getFacetedUniqueValues as ae, getFacetedRowModel as re, getSortedRowModel as le, getPaginationRowModel as ce, getFilteredRowModel as ue, getCoreRowModel as ge } from "@tanstack/react-table";
2
+ import { useQueryState as A, parseAsInteger as v, parseAsArrayOf as de, parseAsString as Y, useQueryStates as fe } from "nuqs";
3
3
  import * as t from "react";
4
- import { useDebouncedCallback as de } from "./use-debounced-callback.js";
5
- import { getSortingStateParser as fe } from "../utils/parsers.js";
6
- const pe = "page", me = "perPage", Se = "sort", we = "filters", be = "joinOperator", Me = ",", Re = 300, ye = 50;
7
- function Ee(j) {
4
+ import { useDebouncedCallback as pe } from "./use-debounced-callback.js";
5
+ import { getSortingStateParser as me } from "../utils/parsers.js";
6
+ const Se = "page", we = "perPage", be = "sort", Ce = "filters", Me = "joinOperator", Re = ",", ye = 300, Pe = 50;
7
+ function Ke(j) {
8
8
  const {
9
9
  columns: g,
10
10
  pageCount: U,
11
- initialState: a,
11
+ initialState: s,
12
12
  queryKeys: d,
13
- history: E = "replace",
14
- debounceMs: p = Re,
15
- throttleMs: S = ye,
16
- clearOnDefault: K = !1,
13
+ history: O = "replace",
14
+ debounceMs: p = ye,
15
+ throttleMs: S = Pe,
16
+ clearOnDefault: E = !1,
17
17
  enableAdvancedFilter: r = !1,
18
- scroll: O = !1,
18
+ scroll: K = !1,
19
19
  shallow: w = !0,
20
20
  startTransition: x,
21
21
  enableNuqs: i = !1,
22
22
  ...b
23
- } = j, I = d?.page ?? pe, T = d?.perPage ?? me, _ = d?.sort ?? Se, V = d?.filters ?? we, k = d?.joinOperator ?? be, c = t.useMemo(
23
+ } = j, I = d?.page ?? Se, T = d?.perPage ?? we, _ = d?.sort ?? be, V = d?.filters ?? Ce, k = d?.joinOperator ?? Me, c = t.useMemo(
24
24
  () => ({
25
- history: E,
26
- scroll: O,
25
+ history: O,
26
+ scroll: K,
27
27
  shallow: w,
28
28
  throttleMs: S,
29
29
  debounceMs: p,
30
- clearOnDefault: K,
30
+ clearOnDefault: E,
31
31
  startTransition: x
32
32
  }),
33
33
  [
34
- E,
35
34
  O,
35
+ K,
36
36
  w,
37
37
  S,
38
38
  p,
39
- K,
39
+ E,
40
40
  x
41
41
  ]
42
42
  ), [B, N] = t.useState(
43
- a?.rowSelection ?? {}
44
- ), [G, H] = t.useState(a?.columnVisibility ?? {}), [M, m] = i ? A(
43
+ s?.rowSelection ?? {}
44
+ ), [G, H] = t.useState(s?.columnVisibility ?? {}), [L, Q] = t.useState(
45
+ s?.columnOrder ?? []
46
+ ), [C, m] = i ? A(
45
47
  I,
46
48
  v.withOptions(c).withDefault(1)
47
- ) : t.useState(a?.pagination?.pageIndex ?? 0), [z, R] = i ? A(
49
+ ) : t.useState(s?.pagination?.pageIndex ?? 0), [z, M] = i ? A(
48
50
  T,
49
- v.withOptions(c).withDefault(a?.pagination?.pageSize ?? 10)
50
- ) : t.useState(a?.pagination?.pageSize ?? 10), y = t.useMemo(() => ({
51
- pageIndex: i ? M - 1 : M,
51
+ v.withOptions(c).withDefault(s?.pagination?.pageSize ?? 10)
52
+ ) : t.useState(s?.pagination?.pageSize ?? 10), R = t.useMemo(() => ({
53
+ pageIndex: i ? C - 1 : C,
52
54
  // zero-based index
53
55
  pageSize: z
54
- }), [M, z, i]), L = t.useCallback(
56
+ }), [C, z, i]), Z = t.useCallback(
55
57
  (e) => {
56
58
  if (typeof e == "function") {
57
- const o = e(y);
59
+ const o = e(R);
58
60
  m(
59
61
  i ? o.pageIndex + 1 : o.pageIndex
60
- ), R(o.pageSize);
62
+ ), M(o.pageSize);
61
63
  } else
62
64
  m(
63
65
  i ? e.pageIndex + 1 : e.pageIndex
64
- ), R(e.pageSize);
66
+ ), M(e.pageSize);
65
67
  },
66
- [y, m, R, i]
67
- ), Q = t.useMemo(() => new Set(
68
+ [R, m, M, i]
69
+ ), J = t.useMemo(() => new Set(
68
70
  g.map((e) => e.id).filter(Boolean)
69
- ), [g]), [C, P] = i ? A(
71
+ ), [g]), [y, P] = i ? A(
70
72
  _,
71
- fe(Q).withOptions(c).withDefault(a?.sorting ?? [])
72
- ) : t.useState(a?.sorting ?? []), Z = t.useCallback(
73
+ me(J).withOptions(c).withDefault(s?.sorting ?? [])
74
+ ) : t.useState(s?.sorting ?? []), W = t.useCallback(
73
75
  (e) => {
74
76
  if (typeof e == "function") {
75
- const o = e(C);
77
+ const o = e(y);
76
78
  P(o);
77
79
  } else
78
80
  P(e);
79
81
  },
80
- [C, P]
81
- ), u = t.useMemo(() => r ? [] : g.filter((e) => e.enableColumnFilter), [g, r]), J = t.useMemo(() => r ? {} : u.reduce((e, o) => (o.meta?.variant === "multiSelect" ? e[o.id ?? ""] = ue(
82
+ [y, P]
83
+ ), u = t.useMemo(() => r ? [] : g.filter((e) => e.enableColumnFilter), [g, r]), X = t.useMemo(() => r ? {} : u.reduce((e, o) => (o.meta?.variant === "multiSelect" ? e[o.id ?? ""] = de(
82
84
  Y,
83
- Me
84
- ).withOptions(c) : e[o.id ?? ""] = Y.withOptions(c), e), {}), [u, c, r]), [D, W] = i ? ge(J) : t.useState({}), q = de(
85
+ Re
86
+ ).withOptions(c) : e[o.id ?? ""] = Y.withOptions(c), e), {}), [u, c, r]), [D, $] = i ? fe(X) : t.useState({}), q = pe(
85
87
  (e) => {
86
- m(1), W(e);
88
+ m(1), $(e);
87
89
  },
88
90
  p
89
- ), X = t.useMemo(() => r ? [] : Object.entries(D).reduce(
91
+ ), ee = t.useMemo(() => r ? [] : Object.entries(D).reduce(
90
92
  (e, [o, n]) => {
91
93
  if (n !== null) {
92
- const s = u.find((f) => f.id === o)?.meta?.variant === "multiSelect", l = Array.isArray(n) ? n : s && typeof n == "string" && /[^a-zA-Z0-9]/.test(n) ? n.split(/[^a-zA-Z0-9]+/).filter(Boolean) : s ? [n] : n;
94
+ const a = u.find((f) => f.id === o)?.meta?.variant === "multiSelect", l = Array.isArray(n) ? n : a && typeof n == "string" && /[^a-zA-Z0-9]/.test(n) ? n.split(/[^a-zA-Z0-9]+/).filter(Boolean) : a ? [n] : n;
93
95
  e.push({
94
96
  id: o,
95
97
  value: l
@@ -98,19 +100,19 @@ function Ee(j) {
98
100
  return e;
99
101
  },
100
102
  []
101
- ), [D, r, u]), [$, ee] = t.useState(X), te = t.useCallback(
103
+ ), [D, r, u]), [te, oe] = t.useState(ee), ne = t.useCallback(
102
104
  (e) => {
103
- r || ee((o) => {
104
- const n = typeof e == "function" ? e(o) : e, F = n.reduce((s, l) => {
105
+ r || oe((o) => {
106
+ const n = typeof e == "function" ? e(o) : e, F = n.reduce((a, l) => {
105
107
  const f = u.find((h) => h.id === l.id);
106
108
  if (f) {
107
109
  const h = f.meta?.variant === "multiSelect";
108
- s[l.id] = l.value;
110
+ a[l.id] = l.value;
109
111
  }
110
- return console.log("filterParsers", f, s), s;
112
+ return console.log("filterParsers", f, a), a;
111
113
  }, {});
112
- for (const s of o)
113
- n.some((l) => l.id === s.id) || (F[s.id] = null);
114
+ for (const a of o)
115
+ n.some((l) => l.id === a.id) || (F[a.id] = null);
114
116
  return i && q(F), n;
115
117
  });
116
118
  },
@@ -121,15 +123,16 @@ function Ee(j) {
121
123
  i
122
124
  ]
123
125
  );
124
- return { table: oe({
125
- initialState: a,
126
+ return { table: ie({
127
+ initialState: s,
126
128
  pageCount: U,
127
129
  state: {
128
- pagination: y,
129
- sorting: C,
130
+ pagination: R,
131
+ sorting: y,
130
132
  columnVisibility: G,
133
+ columnOrder: L,
131
134
  rowSelection: B,
132
- columnFilters: $
135
+ columnFilters: te
133
136
  },
134
137
  defaultColumn: {
135
138
  ...b.defaultColumn,
@@ -140,17 +143,18 @@ function Ee(j) {
140
143
  },
141
144
  enableRowSelection: !0,
142
145
  onRowSelectionChange: N,
143
- onPaginationChange: L,
144
- onSortingChange: Z,
145
- onColumnFiltersChange: te,
146
+ onPaginationChange: Z,
147
+ onSortingChange: W,
148
+ onColumnFiltersChange: ne,
146
149
  onColumnVisibilityChange: H,
147
- getCoreRowModel: ce(),
148
- getFilteredRowModel: le(),
149
- getPaginationRowModel: re(),
150
- getSortedRowModel: ae(),
151
- getFacetedRowModel: se(),
152
- getFacetedUniqueValues: ie(),
153
- getFacetedMinMaxValues: ne(),
150
+ onColumnOrderChange: Q,
151
+ getCoreRowModel: ge(),
152
+ getFilteredRowModel: ue(),
153
+ getPaginationRowModel: ce(),
154
+ getSortedRowModel: le(),
155
+ getFacetedRowModel: re(),
156
+ getFacetedUniqueValues: ae(),
157
+ getFacetedMinMaxValues: se(),
154
158
  meta: {
155
159
  ...b.meta,
156
160
  queryKeys: {
@@ -166,6 +170,6 @@ function Ee(j) {
166
170
  }), shallow: w, debounceMs: p, throttleMs: S };
167
171
  }
168
172
  export {
169
- Ee as useDataTable
173
+ Ke as useDataTable
170
174
  };
171
175
  //# sourceMappingURL=use-data-table.js.map