@cryptlex/web-components 1.3.5 → 1.4.1

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 (78) hide show
  1. package/README.md +6 -3
  2. package/dist/components/data-table/data-table.es.js +106 -90
  3. package/dist/components/data-table/data-table.es.js.map +1 -1
  4. package/dist/components/data-table/table-actions.es.js.map +1 -1
  5. package/dist/components/data-table/table-commons.es.js +5 -4
  6. package/dist/components/data-table/table-commons.es.js.map +1 -1
  7. package/dist/components/data-table/table-content.es.js +24 -26
  8. package/dist/components/data-table/table-content.es.js.map +1 -1
  9. package/dist/components/data-table/table-filter.es.js +264 -0
  10. package/dist/components/data-table/table-filter.es.js.map +1 -0
  11. package/dist/components/data-table/table-utils/constants.es.js +20 -6
  12. package/dist/components/data-table/table-utils/constants.es.js.map +1 -1
  13. package/dist/components/data-table/table-utils/link-display.es.js +4 -4
  14. package/dist/components/data-table/table-utils/link-display.es.js.map +1 -1
  15. package/dist/components/key-value-card/key-value-card.es.js +4 -2
  16. package/dist/components/key-value-card/key-value-card.es.js.map +1 -1
  17. package/dist/components/sidebar/app-layout.es.js +43 -39
  18. package/dist/components/sidebar/app-layout.es.js.map +1 -1
  19. package/dist/components/sidebar/breadcrumb.es.js +58 -0
  20. package/dist/components/sidebar/breadcrumb.es.js.map +1 -0
  21. package/dist/components/sidebar/nav-main.es.js +51 -39
  22. package/dist/components/sidebar/nav-main.es.js.map +1 -1
  23. package/dist/components/static-data-table/data-table.es.js +5 -5
  24. package/dist/components/static-data-table/data-table.es.js.map +1 -1
  25. package/dist/components/ui/avatar.es.js +1 -1
  26. package/dist/components/ui/avatar.es.js.map +1 -1
  27. package/dist/components/ui/badge.es.js +1 -1
  28. package/dist/components/ui/badge.es.js.map +1 -1
  29. package/dist/components/ui/button.es.js +8 -8
  30. package/dist/components/ui/button.es.js.map +1 -1
  31. package/dist/components/ui/calendar.es.js +3 -3
  32. package/dist/components/ui/chart.es.js +24 -24
  33. package/dist/components/ui/chart.es.js.map +1 -1
  34. package/dist/components/ui/checkbox.es.js +1 -1
  35. package/dist/components/ui/checkbox.es.js.map +1 -1
  36. package/dist/components/ui/command.es.js +28 -28
  37. package/dist/components/ui/command.es.js.map +1 -1
  38. package/dist/components/ui/copy-button.es.js +38 -34
  39. package/dist/components/ui/copy-button.es.js.map +1 -1
  40. package/dist/components/ui/dialog.es.js +8 -8
  41. package/dist/components/ui/dialog.es.js.map +1 -1
  42. package/dist/components/ui/dropdown-menu.es.js +38 -38
  43. package/dist/components/ui/dropdown-menu.es.js.map +1 -1
  44. package/dist/components/ui/form.es.js +4 -4
  45. package/dist/components/ui/input-otp.es.js +2 -2
  46. package/dist/components/ui/input-otp.es.js.map +1 -1
  47. package/dist/components/ui/input.es.js +7 -7
  48. package/dist/components/ui/input.es.js.map +1 -1
  49. package/dist/components/ui/mutli-select.es.js +13 -13
  50. package/dist/components/ui/mutli-select.es.js.map +1 -1
  51. package/dist/components/ui/navigation-menu.es.js +3 -3
  52. package/dist/components/ui/navigation-menu.es.js.map +1 -1
  53. package/dist/components/ui/pagination.es.js +20 -20
  54. package/dist/components/ui/password-input.es.js +10 -10
  55. package/dist/components/ui/password-input.es.js.map +1 -1
  56. package/dist/components/ui/popover.es.js +1 -1
  57. package/dist/components/ui/popover.es.js.map +1 -1
  58. package/dist/components/ui/radio-group.es.js +7 -7
  59. package/dist/components/ui/radio-group.es.js.map +1 -1
  60. package/dist/components/ui/select.es.js +17 -17
  61. package/dist/components/ui/select.es.js.map +1 -1
  62. package/dist/components/ui/sheet.es.js +8 -8
  63. package/dist/components/ui/sheet.es.js.map +1 -1
  64. package/dist/components/ui/sidebar.es.js +76 -76
  65. package/dist/components/ui/sidebar.es.js.map +1 -1
  66. package/dist/components/ui/table-page-layout.es.js +8 -8
  67. package/dist/components/ui/table-page-layout.es.js.map +1 -1
  68. package/dist/components/ui/table.es.js +8 -8
  69. package/dist/components/ui/table.es.js.map +1 -1
  70. package/dist/components/ui/tabs.es.js +11 -11
  71. package/dist/components/ui/tabs.es.js.map +1 -1
  72. package/dist/index.es.d.ts +21 -13
  73. package/dist/index.es.js +116 -114
  74. package/lib/index.css +15 -87
  75. package/lib/tailwind.preset.css +220 -0
  76. package/lib/tokens.css +54 -54
  77. package/package.json +7 -7
  78. package/tailwind.preset.ts +0 -191
package/README.md CHANGED
@@ -3,8 +3,10 @@
3
3
  A React component library for Cryptlex.
4
4
 
5
5
  # Usage
6
+
6
7
  In your tailwind.config.ts, add the following code:
7
- ```ts
8
+
9
+ ```ts
8
10
  import CtlxPreset from '@cryptlex/web-components/tailwind-preset';
9
11
 
10
12
  export default {
@@ -14,10 +16,11 @@ export default {
14
16
  ...
15
17
  "./node_modules/@cryptlex/web-components/**/*.{js,ts,jsx,tsx}",
16
18
  ],
17
- }
19
+ }
18
20
  ```
19
21
 
20
22
  In your global index.css, import the following CSS:
23
+
21
24
  ```css
22
25
  @import url('@cryptlex/web-components/index.css');
23
- ```
26
+ ```
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as i, jsxs as c } from "react/jsx-runtime";
3
+ import { TableFilter as q } from "./table-filter.es.js";
3
4
  import "../ui/accordion.es.js";
4
5
  import "../ui/avatar.es.js";
5
6
  import "../ui/badge.es.js";
@@ -11,8 +12,8 @@ import "../ui/chart.es.js";
11
12
  import "../ui/checkbox.es.js";
12
13
  import "@radix-ui/react-collapsible";
13
14
  import "../ui/command.es.js";
14
- import { Info as R } from "lucide-react";
15
- import { useState as A, useEffect as I, useMemo as b } from "react";
15
+ import { Info as H } from "lucide-react";
16
+ import { useState as A, useEffect as W, useMemo as u } from "react";
16
17
  import "../ui/dialog.es.js";
17
18
  import "../ui/drawer.es.js";
18
19
  import "../ui/dropdown-menu.es.js";
@@ -34,25 +35,28 @@ import "../ui/sidebar.es.js";
34
35
  import "sonner";
35
36
  import "../ui/table.es.js";
36
37
  import "../ui/tabs.es.js";
37
- import { TooltipProvider as L, Tooltip as U, TooltipTrigger as q, TooltipContent as H } from "../ui/tooltip.es.js";
38
- import { useQuery as W, keepPreviousData as G } from "@tanstack/react-query";
39
- import { createColumnHelper as X, useReactTable as B, getCoreRowModel as J } from "@tanstack/react-table";
40
- import { useDebounce as Y } from "use-debounce";
41
- import { ColumnPicker as Z } from "./column-picker.es.js";
42
- import { PageSize as $ } from "./page-size.es.js";
43
- import { Paginator as Q } from "./paginator.es.js";
44
- import tt from "./table-actions.es.js";
45
- import { CHECK_BOX as et, ID_COLUMN as ot, DEFAULT_DATE_COLUMNS as it } from "./table-commons.es.js";
46
- import { TableContent as nt } from "./table-content.es.js";
47
- function Yt({
48
- columns: u,
49
- fetchFn: V,
50
- tableName: _,
51
- tableActions: g,
52
- columnsToHideByDefault: w
38
+ import { TooltipProvider as G, Tooltip as X, TooltipTrigger as J, TooltipContent as Y } from "../ui/tooltip.es.js";
39
+ import { useQuery as Z, keepPreviousData as $ } from "@tanstack/react-query";
40
+ import { createColumnHelper as Q, useReactTable as tt, getCoreRowModel as et } from "@tanstack/react-table";
41
+ import { useDebounce as ot } from "use-debounce";
42
+ import { ColumnPicker as it } from "./column-picker.es.js";
43
+ import { PageSize as rt } from "./page-size.es.js";
44
+ import { Paginator as nt } from "./paginator.es.js";
45
+ import at from "./table-actions.es.js";
46
+ import { TableContent as lt } from "./table-content.es.js";
47
+ import { TABLE_CHECK_BOX_COLUMN as st, TABLE_ID_COLUMN as mt, TABLE_DEFAULT_DATE_COLUMNS as ct } from "./table-commons.es.js";
48
+ import { DEFAULT_FILTERABLE_FIELDS as pt } from "./table-utils/constants.es.js";
49
+ const ne = "actions_button";
50
+ function ae({
51
+ columns: g,
52
+ fetchFn: M,
53
+ tableName: O,
54
+ tableActions: h,
55
+ columnsToHideByDefault: S,
56
+ filterableFields: I
53
57
  }) {
54
- var v, T, D, F, P, N;
55
- const [j, E] = A({
58
+ var F, _, D, E, L, N;
59
+ const [V, U] = A({
56
60
  sorting: [],
57
61
  // Sorting state
58
62
  columnFilters: [],
@@ -65,136 +69,148 @@ function Yt({
65
69
  // Row selection state
66
70
  pagination: { pageIndex: 0, pageSize: 20 }
67
71
  // Pagination state
68
- }), n = (t) => {
69
- E((e) => ({ ...e, ...t }));
70
- }, { sorting: p, columnFilters: C, searching: y, columnVisibility: S, rowSelection: f, pagination: d } = j, [O] = Y(y.trim(), 300);
71
- I(() => {
72
- n({
73
- columnVisibility: { id: !1, updatedAt: !1, ...w }
72
+ }), a = (t) => {
73
+ U((e) => ({ ...e, ...t }));
74
+ }, { sorting: p, columnFilters: w, searching: y, columnVisibility: T, rowSelection: f, pagination: d } = V, [j] = ot(y.trim(), 300);
75
+ W(() => {
76
+ a({
77
+ columnVisibility: { id: !1, updatedAt: !1, ...S }
74
78
  });
75
- }, [w]);
76
- const o = W({
77
- queryKey: [_, d, p, O],
78
- queryFn: () => V(d, p, y.trim(), {}),
79
- placeholderData: G,
79
+ }, [S]);
80
+ const [C, R] = A([]), x = u(() => C.reduce((t, e) => {
81
+ const { property: r, value: n, operator: l } = e;
82
+ return t[r] || (t[r] = {}), t[r][l] = n, t;
83
+ }, {}), [C]), o = Z({
84
+ queryKey: [O, d, p, j, x],
85
+ queryFn: () => M(d, p, y.trim(), x),
86
+ placeholderData: $,
80
87
  // Keep previous data while loading new data
81
88
  retry: 0,
82
89
  refetchOnWindowFocus: !1
83
- }), k = X(), h = b(() => {
84
- var m;
85
- const t = (m = o.data) == null ? void 0 : m.data;
90
+ }), k = Q(), b = u(() => {
91
+ var r;
92
+ const t = (r = o.data) == null ? void 0 : r.data;
86
93
  if (!(t != null && t.length)) return [];
87
94
  const e = /* @__PURE__ */ new Set();
88
- return t.forEach((a) => {
89
- a.metadata && a.metadata.forEach((s) => {
90
- e.add(s.key);
95
+ return t.forEach((n) => {
96
+ n.metadata && n.metadata.forEach((l) => {
97
+ e.add(l.key);
91
98
  });
92
99
  }), Array.from(e).map(
93
- (a) => k.accessor(
94
- (s) => {
95
- var M;
96
- const r = (M = s.metadata) == null ? void 0 : M.find((K) => K.key === a);
97
- return r == null ? void 0 : r.value;
100
+ (n) => k.accessor(
101
+ (l) => {
102
+ var P;
103
+ const s = (P = l.metadata) == null ? void 0 : P.find((K) => K.key === n);
104
+ return s == null ? void 0 : s.value;
98
105
  },
99
106
  {
100
- header: () => /* @__PURE__ */ i(L, { delayDuration: 0, children: /* @__PURE__ */ c(U, { children: [
101
- /* @__PURE__ */ i(q, { asChild: !0, children: /* @__PURE__ */ c("span", { className: "flex gap-1 items-center align-middle", children: [
102
- a,
107
+ header: () => /* @__PURE__ */ i(G, { delayDuration: 0, children: /* @__PURE__ */ c(X, { children: [
108
+ /* @__PURE__ */ i(J, { asChild: !0, children: /* @__PURE__ */ c("span", { className: "flex gap-1 items-center align-middle", children: [
109
+ n,
103
110
  " ",
104
- /* @__PURE__ */ i(R, { size: 18, strokeWidth: "1px" })
111
+ /* @__PURE__ */ i(H, { size: 18, strokeWidth: "1px" })
105
112
  ] }) }),
106
- /* @__PURE__ */ i(H, { children: "Metadata Key" })
113
+ /* @__PURE__ */ i(Y, { children: "Metadata Key" })
107
114
  ] }) }),
108
115
  // Use the metadata key as the column header
109
- id: a,
116
+ id: n,
110
117
  enableSorting: !1,
111
- cell: (s) => {
112
- const r = s.getValue();
113
- return r == null ? "" : String(r);
118
+ cell: (l) => {
119
+ const s = l.getValue();
120
+ return s == null ? "" : String(s);
114
121
  }
115
122
  }
116
123
  )
117
124
  );
118
- }, [(v = o.data) == null ? void 0 : v.data]), x = b(() => [
119
- ...g.selection ? et : [],
120
- ...ot,
121
- ...u.filter((e) => e.id !== "actions"),
122
- ...h.length ? h : [],
123
- ...it,
124
- ...u.filter((e) => e.id === "actions")
125
- ], [u, h, (T = o.data) == null ? void 0 : T.data, g.selection]), z = b(
125
+ }, [(F = o.data) == null ? void 0 : F.data]), v = u(() => [
126
+ ...h.selection ? st : [],
127
+ ...mt,
128
+ ...g.filter((e) => e.id !== "actions"),
129
+ ...b.length ? b : [],
130
+ ...ct,
131
+ ...g.filter((e) => e.id === "actions")
132
+ ], [g, b, (_ = o.data) == null ? void 0 : _.data, h.selection]), z = u(
126
133
  () => Object.entries(f).map((t) => {
127
- var e, m;
128
- return (m = (e = o == null ? void 0 : o.data) == null ? void 0 : e.data) == null ? void 0 : m[t[0]];
134
+ var e, r;
135
+ return (r = (e = o == null ? void 0 : o.data) == null ? void 0 : e.data) == null ? void 0 : r[t[0]];
129
136
  }),
130
137
  [(D = o == null ? void 0 : o.data) == null ? void 0 : D.data, f]
131
- ), l = B({
132
- data: ((F = o.data) == null ? void 0 : F.data) ?? [],
133
- columns: x,
134
- getCoreRowModel: J(),
135
- rowCount: (P = o.data) == null ? void 0 : P.total,
138
+ ), m = tt({
139
+ data: ((E = o.data) == null ? void 0 : E.data) ?? [],
140
+ columns: v,
141
+ getCoreRowModel: et(),
142
+ rowCount: (L = o.data) == null ? void 0 : L.total,
136
143
  manualPagination: !0,
137
144
  // Handle pagination manually
138
145
  onPaginationChange: (t) => {
139
146
  const e = typeof t == "function" ? t(d) : t;
140
- n({ pagination: e });
147
+ a({ pagination: e });
141
148
  },
142
149
  manualSorting: !0,
143
150
  // Handle sorting manually
144
151
  onSortingChange: (t) => {
145
152
  const e = typeof t == "function" ? t(p) : t;
146
- n({ sorting: e });
153
+ a({ sorting: e });
147
154
  },
148
155
  manualFiltering: !0,
149
156
  // Handle filtering manually
150
157
  onGlobalFilterChange: (t) => {
151
- const e = typeof t == "function" ? t(C) : t;
152
- n({ columnFilters: e });
158
+ const e = typeof t == "function" ? t(w) : t;
159
+ a({ columnFilters: e });
153
160
  },
154
161
  onColumnVisibilityChange: (t) => {
155
- const e = typeof t == "function" ? t(S) : t;
156
- n({ columnVisibility: e });
162
+ const e = typeof t == "function" ? t(T) : t;
163
+ a({ columnVisibility: e });
157
164
  },
158
165
  onRowSelectionChange: (t) => {
159
166
  const e = typeof t == "function" ? t(f) : t;
160
- n({ rowSelection: e });
167
+ a({ rowSelection: e });
161
168
  },
162
169
  state: {
163
170
  sorting: p,
164
- columnFilters: C,
165
- columnVisibility: S,
171
+ columnFilters: w,
172
+ columnVisibility: T,
166
173
  pagination: d,
167
174
  rowSelection: f
168
175
  },
169
176
  meta: {
170
177
  refetch: o.refetch
171
178
  }
172
- });
173
- return /* @__PURE__ */ c("div", { className: "flex flex-col w-full bg-card", children: [
179
+ }), B = {
180
+ key: "",
181
+ stateData: z
182
+ };
183
+ return /* @__PURE__ */ c("div", { className: "flex flex-col gap-1 w-full bg-card", children: [
184
+ /* @__PURE__ */ i("div", { className: " px-1", children: /* @__PURE__ */ i(
185
+ q,
186
+ {
187
+ filterableProperties: { ...I, ...pt },
188
+ filters: C,
189
+ onFiltersChange: R
190
+ }
191
+ ) }),
174
192
  /* @__PURE__ */ i("div", { className: "border px-1", children: /* @__PURE__ */ i(
175
- tt,
193
+ at,
176
194
  {
177
195
  dataQuery: o,
178
- table: l,
179
- tableActions: g,
180
- stateToPass: {
181
- stateData: z,
182
- key: "state"
183
- },
184
- handleSearching: (t) => n({ searching: t })
196
+ table: m,
197
+ tableActions: h,
198
+ stateToPass: B,
199
+ handleSearching: (t) => a({ searching: t })
185
200
  }
186
201
  ) }),
187
- /* @__PURE__ */ i("div", { className: "relative h-[60vh] z-10 overflow-x-auto border-x align-top justify-start", children: /* @__PURE__ */ i(nt, { table: l, columns: x, dataQuery: o }) }),
202
+ /* @__PURE__ */ i("div", { className: "relative h-[60vh] z-10 overflow-x-auto border-x align-top justify-start", children: /* @__PURE__ */ i(lt, { table: m, columns: v, dataQuery: o }) }),
188
203
  /* @__PURE__ */ c("div", { className: "flex overflow-auto flex-row w-full justify-between border gap-4 px-1 py-2", children: [
189
204
  /* @__PURE__ */ c("div", { className: "flex gap-2", children: [
190
- /* @__PURE__ */ i(Z, { table: l }),
191
- /* @__PURE__ */ i($, { table: l })
205
+ /* @__PURE__ */ i(it, { table: m }),
206
+ /* @__PURE__ */ i(rt, { table: m })
192
207
  ] }),
193
- /* @__PURE__ */ i(Q, { table: l, rowCount: ((N = o.data) == null ? void 0 : N.total) ?? 0 })
208
+ /* @__PURE__ */ i(nt, { table: m, rowCount: ((N = o.data) == null ? void 0 : N.total) ?? 0 })
194
209
  ] })
195
210
  ] });
196
211
  }
197
212
  export {
198
- Yt as DataTable
213
+ ne as ACTIONS_COLUMN_ID,
214
+ ae as DataTable
199
215
  };
200
216
  //# sourceMappingURL=data-table.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.es.js","sources":["../../../lib/components/data-table/data-table.tsx"],"sourcesContent":["'use client';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/index';\nimport { keepPreviousData, useQuery } from '@tanstack/react-query';\nimport {\n ColumnDef,\n ColumnFiltersState,\n createColumnHelper,\n getCoreRowModel,\n PaginationState,\n SortingState,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { Info } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useDebounce } from 'use-debounce';\nimport { ColumnPicker } from './column-picker';\nimport { PageSize } from './page-size';\nimport { Paginator } from './paginator';\nimport Actions from './table-actions';\nimport { CHECK_BOX, DEFAULT_DATE_COLUMNS, ID_COLUMN } from './table-commons';\nimport { TableContent } from './table-content';\nimport type { FilterableProperties, MetadataDto, TableActions, TableFetchFn } from './table-utils';\n\n// Props type for the DataTable component\nexport interface DataTableProps<TData, TValue = any> {\n columns: ColumnDef<TData, TValue>[]; // Columns for the table\n tableName: string; // Table name used as query key\n fetchFn: TableFetchFn<TData>; // Function for fetching data from the server\n tableActions: TableActions;\n filterableFields: FilterableProperties; // Fields that can be filtered\n columnsToHideByDefault: VisibilityState; // Columns that are hidden by default\n}\nexport function DataTable<TData extends Record<string, any>, TValue = any>({\n columns,\n fetchFn,\n tableName,\n tableActions,\n columnsToHideByDefault,\n}: DataTableProps<TData, TValue>) {\n // State for managing table data and filters\n //TODO: This is later to be stored in url as params\n const [tableState, setTableState] = useState({\n sorting: [] as SortingState, // Sorting state\n columnFilters: [] as ColumnFiltersState, // Filters for columns\n searching: '', // Search query state\n columnVisibility: {} as VisibilityState, // Visibility of columns\n rowSelection: {}, // Row selection state\n pagination: { pageIndex: 0, pageSize: 20 } as PaginationState, // Pagination state\n });\n\n // Update table state with new values\n const updateTableState = (updates: Partial<typeof tableState>) => {\n setTableState((prev) => ({ ...prev, ...updates }));\n };\n\n // Destructuring the table state for easier access\n const { sorting, columnFilters, searching, columnVisibility, rowSelection, pagination } =\n tableState;\n\n // Debounce the search query to avoid making a request on every keystroke\n const [debouncedQuery] = useDebounce(searching.trim(), 300);\n\n // Update column visibility when columnsToHideByDefault changes\n useEffect(() => {\n updateTableState({\n columnVisibility: { id: false, updatedAt: false, ...columnsToHideByDefault },\n });\n }, [columnsToHideByDefault]);\n\n // Fetch table data using the fetchFn and react-query's useQuery hook\n const dataQuery = useQuery({\n queryKey: [tableName, pagination, sorting, debouncedQuery],\n queryFn: () => fetchFn(pagination, sorting, searching.trim(), {}),\n placeholderData: keepPreviousData, // Keep previous data while loading new data\n retry: 0,\n refetchOnWindowFocus: false,\n });\n\n // Create column helpers for dynamic column generation\n const columnHelper = createColumnHelper<TData>();\n const metadataColumns = useMemo<ColumnDef<TData, TValue>[]>(() => {\n const data = dataQuery.data?.data;\n if (!data?.length) return [];\n // set of all the keys present in a given view\n const allMetadataKeys = new Set<string>();\n\n // Collect all unique metadata keys\n data.forEach((row: TData) => {\n if (row.metadata) {\n row.metadata.forEach((meta: MetadataDto) => {\n allMetadataKeys.add(meta.key);\n });\n }\n });\n\n // Generate columns for all unique metadata keys\n return Array.from(allMetadataKeys).map((key) =>\n columnHelper.accessor(\n (row: TData) => {\n // Find the metadata object with the matching key\n const metadataEntry = row.metadata?.find((meta: MetadataDto) => meta.key === key);\n return metadataEntry?.value; // Return the value for the specific key\n },\n {\n header: () => (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex gap-1 items-center align-middle\">\n {key} <Info size={18} strokeWidth={'1px'} />\n </span>\n </TooltipTrigger>\n <TooltipContent>Metadata Key</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ), // Use the metadata key as the column header\n id: key,\n enableSorting: false,\n cell: (info) => {\n const value = info.getValue();\n // Handle null/undefined values\n if (value === null || value === undefined) return '';\n // For primitive types, return the string representation\n return String(value);\n },\n },\n ),\n );\n }, [dataQuery.data?.data]);\n\n /**\n * ID,createdAt and updatedAt will be added by default for all tables\n * If selection is allowed, checkbox will be added\n * If the dto has metadata, dynamics columns for all the metadata key-value will be added(particular for a view)\n * If there are actions for the table, they will be placed fixed at the right side of table.\n */\n const extendedColumns = useMemo<ColumnDef<any, any>[]>(() => {\n const _columns = [\n ...(tableActions.selection ? CHECK_BOX : []),\n ...ID_COLUMN,\n ...columns.filter((col) => col.id !== 'actions'),\n ...(metadataColumns.length ? metadataColumns : []),\n ...DEFAULT_DATE_COLUMNS,\n ...columns.filter((col) => col.id === 'actions'),\n ];\n\n return _columns;\n }, [columns, metadataColumns, dataQuery.data?.data, tableActions.selection]);\n\n // Get selected row data\n const rowSelectedData = useMemo(\n () => Object.entries(rowSelection).map((d: any) => dataQuery?.data?.data?.[d[0]]),\n [dataQuery?.data?.data, rowSelection],\n );\n\n // Use react-table's hook to create the table instance\n const table = useReactTable({\n data: dataQuery.data?.data ?? [],\n columns: extendedColumns,\n getCoreRowModel: getCoreRowModel(),\n rowCount: dataQuery.data?.total,\n manualPagination: true, // Handle pagination manually\n onPaginationChange: (updater) => {\n const newPagination = typeof updater === 'function' ? updater(pagination) : updater;\n updateTableState({ pagination: newPagination });\n },\n manualSorting: true, // Handle sorting manually\n onSortingChange: (updater) => {\n const newSorting = typeof updater === 'function' ? updater(sorting) : updater;\n updateTableState({ sorting: newSorting });\n },\n manualFiltering: true, // Handle filtering manually\n onGlobalFilterChange: (updater) => {\n const newFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\n updateTableState({ columnFilters: newFilters });\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility = typeof updater === 'function' ? updater(columnVisibility) : updater;\n updateTableState({ columnVisibility: newVisibility });\n },\n onRowSelectionChange: (updater) => {\n const newSelection = typeof updater === 'function' ? updater(rowSelection) : updater;\n updateTableState({ rowSelection: newSelection });\n },\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n pagination,\n rowSelection,\n },\n meta: {\n refetch: dataQuery.refetch,\n },\n });\n\n return (\n <div className=\"flex flex-col w-full bg-card\">\n {/* Table Actions Section */}\n <div className=\"border px-1\">\n <Actions\n dataQuery={dataQuery}\n table={table}\n tableActions={tableActions}\n stateToPass={{\n stateData: rowSelectedData,\n key: 'state',\n }}\n handleSearching={(value) => updateTableState({ searching: value })}\n />\n </div>\n\n {/* Table Content Section */}\n <div className=\"relative h-[60vh] z-10 overflow-x-auto border-x align-top justify-start\">\n <TableContent table={table} columns={extendedColumns} dataQuery={dataQuery} />\n </div>\n\n {/* Table Footer Section with Pagination and Column Picker */}\n <div className=\"flex overflow-auto flex-row w-full justify-between border gap-4 px-1 py-2\">\n <div className=\"flex gap-2\">\n <ColumnPicker table={table} />\n <PageSize table={table} />\n </div>\n <Paginator table={table} rowCount={dataQuery.data?.total ?? 0} />\n </div>\n </div>\n );\n}\n"],"names":["DataTable","columns","fetchFn","tableName","tableActions","columnsToHideByDefault","tableState","setTableState","useState","updateTableState","updates","prev","sorting","columnFilters","searching","columnVisibility","rowSelection","pagination","debouncedQuery","useDebounce","useEffect","dataQuery","useQuery","keepPreviousData","columnHelper","createColumnHelper","metadataColumns","useMemo","data","_a","allMetadataKeys","row","meta","key","metadataEntry","jsx","TooltipProvider","Tooltip","TooltipTrigger","jsxs","Info","TooltipContent","info","value","extendedColumns","CHECK_BOX","ID_COLUMN","col","DEFAULT_DATE_COLUMNS","_b","rowSelectedData","d","_c","table","useReactTable","_d","getCoreRowModel","_e","updater","newPagination","newSorting","newFilters","newVisibility","newSelection","Actions","TableContent","ColumnPicker","PageSize","Paginator","_f"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.es.js","sources":["../../../lib/components/data-table/data-table.tsx"],"sourcesContent":["'use client';\nimport { TableFilter, type FilterFormType } from '@/components/data-table/table-filter';\nimport {\n DEFAULT_FILTERABLE_FIELDS,\n TABLE_CHECK_BOX_COLUMN,\n TABLE_DEFAULT_DATE_COLUMNS,\n TABLE_ID_COLUMN,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/index';\nimport { keepPreviousData, useQuery } from '@tanstack/react-query';\nimport {\n ColumnDef,\n ColumnFiltersState,\n createColumnHelper,\n getCoreRowModel,\n PaginationState,\n SortingState,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { Info } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useDebounce } from 'use-debounce';\nimport { ColumnPicker } from './column-picker';\nimport { PageSize } from './page-size';\nimport { Paginator } from './paginator';\nimport Actions from './table-actions';\nimport { TableContent } from './table-content';\nimport type { FilterableProperties, MetadataDto, TableActions, TableFetchFn } from './table-utils';\n\n/** Reserved name for actions column */\nexport const ACTIONS_COLUMN_ID = 'actions_button';\n\n// Props type for the DataTable component\nexport interface DataTableProps<TData, TValue = any> {\n columns: ColumnDef<TData, TValue>[]; // Columns for the table\n tableName: string; // Table name used as query key\n fetchFn: TableFetchFn<TData>; // Function for fetching data from the server\n tableActions: TableActions;\n filterableFields: FilterableProperties<TData>; // Fields that can be filtered\n columnsToHideByDefault: VisibilityState; // Columns that are hidden by default\n}\nexport function DataTable<TData extends Record<string, any>, TValue = any>({\n columns,\n fetchFn,\n tableName,\n tableActions,\n columnsToHideByDefault,\n filterableFields,\n}: DataTableProps<TData, TValue>) {\n // State for managing table data and filters\n //TODO: This is later to be stored in url as params\n const [tableState, setTableState] = useState({\n sorting: [] as SortingState, // Sorting state\n columnFilters: [] as ColumnFiltersState, // Filters for columns\n searching: '', // Search query state\n columnVisibility: {} as VisibilityState, // Visibility of columns\n rowSelection: {}, // Row selection state\n pagination: { pageIndex: 0, pageSize: 20 } as PaginationState, // Pagination state\n });\n\n // Update table state with new values\n const updateTableState = (updates: Partial<typeof tableState>) => {\n setTableState((prev) => ({ ...prev, ...updates }));\n };\n\n // Destructuring the table state for easier access\n const { sorting, columnFilters, searching, columnVisibility, rowSelection, pagination } =\n tableState;\n\n // Debounce the search query to avoid making a request on every keystroke\n const [debouncedQuery] = useDebounce(searching.trim(), 300);\n\n // Update column visibility when columnsToHideByDefault changes\n useEffect(() => {\n updateTableState({\n columnVisibility: { id: false, updatedAt: false, ...columnsToHideByDefault },\n });\n }, [columnsToHideByDefault]);\n const [filters, setFilters] = useState<FilterFormType[]>([]);\n\n const formatedFilters = useMemo(() => {\n return filters.reduce((acc, filter) => {\n const { property, value, operator } = filter;\n if (!acc[property]) {\n acc[property] = {};\n }\n acc[property][operator] = value;\n return acc;\n }, {} as Record<string, Record<string, any>>);\n }, [filters]);\n\n // Fetch table data using the fetchFn and react-query's useQuery hook\n const dataQuery = useQuery({\n queryKey: [tableName, pagination, sorting, debouncedQuery, formatedFilters],\n queryFn: () => fetchFn(pagination, sorting, searching.trim(), formatedFilters),\n placeholderData: keepPreviousData, // Keep previous data while loading new data\n retry: 0,\n refetchOnWindowFocus: false,\n });\n\n // Create column helpers for dynamic column generation\n const columnHelper = createColumnHelper<TData>();\n const metadataColumns = useMemo<ColumnDef<TData, TValue>[]>(() => {\n const data = dataQuery.data?.data;\n if (!data?.length) return [];\n // set of all the keys present in a given view\n const allMetadataKeys = new Set<string>();\n\n // Collect all unique metadata keys\n data.forEach((row: TData) => {\n if (row.metadata) {\n row.metadata.forEach((meta: MetadataDto) => {\n allMetadataKeys.add(meta.key);\n });\n }\n });\n\n // Generate columns for all unique metadata keys\n return Array.from(allMetadataKeys).map((key) =>\n columnHelper.accessor(\n (row: TData) => {\n // Find the metadata object with the matching key\n const metadataEntry = row.metadata?.find((meta: MetadataDto) => meta.key === key);\n return metadataEntry?.value; // Return the value for the specific key\n },\n {\n header: () => (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex gap-1 items-center align-middle\">\n {key} <Info size={18} strokeWidth={'1px'} />\n </span>\n </TooltipTrigger>\n <TooltipContent>Metadata Key</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ), // Use the metadata key as the column header\n id: key,\n enableSorting: false,\n cell: (info) => {\n const value = info.getValue();\n // Handle null/undefined values\n if (value === null || value === undefined) return '';\n // For primitive types, return the string representation\n return String(value);\n },\n },\n ),\n );\n }, [dataQuery.data?.data]);\n\n /**\n * ID,createdAt and updatedAt will be added by default for all tables\n * If selection is allowed, checkbox will be added\n * If the dto has metadata, dynamics columns for all the metadata key-value will be added(particular for a view)\n * If there are actions for the table, they will be placed fixed at the right side of table.\n */\n const extendedColumns = useMemo<ColumnDef<any, any>[]>(() => {\n const _columns = [\n ...(tableActions.selection ? TABLE_CHECK_BOX_COLUMN : []),\n ...TABLE_ID_COLUMN,\n ...columns.filter((col) => col.id !== 'actions'),\n ...(metadataColumns.length ? metadataColumns : []),\n ...TABLE_DEFAULT_DATE_COLUMNS,\n ...columns.filter((col) => col.id === 'actions'),\n ];\n\n return _columns;\n }, [columns, metadataColumns, dataQuery.data?.data, tableActions.selection]);\n\n // Get selected row data\n const rowSelectedData = useMemo(\n () => Object.entries(rowSelection).map((d: any) => dataQuery?.data?.data?.[d[0]]),\n [dataQuery?.data?.data, rowSelection],\n );\n\n // Use react-table's hook to create the table instance\n const table = useReactTable({\n data: dataQuery.data?.data ?? [],\n columns: extendedColumns,\n getCoreRowModel: getCoreRowModel(),\n rowCount: dataQuery.data?.total,\n manualPagination: true, // Handle pagination manually\n onPaginationChange: (updater) => {\n const newPagination = typeof updater === 'function' ? updater(pagination) : updater;\n updateTableState({ pagination: newPagination });\n },\n manualSorting: true, // Handle sorting manually\n onSortingChange: (updater) => {\n const newSorting = typeof updater === 'function' ? updater(sorting) : updater;\n updateTableState({ sorting: newSorting });\n },\n manualFiltering: true, // Handle filtering manually\n onGlobalFilterChange: (updater) => {\n const newFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\n updateTableState({ columnFilters: newFilters });\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility = typeof updater === 'function' ? updater(columnVisibility) : updater;\n updateTableState({ columnVisibility: newVisibility });\n },\n onRowSelectionChange: (updater) => {\n const newSelection = typeof updater === 'function' ? updater(rowSelection) : updater;\n updateTableState({ rowSelection: newSelection });\n },\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n pagination,\n rowSelection,\n },\n meta: {\n refetch: dataQuery.refetch,\n },\n });\n const stateToPass = {\n key: '',\n stateData: rowSelectedData,\n };\n\n return (\n <div className=\"flex flex-col gap-1 w-full bg-card\">\n <div className=\" px-1\">\n <TableFilter\n filterableProperties={{ ...filterableFields, ...DEFAULT_FILTERABLE_FIELDS }}\n filters={filters}\n onFiltersChange={setFilters}\n />\n </div>\n {/* Table Actions Section */}\n <div className=\"border px-1\">\n <Actions\n dataQuery={dataQuery}\n table={table}\n tableActions={tableActions}\n stateToPass={stateToPass}\n handleSearching={(value) => updateTableState({ searching: value })}\n />\n </div>\n\n {/* Table Content Section */}\n <div className=\"relative h-[60vh] z-10 overflow-x-auto border-x align-top justify-start\">\n <TableContent table={table} columns={extendedColumns} dataQuery={dataQuery} />\n </div>\n\n {/* Table Footer Section with Pagination and Column Picker */}\n <div className=\"flex overflow-auto flex-row w-full justify-between border gap-4 px-1 py-2\">\n <div className=\"flex gap-2\">\n <ColumnPicker table={table} />\n <PageSize table={table} />\n </div>\n <Paginator table={table} rowCount={dataQuery.data?.total ?? 0} />\n </div>\n </div>\n );\n}\n"],"names":["ACTIONS_COLUMN_ID","DataTable","columns","fetchFn","tableName","tableActions","columnsToHideByDefault","filterableFields","tableState","setTableState","useState","updateTableState","updates","prev","sorting","columnFilters","searching","columnVisibility","rowSelection","pagination","debouncedQuery","useDebounce","useEffect","filters","setFilters","formatedFilters","useMemo","acc","filter","property","value","operator","dataQuery","useQuery","keepPreviousData","columnHelper","createColumnHelper","metadataColumns","data","_a","allMetadataKeys","row","meta","key","metadataEntry","jsx","TooltipProvider","Tooltip","TooltipTrigger","jsxs","Info","TooltipContent","info","extendedColumns","TABLE_CHECK_BOX_COLUMN","TABLE_ID_COLUMN","col","TABLE_DEFAULT_DATE_COLUMNS","_b","rowSelectedData","d","_c","table","useReactTable","_d","getCoreRowModel","_e","updater","newPagination","newSorting","newFilters","newVisibility","newSelection","stateToPass","TableFilter","DEFAULT_FILTERABLE_FIELDS","Actions","TableContent","ColumnPicker","PageSize","Paginator","_f"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"table-actions.es.js","sources":["../../../lib/components/data-table/table-actions.tsx"],"sourcesContent":["import { Link, useRouterState } from '@tanstack/react-router';\n\nimport { Pencil, Plus, RotateCw, Trash } from 'lucide-react';\n\nimport type { TableActions } from '@/components/data-table/table-utils/index';\nimport { Button } from '@/components/ui/button';\nimport { SearchInput } from '@/index';\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { Table } from '@tanstack/react-table';\nimport { useState } from 'react';\n\nexport default function Actions<TData>({\n table,\n tableActions,\n stateToPass,\n handleSearching,\n dataQuery,\n}: {\n table: Table<TData>;\n tableActions: TableActions;\n handleSearching: (value: string) => void;\n stateToPass: {\n key: string;\n stateData: any;\n };\n dataQuery: UseQueryResult<any, unknown>;\n}) {\n const { location: { href } = {} } = useRouterState();\n const [search, setSearch] = useState<string>('');\n return (\n <div className=\"flex justify-between my-0 py-2 gap-4 overflow-auto\">\n <div className=\"flex gap-2\">\n <Button\n loading={dataQuery.isFetching}\n icon={RotateCw}\n onClick={() => dataQuery.refetch()}\n variant={'outline'}\n />\n {/* //TODO: we can show the create, delete button based on permsission */}\n {/* All the creating routes will be with url /create in host app */}\n {tableActions.create && table.getSelectedRowModel().rows.length === 0 && (\n <Link to={`${href}/create`}>\n <Button disabled={dataQuery.isFetching} icon={Plus}>\n Create\n </Button>{' '}\n </Link>\n )}\n {/* All the updating routes will be with url /edit in host app */}\n {table.getSelectedRowModel().rows.length > 0 && tableActions.update && (\n <Link to={`${href}/edit`} state={stateToPass}>\n <Button disabled={dataQuery.isFetching} icon={Pencil}>\n Update\n </Button>\n </Link>\n )}\n {table.getSelectedRowModel().rows.length > 0 && tableActions?.delete && (\n <Link to={`${href}/delete`} state={stateToPass}>\n <Button disabled={dataQuery.isFetching} icon={Trash} variant={'destructive'}>\n Delete\n </Button>\n </Link>\n )}\n </div>\n {tableActions?.search && (\n <div className=\"relative flex gap-1 justify-center items-center\">\n <SearchInput\n value={search}\n onChange={(e) => {\n setSearch(e);\n handleSearching(e);\n }}\n />\n </div>\n )}\n </div>\n );\n}\n"],"names":["Actions","table","tableActions","stateToPass","handleSearching","dataQuery","href","useRouterState","search","setSearch","useState","jsxs","jsx","Button","RotateCw","Link","Plus","Pencil","Trash","SearchInput","e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,SAAwBA,GAAe;AAAA,EACrC,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AACF,GASG;AACK,QAAA,EAAE,UAAU,EAAE,MAAAC,MAAS,CAAC,EAAA,IAAMC,EAAe,GAC7C,CAACC,GAAQC,CAAS,IAAIC,EAAiB,EAAE;AAE7C,SAAA,gBAAAC,EAAC,OAAI,EAAA,WAAU,uDACb,UAAA;AAAA,IAAC,gBAAAA,EAAA,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,SAASR,EAAU;AAAA,UACnB,MAAMS;AAAA,UACN,SAAS,MAAMT,EAAU,QAAQ;AAAA,UACjC,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,MAGCH,EAAa,UAAUD,EAAM,oBAAA,EAAsB,KAAK,WAAW,KACjE,gBAAAU,EAAAI,GAAA,EAAK,IAAI,GAAGT,CAAI,WACf,UAAA;AAAA,QAAA,gBAAAM,EAACC,KAAO,UAAUR,EAAU,YAAY,MAAMW,GAAM,UAEpD,UAAA;AAAA,QAAU;AAAA,MAAA,GACZ;AAAA,MAGDf,EAAM,oBAAoB,EAAE,KAAK,SAAS,KAAKC,EAAa,UAC1D,gBAAAU,EAAAG,GAAA,EAAK,IAAI,GAAGT,CAAI,SAAS,OAAOH,GAC/B,UAAA,gBAAAS,EAACC,GAAO,EAAA,UAAUR,EAAU,YAAY,MAAMY,GAAQ,UAAA,SAAA,CAEtD,EACF,CAAA;AAAA,MAEDhB,EAAM,oBAAoB,EAAE,KAAK,SAAS,MAAKC,KAAA,gBAAAA,EAAc,WAC5D,gBAAAU,EAACG,GAAK,EAAA,IAAI,GAAGT,CAAI,WAAW,OAAOH,GACjC,UAAC,gBAAAS,EAAAC,GAAA,EAAO,UAAUR,EAAU,YAAY,MAAMa,GAAO,SAAS,eAAe,UAAA,SAE7E,CAAA,EACF,CAAA;AAAA,IAAA,GAEJ;AAAA,KACChB,KAAA,gBAAAA,EAAc,WACZ,gBAAAU,EAAA,OAAA,EAAI,WAAU,mDACb,UAAA,gBAAAA;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,OAAOX;AAAA,QACP,UAAU,CAACY,MAAM;AACf,UAAAX,EAAUW,CAAC,GACXhB,EAAgBgB,CAAC;AAAA,QAAA;AAAA,MACnB;AAAA,IAAA,EAEJ,CAAA;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"table-actions.es.js","sources":["../../../lib/components/data-table/table-actions.tsx"],"sourcesContent":["import { Link, useRouterState } from '@tanstack/react-router';\n\nimport { Pencil, Plus, RotateCw, Trash } from 'lucide-react';\n\nimport type { TableActions } from '@/components/data-table/table-utils/index';\nimport { Button } from '@/components/ui/button';\nimport { SearchInput } from '@/index';\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { Table } from '@tanstack/react-table';\nimport { useState } from 'react';\n\nexport default function Actions<TData>({\n table,\n tableActions,\n stateToPass,\n handleSearching,\n dataQuery,\n}: {\n table: Table<TData>;\n tableActions: TableActions;\n handleSearching: (value: string) => void;\n // TODO:Improve ts\n stateToPass: any;\n dataQuery: UseQueryResult<any, unknown>;\n}) {\n const { location: { href } = {} } = useRouterState();\n const [search, setSearch] = useState<string>('');\n return (\n <div className=\"flex justify-between my-0 py-2 gap-4 overflow-auto\">\n <div className=\"flex gap-2\">\n <Button\n loading={dataQuery.isFetching}\n icon={RotateCw}\n onClick={() => dataQuery.refetch()}\n variant={'outline'}\n />\n {/* //TODO: we can show the create, delete button based on permsission */}\n {/* All the creating routes will be with url /create in host app */}\n {tableActions.create && table.getSelectedRowModel().rows.length === 0 && (\n <Link to={`${href}/create`}>\n <Button disabled={dataQuery.isFetching} icon={Plus}>\n Create\n </Button>{' '}\n </Link>\n )}\n {/* All the updating routes will be with url /edit in host app */}\n {table.getSelectedRowModel().rows.length > 0 && tableActions.update && (\n <Link to={`${href}/edit`} state={stateToPass}>\n <Button disabled={dataQuery.isFetching} icon={Pencil}>\n Update\n </Button>\n </Link>\n )}\n {table.getSelectedRowModel().rows.length > 0 && tableActions?.delete && (\n <Link to={`${href}/delete`} state={stateToPass}>\n <Button disabled={dataQuery.isFetching} icon={Trash} variant={'destructive'}>\n Delete\n </Button>\n </Link>\n )}\n </div>\n {tableActions?.search && (\n <div className=\"relative flex gap-1 justify-center items-center\">\n <SearchInput\n value={search}\n onChange={(e) => {\n setSearch(e);\n handleSearching(e);\n }}\n />\n </div>\n )}\n </div>\n );\n}\n"],"names":["Actions","table","tableActions","stateToPass","handleSearching","dataQuery","href","useRouterState","search","setSearch","useState","jsxs","jsx","Button","RotateCw","Link","Plus","Pencil","Trash","SearchInput","e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,SAAwBA,GAAe;AAAA,EACrC,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AACF,GAOG;AACK,QAAA,EAAE,UAAU,EAAE,MAAAC,MAAS,CAAC,EAAA,IAAMC,EAAe,GAC7C,CAACC,GAAQC,CAAS,IAAIC,EAAiB,EAAE;AAE7C,SAAA,gBAAAC,EAAC,OAAI,EAAA,WAAU,uDACb,UAAA;AAAA,IAAC,gBAAAA,EAAA,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,SAASR,EAAU;AAAA,UACnB,MAAMS;AAAA,UACN,SAAS,MAAMT,EAAU,QAAQ;AAAA,UACjC,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,MAGCH,EAAa,UAAUD,EAAM,oBAAA,EAAsB,KAAK,WAAW,KACjE,gBAAAU,EAAAI,GAAA,EAAK,IAAI,GAAGT,CAAI,WACf,UAAA;AAAA,QAAA,gBAAAM,EAACC,KAAO,UAAUR,EAAU,YAAY,MAAMW,GAAM,UAEpD,UAAA;AAAA,QAAU;AAAA,MAAA,GACZ;AAAA,MAGDf,EAAM,oBAAoB,EAAE,KAAK,SAAS,KAAKC,EAAa,UAC1D,gBAAAU,EAAAG,GAAA,EAAK,IAAI,GAAGT,CAAI,SAAS,OAAOH,GAC/B,UAAA,gBAAAS,EAACC,GAAO,EAAA,UAAUR,EAAU,YAAY,MAAMY,GAAQ,UAAA,SAAA,CAEtD,EACF,CAAA;AAAA,MAEDhB,EAAM,oBAAoB,EAAE,KAAK,SAAS,MAAKC,KAAA,gBAAAA,EAAc,WAC5D,gBAAAU,EAACG,GAAK,EAAA,IAAI,GAAGT,CAAI,WAAW,OAAOH,GACjC,UAAC,gBAAAS,EAAAC,GAAA,EAAO,UAAUR,EAAU,YAAY,MAAMa,GAAO,SAAS,eAAe,UAAA,SAE7E,CAAA,EACF,CAAA;AAAA,IAAA,GAEJ;AAAA,KACChB,KAAA,gBAAAA,EAAc,WACZ,gBAAAU,EAAA,OAAA,EAAI,WAAU,mDACb,UAAA,gBAAAA;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,OAAOX;AAAA,QACP,UAAU,CAACY,MAAM;AACf,UAAAX,EAAUW,CAAC,GACXhB,EAAgBgB,CAAC;AAAA,QAAA;AAAA,MACnB;AAAA,IAAA,EAEJ,CAAA;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -41,12 +41,13 @@ const a = r(), i = [
41
41
  cell: ({ row: e }) => {
42
42
  const t = e.getValue("createdAt");
43
43
  return o(t);
44
- }
44
+ },
45
+ enableHiding: !1
45
46
  })
46
47
  ];
47
48
  export {
48
- i as CHECK_BOX,
49
- m as DEFAULT_DATE_COLUMNS,
50
- h as ID_COLUMN
49
+ i as TABLE_CHECK_BOX_COLUMN,
50
+ m as TABLE_DEFAULT_DATE_COLUMNS,
51
+ h as TABLE_ID_COLUMN
51
52
  };
52
53
  //# sourceMappingURL=table-commons.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-commons.es.js","sources":["../../../lib/components/data-table/table-commons.tsx"],"sourcesContent":["import { FormatDate } from '@/components/data-table/table-utils/index';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { createColumnHelper } from '@tanstack/react-table';\n\nconst cH = createColumnHelper<any>();\nexport const CHECK_BOX = [\n cH.accessor('checkbox', {\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate')\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all\"\n />\n ),\n\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n }),\n];\n\nexport const ID_COLUMN = [\n cH.accessor('id', {\n header: () => 'ID',\n }),\n];\nexport const DEFAULT_DATE_COLUMNS = [\n cH.accessor('createdAt', {\n header: () => 'Creation Date',\n cell: ({ row }) => {\n const date = row.getValue('createdAt') satisfies string | null | undefined;\n return FormatDate(date);\n },\n enableHiding: false,\n }),\n cH.accessor('updatedAt', {\n header: () => 'Last Updated',\n cell: ({ row }) => {\n const date = row.getValue('createdAt') satisfies string | null | undefined;\n return FormatDate(date);\n },\n }),\n];\n"],"names":["cH","createColumnHelper","CHECK_BOX","table","jsx","Checkbox","value","row","ID_COLUMN","DEFAULT_DATE_COLUMNS","date","FormatDate"],"mappings":";;;;AAIA,MAAMA,IAAKC,EAAwB,GACtBC,IAAY;AAAA,EACvBF,EAAG,SAAS,YAAY;AAAA,IACtB,QAAQ,CAAC,EAAE,OAAAG,EAAA,MACT,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SACEF,EAAM,yBAAA,KAA+BA,EAAM,0BAA+B,KAAA;AAAA,QAE5E,iBAAiB,CAACG,MAAUH,EAAM,0BAA0B,CAAC,CAACG,CAAK;AAAA,QACnE,cAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAGF,MAAM,CAAC,EAAE,KAAAC,EAAA,MACP,gBAAAH;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAASE,EAAI,cAAc;AAAA,QAC3B,iBAAiB,CAACD,MAAUC,EAAI,eAAe,CAAC,CAACD,CAAK;AAAA,QACtD,cAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEF,eAAe;AAAA,IACf,cAAc;AAAA,EACf,CAAA;AACH,GAEaE,IAAY;AAAA,EACvBR,EAAG,SAAS,MAAM;AAAA,IAChB,QAAQ,MAAM;AAAA,EACf,CAAA;AACH,GACaS,IAAuB;AAAA,EAClCT,EAAG,SAAS,aAAa;AAAA,IACvB,QAAQ,MAAM;AAAA,IACd,MAAM,CAAC,EAAE,KAAAO,QAAU;AACX,YAAAG,IAAOH,EAAI,SAAS,WAAW;AACrC,aAAOI,EAAWD,CAAI;AAAA,IACxB;AAAA,IACA,cAAc;AAAA,EAAA,CACf;AAAA,EACDV,EAAG,SAAS,aAAa;AAAA,IACvB,QAAQ,MAAM;AAAA,IACd,MAAM,CAAC,EAAE,KAAAO,QAAU;AACX,YAAAG,IAAOH,EAAI,SAAS,WAAW;AACrC,aAAOI,EAAWD,CAAI;AAAA,IAAA;AAAA,EAEzB,CAAA;AACH;"}
1
+ {"version":3,"file":"table-commons.es.js","sources":["../../../lib/components/data-table/table-commons.tsx"],"sourcesContent":["import { FormatDate } from '@/components/data-table/table-utils/index';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { createColumnHelper } from '@tanstack/react-table';\n\nconst cH = createColumnHelper<any>();\nexport const TABLE_CHECK_BOX_COLUMN = [\n cH.accessor('checkbox', {\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate')\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all\"\n />\n ),\n\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n })];\n\nexport const TABLE_ID_COLUMN = [\n cH.accessor('id', {\n header: () => 'ID',\n }),\n];\nexport const TABLE_DEFAULT_DATE_COLUMNS = [\n cH.accessor('createdAt', {\n header: () => 'Creation Date',\n cell: ({ row }) => {\n const date = row.getValue('createdAt') satisfies string | null | undefined;\n return FormatDate(date);\n },\n enableHiding: false,\n }),\n cH.accessor('updatedAt', {\n header: () => 'Last Updated',\n cell: ({ row }) => {\n const date = row.getValue('createdAt') satisfies string | null | undefined;\n return FormatDate(date);\n },\n enableHiding: false,\n }),\n];\n"],"names":["cH","createColumnHelper","TABLE_CHECK_BOX_COLUMN","table","jsx","Checkbox","value","row","TABLE_ID_COLUMN","TABLE_DEFAULT_DATE_COLUMNS","date","FormatDate"],"mappings":";;;;AAIA,MAAMA,IAAKC,EAAwB,GACtBC,IAAyB;AAAA,EACpCF,EAAG,SAAS,YAAY;AAAA,IACtB,QAAQ,CAAC,EAAE,OAAAG,EAAA,MACT,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SACEF,EAAM,yBAAA,KAA+BA,EAAM,0BAA+B,KAAA;AAAA,QAE5E,iBAAiB,CAACG,MAAUH,EAAM,0BAA0B,CAAC,CAACG,CAAK;AAAA,QACnE,cAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAGF,MAAM,CAAC,EAAE,KAAAC,EAAA,MACP,gBAAAH;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAASE,EAAI,cAAc;AAAA,QAC3B,iBAAiB,CAACD,MAAUC,EAAI,eAAe,CAAC,CAACD,CAAK;AAAA,QACtD,cAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEF,eAAe;AAAA,IACf,cAAc;AAAA,EACf,CAAA;AAAC,GAESE,IAAkB;AAAA,EAC7BR,EAAG,SAAS,MAAM;AAAA,IAChB,QAAQ,MAAM;AAAA,EACf,CAAA;AACH,GACaS,IAA6B;AAAA,EACxCT,EAAG,SAAS,aAAa;AAAA,IACvB,QAAQ,MAAM;AAAA,IACd,MAAM,CAAC,EAAE,KAAAO,QAAU;AACX,YAAAG,IAAOH,EAAI,SAAS,WAAW;AACrC,aAAOI,EAAWD,CAAI;AAAA,IACxB;AAAA,IACA,cAAc;AAAA,EAAA,CACf;AAAA,EACDV,EAAG,SAAS,aAAa;AAAA,IACvB,QAAQ,MAAM;AAAA,IACd,MAAM,CAAC,EAAE,KAAAO,QAAU;AACX,YAAAG,IAAOH,EAAI,SAAS,WAAW;AACrC,aAAOI,EAAWD,CAAI;AAAA,IACxB;AAAA,IACA,cAAc;AAAA,EACf,CAAA;AACH;"}
@@ -1,24 +1,22 @@
1
- import { jsxs as a, jsx as e, Fragment as m } from "react/jsx-runtime";
2
- import { Table as g, TableHeader as p, TableRow as c, TableCell as s, TableBody as h, TableFooter as u } from "../ui/table.es.js";
3
- import { flexRender as d } from "@tanstack/react-table";
4
- import { Info as f } from "lucide-react";
5
- function y({
6
- table: r,
7
- columns: i,
8
- dataQuery: o
1
+ import { jsxs as r, jsx as e, Fragment as m } from "react/jsx-runtime";
2
+ import { ACTIONS_COLUMN_ID as d } from "./data-table.es.js";
3
+ import { Table as h, TableHeader as f, TableRow as c, TableCell as i, TableBody as g, TableFooter as x } from "../ui/table.es.js";
4
+ import { flexRender as p } from "@tanstack/react-table";
5
+ import { Info as N } from "lucide-react";
6
+ function v({
7
+ table: s,
8
+ columns: u,
9
+ dataQuery: n
9
10
  }) {
10
- return /* @__PURE__ */ a(g, { className: "relative h-full w-full", children: [
11
- /* @__PURE__ */ e(p, { className: "sticky top-0 z-10", children: r.getHeaderGroups().map((n, l) => /* @__PURE__ */ e(c, { className: "border-b", children: n.headers.map((t) => /* @__PURE__ */ a(
12
- s,
11
+ var a;
12
+ return /* @__PURE__ */ r(h, { className: "relative h-full w-full", children: [
13
+ /* @__PURE__ */ e(f, { className: "sticky top-0 z-10", children: s.getHeaderGroups().map((o, l) => /* @__PURE__ */ e(c, { className: "border-b", children: o.headers.map((t) => /* @__PURE__ */ r(
14
+ i,
13
15
  {
14
- className: `
15
- px-4 py-2 text-left text-sm font-medium cursor-pointer whitespace-nowrap
16
- bg-card
17
- ${t.id === "actions" ? "sticky right-0 z-50 bg-card" : ""}
18
- `,
16
+ className: `px-4 py-2 cursor-pointer text-left text-sm font-medium whitespace-nowrap ${t.id === d ? "sticky right-0 z-50" : ""}`,
19
17
  onClick: t.column.getToggleSortingHandler(),
20
18
  children: [
21
- t.isPlaceholder ? null : d(t.column.columnDef.header, t.getContext()),
19
+ t.isPlaceholder ? null : p(t.column.columnDef.header, t.getContext()),
22
20
  {
23
21
  asc: "↑",
24
22
  desc: "↓"
@@ -27,24 +25,24 @@ function y({
27
25
  },
28
26
  t.id
29
27
  )) }, l)) }),
30
- /* @__PURE__ */ e(h, { className: "flex-1 overflow-y-auto", children: r.getRowModel().rows.length ? r.getRowModel().rows.map((n) => /* @__PURE__ */ e(c, { "data-state": n.getIsSelected() && "selected", children: n.getVisibleCells().map((l) => /* @__PURE__ */ e(
31
- s,
28
+ /* @__PURE__ */ e(g, { className: "flex-1 overflow-y-auto", children: s.getRowModel().rows.length ? s.getRowModel().rows.map((o) => /* @__PURE__ */ e(c, { "data-state": o.getIsSelected() && "selected", children: o.getVisibleCells().map((l) => /* @__PURE__ */ e(
29
+ i,
32
30
  {
33
31
  className: `
34
32
  px-4 py-2 text-left text-sm whitespace-nowrap
35
- ${l.column.id === "actions" ? "sticky right-0 bg-card text-center shadow-2xl" : ""}
33
+ ${l.column.id === d ? "sticky right-0 text-center" : ""}
36
34
  `,
37
- children: d(l.column.columnDef.cell, l.getContext())
35
+ children: p(l.column.columnDef.cell, l.getContext())
38
36
  },
39
37
  l.id
40
- )) }, n.id)) : /* @__PURE__ */ e(c, { className: "h-[55vh] hover:bg-transparent cursor-not-allowed", children: !o.isFetching && o.isError ? /* @__PURE__ */ e(m, { children: /* @__PURE__ */ e(s, { colSpan: i.length, className: "border-none ", children: /* @__PURE__ */ a("span", { className: "flex gap-3 justify-center align-middle items-center ", children: [
41
- /* @__PURE__ */ e(f, {}),
38
+ )) }, o.id)) : /* @__PURE__ */ e(c, { className: "h-[55vh] hover:bg-transparent cursor-not-allowed", children: /* @__PURE__ */ e(i, { colSpan: u.length, className: "border-none", children: /* @__PURE__ */ e("span", { className: "flex gap-3 justify-center items-center", children: !n.isFetching && (n.isError ? /* @__PURE__ */ r(m, { children: [
39
+ /* @__PURE__ */ e(N, {}),
42
40
  " You don't have the required permissions. Please contact your admin."
43
- ] }) }) }) : /* @__PURE__ */ e(s, { colSpan: i.length, children: /* @__PURE__ */ e("span", { className: "flex gap-3 justify-center align-middle items-center ", children: "No result found." }) }) }) }),
44
- o.isFetching && /* @__PURE__ */ e(u, { className: "absolute inset-0 z-20 flex justify-center items-center bg-card/80" })
41
+ ] }) : (a = n.data) != null && a.data ? null : /* @__PURE__ */ e(m, { children: "No result found." })) }) }) }) }),
42
+ n.isFetching && /* @__PURE__ */ e(x, { className: "absolute inset-0 z-20 flex justify-center items-center bg-card/80" })
45
43
  ] });
46
44
  }
47
45
  export {
48
- y as TableContent
46
+ v as TableContent
49
47
  };
50
48
  //# sourceMappingURL=table-content.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-content.es.js","sources":["../../../lib/components/data-table/table-content.tsx"],"sourcesContent":["import {\n Table as CxTable,\n TableBody,\n TableCell,\n TableFooter,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { ColumnDef, Table, flexRender } from '@tanstack/react-table';\nimport { Info } from 'lucide-react';\n\nexport function TableContent<TData, TValue>({\n table,\n columns,\n dataQuery,\n}: {\n table: Table<TData>;\n columns: ColumnDef<TData, TValue>[];\n dataQuery: UseQueryResult<any, unknown>;\n}) {\n return (\n <CxTable className=\"relative h-full w-full\">\n <TableHeader className=\"sticky top-0 z-10\">\n {table.getHeaderGroups().map((headerGroup, index) => (\n <TableRow key={index} className=\"border-b\">\n {headerGroup.headers.map((header) => (\n <TableCell\n key={header.id}\n className={`\n px-4 py-2 text-left text-sm font-medium cursor-pointer whitespace-nowrap \n bg-card \n ${header.id === 'actions' ? 'sticky right-0 z-50 bg-card' : ''}\n `}\n onClick={header.column.getToggleSortingHandler()}\n >\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n {{\n asc: '↑',\n desc: '↓',\n }[header.column.getIsSorted() as string] ?? null}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody className=\"flex-1 overflow-y-auto\">\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() && 'selected'}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className={`\n px-4 py-2 text-left text-sm whitespace-nowrap \n ${\n cell.column.id === 'actions'\n ? 'sticky right-0 bg-card text-center shadow-2xl'\n : ''\n }\n `}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow className=\"h-[55vh] hover:bg-transparent cursor-not-allowed\">\n {!dataQuery.isFetching && dataQuery.isError ? (\n <>\n <TableCell colSpan={columns.length} className=\"border-none \">\n <span className=\"flex gap-3 justify-center align-middle items-center \">\n <Info /> You don't have the required permissions. Please contact your admin.\n </span>\n </TableCell>\n </>\n ) : (\n <TableCell colSpan={columns.length}>\n <span className=\"flex gap-3 justify-center align-middle items-center \">\n No result found.\n </span>\n </TableCell>\n )}\n </TableRow>\n )}\n </TableBody>\n {/* Loader positioned to cover entire table viewport */}\n {dataQuery.isFetching && (\n <TableFooter className=\"absolute inset-0 z-20 flex justify-center items-center bg-card/80\" />\n )}\n </CxTable>\n );\n}\n"],"names":["TableContent","table","columns","dataQuery","jsxs","CxTable","jsx","TableHeader","headerGroup","index","TableRow","header","TableCell","flexRender","TableBody","row","cell","Fragment","Info","TableFooter"],"mappings":";;;;AAYO,SAASA,EAA4B;AAAA,EAC1C,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GAIG;AAEC,SAAA,gBAAAC,EAACC,GAAQ,EAAA,WAAU,0BACjB,UAAA;AAAA,IAAA,gBAAAC,EAACC,KAAY,WAAU,qBACpB,YAAM,gBAAgB,EAAE,IAAI,CAACC,GAAaC,MACzC,gBAAAH,EAACI,KAAqB,WAAU,YAC7B,YAAY,QAAQ,IAAI,CAACC,MACxB,gBAAAP;AAAA,MAACQ;AAAA,MAAA;AAAA,QAEC,WAAW;AAAA;AAAA;AAAA,oBAGPD,EAAO,OAAO,YAAY,gCAAgC,EAAE;AAAA;AAAA,QAEhE,SAASA,EAAO,OAAO,wBAAwB;AAAA,QAE9C,UAAA;AAAA,UAAOA,EAAA,gBACJ,OACAE,EAAWF,EAAO,OAAO,UAAU,QAAQA,EAAO,YAAY;AAAA,UACjE;AAAA,YACC,KAAK;AAAA,YACL,MAAM;AAAA,UACN,EAAAA,EAAO,OAAO,YAAA,CAAuB,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAdvCA,EAAO;AAAA,IAAA,CAgBf,EAAA,GAnBYF,CAoBf,CACD,GACH;AAAA,IACC,gBAAAH,EAAAQ,GAAA,EAAU,WAAU,0BAClB,UAAMb,EAAA,YAAA,EAAc,KAAK,SACxBA,EAAM,YAAY,EAAE,KAAK,IAAI,CAACc,MAC3B,gBAAAT,EAAAI,GAAA,EAAsB,cAAYK,EAAI,cAAc,KAAK,YACvD,UAAAA,EAAI,gBAAgB,EAAE,IAAI,CAACC,MAC1B,gBAAAV;AAAA,MAACM;AAAA,MAAA;AAAA,QAEC,WAAW;AAAA;AAAA,sBAGPI,EAAK,OAAO,OAAO,YACf,kDACA,EACN;AAAA;AAAA,QAGD,YAAWA,EAAK,OAAO,UAAU,MAAMA,EAAK,WAAY,CAAA;AAAA,MAAA;AAAA,MAVpDA,EAAK;AAAA,IAAA,CAYb,EAfY,GAAAD,EAAI,EAgBnB,CACD,IAED,gBAAAT,EAACI,GAAS,EAAA,WAAU,oDACjB,UAAA,CAACP,EAAU,cAAcA,EAAU,UAClC,gBAAAG,EAAAW,GAAA,EACE,UAAC,gBAAAX,EAAAM,GAAA,EAAU,SAASV,EAAQ,QAAQ,WAAU,iBAC5C,UAAA,gBAAAE,EAAC,QAAK,EAAA,WAAU,yDACd,UAAA;AAAA,MAAA,gBAAAE,EAACY,GAAK,EAAA;AAAA,MAAE;AAAA,IAAA,GACV,EACF,CAAA,EAAA,CACF,IAEA,gBAAAZ,EAACM,KAAU,SAASV,EAAQ,QAC1B,UAAA,gBAAAI,EAAC,UAAK,WAAU,wDAAuD,UAEvE,oBAAA,EAAA,CACF,EAEJ,CAAA,GAEJ;AAAA,IAECH,EAAU,cACR,gBAAAG,EAAAa,GAAA,EAAY,WAAU,oEAAoE,CAAA;AAAA,EAAA,GAE/F;AAEJ;"}
1
+ {"version":3,"file":"table-content.es.js","sources":["../../../lib/components/data-table/table-content.tsx"],"sourcesContent":["import { ACTIONS_COLUMN_ID } from '@/components/data-table/data-table';\nimport {\n Table as CxTable,\n TableBody,\n TableCell,\n TableFooter,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { ColumnDef, Table, flexRender } from '@tanstack/react-table';\nimport { Info } from 'lucide-react';\n\nexport function TableContent<TData, TValue>({\n table,\n columns,\n dataQuery,\n}: {\n table: Table<TData>;\n columns: ColumnDef<TData, TValue>[];\n dataQuery: UseQueryResult<any, unknown>;\n}) {\n return (\n <CxTable className=\"relative h-full w-full\">\n <TableHeader className=\"sticky top-0 z-10\">\n {table.getHeaderGroups().map((headerGroup, index) => (\n <TableRow key={index} className=\"border-b\">\n {headerGroup.headers.map((header) => (\n <TableCell\n key={header.id}\n className={`px-4 py-2 cursor-pointer text-left text-sm font-medium whitespace-nowrap ${header.id === ACTIONS_COLUMN_ID ? 'sticky right-0 z-50' : ''}`}\n onClick={header.column.getToggleSortingHandler()}\n >\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n {{\n asc: '↑',\n desc: '↓',\n }[header.column.getIsSorted() as string] ?? null}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody className=\"flex-1 overflow-y-auto\">\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() && 'selected'}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className={`\n px-4 py-2 text-left text-sm whitespace-nowrap \n ${cell.column.id === ACTIONS_COLUMN_ID\n ? 'sticky right-0 text-center'\n : ''\n }\n `}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow className=\"h-[55vh] hover:bg-transparent cursor-not-allowed\">\n <TableCell colSpan={columns.length} className=\"border-none\">\n <span className=\"flex gap-3 justify-center items-center\">\n {!dataQuery.isFetching && (\n dataQuery.isError ? (\n <>\n <Info /> You don't have the required permissions. Please contact your admin.\n </>\n ) : !dataQuery.data?.data ? (\n <>No result found.</>\n ) : null\n )}\n </span>\n </TableCell>\n </TableRow>\n\n )}\n </TableBody>\n {/* Loader positioned to cover entire table viewport */}\n {dataQuery.isFetching && (\n <TableFooter className=\"absolute inset-0 z-20 flex justify-center items-center bg-card/80\" />\n )}\n </CxTable>\n );\n}\n"],"names":["TableContent","table","columns","dataQuery","jsxs","CxTable","jsx","TableHeader","headerGroup","index","TableRow","header","TableCell","ACTIONS_COLUMN_ID","flexRender","TableBody","row","cell","Fragment","Info","_a","TableFooter"],"mappings":";;;;;AAaO,SAASA,EAA4B;AAAA,EAC1C,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GAIG;;AAEC,SAAA,gBAAAC,EAACC,GAAQ,EAAA,WAAU,0BACjB,UAAA;AAAA,IAAA,gBAAAC,EAACC,KAAY,WAAU,qBACpB,YAAM,gBAAgB,EAAE,IAAI,CAACC,GAAaC,MACzC,gBAAAH,EAACI,KAAqB,WAAU,YAC7B,YAAY,QAAQ,IAAI,CAACC,MACxB,gBAAAP;AAAA,MAACQ;AAAA,MAAA;AAAA,QAEC,WAAW,4EAA4ED,EAAO,OAAOE,IAAoB,wBAAwB,EAAE;AAAA,QACnJ,SAASF,EAAO,OAAO,wBAAwB;AAAA,QAE9C,UAAA;AAAA,UAAOA,EAAA,gBACJ,OACAG,EAAWH,EAAO,OAAO,UAAU,QAAQA,EAAO,YAAY;AAAA,UACjE;AAAA,YACC,KAAK;AAAA,YACL,MAAM;AAAA,UACN,EAAAA,EAAO,OAAO,YAAA,CAAuB,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAVvCA,EAAO;AAAA,IAAA,CAYf,EAAA,GAfYF,CAgBf,CACD,GACH;AAAA,IACC,gBAAAH,EAAAS,GAAA,EAAU,WAAU,0BAClB,UAAMd,EAAA,YAAA,EAAc,KAAK,SACxBA,EAAM,YAAY,EAAE,KAAK,IAAI,CAACe,MAC3B,gBAAAV,EAAAI,GAAA,EAAsB,cAAYM,EAAI,cAAc,KAAK,YACvD,UAAAA,EAAI,gBAAgB,EAAE,IAAI,CAACC,MAC1B,gBAAAX;AAAA,MAACM;AAAA,MAAA;AAAA,QAEC,WAAW;AAAA;AAAA,sBAEPK,EAAK,OAAO,OAAOJ,IACjB,+BACA,EACJ;AAAA;AAAA,QAGD,YAAWI,EAAK,OAAO,UAAU,MAAMA,EAAK,WAAY,CAAA;AAAA,MAAA;AAAA,MATpDA,EAAK;AAAA,IAAA,CAWb,EAdY,GAAAD,EAAI,EAenB,CACD,IAED,gBAAAV,EAACI,GAAS,EAAA,WAAU,oDAClB,UAAA,gBAAAJ,EAACM,GAAU,EAAA,SAASV,EAAQ,QAAQ,WAAU,eAC5C,UAAA,gBAAAI,EAAC,QAAK,EAAA,WAAU,0CACb,UAAA,CAACH,EAAU,eACVA,EAAU,UAEN,gBAAAC,EAAAc,GAAA,EAAA,UAAA;AAAA,MAAA,gBAAAZ,EAACa,GAAK,EAAA;AAAA,MAAE;AAAA,IAAA,EACV,CAAA,KACGC,IAAAjB,EAAU,SAAV,QAAAiB,EAAgB,OAEjB,OADA,gBAAAd,EAAAY,GAAA,EAAA,UAAA,mBAAA,CAAgB,GAGxB,CAAA,EACF,CAAA,EACF,CAAA,GAGJ;AAAA,IAECf,EAAU,cACR,gBAAAG,EAAAe,GAAA,EAAY,WAAU,oEAAoE,CAAA;AAAA,EAAA,GAE/F;AAEJ;"}