laif-ds 0.2.23 → 0.2.25

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 (54) hide show
  1. package/dist/_virtual/index2.js +5 -2
  2. package/dist/_virtual/index3.js +2 -5
  3. package/dist/_virtual/index6.js +2 -2
  4. package/dist/_virtual/index7.js +2 -2
  5. package/dist/components/ui/alert-dialog.js +6 -6
  6. package/dist/components/ui/app-multiple-select-dropdown.js +34 -34
  7. package/dist/components/ui/app-select.js +127 -124
  8. package/dist/components/ui/badge.js +13 -12
  9. package/dist/components/ui/button.js +20 -18
  10. package/dist/components/ui/calendar.js +6 -6
  11. package/dist/components/ui/checkbox.js +9 -9
  12. package/dist/components/ui/confirmer.js +45 -19
  13. package/dist/components/ui/context-menu.js +4 -4
  14. package/dist/components/ui/date-picker.js +45 -36
  15. package/dist/components/ui/input-otp.js +16 -16
  16. package/dist/components/ui/input-selector.js +19 -19
  17. package/dist/components/ui/input.js +19 -19
  18. package/dist/components/ui/menubar.js +1 -1
  19. package/dist/components/ui/pagination.js +90 -77
  20. package/dist/components/ui/radio-group.js +14 -14
  21. package/dist/components/ui/select.js +27 -27
  22. package/dist/components/ui/switch.js +8 -6
  23. package/dist/components/ui/table.js +16 -16
  24. package/dist/components/ui/tables/data-cross-table/data-cross-table.js +6 -6
  25. package/dist/components/ui/tables/data-table/components/data-table-actions.js +51 -0
  26. package/dist/components/ui/tables/data-table/components/data-table-advanced-filter.js +470 -0
  27. package/dist/components/ui/tables/data-table/components/data-table-body.js +340 -0
  28. package/dist/components/ui/tables/data-table/components/data-table-column-visibility.js +274 -0
  29. package/dist/components/ui/tables/data-table/components/data-table-filter-inputs.js +177 -0
  30. package/dist/components/ui/tables/data-table/components/data-table-filters.js +286 -0
  31. package/dist/components/ui/tables/data-table/components/data-table-pagination.js +131 -0
  32. package/dist/components/ui/tables/data-table/components/data-table-searchbar.js +112 -0
  33. package/dist/components/ui/tables/data-table/components/data-table-simple-filters.js +263 -0
  34. package/dist/components/ui/tables/data-table/components/data-table-sorting.js +128 -0
  35. package/dist/components/ui/tables/data-table/data-table-constants.js +58 -0
  36. package/dist/components/ui/tables/data-table/data-table-i18n.js +138 -0
  37. package/dist/components/ui/tables/data-table/data-table.js +549 -0
  38. package/dist/components/ui/tables/data-table/data-table.service.js +254 -0
  39. package/dist/components/ui/tabs.js +33 -33
  40. package/dist/components/ui/textarea.js +11 -11
  41. package/dist/components/ui/tooltip.js +10 -10
  42. package/dist/css-for-template.css +57 -0
  43. package/dist/index.d.ts +249 -76
  44. package/dist/index.js +64 -64
  45. package/dist/node_modules/eventemitter3/index.js +1 -1
  46. package/dist/node_modules/eventemitter3/index2.js +1 -1
  47. package/dist/node_modules/recharts/es6/util/Events.js +1 -1
  48. package/dist/node_modules/style-to-object/cjs/index.js +1 -1
  49. package/dist/node_modules/use-sync-external-store/shim/index.js +1 -1
  50. package/dist/styles.css +1 -1
  51. package/dist/styles.v3.css +1 -1
  52. package/package.json +5 -3
  53. package/dist/components/ui/data-table.js +0 -461
  54. package/dist/components/ui/data-table.service.js +0 -62
@@ -0,0 +1,340 @@
1
+ "use client";
2
+ import { jsx as n, jsxs as l } from "react/jsx-runtime";
3
+ import { cn as v } from "../../../../../lib/utils.js";
4
+ import { flexRender as P } from "../../../../../node_modules/@tanstack/react-table/build/lib/index.js";
5
+ import { useRef as V, useState as j, useMemo as R, useLayoutEffect as X, useEffect as E } from "react";
6
+ import { Button as b } from "../../../button.js";
7
+ import { Icon as W } from "../../../icon.js";
8
+ import { Popover as J, PopoverTrigger as K, PopoverContent as Q } from "../../../popover.js";
9
+ import { ScrollArea as Y, ScrollBar as _ } from "../../../scroll-area.js";
10
+ import { Skeleton as Z } from "../../../skeleton.js";
11
+ import { Table as ee, TableHeader as te, TableRow as D, TableHead as oe, TableBody as ne, TableCell as A } from "../../../table.js";
12
+ function ge({
13
+ table: s,
14
+ tableContainerRef: c,
15
+ loading: x,
16
+ data: $,
17
+ emptyComponent: q,
18
+ notFoundMessage: L,
19
+ onAddFilter: U,
20
+ maxSortedColumns: y = 3,
21
+ i18n: g
22
+ }) {
23
+ const z = V({}), [F, G] = j({}), [M, T] = j(8), C = s.getHeaderGroups()[0], H = C ? C.headers : [], p = R(
24
+ () => H.filter((t) => t.column.getIsVisible()),
25
+ [H]
26
+ ), I = R(
27
+ () => p.filter((t) => t.column.columnDef.meta?.pinned === "left"),
28
+ [p]
29
+ ), O = R(
30
+ () => p.filter((t) => t.column.columnDef.meta?.pinned === "right"),
31
+ [p]
32
+ ), B = () => {
33
+ const t = c.current;
34
+ if (!t) return 8;
35
+ const e = t.querySelector("thead tr"), o = t.querySelector("tbody tr"), r = e?.getBoundingClientRect().height ?? 40, f = o?.getBoundingClientRect().height ?? 32.5, S = t.offsetHeight - r, u = Math.floor(S / f);
36
+ return u > 1 ? u : 8;
37
+ }, h = (t = 0) => {
38
+ const e = {};
39
+ let o = !1;
40
+ if (!c.current) {
41
+ t < 5 && setTimeout(() => h(t + 1), 100);
42
+ return;
43
+ }
44
+ const r = c.current.querySelector(
45
+ "tbody tr:first-child"
46
+ );
47
+ let f = 0;
48
+ for (const u of I) {
49
+ const m = u.column.id;
50
+ e[m] = { side: "left", offset: f };
51
+ let i = 0;
52
+ const d = r?.querySelector(
53
+ `[data-column-id="${m}"]`
54
+ ), a = z.current[m];
55
+ d && d.offsetWidth > 0 ? i = d.getBoundingClientRect().width : a && a.offsetWidth > 0 ? i = a.getBoundingClientRect().width : (o = !0, i = 150), f += i;
56
+ }
57
+ let w = 0;
58
+ for (const u of [...O].reverse()) {
59
+ const m = u.column.id;
60
+ e[m] = { side: "right", offset: w };
61
+ let i = 0;
62
+ const d = r?.querySelector(
63
+ `[data-column-id="${m}"]`
64
+ ), a = z.current[m];
65
+ d && d.offsetWidth > 0 ? i = d.getBoundingClientRect().width : a && a.offsetWidth > 0 ? i = a.getBoundingClientRect().width : (o = !0, i = 150), w += i;
66
+ }
67
+ G(e);
68
+ const S = B();
69
+ T(S), o && t < 5 && setTimeout(
70
+ () => h(t + 1),
71
+ 100 * (t + 1)
72
+ );
73
+ };
74
+ X(() => {
75
+ (() => {
76
+ requestAnimationFrame(() => {
77
+ requestAnimationFrame(() => {
78
+ setTimeout(() => {
79
+ h();
80
+ }, 50);
81
+ });
82
+ });
83
+ })();
84
+ }, [
85
+ I,
86
+ O,
87
+ p.map((t) => t.id).join("|"),
88
+ x,
89
+ $,
90
+ s.getState().pagination
91
+ ]), E(() => {
92
+ const t = () => {
93
+ clearTimeout(t.timeout), t.timeout = setTimeout(() => h(), 100);
94
+ };
95
+ window.addEventListener("resize", t);
96
+ const e = c.current;
97
+ let o = null;
98
+ return e && typeof ResizeObserver < "u" && (o = new ResizeObserver(() => {
99
+ h();
100
+ }), o.observe(e)), () => {
101
+ window.removeEventListener("resize", t), clearTimeout(t.timeout), o && o.disconnect();
102
+ };
103
+ }, []), E(() => {
104
+ if (x) {
105
+ const t = () => {
106
+ const r = B();
107
+ T(r);
108
+ };
109
+ t();
110
+ const e = c.current;
111
+ let o = null;
112
+ return e && typeof ResizeObserver < "u" && (o = new ResizeObserver(() => {
113
+ t();
114
+ }), o.observe(e)), () => {
115
+ o && o.disconnect();
116
+ };
117
+ }
118
+ }, [x, c]);
119
+ const N = (t, e, o) => {
120
+ const r = F[t];
121
+ if (!r || !e || r.side !== e) return;
122
+ const f = r.side === "left" ? `${r.offset}px` : void 0, w = r.side === "right" ? `${r.offset}px` : void 0;
123
+ return {
124
+ position: "sticky",
125
+ left: f,
126
+ right: w,
127
+ zIndex: o ? 49 : 48,
128
+ background: "var(--d-background)",
129
+ // Use separate shadow for pinned columns to avoid conflicts
130
+ boxShadow: e === "left" ? `inset -1px ${o ? "0" : "-1px"} 0 var(--d-border), 2px 0 4px -2px rgba(0,0,0,0.1)` : `inset 1px ${o ? "0" : "-1px"} 0 var(--d-border), -2px 0 4px -2px rgba(0,0,0,0.1)`
131
+ };
132
+ };
133
+ return /* @__PURE__ */ n(
134
+ "div",
135
+ {
136
+ className: "flex max-h-full min-h-0 max-w-full min-w-0 flex-1",
137
+ ref: c,
138
+ children: /* @__PURE__ */ l(Y, { className: "border-d-border h-full min-h-0 w-full rounded-md border", children: [
139
+ /* @__PURE__ */ n(_, { orientation: "horizontal" }),
140
+ /* @__PURE__ */ n(_, { orientation: "vertical" }),
141
+ /* @__PURE__ */ l(ee, { className: "w-full", style: { minWidth: "max-content" }, children: [
142
+ /* @__PURE__ */ n(te, { children: s.getHeaderGroups().map((t) => /* @__PURE__ */ n(D, { children: t.headers.map((e) => /* @__PURE__ */ n(
143
+ oe,
144
+ {
145
+ ref: (o) => {
146
+ z.current[e.column.id] = o;
147
+ },
148
+ className: v(
149
+ "bg-d-background sticky top-0 h-8 px-0",
150
+ e.column.columnDef.meta?.pinned ? "z-[49]" : "z-10"
151
+ ),
152
+ style: N(
153
+ e.column.id,
154
+ e.column.columnDef.meta?.pinned,
155
+ !0
156
+ ),
157
+ children: e.isPlaceholder ? null : /* @__PURE__ */ l(J, { children: [
158
+ /* @__PURE__ */ n(
159
+ K,
160
+ {
161
+ asChild: !0,
162
+ onClick: (o) => {
163
+ e.column.columnDef.meta?.sortable || e.column.columnDef.meta?.filterable || (o.preventDefault(), o.stopPropagation());
164
+ },
165
+ children: /* @__PURE__ */ l(
166
+ "div",
167
+ {
168
+ className: v(
169
+ "flex h-full items-center justify-between gap-2 px-2",
170
+ e.column.columnDef.meta?.sortable || e.column.columnDef.meta?.filterable ? "hover:bg-d-secondary-foreground/10 cursor-pointer" : "cursor-not-allowed"
171
+ ),
172
+ children: [
173
+ P(
174
+ e.column.columnDef.header,
175
+ e.getContext()
176
+ ),
177
+ e.column.getIsSorted() === "desc" && /* @__PURE__ */ n(
178
+ b,
179
+ {
180
+ variant: "ghost",
181
+ size: "icon",
182
+ className: "size-7",
183
+ iconLeft: e.column.columnDef.meta?.type === "number" ? "ArrowUp01" : e.column.columnDef.meta?.type === "string" ? "ArrowUpAz" : "ArrowUpNarrowWide",
184
+ onClick: (o) => {
185
+ e.column.toggleSorting(!1, !0), o.stopPropagation(), o.preventDefault();
186
+ }
187
+ }
188
+ ),
189
+ e.column.getIsSorted() === "asc" && /* @__PURE__ */ n(
190
+ b,
191
+ {
192
+ variant: "ghost",
193
+ size: "icon",
194
+ className: "size-7",
195
+ iconRight: e.column.columnDef.meta?.type === "number" ? "ArrowDown01" : e.column.columnDef.meta?.type === "string" ? "ArrowDownAz" : "ArrowDownNarrowWide",
196
+ onClick: (o) => {
197
+ e.column.toggleSorting(!0, !0), o.stopPropagation(), o.preventDefault();
198
+ }
199
+ }
200
+ )
201
+ ]
202
+ }
203
+ )
204
+ }
205
+ ),
206
+ /* @__PURE__ */ n(Q, { className: "w-40 p-0", children: /* @__PURE__ */ l("div", { className: "flex flex-col text-sm", children: [
207
+ e.column.columnDef.meta?.sortable && /* @__PURE__ */ l(
208
+ "div",
209
+ {
210
+ className: v(
211
+ "group hover:bg-d-secondary-foreground/5 relative flex cursor-pointer items-center justify-between rounded px-2 py-1.5",
212
+ e.column.getIsSorted() && "bg-d-secondary-foreground/5",
213
+ s.getState().sorting.length >= y && !e.column.getIsSorted() && "pointer-events-none cursor-not-allowed opacity-60"
214
+ ),
215
+ "aria-disabled": s.getState().sorting.length >= y && !e.column.getIsSorted(),
216
+ children: [
217
+ /* @__PURE__ */ n("span", { className: "text-md", children: g.sorting.sort }),
218
+ /* @__PURE__ */ n(W, { name: "ChevronRight", size: "xs" }),
219
+ /* @__PURE__ */ l("div", { className: "bg-d-background border-d-border absolute top-0 left-full ml-0 hidden w-48 flex-col rounded-md border p-1 shadow-md group-hover:flex", children: [
220
+ /* @__PURE__ */ n(
221
+ b,
222
+ {
223
+ className: "justify-start",
224
+ variant: "ghost",
225
+ size: "sm",
226
+ iconLeft: e.column.columnDef.meta?.type === "number" ? "ArrowDown01" : e.column.columnDef.meta?.type === "string" ? "ArrowDownAz" : "ArrowDownNarrowWide",
227
+ onClick: () => {
228
+ !e.column.getIsSorted() && s.getState().sorting.length >= y || e.column.toggleSorting(
229
+ !1,
230
+ !0
231
+ );
232
+ },
233
+ children: g.sorting.ascending
234
+ }
235
+ ),
236
+ /* @__PURE__ */ n(
237
+ b,
238
+ {
239
+ className: "justify-start",
240
+ variant: "ghost",
241
+ size: "sm",
242
+ iconLeft: e.column.columnDef.meta?.type === "number" ? "ArrowUp01" : e.column.columnDef.meta?.type === "string" ? "ArrowUpAz" : "ArrowUpNarrowWide",
243
+ onClick: () => {
244
+ !e.column.getIsSorted() && s.getState().sorting.length >= y || e.column.toggleSorting(!0, !0);
245
+ },
246
+ children: g.sorting.descending
247
+ }
248
+ ),
249
+ e.column.getIsSorted() && /* @__PURE__ */ n(
250
+ b,
251
+ {
252
+ className: "text-d-destructive/80 hover:text-d-destructive justify-start",
253
+ variant: "ghost",
254
+ size: "sm",
255
+ iconLeft: "CircleX",
256
+ onClick: () => e.column.clearSorting(),
257
+ children: g.sorting.clearSort
258
+ }
259
+ )
260
+ ] })
261
+ ]
262
+ }
263
+ ),
264
+ e.column.columnDef.meta?.filterable && /* @__PURE__ */ l(
265
+ "div",
266
+ {
267
+ className: "hover:bg-d-secondary-foreground/5 relative flex cursor-pointer items-center justify-between rounded px-2 py-1.5",
268
+ onClick: () => U(e),
269
+ children: [
270
+ /* @__PURE__ */ n("span", { className: "text-md", children: g.filters.filter }),
271
+ /* @__PURE__ */ n(W, { name: "Filter", size: "xs" })
272
+ ]
273
+ }
274
+ )
275
+ ] }) })
276
+ ] })
277
+ },
278
+ e.id
279
+ )) }, t.id)) }),
280
+ /* @__PURE__ */ n(ne, { children: x ? Array.from({ length: M }).map(
281
+ (t, e) => /* @__PURE__ */ n(D, { children: s.getHeaderGroups()[0].headers.map((o, r) => /* @__PURE__ */ n(
282
+ A,
283
+ {
284
+ "data-column-id": o.column.id,
285
+ className: v(
286
+ "border-0",
287
+ o.column.columnDef.meta?.pinned && "bg-d-background z-[50]"
288
+ ),
289
+ style: N(
290
+ o.column.id,
291
+ o.column.columnDef.meta?.pinned,
292
+ !1
293
+ ),
294
+ children: /* @__PURE__ */ n(Z, { className: "h-6 w-full" })
295
+ },
296
+ `skeleton-cell-${e}-${r}`
297
+ )) }, `skeleton-row-${e}`)
298
+ ) : s.getRowModel().rows?.length ? s.getRowModel().rows.map((t) => /* @__PURE__ */ n(
299
+ D,
300
+ {
301
+ "data-state": t.getIsSelected() && "selected",
302
+ className: "border-0 shadow-[inset_0_-1px_0_var(--d-border)]",
303
+ children: t.getVisibleCells().map((e) => /* @__PURE__ */ n(
304
+ A,
305
+ {
306
+ "data-column-id": e.column.id,
307
+ className: v(
308
+ "border-0",
309
+ e.column.columnDef.meta?.pinned ? "bg-d-background z-[50]" : "shadow-[inset_-1px_0_0_var(--d-border)]"
310
+ ),
311
+ style: N(
312
+ e.column.id,
313
+ e.column.columnDef.meta?.pinned,
314
+ !1
315
+ ),
316
+ children: P(
317
+ e.column.columnDef.cell,
318
+ e.getContext()
319
+ )
320
+ },
321
+ e.id
322
+ ))
323
+ },
324
+ t.id
325
+ )) : /* @__PURE__ */ n(D, { children: /* @__PURE__ */ n(
326
+ A,
327
+ {
328
+ colSpan: s?.getHeaderGroups()?.[0]?.headers?.length ?? 1,
329
+ className: "pt-4 text-center",
330
+ children: q || L
331
+ }
332
+ ) }) })
333
+ ] })
334
+ ] })
335
+ }
336
+ );
337
+ }
338
+ export {
339
+ ge as DataTableBody
340
+ };
@@ -0,0 +1,274 @@
1
+ "use client";
2
+ import { jsxs as f, jsx as r } from "react/jsx-runtime";
3
+ import { useState as k } from "react";
4
+ import { Button as b } from "../../../button.js";
5
+ import { Icon as C } from "../../../icon.js";
6
+ import { Popover as R, PopoverTrigger as H, PopoverContent as K } from "../../../popover.js";
7
+ import { getIconFromColumnType as z } from "../data-table.service.js";
8
+ function U({
9
+ table: m,
10
+ visibleColumns: L,
11
+ hiddenColumns: Y,
12
+ i18n: x
13
+ }) {
14
+ const [c, u] = k({ section: null, position: -1, itemId: null }), [O, T] = k(!1), d = (e) => e?.id ?? e?.columnDef?.id ?? e?.columnDef?.accessorKey ?? "", D = (e) => d(e) === "data-table-integrated-checkbox-column" || e?.columnDef?.enableHiding === !1, V = () => {
15
+ const e = m?.getState?.().columnOrder || [];
16
+ return e && e.length > 0 ? [...e] : (m?.getAllLeafColumns?.() || []).map((i) => i.id);
17
+ }, P = (e, t) => {
18
+ e.dataTransfer.setData("text/column-id", t), e.dataTransfer.effectAllowed = "move", T(!0);
19
+ }, j = () => {
20
+ T(!1), u({ section: null, position: -1, itemId: null });
21
+ }, A = (e) => {
22
+ const t = e.currentTarget, i = Array.from(t.querySelectorAll("[data-column-item]")), o = e.clientY;
23
+ for (let n = 0; n < i.length; n++) {
24
+ const a = i[n].getBoundingClientRect(), l = a.top + a.height / 2;
25
+ if (o < l)
26
+ return n;
27
+ }
28
+ return i.length;
29
+ }, w = (e, t, i) => {
30
+ const o = m?.getColumn?.(e);
31
+ if (!o || D(o))
32
+ return;
33
+ const n = o.getIsVisible(), s = t === "visible" ? g : N;
34
+ if (t === "visible" && i === 0)
35
+ return;
36
+ (t === "visible" && !n || t === "hidden" && n) && o.toggleVisibility(t === "visible");
37
+ const a = V(), l = s.map(d), p = a.indexOf(e);
38
+ if (p === -1) return;
39
+ const h = [...a];
40
+ h.splice(p, 1);
41
+ let v = 0;
42
+ if (i < l.length && i >= 0) {
43
+ const I = l[i];
44
+ v = h.indexOf(I), v === -1 && (v = h.length);
45
+ } else {
46
+ const I = l[l.length - 1];
47
+ I && (v = h.indexOf(I) + 1);
48
+ }
49
+ h.splice(v, 0, e), m.setColumnOrder(h);
50
+ }, S = (e, t, i, o) => {
51
+ e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = "move";
52
+ const n = e.currentTarget.getBoundingClientRect(), s = e.clientY, a = n.top + n.height / 2, l = s < a ? o : o + 1;
53
+ u({
54
+ section: t,
55
+ position: l,
56
+ itemId: i
57
+ });
58
+ }, E = (e) => (t) => {
59
+ t.preventDefault(), t.dataTransfer.dropEffect = "move";
60
+ const i = A(t);
61
+ u({
62
+ section: e,
63
+ position: e === "visible" && i === 0 ? 1 : i,
64
+ itemId: null
65
+ });
66
+ }, M = (e) => (t) => {
67
+ t.preventDefault(), t.stopPropagation();
68
+ const i = t.dataTransfer.getData("text/column-id");
69
+ if (!i) return;
70
+ const o = c.position !== -1 ? c.position : A(t);
71
+ w(i, e, e === "visible" && o === 0 ? 1 : o), u({ section: null, position: -1, itemId: null });
72
+ }, B = V(), F = (m?.getAllLeafColumns?.() || []).map(
73
+ (e) => e.id
74
+ ), G = new Map(
75
+ F.map((e, t) => [e, t])
76
+ ), y = (e) => {
77
+ const t = B.indexOf(e);
78
+ if (t !== -1) return t;
79
+ const i = G.get(e);
80
+ return i !== void 0 ? i : Number.MAX_SAFE_INTEGER;
81
+ }, g = [...L].filter((e) => !D(e)).sort((e, t) => y(d(e)) - y(d(t))), N = [...Y].filter((e) => !D(e)).sort((e, t) => y(d(e)) - y(d(t)));
82
+ return /* @__PURE__ */ f(R, { children: [
83
+ /* @__PURE__ */ r(H, { asChild: !0, children: /* @__PURE__ */ r(
84
+ b,
85
+ {
86
+ className: "h-6 w-6",
87
+ iconLeft: "Eye",
88
+ size: "icon",
89
+ variant: "ghost"
90
+ }
91
+ ) }),
92
+ /* @__PURE__ */ f(K, { className: "flex flex-col gap-2 px-3 py-2", children: [
93
+ g.length > 0 && /* @__PURE__ */ f(
94
+ "div",
95
+ {
96
+ className: "flex max-h-[250px] flex-col",
97
+ onDragOver: E("visible"),
98
+ onDrop: M("visible"),
99
+ children: [
100
+ /* @__PURE__ */ f("div", { className: "flex flex-row items-center justify-between gap-2", children: [
101
+ /* @__PURE__ */ r("div", { className: "text-d-foreground text-sm", children: x.columnVisibility.visibleColumns }),
102
+ /* @__PURE__ */ r(
103
+ b,
104
+ {
105
+ variant: "ghost",
106
+ size: "sm",
107
+ className: "text-xs",
108
+ onClick: () => {
109
+ m.setColumnVisibility(() => {
110
+ const e = [...g, ...N], t = d(g[0] ?? e[0]);
111
+ return e.reduce(
112
+ (o, n) => {
113
+ const s = d(n);
114
+ return s && (o[s] = s === t), o;
115
+ },
116
+ {}
117
+ );
118
+ });
119
+ },
120
+ children: x.columnVisibility.hideAll
121
+ }
122
+ )
123
+ ] }),
124
+ /* @__PURE__ */ r("div", { className: "border-d-border flex min-h-0 flex-1 flex-col overflow-y-auto border-b", children: g.map((e, t) => {
125
+ const i = d(e), o = t === 0, n = D(e), s = c.section === "visible" && c.position === t && t > 0, a = c.section === "visible" && c.position === t + 1;
126
+ return /* @__PURE__ */ f("div", { className: "relative", children: [
127
+ s && /* @__PURE__ */ r("div", { className: "bg-d-primary absolute -top-1 right-0 left-0 z-10 h-0.5 rounded-full" }),
128
+ /* @__PURE__ */ r(
129
+ "div",
130
+ {
131
+ "data-column-item": !0,
132
+ draggable: !o && !n,
133
+ onDragStart: (l) => {
134
+ if (o || n) {
135
+ l.preventDefault();
136
+ return;
137
+ }
138
+ P(l, i);
139
+ },
140
+ onDragEnd: j,
141
+ onDragOver: (l) => {
142
+ if (t === 0) {
143
+ l.dataTransfer.dropEffect = "none";
144
+ return;
145
+ }
146
+ S(l, "visible", i, t);
147
+ },
148
+ onDrop: (l) => {
149
+ l.preventDefault(), l.stopPropagation();
150
+ const p = l.dataTransfer.getData("text/column-id");
151
+ p && p !== i && t > 0 && w(
152
+ p,
153
+ "visible",
154
+ Math.max(1, t)
155
+ ), u({
156
+ section: null,
157
+ position: -1,
158
+ itemId: null
159
+ });
160
+ },
161
+ className: `rounded transition-all duration-150 ${o || n ? "cursor-not-allowed opacity-60" : O && c.itemId === i ? "scale-95 opacity-50" : "hover:bg-d-foreground/5"}`,
162
+ children: /* @__PURE__ */ r(
163
+ b,
164
+ {
165
+ variant: "ghost",
166
+ className: "w-full cursor-grab justify-start",
167
+ iconLeft: "GripVertical",
168
+ onClick: () => {
169
+ n || e.toggleVisibility();
170
+ },
171
+ disabled: i === d(g[0]) || n,
172
+ children: /* @__PURE__ */ f("div", { className: "flex w-full flex-row items-center justify-between gap-1", children: [
173
+ /* @__PURE__ */ r(
174
+ C,
175
+ {
176
+ name: z(
177
+ e.columnDef.meta?.type
178
+ ),
179
+ className: "h-4 w-4"
180
+ }
181
+ ),
182
+ /* @__PURE__ */ r("div", { className: "flex flex-1", children: e.columnDef.header?.toString() }),
183
+ /* @__PURE__ */ r(C, { name: "Eye" })
184
+ ] })
185
+ },
186
+ i
187
+ )
188
+ }
189
+ ),
190
+ a && /* @__PURE__ */ r("div", { className: "bg-d-primary absolute right-0 -bottom-1 left-0 z-10 h-0.5 rounded-full" })
191
+ ] }, i);
192
+ }) })
193
+ ]
194
+ }
195
+ ),
196
+ N.length > 0 && /* @__PURE__ */ f(
197
+ "div",
198
+ {
199
+ className: "flex max-h-[250px] flex-col",
200
+ onDragOver: E("hidden"),
201
+ onDrop: M("hidden"),
202
+ children: [
203
+ /* @__PURE__ */ f("div", { className: "flex flex-row items-center justify-between gap-2", children: [
204
+ /* @__PURE__ */ r("div", { className: "text-d-foreground text-sm", children: x.columnVisibility.hiddenColumns }),
205
+ /* @__PURE__ */ r(
206
+ b,
207
+ {
208
+ variant: "ghost",
209
+ size: "sm",
210
+ className: "text-xs",
211
+ onClick: () => m.setColumnVisibility({}),
212
+ children: x.columnVisibility.showAll
213
+ }
214
+ )
215
+ ] }),
216
+ /* @__PURE__ */ r("div", { className: "border-d-border flex min-h-0 flex-1 flex-col overflow-y-auto border-b", children: N.map((e, t) => {
217
+ const i = d(e), o = c.section === "hidden" && c.position === t, n = c.section === "hidden" && c.position === t + 1;
218
+ return /* @__PURE__ */ f("div", { className: "relative", children: [
219
+ o && /* @__PURE__ */ r("div", { className: "bg-d-primary absolute -top-1 right-0 left-0 z-10 h-0.5 rounded-full" }),
220
+ /* @__PURE__ */ r(
221
+ "div",
222
+ {
223
+ "data-column-item": !0,
224
+ draggable: !0,
225
+ onDragStart: (s) => P(s, i),
226
+ onDragEnd: j,
227
+ onDragOver: (s) => S(s, "hidden", i, t),
228
+ onDrop: (s) => {
229
+ s.preventDefault(), s.stopPropagation();
230
+ const a = s.dataTransfer.getData("text/column-id");
231
+ a && a !== i && w(a, "hidden", t), u({
232
+ section: null,
233
+ position: -1,
234
+ itemId: null
235
+ });
236
+ },
237
+ className: `rounded transition-all duration-150 ${O && c.itemId === i ? "scale-95 opacity-50" : "hover:bg-d-foreground/5"}`,
238
+ children: /* @__PURE__ */ r(
239
+ b,
240
+ {
241
+ variant: "ghost",
242
+ className: "w-full justify-start",
243
+ iconLeft: "GripVertical",
244
+ onClick: () => e.toggleVisibility(),
245
+ children: /* @__PURE__ */ f("div", { className: "flex w-full flex-row items-center justify-between gap-1", children: [
246
+ /* @__PURE__ */ r(
247
+ C,
248
+ {
249
+ name: z(
250
+ e.columnDef.meta?.type
251
+ ),
252
+ className: "h-4 w-4"
253
+ }
254
+ ),
255
+ /* @__PURE__ */ r("div", { className: "flex flex-1", children: e.columnDef.header?.toString() }),
256
+ /* @__PURE__ */ r(C, { name: "EyeOff" })
257
+ ] })
258
+ },
259
+ i
260
+ )
261
+ }
262
+ ),
263
+ n && /* @__PURE__ */ r("div", { className: "bg-d-primary absolute right-0 -bottom-1 left-0 z-10 h-0.5 rounded-full" })
264
+ ] }, i);
265
+ }) })
266
+ ]
267
+ }
268
+ )
269
+ ] })
270
+ ] });
271
+ }
272
+ export {
273
+ U as DataTableColumnVisibility
274
+ };