@orbe-agro/client-core 5.3.68 → 5.3.69

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.
@@ -1,119 +1,119 @@
1
- import { jsx as n, jsxs as g, Fragment as te } from "react/jsx-runtime";
2
- import { useRef as E, useEffect as M, useState as ne, useMemo as F, useImperativeHandle as oe, Fragment as le } from "react";
3
- import ae from "classnames";
4
- import { Table as j } from "../ui/Table/index.js";
1
+ import { jsx as n, jsxs as m, Fragment as le } from "react/jsx-runtime";
2
+ import ae from "../../assets/svg/FileNotFound.js";
3
+ import { Checkbox as re } from "../ui/Checkbox/index.js";
5
4
  import "../ui/Pagination/index.js";
6
5
  import "../ui/Select/index.js";
7
- import { Checkbox as re } from "../ui/Checkbox/index.js";
8
- import ie from "./loaders/TableRowSkeleton.js";
9
- import se from "./Loading.js";
10
- import ce from "../../assets/svg/FileNotFound.js";
11
- import { useReactTable as de, getSortedRowModel as ge, getPaginationRowModel as me, getFilteredRowModel as ue, getCoreRowModel as he, flexRender as D } from "@tanstack/react-table";
6
+ import { Table as $ } from "../ui/Table/index.js";
7
+ import { useReactTable as ie, getSortedRowModel as ce, getPaginationRowModel as se, getFilteredRowModel as de, getCoreRowModel as ge, flexRender as D } from "@tanstack/react-table";
8
+ import me from "classnames";
9
+ import { useRef as q, useEffect as C, useState as E, useMemo as H, useImperativeHandle as ue, Fragment as he } from "react";
12
10
  import { useTranslation as fe } from "react-i18next";
13
- import pe from "../ui/Pagination/Pagination.js";
14
- import Se from "../ui/Select/Select.js";
15
- const { Tr: S, Th: Ce, Td: I, THead: be, TBody: Re, Sorter: xe } = j, H = (f) => {
11
+ import Se from "./loaders/TableRowSkeleton.js";
12
+ import pe from "./Loading.js";
13
+ import Ce from "../ui/Pagination/Pagination.js";
14
+ import Re from "../ui/Select/Select.js";
15
+ const { Tr: p, Th: be, Td: T, THead: we, TBody: xe, Sorter: ve } = $, j = (s) => {
16
16
  const {
17
- indeterminate: m,
18
- onChange: p,
19
- onCheckBoxChange: a,
20
- onIndeterminateCheckBoxChange: c,
17
+ indeterminate: u,
18
+ onChange: S,
19
+ onCheckBoxChange: r,
20
+ onIndeterminateCheckBoxChange: d,
21
21
  ...o
22
- } = f, d = E(null);
23
- M(() => {
24
- typeof m == "boolean" && d.current && (d.current.indeterminate = !o.checked && m);
25
- }, [d, m]);
26
- const u = (l) => {
27
- p(l), a == null || a(l), c == null || c(l);
22
+ } = s, g = q(null);
23
+ C(() => {
24
+ typeof u == "boolean" && g.current && (g.current.indeterminate = !o.checked && u);
25
+ }, [g, u]);
26
+ const h = (a) => {
27
+ S(a), r == null || r(a), d == null || d(a);
28
28
  };
29
29
  return /* @__PURE__ */ n(
30
30
  re,
31
31
  {
32
- ref: d,
32
+ ref: g,
33
33
  className: "mb-0",
34
- onChange: (l, h) => u(h),
34
+ onChange: (a, f) => h(f),
35
35
  ...o
36
36
  }
37
37
  );
38
38
  };
39
- function Ee(f) {
39
+ function $e(s) {
40
40
  const {
41
- skeletonAvatarColumns: m,
42
- columns: p = [],
43
- data: a = [],
44
- customNoDataIcon: c,
41
+ skeletonAvatarColumns: u,
42
+ columns: S = [],
43
+ data: r = [],
44
+ customNoDataIcon: d,
45
45
  loading: o,
46
- noData: d,
47
- onCheckBoxChange: u,
48
- onIndeterminateCheckBoxChange: l,
49
- onPaginationChange: h,
50
- onSelectChange: C,
46
+ noData: g,
47
+ onCheckBoxChange: h,
48
+ onIndeterminateCheckBoxChange: a,
49
+ onPaginationChange: f,
50
+ onSelectChange: R,
51
51
  onSort: b,
52
- pageSizes: T = [10, 25, 50, 100],
53
- selectable: N = !1,
54
- skeletonAvatarProps: $,
55
- pagingData: y = {
52
+ pageSizes: N = [10, 25, 50, 100],
53
+ selectable: y = !1,
54
+ skeletonAvatarProps: B,
55
+ pagingData: P = {
56
56
  total: 0,
57
57
  pageIndex: 1,
58
58
  pageSize: 10
59
59
  },
60
- checkboxChecked: R,
61
- indeterminateCheckboxChecked: P,
62
- instanceId: q = "data-table",
63
- ref: B,
64
- renderSubComponent: O = () => null,
65
- getRowCanExpand: V = () => !1,
60
+ checkboxChecked: w,
61
+ indeterminateCheckboxChecked: A,
62
+ instanceId: O = "data-table",
63
+ ref: V,
64
+ renderSubComponent: L = () => null,
65
+ getRowCanExpand: W = () => !1,
66
66
  onSelectionChange: x,
67
- hidePagination: L = !1,
68
- ...W
69
- } = f, { pageSize: v, pageIndex: _, total: G } = y, [r, J] = ne(null), { t: K } = fe(), z = F(
70
- () => T.map((e) => ({
67
+ hidePagination: _ = !1,
68
+ ...G
69
+ } = s, { pageSize: v, pageIndex: J, total: K } = P, [i, Q] = E(null), [U, k] = E({}), { t: X } = fe(), z = H(
70
+ () => N.map((e) => ({
71
71
  value: e,
72
- label: `${e} / ${K("common.table.pageAbbr")}`
72
+ label: `${e} / ${X("common.table.pageAbbr")}`
73
73
  })),
74
- [T]
74
+ [N]
75
75
  );
76
- M(() => {
77
- if (Array.isArray(r)) {
78
- const e = r.length > 0 ? r[0].desc ? "desc" : "asc" : "", t = r.length > 0 ? r[0].id : "";
76
+ C(() => {
77
+ if (Array.isArray(i)) {
78
+ const e = i.length > 0 ? i[0].desc ? "desc" : "asc" : "", t = i.length > 0 ? i[0].id : "";
79
79
  b == null || b({ order: e, key: t });
80
80
  }
81
- }, [r]);
82
- const Q = (e, t) => {
83
- o || l == null || l(e, t);
84
- }, U = (e, t) => {
85
- o || u == null || u(e, t);
86
- }, w = F(() => {
87
- const e = p;
88
- return N ? [
81
+ }, [i]);
82
+ const Y = (e, t) => {
83
+ o || a == null || a(e, t);
84
+ }, Z = (e, t) => {
85
+ o || h == null || h(e, t);
86
+ }, M = H(() => {
87
+ const e = S;
88
+ return y ? [
89
89
  {
90
90
  id: "select",
91
91
  maxSize: 50,
92
92
  header: ({ table: t }) => /* @__PURE__ */ n(
93
- H,
93
+ j,
94
94
  {
95
- checked: P ? P(
95
+ checked: A ? A(
96
96
  t.getRowModel().rows
97
97
  ) : t.getIsAllRowsSelected(),
98
98
  indeterminate: t.getIsSomeRowsSelected(),
99
99
  onChange: t.getToggleAllRowsSelectedHandler(),
100
- onIndeterminateCheckBoxChange: (s) => {
101
- Q(
102
- s.target.checked,
100
+ onIndeterminateCheckBoxChange: (c) => {
101
+ Y(
102
+ c.target.checked,
103
103
  t.getRowModel().rows
104
104
  );
105
105
  }
106
106
  }
107
107
  ),
108
108
  cell: ({ row: t }) => /* @__PURE__ */ n(
109
- H,
109
+ j,
110
110
  {
111
- checked: R ? R(t.original) : t.getIsSelected(),
111
+ checked: w ? w(t.original) : t.getIsSelected(),
112
112
  disabled: !t.getCanSelect(),
113
113
  indeterminate: t.getIsSomeSelected(),
114
114
  onChange: t.getToggleSelectedHandler(),
115
- onCheckBoxChange: (s) => U(
116
- s.target.checked,
115
+ onCheckBoxChange: (c) => Z(
116
+ c.target.checked,
117
117
  t.original
118
118
  )
119
119
  }
@@ -121,53 +121,63 @@ function Ee(f) {
121
121
  },
122
122
  ...e
123
123
  ] : e;
124
- }, [p, N, o, R]), i = de({
125
- data: a,
124
+ }, [S, y, o, w]), l = ie({
125
+ data: r,
126
126
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
127
- columns: w,
128
- getCoreRowModel: he(),
129
- getFilteredRowModel: ue(),
130
- getPaginationRowModel: me(),
131
- getSortedRowModel: ge(),
127
+ columns: M,
128
+ getCoreRowModel: ge(),
129
+ getFilteredRowModel: de(),
130
+ getPaginationRowModel: se(),
131
+ getSortedRowModel: ce(),
132
132
  manualPagination: !0,
133
- manualSorting: f.manualSorting ?? !1,
133
+ manualSorting: s.manualSorting ?? !1,
134
134
  onSortingChange: (e) => {
135
- J(e);
135
+ Q(e);
136
136
  },
137
+ onRowSelectionChange: k,
137
138
  state: {
138
- sorting: r
139
+ sorting: i,
140
+ rowSelection: U
139
141
  },
140
- getRowCanExpand: V
141
- }), X = () => {
142
- i.resetSorting();
143
- }, A = () => {
144
- i.resetRowSelection(!0);
142
+ getRowCanExpand: W
143
+ }), ee = () => {
144
+ l.resetSorting();
145
+ }, F = () => {
146
+ l.resetRowSelection(!0);
145
147
  };
146
- oe(B, () => ({
147
- resetSorting: X,
148
- resetSelected: A
148
+ ue(V, () => ({
149
+ resetSorting: ee,
150
+ resetSelected: F
149
151
  }));
150
- const Y = (e) => {
151
- o || (A(), h == null || h(e));
152
- }, Z = (e) => {
153
- o || C == null || C(Number(e));
154
- }, k = E([]);
155
- return M(() => {
152
+ const te = (e) => {
153
+ o || (F(), f == null || f(e));
154
+ }, ne = (e) => {
155
+ o || R == null || R(Number(e));
156
+ }, I = q([]);
157
+ return C(() => {
156
158
  if (!x) return;
157
- const e = i.getSelectedRowModel().rows.map((s) => s.original);
158
- e.length === k.current.length && e.every(
159
- (s, ee) => s === k.current[ee]
160
- ) || (k.current = e, x(e));
161
- }, [i.getState().rowSelection, x, i]), /* @__PURE__ */ g(se, { loading: !!(o && a.length !== 0), type: "cover", children: [
162
- /* @__PURE__ */ g(j, { ...W, children: [
163
- /* @__PURE__ */ n(be, { children: i.getHeaderGroups().map((e) => /* @__PURE__ */ n(S, { children: e.headers.map((t) => /* @__PURE__ */ n(
164
- Ce,
159
+ const e = l.getSelectedRowModel().rows.map((c) => c.original);
160
+ e.length === I.current.length && e.every(
161
+ (c, oe) => c === I.current[oe]
162
+ ) || (I.current = e, x(e));
163
+ }, [l.getState().rowSelection, x, l]), C(() => {
164
+ if (s.isAllSelected && l) {
165
+ const e = {};
166
+ l.getRowModel().rows.forEach((t) => {
167
+ e[t.id] = !0;
168
+ }), k(e);
169
+ } else
170
+ k({});
171
+ }, [s.isAllSelected]), /* @__PURE__ */ m(pe, { loading: !!(o && r.length !== 0), type: "cover", children: [
172
+ /* @__PURE__ */ m($, { ...G, children: [
173
+ /* @__PURE__ */ n(we, { children: l.getHeaderGroups().map((e) => /* @__PURE__ */ n(p, { children: e.headers.map((t) => /* @__PURE__ */ n(
174
+ be,
165
175
  {
166
176
  colSpan: t.colSpan,
167
- children: t.isPlaceholder ? null : /* @__PURE__ */ g(
177
+ children: t.isPlaceholder ? null : /* @__PURE__ */ m(
168
178
  "div",
169
179
  {
170
- className: ae(
180
+ className: me(
171
181
  "flex items-center justify-between gap-1",
172
182
  t.column.getCanSort() && "cursor-pointer select-none",
173
183
  o && "pointer-events-none"
@@ -179,7 +189,7 @@ function Ee(f) {
179
189
  t.getContext()
180
190
  ) }),
181
191
  t.column.getCanSort() && /* @__PURE__ */ n(
182
- xe,
192
+ ve,
183
193
  {
184
194
  sort: t.column.getIsSorted()
185
195
  }
@@ -190,27 +200,27 @@ function Ee(f) {
190
200
  },
191
201
  t.id
192
202
  )) }, e.id)) }),
193
- o && a.length === 0 ? /* @__PURE__ */ n(
194
- ie,
203
+ o && r.length === 0 ? /* @__PURE__ */ n(
204
+ Se,
195
205
  {
196
- columns: w.length,
197
- rows: y.pageSize,
198
- avatarInColumns: m,
199
- avatarProps: $
206
+ columns: M.length,
207
+ rows: P.pageSize,
208
+ avatarInColumns: u,
209
+ avatarProps: B
200
210
  }
201
- ) : /* @__PURE__ */ n(Re, { children: d ? /* @__PURE__ */ n(S, { children: /* @__PURE__ */ n(
202
- I,
211
+ ) : /* @__PURE__ */ n(xe, { children: g ? /* @__PURE__ */ n(p, { children: /* @__PURE__ */ n(
212
+ T,
203
213
  {
204
214
  className: "hover:bg-transparent",
205
- colSpan: w.length,
206
- children: /* @__PURE__ */ n("div", { className: "flex flex-col items-center gap-4", children: c || /* @__PURE__ */ g(te, { children: [
207
- /* @__PURE__ */ n(ce, {}),
215
+ colSpan: M.length,
216
+ children: /* @__PURE__ */ n("div", { className: "flex flex-col items-center gap-4", children: d || /* @__PURE__ */ m(le, { children: [
217
+ /* @__PURE__ */ n(ae, {}),
208
218
  /* @__PURE__ */ n("span", { className: "font-semibold", children: "No data found!" })
209
219
  ] }) })
210
220
  }
211
- ) }) : i.getRowModel().rows.slice(0, v).map((e) => /* @__PURE__ */ g(le, { children: [
212
- /* @__PURE__ */ n(S, { children: e.getVisibleCells().map((t) => /* @__PURE__ */ n(
213
- I,
221
+ ) }) : l.getRowModel().rows.slice(0, v).map((e) => /* @__PURE__ */ m(he, { children: [
222
+ /* @__PURE__ */ n(p, { children: e.getVisibleCells().map((t) => /* @__PURE__ */ n(
223
+ T,
214
224
  {
215
225
  style: {
216
226
  width: t.column.getSize()
@@ -222,31 +232,31 @@ function Ee(f) {
222
232
  },
223
233
  t.id
224
234
  )) }, e.id),
225
- e.getIsExpanded() && /* @__PURE__ */ n(S, { children: /* @__PURE__ */ n(
226
- I,
235
+ e.getIsExpanded() && /* @__PURE__ */ n(p, { children: /* @__PURE__ */ n(
236
+ T,
227
237
  {
228
238
  colSpan: e.getVisibleCells().length,
229
- children: O(
239
+ children: L(
230
240
  e
231
241
  )
232
242
  }
233
243
  ) })
234
244
  ] }, e.id)) })
235
245
  ] }),
236
- !L && /* @__PURE__ */ g("div", { className: "mt-4 flex items-center justify-between", children: [
246
+ !_ && /* @__PURE__ */ m("div", { className: "mt-4 flex items-center justify-between", children: [
237
247
  /* @__PURE__ */ n(
238
- pe,
248
+ Ce,
239
249
  {
240
250
  pageSize: v,
241
- currentPage: _,
242
- total: G,
243
- onChange: Y
251
+ currentPage: J,
252
+ total: K,
253
+ onChange: te
244
254
  }
245
255
  ),
246
256
  /* @__PURE__ */ n("div", { style: { minWidth: 130 }, children: /* @__PURE__ */ n(
247
- Se,
257
+ Re,
248
258
  {
249
- instanceId: q,
259
+ instanceId: O,
250
260
  size: "sm",
251
261
  menuPlacement: "top",
252
262
  isSearchable: !1,
@@ -254,14 +264,14 @@ function Ee(f) {
254
264
  (e) => e.value === v
255
265
  ),
256
266
  options: z,
257
- onChange: (e) => Z(e == null ? void 0 : e.value)
267
+ onChange: (e) => ne(e == null ? void 0 : e.value)
258
268
  }
259
269
  ) })
260
270
  ] })
261
271
  ] });
262
272
  }
263
273
  export {
264
- Ee as DataTable,
265
- Ee as default
274
+ $e as DataTable,
275
+ $e as default
266
276
  };
267
277
  //# sourceMappingURL=DataTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sources":["../../../../lib/@ecme/components/shared/DataTable.tsx"],"sourcesContent":["import {\n useMemo,\n useRef,\n useEffect,\n useState,\n useImperativeHandle,\n Fragment,\n} from 'react'\nimport classNames from 'classnames'\nimport Table from '@/components/ui/Table'\nimport Pagination from '@/components/ui/Pagination'\nimport Select from '@/components/ui/Select'\nimport Checkbox from '@/components/ui/Checkbox'\nimport TableRowSkeleton from './loaders/TableRowSkeleton'\nimport Loading from './Loading'\nimport FileNotFound from '@/assets/svg/FileNotFound'\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n flexRender,\n ColumnDef,\n ColumnSort,\n Row,\n CellContext,\n} from '@tanstack/react-table'\nimport type { TableProps } from '@/components/ui/Table'\nimport type { SkeletonProps } from '@/components/ui/Skeleton'\nimport type { Ref, ChangeEvent, ReactNode } from 'react'\nimport type { CheckboxProps } from '@/components/ui/Checkbox'\nimport { useTranslation } from 'react-i18next'\n\nexport type OnSortParam = { order: 'asc' | 'desc' | ''; key: string | number }\n\nexport type DataTableProps<T> = {\n columns: ColumnDef<T>[]\n customNoDataIcon?: ReactNode\n data?: T[]\n loading?: boolean\n noData?: boolean\n instanceId?: string\n onCheckBoxChange?: (checked: boolean, row: T) => void\n onIndeterminateCheckBoxChange?: (checked: boolean, rows: Row<T>[]) => void\n onPaginationChange?: (page: number) => void\n onSelectChange?: (num: number) => void\n onSort?: (sort: OnSortParam) => void\n pageSizes?: number[]\n manualSorting?: boolean\n selectable?: boolean\n skeletonAvatarColumns?: number[]\n skeletonAvatarProps?: SkeletonProps\n pagingData?: {\n total: number\n pageIndex: number\n pageSize: number\n }\n checkboxChecked?: (row: T) => boolean\n indeterminateCheckboxChecked?: (row: Row<T>[]) => boolean\n ref?: Ref<DataTableResetHandle | HTMLTableElement>\n onSelectionChange?: (selected: T[]) => void\n renderSubComponent?: (row: Row<T>) => React.ReactNode\n getRowCanExpand?: (row: Row<T>) => boolean\n hidePagination?: boolean\n} & TableProps\n\nexport type CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>\n\nexport interface IndeterminateCheckboxProps\n extends Omit<CheckboxProps, 'onChange'> {\n onChange: (event: CheckBoxChangeEvent) => void\n indeterminate: boolean\n onCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n onIndeterminateCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n}\n\nconst { Tr, Th, Td, THead, TBody, Sorter } = Table\n\nconst IndeterminateCheckbox = (props: IndeterminateCheckboxProps) => {\n const {\n indeterminate,\n onChange,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n ...rest\n } = props\n\n const ref = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (typeof indeterminate === 'boolean' && ref.current) {\n ref.current.indeterminate = !rest.checked && indeterminate\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, indeterminate])\n\n const handleChange = (e: CheckBoxChangeEvent) => {\n onChange(e)\n onCheckBoxChange?.(e)\n onIndeterminateCheckBoxChange?.(e)\n }\n\n return (\n <Checkbox\n ref={ref}\n className=\"mb-0\"\n onChange={(_, e) => handleChange(e)}\n {...rest}\n />\n )\n}\n\nexport type DataTableResetHandle = {\n resetSorting: () => void\n resetSelected: () => void\n}\n\nfunction DataTable<T>(props: DataTableProps<T>) {\n const {\n skeletonAvatarColumns,\n columns: columnsProp = [],\n data = [],\n customNoDataIcon,\n loading,\n noData,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n onPaginationChange,\n onSelectChange,\n onSort,\n pageSizes = [10, 25, 50, 100],\n selectable = false,\n skeletonAvatarProps,\n pagingData = {\n total: 0,\n pageIndex: 1,\n pageSize: 10,\n },\n checkboxChecked,\n indeterminateCheckboxChecked,\n instanceId = 'data-table',\n ref,\n renderSubComponent = () => null,\n getRowCanExpand = () => false,\n onSelectionChange,\n hidePagination = false,\n ...rest\n } = props\n\n const { pageSize, pageIndex, total } = pagingData\n\n const [sorting, setSorting] = useState<ColumnSort[] | null>(null)\n\n const { t } = useTranslation()\n\n const pageSizeOption = useMemo(\n () =>\n pageSizes.map((number) => ({\n value: number,\n label: `${number} / ${t('common.table.pageAbbr')}`,\n })),\n [pageSizes],\n )\n\n useEffect(() => {\n if (Array.isArray(sorting)) {\n const sortOrder =\n sorting.length > 0 ? (sorting[0].desc ? 'desc' : 'asc') : ''\n const id = sorting.length > 0 ? sorting[0].id : ''\n onSort?.({ order: sortOrder, key: id })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sorting])\n\n const handleIndeterminateCheckBoxChange = (\n checked: boolean,\n rows: Row<T>[],\n ) => {\n if (!loading) {\n onIndeterminateCheckBoxChange?.(checked, rows)\n }\n }\n\n const handleCheckBoxChange = (checked: boolean, row: T) => {\n if (!loading) {\n onCheckBoxChange?.(checked, row)\n }\n }\n\n const finalColumns: ColumnDef<T>[] = useMemo(() => {\n const columns = columnsProp\n\n if (selectable) {\n return [\n {\n id: 'select',\n maxSize: 50,\n header: ({ table }) => (\n <IndeterminateCheckbox\n checked={\n indeterminateCheckboxChecked\n ? indeterminateCheckboxChecked(\n table.getRowModel().rows,\n )\n : table.getIsAllRowsSelected()\n }\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n onIndeterminateCheckBoxChange={(e) => {\n handleIndeterminateCheckBoxChange(\n e.target.checked,\n table.getRowModel().rows,\n )\n }}\n />\n ),\n cell: ({ row }) => (\n <IndeterminateCheckbox\n checked={\n checkboxChecked\n ? checkboxChecked(row.original)\n : row.getIsSelected()\n }\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onCheckBoxChange={(e) =>\n handleCheckBoxChange(\n e.target.checked,\n row.original,\n )\n }\n />\n ),\n },\n ...columns,\n ]\n }\n return columns\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnsProp, selectable, loading, checkboxChecked])\n\n const table = useReactTable({\n data,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: finalColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualPagination: true,\n manualSorting: props.manualSorting ?? false,\n onSortingChange: (sorter) => {\n setSorting(sorter as ColumnSort[])\n },\n state: {\n sorting: sorting as ColumnSort[],\n },\n getRowCanExpand,\n })\n\n const resetSorting = () => {\n table.resetSorting()\n }\n\n const resetSelected = () => {\n table.resetRowSelection(true)\n }\n\n useImperativeHandle(ref, () => ({\n resetSorting,\n resetSelected,\n }))\n\n const handlePaginationChange = (page: number) => {\n if (!loading) {\n resetSelected()\n onPaginationChange?.(page)\n }\n }\n\n const handleSelectChange = (value?: number) => {\n if (!loading) {\n onSelectChange?.(Number(value))\n }\n }\n\n const prevSelectedRef = useRef<T[]>([])\n\n useEffect(() => {\n if (!onSelectionChange) return\n\n const selectedRows = table\n .getSelectedRowModel()\n .rows.map((r) => r.original as T)\n\n const isEqual =\n selectedRows.length === prevSelectedRef.current.length &&\n selectedRows.every(\n (item, idx) => item === prevSelectedRef.current[idx],\n )\n\n if (!isEqual) {\n prevSelectedRef.current = selectedRows\n onSelectionChange(selectedRows)\n }\n }, [table.getState().rowSelection, onSelectionChange, table])\n\n return (\n <Loading loading={Boolean(loading && data.length !== 0)} type=\"cover\">\n <Table {...rest}>\n <THead>\n {table.getHeaderGroups().map((headerGroup) => (\n <Tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <Th\n key={header.id}\n colSpan={header.colSpan}\n >\n {header.isPlaceholder ? null : (\n <div\n className={classNames(\n 'flex items-center justify-between gap-1',\n header.column.getCanSort() &&\n 'cursor-pointer select-none',\n loading &&\n 'pointer-events-none',\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n <span className=\"truncate\">\n {flexRender(\n header.column.columnDef\n .header,\n header.getContext(),\n )}\n </span>\n {header.column.getCanSort() && (\n <Sorter\n sort={header.column.getIsSorted()}\n />\n )}\n </div>\n )}\n </Th>\n )\n })}\n </Tr>\n ))}\n </THead>\n {loading && data.length === 0 ? (\n <TableRowSkeleton\n columns={(finalColumns as Array<T>).length}\n rows={pagingData.pageSize}\n avatarInColumns={skeletonAvatarColumns}\n avatarProps={skeletonAvatarProps}\n />\n ) : (\n <TBody>\n {noData ? (\n <Tr>\n <Td\n className=\"hover:bg-transparent\"\n colSpan={finalColumns.length}\n >\n <div className=\"flex flex-col items-center gap-4\">\n {customNoDataIcon ? (\n customNoDataIcon\n ) : (\n <>\n <FileNotFound />\n <span className=\"font-semibold\">\n No data found!\n </span>\n </>\n )}\n </div>\n </Td>\n </Tr>\n ) : (\n table\n .getRowModel()\n .rows.slice(0, pageSize)\n .map((row) => {\n return (\n <Fragment key={row.id}>\n <Tr key={row.id}>\n {row\n .getVisibleCells()\n .map((cell) => {\n return (\n <Td\n key={cell.id}\n style={{\n width: cell.column.getSize(),\n }}\n >\n {flexRender(\n cell.column\n .columnDef\n .cell,\n cell.getContext(),\n )}\n </Td>\n )\n })}\n </Tr>\n {row.getIsExpanded() && (\n <Tr>\n <Td\n colSpan={\n row.getVisibleCells()\n .length\n }\n >\n {renderSubComponent(\n row,\n )}\n </Td>\n </Tr>\n )}\n </Fragment>\n )\n })\n )}\n </TBody>\n )}\n </Table>\n {!hidePagination && (\n <div className=\"mt-4 flex items-center justify-between\">\n <Pagination\n pageSize={pageSize}\n currentPage={pageIndex}\n total={total}\n onChange={handlePaginationChange}\n />\n <div style={{ minWidth: 130 }}>\n <Select\n instanceId={instanceId}\n size=\"sm\"\n menuPlacement=\"top\"\n isSearchable={false}\n value={pageSizeOption.filter(\n (option) => option.value === pageSize,\n )}\n options={pageSizeOption}\n onChange={(option) =>\n handleSelectChange(option?.value)\n }\n />\n </div>\n </div>\n )}\n </Loading>\n )\n}\n\nexport type { ColumnDef, Row, CellContext, ColumnSort }\nexport { DataTable }\nexport default DataTable\n"],"names":["Tr","Th","Td","THead","TBody","Sorter","Table","IndeterminateCheckbox","props","indeterminate","onChange","onCheckBoxChange","onIndeterminateCheckBoxChange","rest","ref","useRef","useEffect","handleChange","e","jsx","Checkbox","_","DataTable","skeletonAvatarColumns","columnsProp","data","customNoDataIcon","loading","noData","onPaginationChange","onSelectChange","onSort","pageSizes","selectable","skeletonAvatarProps","pagingData","checkboxChecked","indeterminateCheckboxChecked","instanceId","renderSubComponent","getRowCanExpand","onSelectionChange","hidePagination","pageSize","pageIndex","total","sorting","setSorting","useState","t","useTranslation","pageSizeOption","useMemo","number","sortOrder","id","handleIndeterminateCheckBoxChange","checked","rows","handleCheckBoxChange","row","finalColumns","columns","table","useReactTable","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","sorter","resetSorting","resetSelected","useImperativeHandle","handlePaginationChange","page","handleSelectChange","value","prevSelectedRef","selectedRows","r","item","idx","jsxs","Loading","headerGroup","header","classNames","flexRender","TableRowSkeleton","Fragment","FileNotFound","cell","Pagination","Select","option"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","sources":["../../../../lib/@ecme/components/shared/DataTable.tsx"],"sourcesContent":["import FileNotFound from '@/assets/svg/FileNotFound'\nimport type { CheckboxProps } from '@/components/ui/Checkbox'\nimport Checkbox from '@/components/ui/Checkbox'\nimport Pagination from '@/components/ui/Pagination'\nimport Select from '@/components/ui/Select'\nimport type { SkeletonProps } from '@/components/ui/Skeleton'\nimport type { TableProps } from '@/components/ui/Table'\nimport Table from '@/components/ui/Table'\nimport {\n CellContext,\n ColumnDef,\n ColumnSort,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n Row,\n useReactTable,\n} from '@tanstack/react-table'\nimport classNames from 'classnames'\nimport type { ChangeEvent, ReactNode, Ref } from 'react'\nimport {\n Fragment,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport TableRowSkeleton from './loaders/TableRowSkeleton'\nimport Loading from './Loading'\n\nexport type OnSortParam = { order: 'asc' | 'desc' | ''; key: string | number }\n\nexport type DataTableProps<T> = {\n columns: ColumnDef<T>[]\n customNoDataIcon?: ReactNode\n data?: T[]\n loading?: boolean\n noData?: boolean\n instanceId?: string\n onCheckBoxChange?: (checked: boolean, row: T) => void\n onIndeterminateCheckBoxChange?: (checked: boolean, rows: Row<T>[]) => void\n onPaginationChange?: (page: number) => void\n onSelectChange?: (num: number) => void\n onSort?: (sort: OnSortParam) => void\n pageSizes?: number[]\n manualSorting?: boolean\n selectable?: boolean\n skeletonAvatarColumns?: number[]\n skeletonAvatarProps?: SkeletonProps\n pagingData?: {\n total: number\n pageIndex: number\n pageSize: number\n }\n checkboxChecked?: (row: T) => boolean\n indeterminateCheckboxChecked?: (row: Row<T>[]) => boolean\n ref?: Ref<DataTableResetHandle | HTMLTableElement>\n onSelectionChange?: (selected: T[]) => void\n renderSubComponent?: (row: Row<T>) => React.ReactNode\n getRowCanExpand?: (row: Row<T>) => boolean\n hidePagination?: boolean\n isAllSelected?: boolean\n} & TableProps\n\nexport type CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>\n\nexport interface IndeterminateCheckboxProps\n extends Omit<CheckboxProps, 'onChange'> {\n onChange: (event: CheckBoxChangeEvent) => void\n indeterminate: boolean\n onCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n onIndeterminateCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n}\n\nconst { Tr, Th, Td, THead, TBody, Sorter } = Table\n\nconst IndeterminateCheckbox = (props: IndeterminateCheckboxProps) => {\n const {\n indeterminate,\n onChange,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n ...rest\n } = props\n\n const ref = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (typeof indeterminate === 'boolean' && ref.current) {\n ref.current.indeterminate = !rest.checked && indeterminate\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, indeterminate])\n\n const handleChange = (e: CheckBoxChangeEvent) => {\n onChange(e)\n onCheckBoxChange?.(e)\n onIndeterminateCheckBoxChange?.(e)\n }\n\n return (\n <Checkbox\n ref={ref}\n className=\"mb-0\"\n onChange={(_, e) => handleChange(e)}\n {...rest}\n />\n )\n}\n\nexport type DataTableResetHandle = {\n resetSorting: () => void\n resetSelected: () => void\n}\n\nfunction DataTable<T>(props: DataTableProps<T>) {\n const {\n skeletonAvatarColumns,\n columns: columnsProp = [],\n data = [],\n customNoDataIcon,\n loading,\n noData,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n onPaginationChange,\n onSelectChange,\n onSort,\n pageSizes = [10, 25, 50, 100],\n selectable = false,\n skeletonAvatarProps,\n pagingData = {\n total: 0,\n pageIndex: 1,\n pageSize: 10,\n },\n checkboxChecked,\n indeterminateCheckboxChecked,\n instanceId = 'data-table',\n ref,\n renderSubComponent = () => null,\n getRowCanExpand = () => false,\n onSelectionChange,\n hidePagination = false,\n ...rest\n } = props\n\n const { pageSize, pageIndex, total } = pagingData\n\n const [sorting, setSorting] = useState<ColumnSort[] | null>(null)\n const [selection, setRowSelection] = useState({})\n\n const { t } = useTranslation()\n\n const pageSizeOption = useMemo(\n () =>\n pageSizes.map((number) => ({\n value: number,\n label: `${number} / ${t('common.table.pageAbbr')}`,\n })),\n [pageSizes],\n )\n\n useEffect(() => {\n if (Array.isArray(sorting)) {\n const sortOrder =\n sorting.length > 0 ? (sorting[0].desc ? 'desc' : 'asc') : ''\n const id = sorting.length > 0 ? sorting[0].id : ''\n onSort?.({ order: sortOrder, key: id })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sorting])\n\n const handleIndeterminateCheckBoxChange = (\n checked: boolean,\n rows: Row<T>[],\n ) => {\n if (!loading) {\n onIndeterminateCheckBoxChange?.(checked, rows)\n }\n }\n\n const handleCheckBoxChange = (checked: boolean, row: T) => {\n if (!loading) {\n onCheckBoxChange?.(checked, row)\n }\n }\n\n const finalColumns: ColumnDef<T>[] = useMemo(() => {\n const columns = columnsProp\n\n if (selectable) {\n return [\n {\n id: 'select',\n maxSize: 50,\n header: ({ table }) => (\n <IndeterminateCheckbox\n checked={\n indeterminateCheckboxChecked\n ? indeterminateCheckboxChecked(\n table.getRowModel().rows,\n )\n : table.getIsAllRowsSelected()\n }\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n onIndeterminateCheckBoxChange={(e) => {\n handleIndeterminateCheckBoxChange(\n e.target.checked,\n table.getRowModel().rows,\n )\n }}\n />\n ),\n cell: ({ row }) => (\n <IndeterminateCheckbox\n checked={\n checkboxChecked\n ? checkboxChecked(row.original)\n : row.getIsSelected()\n }\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onCheckBoxChange={(e) =>\n handleCheckBoxChange(\n e.target.checked,\n row.original,\n )\n }\n />\n ),\n },\n ...columns,\n ]\n }\n return columns\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnsProp, selectable, loading, checkboxChecked])\n\n const table = useReactTable({\n data,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: finalColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualPagination: true,\n manualSorting: props.manualSorting ?? false,\n onSortingChange: (sorter) => {\n setSorting(sorter as ColumnSort[])\n },\n onRowSelectionChange: setRowSelection,\n state: {\n sorting: sorting as ColumnSort[],\n rowSelection: selection,\n },\n getRowCanExpand,\n })\n\n const resetSorting = () => {\n table.resetSorting()\n }\n\n const resetSelected = () => {\n table.resetRowSelection(true)\n }\n\n useImperativeHandle(ref, () => ({\n resetSorting,\n resetSelected,\n }))\n\n const handlePaginationChange = (page: number) => {\n if (!loading) {\n resetSelected()\n onPaginationChange?.(page)\n }\n }\n\n const handleSelectChange = (value?: number) => {\n if (!loading) {\n onSelectChange?.(Number(value))\n }\n }\n\n const prevSelectedRef = useRef<T[]>([])\n\n useEffect(() => {\n if (!onSelectionChange) return\n\n const selectedRows = table\n .getSelectedRowModel()\n .rows.map((r) => r.original as T)\n\n const isEqual =\n selectedRows.length === prevSelectedRef.current.length &&\n selectedRows.every(\n (item, idx) => item === prevSelectedRef.current[idx],\n )\n\n if (!isEqual) {\n prevSelectedRef.current = selectedRows\n onSelectionChange(selectedRows)\n }\n }, [table.getState().rowSelection, onSelectionChange, table])\n\n useEffect(() => {\n if (props.isAllSelected && table) {\n const all = {}\n table.getRowModel().rows.forEach((row) => {\n all[row.id] = true\n })\n setRowSelection(all)\n } else {\n setRowSelection({})\n }\n }, [props.isAllSelected])\n\n return (\n <Loading loading={Boolean(loading && data.length !== 0)} type=\"cover\">\n <Table {...rest}>\n <THead>\n {table.getHeaderGroups().map((headerGroup) => (\n <Tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <Th\n key={header.id}\n colSpan={header.colSpan}\n >\n {header.isPlaceholder ? null : (\n <div\n className={classNames(\n 'flex items-center justify-between gap-1',\n header.column.getCanSort() &&\n 'cursor-pointer select-none',\n loading &&\n 'pointer-events-none',\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n <span className=\"truncate\">\n {flexRender(\n header.column.columnDef\n .header,\n header.getContext(),\n )}\n </span>\n {header.column.getCanSort() && (\n <Sorter\n sort={header.column.getIsSorted()}\n />\n )}\n </div>\n )}\n </Th>\n )\n })}\n </Tr>\n ))}\n </THead>\n {loading && data.length === 0 ? (\n <TableRowSkeleton\n columns={(finalColumns as Array<T>).length}\n rows={pagingData.pageSize}\n avatarInColumns={skeletonAvatarColumns}\n avatarProps={skeletonAvatarProps}\n />\n ) : (\n <TBody>\n {noData ? (\n <Tr>\n <Td\n className=\"hover:bg-transparent\"\n colSpan={finalColumns.length}\n >\n <div className=\"flex flex-col items-center gap-4\">\n {customNoDataIcon ? (\n customNoDataIcon\n ) : (\n <>\n <FileNotFound />\n <span className=\"font-semibold\">\n No data found!\n </span>\n </>\n )}\n </div>\n </Td>\n </Tr>\n ) : (\n table\n .getRowModel()\n .rows.slice(0, pageSize)\n .map((row) => {\n return (\n <Fragment key={row.id}>\n <Tr key={row.id}>\n {row\n .getVisibleCells()\n .map((cell) => {\n return (\n <Td\n key={cell.id}\n style={{\n width: cell.column.getSize(),\n }}\n >\n {flexRender(\n cell.column\n .columnDef\n .cell,\n cell.getContext(),\n )}\n </Td>\n )\n })}\n </Tr>\n {row.getIsExpanded() && (\n <Tr>\n <Td\n colSpan={\n row.getVisibleCells()\n .length\n }\n >\n {renderSubComponent(\n row,\n )}\n </Td>\n </Tr>\n )}\n </Fragment>\n )\n })\n )}\n </TBody>\n )}\n </Table>\n {!hidePagination && (\n <div className=\"mt-4 flex items-center justify-between\">\n <Pagination\n pageSize={pageSize}\n currentPage={pageIndex}\n total={total}\n onChange={handlePaginationChange}\n />\n <div style={{ minWidth: 130 }}>\n <Select\n instanceId={instanceId}\n size=\"sm\"\n menuPlacement=\"top\"\n isSearchable={false}\n value={pageSizeOption.filter(\n (option) => option.value === pageSize,\n )}\n options={pageSizeOption}\n onChange={(option) =>\n handleSelectChange(option?.value)\n }\n />\n </div>\n </div>\n )}\n </Loading>\n )\n}\n\nexport { DataTable }\nexport type { CellContext, ColumnDef, ColumnSort, Row }\nexport default DataTable\n"],"names":["Tr","Th","Td","THead","TBody","Sorter","Table","IndeterminateCheckbox","props","indeterminate","onChange","onCheckBoxChange","onIndeterminateCheckBoxChange","rest","ref","useRef","useEffect","handleChange","e","jsx","Checkbox","_","DataTable","skeletonAvatarColumns","columnsProp","data","customNoDataIcon","loading","noData","onPaginationChange","onSelectChange","onSort","pageSizes","selectable","skeletonAvatarProps","pagingData","checkboxChecked","indeterminateCheckboxChecked","instanceId","renderSubComponent","getRowCanExpand","onSelectionChange","hidePagination","pageSize","pageIndex","total","sorting","setSorting","useState","selection","setRowSelection","t","useTranslation","pageSizeOption","useMemo","number","sortOrder","id","handleIndeterminateCheckBoxChange","checked","rows","handleCheckBoxChange","row","finalColumns","columns","table","useReactTable","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","sorter","resetSorting","resetSelected","useImperativeHandle","handlePaginationChange","page","handleSelectChange","value","prevSelectedRef","selectedRows","r","item","idx","all","jsxs","Loading","headerGroup","header","classNames","flexRender","TableRowSkeleton","Fragment","FileNotFound","cell","Pagination","Select","option"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { ColumnDef, ColumnSort, Row, CellContext } from '@tanstack/react-table';
2
- import type { TableProps } from '@/components/ui/Table';
3
- import type { SkeletonProps } from '@/components/ui/Skeleton';
4
- import type { Ref, ChangeEvent, ReactNode } from 'react';
5
1
  import type { CheckboxProps } from '@/components/ui/Checkbox';
2
+ import type { SkeletonProps } from '@/components/ui/Skeleton';
3
+ import type { TableProps } from '@/components/ui/Table';
4
+ import { CellContext, ColumnDef, ColumnSort, Row } from '@tanstack/react-table';
5
+ import type { ChangeEvent, ReactNode, Ref } from 'react';
6
6
  export type OnSortParam = {
7
7
  order: 'asc' | 'desc' | '';
8
8
  key: string | number;
@@ -36,6 +36,7 @@ export type DataTableProps<T> = {
36
36
  renderSubComponent?: (row: Row<T>) => React.ReactNode;
37
37
  getRowCanExpand?: (row: Row<T>) => boolean;
38
38
  hidePagination?: boolean;
39
+ isAllSelected?: boolean;
39
40
  } & TableProps;
40
41
  export type CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>;
41
42
  export interface IndeterminateCheckboxProps extends Omit<CheckboxProps, 'onChange'> {
@@ -49,7 +50,7 @@ export type DataTableResetHandle = {
49
50
  resetSelected: () => void;
50
51
  };
51
52
  declare function DataTable<T>(props: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
52
- export type { ColumnDef, Row, CellContext, ColumnSort };
53
53
  export { DataTable };
54
+ export type { CellContext, ColumnDef, ColumnSort, Row };
54
55
  export default DataTable;
55
56
  //# sourceMappingURL=DataTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../lib/@ecme/components/shared/DataTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../lib/@ecme/components/shared/DataTable.tsx"],"names":[],"mappings":"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"}
@@ -1,36 +1,36 @@
1
- import {
2
- useMemo,
3
- useRef,
4
- useEffect,
5
- useState,
6
- useImperativeHandle,
7
- Fragment,
8
- } from 'react'
9
- import classNames from 'classnames'
10
- import Table from '@/components/ui/Table'
1
+ import FileNotFound from '@/assets/svg/FileNotFound'
2
+ import type { CheckboxProps } from '@/components/ui/Checkbox'
3
+ import Checkbox from '@/components/ui/Checkbox'
11
4
  import Pagination from '@/components/ui/Pagination'
12
5
  import Select from '@/components/ui/Select'
13
- import Checkbox from '@/components/ui/Checkbox'
14
- import TableRowSkeleton from './loaders/TableRowSkeleton'
15
- import Loading from './Loading'
16
- import FileNotFound from '@/assets/svg/FileNotFound'
6
+ import type { SkeletonProps } from '@/components/ui/Skeleton'
7
+ import type { TableProps } from '@/components/ui/Table'
8
+ import Table from '@/components/ui/Table'
17
9
  import {
18
- useReactTable,
10
+ CellContext,
11
+ ColumnDef,
12
+ ColumnSort,
13
+ flexRender,
19
14
  getCoreRowModel,
20
15
  getFilteredRowModel,
21
16
  getPaginationRowModel,
22
17
  getSortedRowModel,
23
- flexRender,
24
- ColumnDef,
25
- ColumnSort,
26
18
  Row,
27
- CellContext,
19
+ useReactTable,
28
20
  } from '@tanstack/react-table'
29
- import type { TableProps } from '@/components/ui/Table'
30
- import type { SkeletonProps } from '@/components/ui/Skeleton'
31
- import type { Ref, ChangeEvent, ReactNode } from 'react'
32
- import type { CheckboxProps } from '@/components/ui/Checkbox'
21
+ import classNames from 'classnames'
22
+ import type { ChangeEvent, ReactNode, Ref } from 'react'
23
+ import {
24
+ Fragment,
25
+ useEffect,
26
+ useImperativeHandle,
27
+ useMemo,
28
+ useRef,
29
+ useState
30
+ } from 'react'
33
31
  import { useTranslation } from 'react-i18next'
32
+ import TableRowSkeleton from './loaders/TableRowSkeleton'
33
+ import Loading from './Loading'
34
34
 
35
35
  export type OnSortParam = { order: 'asc' | 'desc' | ''; key: string | number }
36
36
 
@@ -63,6 +63,7 @@ export type DataTableProps<T> = {
63
63
  renderSubComponent?: (row: Row<T>) => React.ReactNode
64
64
  getRowCanExpand?: (row: Row<T>) => boolean
65
65
  hidePagination?: boolean
66
+ isAllSelected?: boolean
66
67
  } & TableProps
67
68
 
68
69
  export type CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>
@@ -151,6 +152,7 @@ function DataTable<T>(props: DataTableProps<T>) {
151
152
  const { pageSize, pageIndex, total } = pagingData
152
153
 
153
154
  const [sorting, setSorting] = useState<ColumnSort[] | null>(null)
155
+ const [selection, setRowSelection] = useState({})
154
156
 
155
157
  const { t } = useTranslation()
156
158
 
@@ -254,8 +256,10 @@ function DataTable<T>(props: DataTableProps<T>) {
254
256
  onSortingChange: (sorter) => {
255
257
  setSorting(sorter as ColumnSort[])
256
258
  },
259
+ onRowSelectionChange: setRowSelection,
257
260
  state: {
258
261
  sorting: sorting as ColumnSort[],
262
+ rowSelection: selection,
259
263
  },
260
264
  getRowCanExpand,
261
265
  })
@@ -307,6 +311,18 @@ function DataTable<T>(props: DataTableProps<T>) {
307
311
  }
308
312
  }, [table.getState().rowSelection, onSelectionChange, table])
309
313
 
314
+ useEffect(() => {
315
+ if (props.isAllSelected && table) {
316
+ const all = {}
317
+ table.getRowModel().rows.forEach((row) => {
318
+ all[row.id] = true
319
+ })
320
+ setRowSelection(all)
321
+ } else {
322
+ setRowSelection({})
323
+ }
324
+ }, [props.isAllSelected])
325
+
310
326
  return (
311
327
  <Loading loading={Boolean(loading && data.length !== 0)} type="cover">
312
328
  <Table {...rest}>
@@ -457,6 +473,6 @@ function DataTable<T>(props: DataTableProps<T>) {
457
473
  )
458
474
  }
459
475
 
460
- export type { ColumnDef, Row, CellContext, ColumnSort }
461
476
  export { DataTable }
477
+ export type { CellContext, ColumnDef, ColumnSort, Row }
462
478
  export default DataTable
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbe-agro/client-core",
3
- "version": "5.3.68",
3
+ "version": "5.3.69",
4
4
  "description": "Biblioteca principal de componentes e utilidades para os microfrontends do Orbe Agro.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",