@dmsi/wedgekit-react 0.0.230 → 0.0.232

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 (57) hide show
  1. package/dist/{chunk-2RUQFWER.js → chunk-2VRZB2A4.js} +1 -1
  2. package/dist/{chunk-A76MF7ZO.js → chunk-3M23BFB4.js} +2 -2
  3. package/dist/{chunk-7W4I2NK3.js → chunk-5JVMULVC.js} +12 -2
  4. package/dist/{chunk-2WRRRPEB.js → chunk-7BBXPM5C.js} +1 -1
  5. package/dist/{chunk-XOUEHNCC.js → chunk-Q7ETEWBW.js} +1 -1
  6. package/dist/chunk-SQJ7MWY7.js +493 -0
  7. package/dist/chunk-VZVPD3XK.js +1182 -0
  8. package/dist/components/CalendarRange.cjs +4066 -224
  9. package/dist/components/CalendarRange.css +4831 -0
  10. package/dist/components/CalendarRange.js +23 -1
  11. package/dist/components/DataGridCell.cjs +12 -2
  12. package/dist/components/DataGridCell.js +3 -3
  13. package/dist/components/DateInput.cjs +3682 -329
  14. package/dist/components/DateInput.css +4831 -0
  15. package/dist/components/DateInput.js +23 -5
  16. package/dist/components/DateRangeInput.cjs +3682 -329
  17. package/dist/components/DateRangeInput.css +4831 -0
  18. package/dist/components/DateRangeInput.js +23 -5
  19. package/dist/components/FilterGroup.cjs +12 -2
  20. package/dist/components/FilterGroup.js +7 -7
  21. package/dist/components/Input.cjs +12 -2
  22. package/dist/components/Input.js +1 -1
  23. package/dist/components/MobileDataGrid.js +3 -3
  24. package/dist/components/Modal.js +4 -4
  25. package/dist/components/ModalButtons.js +2 -2
  26. package/dist/components/ModalHeader.js +2 -2
  27. package/dist/components/NavigationTab.js +2 -2
  28. package/dist/components/NavigationTabs.js +2 -2
  29. package/dist/components/Notification.js +3 -3
  30. package/dist/components/OptionPill.js +2 -2
  31. package/dist/components/PDFViewer.js +6 -6
  32. package/dist/components/Password.cjs +12 -2
  33. package/dist/components/Password.js +1 -1
  34. package/dist/components/Search.cjs +12 -2
  35. package/dist/components/Search.js +2 -2
  36. package/dist/components/Select.cjs +12 -2
  37. package/dist/components/Select.js +2 -2
  38. package/dist/components/Stepper.cjs +12 -2
  39. package/dist/components/Stepper.js +4 -4
  40. package/dist/components/Time.cjs +12 -2
  41. package/dist/components/Time.js +1 -1
  42. package/dist/components/Toast.js +3 -3
  43. package/dist/components/Upload.js +3 -3
  44. package/dist/components/index.cjs +12 -2
  45. package/dist/components/index.css +3 -0
  46. package/dist/components/index.js +12 -1142
  47. package/dist/index.css +3 -0
  48. package/package.json +1 -1
  49. package/src/components/CalendarRange.tsx +316 -165
  50. package/src/components/DateInput.tsx +1 -0
  51. package/src/components/DateRangeInput.tsx +1 -0
  52. package/src/components/Input.tsx +19 -5
  53. package/dist/chunk-SE5DM2IJ.js +0 -350
  54. package/dist/{chunk-ED7FXZRX.js → chunk-BW2MWMVM.js} +3 -3
  55. package/dist/{chunk-FYW64H7N.js → chunk-JFPRYMID.js} +3 -3
  56. package/dist/{chunk-A5ROZWIH.js → chunk-R4H6D4SZ.js} +3 -3
  57. package/dist/{chunk-47KTDBGA.js → chunk-T7UCZWWK.js} +3 -3
@@ -0,0 +1,1182 @@
1
+ import {
2
+ Tooltip
3
+ } from "./chunk-3WNXMCZV.js";
4
+ import {
5
+ Select
6
+ } from "./chunk-2VRZB2A4.js";
7
+ import {
8
+ Checkbox
9
+ } from "./chunk-E3UOI2D2.js";
10
+ import {
11
+ DataCellHeader,
12
+ DataGridCell,
13
+ DragAlongCell,
14
+ DraggableCellHeader
15
+ } from "./chunk-Q7ETEWBW.js";
16
+ import {
17
+ Menu
18
+ } from "./chunk-NA3ODQCN.js";
19
+ import {
20
+ MenuOption
21
+ } from "./chunk-QHHNFGEX.js";
22
+ import {
23
+ useInfiniteScroll,
24
+ useTableLayout
25
+ } from "./chunk-ZU2K7BD3.js";
26
+ import {
27
+ Search
28
+ } from "./chunk-7BBXPM5C.js";
29
+ import {
30
+ Input
31
+ } from "./chunk-5JVMULVC.js";
32
+ import {
33
+ Label
34
+ } from "./chunk-CJVTFYI4.js";
35
+ import {
36
+ Subheader
37
+ } from "./chunk-KGVKHWUK.js";
38
+ import {
39
+ Paragraph
40
+ } from "./chunk-CJELWEO2.js";
41
+ import {
42
+ Icon
43
+ } from "./chunk-UAPWR2KE.js";
44
+ import {
45
+ Button
46
+ } from "./chunk-SK742QNF.js";
47
+ import {
48
+ componentGap,
49
+ componentPadding
50
+ } from "./chunk-RDLEIAQU.js";
51
+ import {
52
+ __objRest,
53
+ __spreadProps,
54
+ __spreadValues
55
+ } from "./chunk-BBZEL7EG.js";
56
+
57
+ // src/components/DataGrid/index.tsx
58
+ import React3, { useCallback, useEffect, useId, useState as useState3 } from "react";
59
+ import {
60
+ flexRender as flexRender3,
61
+ getCoreRowModel,
62
+ getFilteredRowModel,
63
+ getSortedRowModel,
64
+ useReactTable
65
+ } from "@tanstack/react-table";
66
+ import {
67
+ closestCenter,
68
+ DndContext,
69
+ KeyboardSensor,
70
+ MouseSensor,
71
+ TouchSensor,
72
+ useSensor,
73
+ useSensors
74
+ } from "@dnd-kit/core";
75
+ import {
76
+ arrayMove,
77
+ horizontalListSortingStrategy,
78
+ SortableContext
79
+ } from "@dnd-kit/sortable";
80
+ import { restrictToHorizontalAxis } from "@dnd-kit/modifiers";
81
+ import { useVirtualizer as useVirtualizer2 } from "@tanstack/react-virtual";
82
+ import clsx5 from "clsx";
83
+
84
+ // src/components/DataGrid/PinnedColumns.tsx
85
+ import { flexRender as flexRender2 } from "@tanstack/react-table";
86
+ import clsx4 from "clsx";
87
+
88
+ // src/components/DataGrid/utils.tsx
89
+ import clsx from "clsx";
90
+ import { jsx } from "react/jsx-runtime";
91
+ function getSortIcon(sort, nextSort = false) {
92
+ const iconClassName = clsx(
93
+ "text-icon-on-action-primary-normal",
94
+ nextSort && "hidden group-hover:block"
95
+ );
96
+ if (sort === "asc")
97
+ return /* @__PURE__ */ jsx(Icon, { size: 16, className: iconClassName, name: "arrow_upward" });
98
+ if (sort === "desc")
99
+ return /* @__PURE__ */ jsx(Icon, { size: 16, className: iconClassName, name: "arrow_downward" });
100
+ return null;
101
+ }
102
+
103
+ // src/components/DataGrid/PinnedColumns.tsx
104
+ import React2 from "react";
105
+
106
+ // src/components/DataGrid/TableBody/index.tsx
107
+ import { useVirtualizer } from "@tanstack/react-virtual";
108
+ import clsx3 from "clsx";
109
+
110
+ // src/components/DataGrid/TableBody/TableBodyRow.tsx
111
+ import clsx2 from "clsx";
112
+ import { flexRender } from "@tanstack/react-table";
113
+ import React from "react";
114
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
115
+ function TableBodyRow({
116
+ id,
117
+ testid,
118
+ columnVirtualizer,
119
+ row,
120
+ // rowVirtualizer,
121
+ virtualPaddingLeft,
122
+ virtualPaddingRight,
123
+ virtualRow,
124
+ showFilterRow,
125
+ enableColumnSelector = false,
126
+ locked,
127
+ pinDirection
128
+ }) {
129
+ var _a;
130
+ let visibleCells;
131
+ if (locked) {
132
+ visibleCells = pinDirection === "left" ? row.getLeftVisibleCells() : row.getRightVisibleCells();
133
+ } else {
134
+ visibleCells = row.getCenterVisibleCells();
135
+ }
136
+ const virtualColumns = (_a = columnVirtualizer == null ? void 0 : columnVirtualizer.getVirtualItems()) != null ? _a : [];
137
+ const columns = locked ? visibleCells : virtualColumns;
138
+ const isError = typeof row.original === "object" && row.original !== null && "rowState" in row.original && row.original.rowState === "error";
139
+ const CellElement = locked ? DataGridCell : DragAlongCell;
140
+ return /* @__PURE__ */ jsxs(
141
+ "tr",
142
+ {
143
+ className: clsx2(
144
+ "min-h-10",
145
+ "transition-colors hover:bg-background-action-secondary-hover",
146
+ row.getIsSelected() && "!bg-background-action-secondary-hover",
147
+ isError && "!bg-background-action-critical-secondary-hover",
148
+ showFilterRow ? "even:bg-background-grouped-primary-normal odd:bg-background-grouped-secondary-normal" : "odd:bg-background-grouped-primary-normal even:bg-background-grouped-secondary-normal"
149
+ ),
150
+ id: id ? `${id}-row-${row.id}` : void 0,
151
+ "data-testid": testid ? `${testid}-row-${row.id}` : void 0,
152
+ style: {
153
+ display: "flex",
154
+ position: "absolute",
155
+ transform: `translateY(${showFilterRow ? virtualRow.start + 40 : virtualRow.start}px)`,
156
+ width: "100%"
157
+ },
158
+ children: [
159
+ !locked && virtualPaddingLeft ? (
160
+ // fake empty column to the left for virtualization scroll padding
161
+ /* @__PURE__ */ jsx2("td", { style: { display: "flex", width: virtualPaddingLeft } })
162
+ ) : null,
163
+ columns.map((column) => {
164
+ var _a2, _b;
165
+ const cell = locked ? column : visibleCells[column.index];
166
+ if (!cell) {
167
+ return;
168
+ }
169
+ const cellAlignment = (_a2 = cell.column.columnDef.meta) == null ? void 0 : _a2.align;
170
+ const cellValue = cell.getValue();
171
+ return ((_b = cell.column.columnDef.meta) == null ? void 0 : _b.useCustomRenderer) ? /* @__PURE__ */ jsx2(React.Fragment, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id) : /* @__PURE__ */ jsx2(
172
+ CellElement,
173
+ {
174
+ id: id ? `${id}-row-${row.id}-cell-${cell.id}` : void 0,
175
+ testid: testid ? `${testid}-row-${row.id}-cell-${cell.id}` : void 0,
176
+ cell,
177
+ className: clsx2(
178
+ cellAlignment ? {
179
+ "justify-start": cellAlignment === "left",
180
+ "justify-end": cellAlignment === "right"
181
+ } : {
182
+ "justify-end": typeof cellValue === "number"
183
+ }
184
+ ),
185
+ children: /* @__PURE__ */ jsx2(
186
+ Tooltip,
187
+ {
188
+ id: id ? `${id}-tooltip-${cell.id}` : void 0,
189
+ testid: testid ? `${testid}-tooltip-${cell.id}` : void 0,
190
+ showOnTruncation: true,
191
+ message: cellValue,
192
+ position: "bottom",
193
+ children: /* @__PURE__ */ jsx2(Paragraph, { addOverflow: true, tall: true, children: cellValue })
194
+ }
195
+ )
196
+ },
197
+ cell.id
198
+ );
199
+ }),
200
+ !locked && virtualPaddingRight ? (
201
+ // fake empty column to the right for virtualization scroll padding
202
+ /* @__PURE__ */ jsx2("td", { style: { display: "flex", width: virtualPaddingRight } })
203
+ ) : null,
204
+ enableColumnSelector && !locked && /* @__PURE__ */ jsx2("td", { className: "p-2", style: { width: "48.8px" } })
205
+ ]
206
+ },
207
+ row.id
208
+ );
209
+ }
210
+
211
+ // src/components/DataGrid/TableBody/LoadingCell.tsx
212
+ import { jsx as jsx3 } from "react/jsx-runtime";
213
+ function LoadingCell({
214
+ id,
215
+ testid,
216
+ column
217
+ }) {
218
+ const key = `loading-${column.id}`;
219
+ if (column.cell === "checkbox") {
220
+ return /* @__PURE__ */ jsx3(DataGridCell, { id: id ? `${id}-${key}` : void 0, testid: testid ? `${testid}-${key}` : void 0, children: /* @__PURE__ */ jsx3(Checkbox, { id: id ? `${id}-${key}-checkbox` : void 0, testid: testid ? `${testid}-${key}-checkbox` : void 0, disabled: true }) }, key);
221
+ }
222
+ if (column.cell === "input") {
223
+ return /* @__PURE__ */ jsx3(
224
+ DataGridCell,
225
+ {
226
+ id: id ? `${id}-${key}` : void 0,
227
+ testid: testid ? `${testid}-${key}` : void 0,
228
+ component: "input",
229
+ children: /* @__PURE__ */ jsx3(
230
+ Input,
231
+ {
232
+ id: id ? `${id}-${key}-input` : void 0,
233
+ testid: testid ? `${testid}-${key}-input` : void 0,
234
+ align: "left",
235
+ disabled: true,
236
+ wrapperClassName: "!rounded-none !border-0"
237
+ }
238
+ )
239
+ },
240
+ key
241
+ );
242
+ }
243
+ return /* @__PURE__ */ jsx3(DataGridCell, { id: id ? `${id}-${key}` : void 0, testid: testid ? `${testid}-${key}` : void 0, children: /* @__PURE__ */ jsx3("div", { className: "bg-linear-270 to-neutral-300/[24%] from-neutral-300/[12%] rounded-xs w-full max-w-25 h-6" }) }, key);
244
+ }
245
+
246
+ // src/components/DataGrid/TableBody/index.tsx
247
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
248
+ function TableBody({
249
+ id,
250
+ testid,
251
+ columnVirtualizer,
252
+ table,
253
+ tableContainerRef,
254
+ virtualPaddingLeft,
255
+ virtualPaddingRight,
256
+ pagination,
257
+ isLoadingMore,
258
+ hasMore,
259
+ showFilterRow,
260
+ enableColumnSelector = false,
261
+ locked,
262
+ pinDirection
263
+ }) {
264
+ const { rows } = table.getRowModel();
265
+ const rowVirtualizer = useVirtualizer({
266
+ count: rows.length,
267
+ estimateSize: () => 40,
268
+ getScrollElement: () => tableContainerRef.current,
269
+ overscan: 8
270
+ });
271
+ const virtualRows = rowVirtualizer.getVirtualItems();
272
+ const CellElement = locked ? DataGridCell : DragAlongCell;
273
+ let headerGroups;
274
+ if (pinDirection === "left") {
275
+ headerGroups = table.getLeftHeaderGroups();
276
+ } else if (pinDirection === "right") {
277
+ headerGroups = table.getRightHeaderGroups();
278
+ } else {
279
+ headerGroups = table.getCenterHeaderGroups();
280
+ }
281
+ return /* @__PURE__ */ jsxs2(
282
+ "tbody",
283
+ {
284
+ className: clsx3(locked ? "shadow-16" : ""),
285
+ style: {
286
+ display: "grid",
287
+ height: `${showFilterRow ? rowVirtualizer.getTotalSize() + 40 : rowVirtualizer.getTotalSize()}px`,
288
+ // tells scrollbar how big the table is
289
+ position: "relative"
290
+ // needed for absolute positioning of rows
291
+ },
292
+ children: [
293
+ showFilterRow && /* @__PURE__ */ jsx4(
294
+ "tr",
295
+ {
296
+ style: {
297
+ display: "flex",
298
+ position: "sticky",
299
+ top: "40px",
300
+ width: "100%",
301
+ height: "40px",
302
+ zIndex: 10
303
+ },
304
+ className: "even:bg-background-grouped-primary-normal odd:bg-background-grouped-secondary-normal",
305
+ "data-testid": testid ? `${testid}-filter-row` : void 0,
306
+ children: headerGroups.flatMap(
307
+ (x) => x.headers.map((header) => {
308
+ var _a, _b, _c, _d, _e;
309
+ return /* @__PURE__ */ jsx4(
310
+ CellElement,
311
+ {
312
+ id: id ? `${id}-filter-cell-${header.id}` : void 0,
313
+ testid: testid ? `${testid}-filter-cell-${header.id}` : void 0,
314
+ noPadding: true,
315
+ cell: header,
316
+ width: ((_a = header.column.columnDef.meta) == null ? void 0 : _a.headerWidth) || (locked ? `${header.column.getSize()}px` : ""),
317
+ children: header.column.getCanFilter() && ((_e = (_c = (_b = header.column.columnDef.meta) == null ? void 0 : _b.filterRowCell) == null ? void 0 : _c.call(_b, {
318
+ header,
319
+ table
320
+ })) != null ? _e : /* @__PURE__ */ jsx4(
321
+ Search,
322
+ {
323
+ id: id ? `${id}-filter-search-${header.id}` : void 0,
324
+ testid: testid ? `${testid}-filter-search-${header.id}` : void 0,
325
+ removeRoundness: true,
326
+ onChange: (e) => header.column.setFilterValue(e.target.value),
327
+ value: (_d = header.column.getFilterValue()) != null ? _d : "",
328
+ placeholder: "",
329
+ removeSearchIcon: true
330
+ }
331
+ ))
332
+ },
333
+ header.id
334
+ );
335
+ })
336
+ )
337
+ }
338
+ ),
339
+ virtualRows.map((virtualRow) => {
340
+ const row = rows[virtualRow.index];
341
+ return /* @__PURE__ */ jsx4(
342
+ TableBodyRow,
343
+ {
344
+ id,
345
+ testid,
346
+ columnVirtualizer,
347
+ row,
348
+ rowVirtualizer,
349
+ virtualPaddingLeft,
350
+ virtualPaddingRight,
351
+ virtualRow,
352
+ showFilterRow,
353
+ enableColumnSelector,
354
+ locked,
355
+ pinDirection
356
+ },
357
+ row.id
358
+ );
359
+ }),
360
+ !pagination && isLoadingMore && hasMore && /* @__PURE__ */ jsx4(
361
+ "tr",
362
+ {
363
+ style: {
364
+ display: "flex",
365
+ position: "absolute",
366
+ width: "100%",
367
+ transform: `translateY(${virtualRows[virtualRows.length - 1].start + 40}px)`
368
+ },
369
+ className: "odd:bg-background-grouped-primary-normal even:bg-background-grouped-secondary-normal",
370
+ children: table.getAllLeafColumns().map((column) => /* @__PURE__ */ jsx4(
371
+ LoadingCell,
372
+ {
373
+ id,
374
+ testid,
375
+ column: column.columnDef
376
+ },
377
+ column.id
378
+ ))
379
+ }
380
+ )
381
+ ]
382
+ }
383
+ );
384
+ }
385
+
386
+ // src/components/DataGrid/ColumnSelectorHeaderCell/index.tsx
387
+ import { useRef, useState as useState2 } from "react";
388
+
389
+ // src/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.tsx
390
+ import { useState } from "react";
391
+ import { jsx as jsx5 } from "react/jsx-runtime";
392
+ function ColumnSelectorMenuOption({
393
+ id,
394
+ testid,
395
+ column,
396
+ toggleColumnVisibility
397
+ }) {
398
+ const [isVisible, setIsVisible] = useState(column.getIsVisible());
399
+ const label = typeof column.columnDef.header === "string" ? column.columnDef.header : null;
400
+ return /* @__PURE__ */ jsx5(MenuOption, { id, testid, selected: isVisible, defaultChecked: isVisible, children: /* @__PURE__ */ jsx5(
401
+ Checkbox,
402
+ {
403
+ id: id ? `${id}-checkbox` : void 0,
404
+ testid: testid ? `${testid}-checkbox` : void 0,
405
+ label: label != null ? label : "Unknown",
406
+ checked: isVisible,
407
+ onChange: (e) => {
408
+ setIsVisible(e.target.checked);
409
+ toggleColumnVisibility(column.id, e.target.checked);
410
+ }
411
+ }
412
+ ) });
413
+ }
414
+
415
+ // src/components/DataGrid/ColumnSelectorHeaderCell/index.tsx
416
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
417
+ function ColumnSelectorHeaderCell({
418
+ id,
419
+ testid,
420
+ table,
421
+ toggleColumnVisibility,
422
+ resetColumnVisibility
423
+ }) {
424
+ const ref = useRef(null);
425
+ const [show, setShow] = useState2(false);
426
+ return /* @__PURE__ */ jsxs3(
427
+ DataGridCell,
428
+ {
429
+ id,
430
+ testid,
431
+ width: "48px",
432
+ type: "header",
433
+ color: "text-secondary-normal",
434
+ ref,
435
+ children: [
436
+ /* @__PURE__ */ jsx6(
437
+ Button,
438
+ {
439
+ id: id ? `${id}-button` : void 0,
440
+ testid: testid ? `${testid}-button` : void 0,
441
+ onClick: () => setShow((prev) => !prev),
442
+ variant: "navigation",
443
+ iconOnly: true,
444
+ leftIcon: /* @__PURE__ */ jsx6(Icon, { name: "tune" })
445
+ }
446
+ ),
447
+ /* @__PURE__ */ jsxs3(
448
+ Menu,
449
+ {
450
+ id: id ? `${id}-menu` : void 0,
451
+ testid: testid ? `${testid}-menu` : void 0,
452
+ positionTo: ref,
453
+ position: "bottom-right",
454
+ show,
455
+ setShow,
456
+ calculateMinMaxHeight: true,
457
+ children: [
458
+ /* @__PURE__ */ jsx6(
459
+ Button,
460
+ {
461
+ id: id ? `${id}-reset-button` : void 0,
462
+ testid: testid ? `${testid}-reset-button` : void 0,
463
+ variant: "tertiary",
464
+ onClick: () => {
465
+ resetColumnVisibility();
466
+ setShow(false);
467
+ },
468
+ children: "Reset to default"
469
+ }
470
+ ),
471
+ table.getAllColumns().filter((x) => {
472
+ var _a;
473
+ return (_a = x.columnDef.meta) == null ? void 0 : _a.inVisibilityMenu;
474
+ }).map((column) => /* @__PURE__ */ jsx6(
475
+ ColumnSelectorMenuOption,
476
+ {
477
+ id: id ? `${id}-option-${column.id}` : void 0,
478
+ testid: testid ? `${testid}-option-${column.id}` : void 0,
479
+ column,
480
+ toggleColumnVisibility
481
+ },
482
+ column.id
483
+ ))
484
+ ]
485
+ }
486
+ )
487
+ ]
488
+ }
489
+ );
490
+ }
491
+
492
+ // src/components/DataGrid/PinnedColumns.tsx
493
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
494
+ function PinnedColumns(_a) {
495
+ var _b = _a, {
496
+ id,
497
+ pinDirection = "left",
498
+ table,
499
+ centerHeader,
500
+ allSelectedAcrossPages,
501
+ someSelectedAcrossPages,
502
+ toggleSelectAllAcrossPages,
503
+ testid,
504
+ enableColumnSelector,
505
+ toggleColumnVisibility,
506
+ resetColumnVisibility
507
+ } = _b, props = __objRest(_b, [
508
+ "id",
509
+ "pinDirection",
510
+ "table",
511
+ "centerHeader",
512
+ "allSelectedAcrossPages",
513
+ "someSelectedAcrossPages",
514
+ "toggleSelectAllAcrossPages",
515
+ "testid",
516
+ "enableColumnSelector",
517
+ "toggleColumnVisibility",
518
+ "resetColumnVisibility"
519
+ ]);
520
+ var _a2;
521
+ const headerGroups = pinDirection === "left" ? table.getLeftHeaderGroups() : table.getRightHeaderGroups();
522
+ const pinnedTestId = testid ? `${pinDirection}-pinned-${testid}` : void 0;
523
+ const hasAnyHeaders = ((_a2 = headerGroups[0]) == null ? void 0 : _a2.headers.length) > 0;
524
+ if (!hasAnyHeaders && !enableColumnSelector) return;
525
+ return /* @__PURE__ */ jsxs4(
526
+ "table",
527
+ {
528
+ className: clsx4(
529
+ "flex flex-col min-h-min sticky z-20",
530
+ pinDirection === "left" ? "left-0" : "right-0"
531
+ ),
532
+ "data-testid": pinnedTestId,
533
+ children: [
534
+ /* @__PURE__ */ jsx7("thead", { className: "sticky top-0 z-20 grid", children: headerGroups.map((headerGroup) => {
535
+ return /* @__PURE__ */ jsxs4(
536
+ "tr",
537
+ {
538
+ "data-testid": pinnedTestId ? `${pinnedTestId}-header-row-${headerGroup.id}` : void 0,
539
+ className: "flex w-full",
540
+ children: [
541
+ headerGroup.headers.map((header) => {
542
+ var _a3, _b2, _c;
543
+ if (!header) {
544
+ return;
545
+ }
546
+ if (typeof header.column.columnDef.header === "string") {
547
+ const customHeaderWidth = (_a3 = header.column.columnDef.meta) == null ? void 0 : _a3.headerWidth;
548
+ return /* @__PURE__ */ jsxs4(
549
+ DataCellHeader,
550
+ {
551
+ locked: true,
552
+ testid: pinnedTestId ? `${pinnedTestId}-header-${header.id}` : void 0,
553
+ header,
554
+ center: centerHeader,
555
+ width: customHeaderWidth,
556
+ className: clsx4(
557
+ header.column.getCanSort() ? "cursor-pointer" : "cursor-grab",
558
+ "group"
559
+ ),
560
+ children: [
561
+ /* @__PURE__ */ jsx7(Subheader, { tall: true, children: header.column.columnDef.header }),
562
+ getSortIcon(header.column.getIsSorted()),
563
+ !header.column.getIsSorted() && header.column.getCanSort() && getSortIcon(header.column.getNextSortingOrder(), true),
564
+ header.column.getSortIndex() !== -1 && table.getState().sorting.length > 1 && /* @__PURE__ */ jsx7(Subheader, { tall: true, children: header.column.getSortIndex() + 1 }),
565
+ !((_b2 = header.column.columnDef.meta) == null ? void 0 : _b2.locked) && /* @__PURE__ */ jsx7(
566
+ "div",
567
+ {
568
+ onDoubleClick: (e) => {
569
+ e.stopPropagation();
570
+ header.column.resetSize();
571
+ },
572
+ onMouseDown: (e) => {
573
+ e.stopPropagation();
574
+ header.getResizeHandler()(e);
575
+ },
576
+ onTouchStart: (e) => {
577
+ e.stopPropagation();
578
+ header.getResizeHandler()(e);
579
+ },
580
+ className: "absolute right-0 inset-y-0 w-px bg-black cursor-col-resize"
581
+ }
582
+ )
583
+ ]
584
+ },
585
+ header.id
586
+ );
587
+ }
588
+ return /* @__PURE__ */ jsx7(React2.Fragment, { children: ((_c = header.column.columnDef.meta) == null ? void 0 : _c.checkbox) ? /* @__PURE__ */ jsx7(DataGridCell, { type: "header", component: "checkbox", locked: true, children: /* @__PURE__ */ jsx7(
589
+ Checkbox,
590
+ {
591
+ checked: allSelectedAcrossPages,
592
+ indeterminate: someSelectedAcrossPages,
593
+ onChange: toggleSelectAllAcrossPages
594
+ }
595
+ ) }) : flexRender2(
596
+ header.column.columnDef.header,
597
+ header.getContext()
598
+ ) }, header.id);
599
+ }),
600
+ enableColumnSelector && /* @__PURE__ */ jsx7(
601
+ ColumnSelectorHeaderCell,
602
+ {
603
+ id: id ? `${id}-column-selector` : void 0,
604
+ testid: testid ? `${testid}-column-selector` : void 0,
605
+ table,
606
+ toggleColumnVisibility: toggleColumnVisibility != null ? toggleColumnVisibility : () => {
607
+ },
608
+ resetColumnVisibility: resetColumnVisibility != null ? resetColumnVisibility : () => {
609
+ }
610
+ }
611
+ )
612
+ ]
613
+ },
614
+ headerGroup.id
615
+ );
616
+ }) }),
617
+ /* @__PURE__ */ jsx7(
618
+ TableBody,
619
+ __spreadProps(__spreadValues({
620
+ testid: pinnedTestId
621
+ }, props), {
622
+ table,
623
+ locked: !enableColumnSelector,
624
+ pinDirection
625
+ })
626
+ )
627
+ ]
628
+ }
629
+ );
630
+ }
631
+
632
+ // static/no-results-image.png
633
+ var no_results_image_default = "data:image/png;base64,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";
634
+
635
+ // src/components/DataGrid/index.tsx
636
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
637
+ var PAGE_SIZE_OPTIONS = [5, 10, 15, 20, 25, 30, 35];
638
+ var NO_RESULTS_HEIGHT = "h-[185px]";
639
+ function DataGrid({
640
+ id,
641
+ rowIdAccessor,
642
+ testid,
643
+ data,
644
+ columns,
645
+ status,
646
+ isLoadingMore = false,
647
+ onLoadMore,
648
+ pagination,
649
+ showFilterRow = false,
650
+ hasMore = false,
651
+ sorting: externalSorting,
652
+ onSortingChange,
653
+ columnFilters: externalColumnFilters,
654
+ onColumnFiltersChange,
655
+ rowSelection: externalRowSelection,
656
+ onRowSelectionChange,
657
+ filteredSortedData,
658
+ totalRowCount,
659
+ hideStatusBar,
660
+ centerHeader,
661
+ enableColumnSelector,
662
+ predeterminedLeftPins = [],
663
+ predeterminedRightPins = [],
664
+ useMenuDefaultMinWidth
665
+ }) {
666
+ var _a, _b, _c, _d, _e, _f, _g;
667
+ const [localSorting, setLocalSorting] = useState3([]);
668
+ const [localColumnFilters, setLocalColumnFilters] = useState3([]);
669
+ const [localRowSelection, setLocalRowSelection] = useState3({});
670
+ const { columns: tableColumns, setColumns: setTableColumns } = useTableLayout(columns, id != null ? id : testid);
671
+ const [columnOrder, setColumnOrder] = useState3(
672
+ tableColumns.map((c) => c.id)
673
+ );
674
+ const [columnVisibility, setColumnVisibility] = useState3(
675
+ Object.fromEntries(
676
+ tableColumns.filter((column) => !!column.id).map((column) => {
677
+ var _a2, _b2;
678
+ return [column.id, (_b2 = (_a2 = column.meta) == null ? void 0 : _a2.visible) != null ? _b2 : true];
679
+ })
680
+ )
681
+ );
682
+ const resetColumnVisibility = useCallback(
683
+ (updateOrder) => {
684
+ setColumnVisibility(
685
+ Object.fromEntries(
686
+ tableColumns.filter((column) => !!column.id).map((column) => {
687
+ var _a2, _b2;
688
+ return [column.id, (_b2 = (_a2 = column.meta) == null ? void 0 : _a2.visible) != null ? _b2 : true];
689
+ })
690
+ )
691
+ );
692
+ if (updateOrder) setColumnOrder(tableColumns.map((c) => c.id));
693
+ },
694
+ [tableColumns]
695
+ );
696
+ useEffect(() => {
697
+ resetColumnVisibility(true);
698
+ }, [resetColumnVisibility]);
699
+ const sortingState = pagination ? externalSorting != null ? externalSorting : localSorting : localSorting;
700
+ const setSortingState = pagination ? (updaterOrValue) => {
701
+ const value = typeof updaterOrValue === "function" ? updaterOrValue(
702
+ externalSorting != null ? externalSorting : []
703
+ ) : updaterOrValue;
704
+ (onSortingChange != null ? onSortingChange : setLocalSorting)(value);
705
+ } : setLocalSorting;
706
+ const columnFilterState = pagination ? externalColumnFilters != null ? externalColumnFilters : localColumnFilters : localColumnFilters;
707
+ const setColumnFilterState = pagination ? (updaterOrValue) => {
708
+ const value = typeof updaterOrValue === "function" ? updaterOrValue(externalColumnFilters != null ? externalColumnFilters : []) : updaterOrValue;
709
+ (onColumnFiltersChange != null ? onColumnFiltersChange : setLocalColumnFilters)(value);
710
+ } : setLocalColumnFilters;
711
+ const rowSelection = externalRowSelection != null ? externalRowSelection : localRowSelection;
712
+ const setRowSelection = useCallback(
713
+ (updaterOrValue) => {
714
+ if (pagination) {
715
+ const value = typeof updaterOrValue === "function" ? updaterOrValue(externalRowSelection != null ? externalRowSelection : {}) : updaterOrValue;
716
+ (onRowSelectionChange != null ? onRowSelectionChange : setLocalRowSelection)(value);
717
+ } else if (externalRowSelection && onRowSelectionChange) {
718
+ const value = typeof updaterOrValue === "function" ? updaterOrValue(externalRowSelection != null ? externalRowSelection : {}) : updaterOrValue;
719
+ onRowSelectionChange(value);
720
+ } else {
721
+ setLocalRowSelection(updaterOrValue);
722
+ }
723
+ },
724
+ [externalRowSelection, onRowSelectionChange, pagination]
725
+ );
726
+ const dndId = useId();
727
+ const containerRef = React3.useRef(null);
728
+ const toggleColumnVisibility = useCallback(
729
+ (columnId, isVisible) => {
730
+ setTableColumns((prev) => {
731
+ const persistedIndex = prev.findIndex((col) => col.id === columnId);
732
+ if (persistedIndex !== -1) {
733
+ prev[persistedIndex].meta = __spreadProps(__spreadValues({}, prev[persistedIndex].meta), {
734
+ visible: isVisible
735
+ });
736
+ }
737
+ return [...prev];
738
+ }, true);
739
+ },
740
+ [setTableColumns]
741
+ );
742
+ const table = useReactTable({
743
+ columns: tableColumns,
744
+ data,
745
+ getCoreRowModel: getCoreRowModel(),
746
+ getSortedRowModel: getSortedRowModel(),
747
+ getFilteredRowModel: getFilteredRowModel(),
748
+ columnResizeMode: "onChange",
749
+ getRowId: rowIdAccessor ? (row) => String(row[rowIdAccessor]) : (row, index) => {
750
+ var _a2;
751
+ return String((_a2 = row.id) != null ? _a2 : index + 1);
752
+ },
753
+ state: {
754
+ columnOrder,
755
+ sorting: sortingState,
756
+ columnFilters: columnFilterState,
757
+ rowSelection,
758
+ columnVisibility
759
+ },
760
+ initialState: {
761
+ columnPinning: {
762
+ left: predeterminedLeftPins,
763
+ right: predeterminedRightPins
764
+ }
765
+ },
766
+ enableColumnPinning: (predeterminedLeftPins == null ? void 0 : predeterminedLeftPins.length) > 0 || predeterminedRightPins.length > 0,
767
+ onColumnOrderChange: setColumnOrder,
768
+ onSortingChange: adaptTableStateSetter(setSortingState),
769
+ onColumnFiltersChange: adaptTableStateSetter(setColumnFilterState),
770
+ onRowSelectionChange: adaptTableStateSetter(setRowSelection),
771
+ filterFns: {
772
+ startsWith: (row, columnId, filterValue) => {
773
+ const cellValue = row == null ? void 0 : row.getValue(columnId);
774
+ if (!cellValue || !filterValue) {
775
+ return true;
776
+ }
777
+ return String(cellValue).toLowerCase().startsWith(String(filterValue).toLowerCase());
778
+ },
779
+ endsWith: (row, columnId, filterValue) => {
780
+ const cellValue = row == null ? void 0 : row.getValue(columnId);
781
+ if (!cellValue || !filterValue) {
782
+ return true;
783
+ }
784
+ return String(cellValue).toLowerCase().endsWith(String(filterValue).toLowerCase());
785
+ }
786
+ }
787
+ });
788
+ const allRowIds = pagination ? (_a = filteredSortedData == null ? void 0 : filteredSortedData.map((row) => String(row.id))) != null ? _a : [] : Array.from(
789
+ { length: totalRowCount != null ? totalRowCount : data.length },
790
+ (_, i) => String(i + 1)
791
+ );
792
+ const allSelectedAcrossPages = allRowIds.every(
793
+ (rowId) => rowSelection[rowId]
794
+ );
795
+ const someSelectedAcrossPages = !allSelectedAcrossPages && allRowIds.some((rowId) => rowSelection[rowId]);
796
+ const toggleSelectAllAcrossPages = () => {
797
+ setRowSelection((prev) => {
798
+ const isSelecting = !allSelectedAcrossPages;
799
+ if (isSelecting) {
800
+ const newSelection = {};
801
+ for (const rowId of allRowIds) {
802
+ newSelection[rowId] = true;
803
+ }
804
+ return __spreadValues(__spreadValues({}, prev), newSelection);
805
+ } else {
806
+ const updatedSelection = __spreadValues({}, prev);
807
+ for (const rowId of allRowIds) {
808
+ delete updatedSelection[rowId];
809
+ }
810
+ return updatedSelection;
811
+ }
812
+ });
813
+ };
814
+ useInfiniteScroll({
815
+ containerRef,
816
+ onLoadMore: onLoadMore != null ? onLoadMore : () => {
817
+ },
818
+ isLoading: isLoadingMore,
819
+ enabled: !pagination
820
+ });
821
+ const handleDragEnd = (event) => {
822
+ const { active, over } = event;
823
+ if (active && over && active.id !== over.id) {
824
+ setColumnOrder((prev) => {
825
+ const oldIndex = prev.indexOf(active.id);
826
+ const newIndex = prev.indexOf(over.id);
827
+ const newOrder = arrayMove(prev, oldIndex, newIndex);
828
+ setTableColumns((prev2) => {
829
+ const res = newOrder.map((id2) => prev2.find((col) => col.id === id2)).filter(Boolean);
830
+ return res;
831
+ });
832
+ return newOrder;
833
+ });
834
+ }
835
+ };
836
+ const sensors = useSensors(
837
+ useSensor(MouseSensor),
838
+ useSensor(TouchSensor),
839
+ useSensor(KeyboardSensor)
840
+ );
841
+ const visibleColumns = table.getVisibleLeafColumns();
842
+ const columnVirtualizer = useVirtualizer2({
843
+ count: visibleColumns.length,
844
+ estimateSize: (index) => visibleColumns[index].getSize(),
845
+ //estimate width of each column for accurate scrollbar dragging
846
+ getScrollElement: () => containerRef.current,
847
+ horizontal: true,
848
+ overscan: 8
849
+ //how many columns to render on each side off screen each way
850
+ });
851
+ const virtualColumns = columnVirtualizer.getVirtualItems();
852
+ let virtualPaddingLeft;
853
+ let virtualPaddingRight;
854
+ if (columnVirtualizer && (virtualColumns == null ? void 0 : virtualColumns.length)) {
855
+ virtualPaddingLeft = (_c = (_b = virtualColumns[0]) == null ? void 0 : _b.start) != null ? _c : 0;
856
+ virtualPaddingRight = columnVirtualizer.getTotalSize() - ((_e = (_d = virtualColumns[virtualColumns.length - 1]) == null ? void 0 : _d.end) != null ? _e : 0);
857
+ }
858
+ const empty = table.getRowModel().rows.length === 0;
859
+ return /* @__PURE__ */ jsx8(
860
+ DndContext,
861
+ {
862
+ id: dndId,
863
+ collisionDetection: closestCenter,
864
+ modifiers: [restrictToHorizontalAxis],
865
+ onDragEnd: handleDragEnd,
866
+ sensors,
867
+ children: /* @__PURE__ */ jsx8(
868
+ SortableContext,
869
+ {
870
+ items: columnOrder,
871
+ strategy: horizontalListSortingStrategy,
872
+ children: /* @__PURE__ */ jsxs5(
873
+ "div",
874
+ {
875
+ id,
876
+ "data-testid": testid,
877
+ className: "flex flex-col flex-1 h-full w-full rounded border border-border-primary-normal overflow-hidden text-text-primary-normal",
878
+ children: [
879
+ /* @__PURE__ */ jsxs5(
880
+ "div",
881
+ {
882
+ className: clsx5(
883
+ "flex overflow-auto scrollbar-thin relative contain-paint will-change-transform",
884
+ empty ? "overflow-y-hidden" : "min-h-[120px]"
885
+ ),
886
+ ref: containerRef,
887
+ children: [
888
+ /* @__PURE__ */ jsx8(
889
+ PinnedColumns,
890
+ {
891
+ testid,
892
+ pinDirection: "left",
893
+ table,
894
+ tableContainerRef: containerRef,
895
+ pagination,
896
+ isLoadingMore,
897
+ hasMore,
898
+ showFilterRow
899
+ }
900
+ ),
901
+ /* @__PURE__ */ jsxs5("table", { className: "flex-1 flex flex-col min-h-min", children: [
902
+ /* @__PURE__ */ jsx8("thead", { className: "sticky top-0 z-10 grid", children: table.getCenterHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsxs5(
903
+ "tr",
904
+ {
905
+ "data-testid": testid ? `${testid}-header-row-${headerGroup.id}` : void 0,
906
+ className: "flex w-full",
907
+ children: [
908
+ virtualPaddingLeft ? (
909
+ // fake empty column to the left for virtualization scroll padding
910
+ /* @__PURE__ */ jsx8(
911
+ "th",
912
+ {
913
+ style: { display: "flex", width: virtualPaddingLeft }
914
+ }
915
+ )
916
+ ) : null,
917
+ virtualColumns.map((virtualColumn) => {
918
+ var _a2, _b2, _c2, _d2, _e2;
919
+ const header = headerGroup.headers[virtualColumn.index];
920
+ if (!header) {
921
+ return;
922
+ }
923
+ if (typeof header.column.columnDef.header === "string") {
924
+ const cellValue = (_a2 = table.getRowModel().rows[0]) == null ? void 0 : _a2.getValue(header.column.id);
925
+ const cellAlignment = ((_c2 = (_b2 = header.column.columnDef.meta) == null ? void 0 : _b2.align) != null ? _c2 : cellValue === "number") ? "right" : "left";
926
+ return /* @__PURE__ */ jsxs5(
927
+ DraggableCellHeader,
928
+ {
929
+ id: id ? `${id}-header-${header.id}` : void 0,
930
+ testid: testid ? `${testid}-header-${header.id}` : void 0,
931
+ header,
932
+ locked: (_d2 = header.column.columnDef.meta) == null ? void 0 : _d2.locked,
933
+ center: centerHeader,
934
+ className: clsx5(
935
+ header.column.getCanSort() ? "cursor-pointer" : "cursor-grab",
936
+ "group",
937
+ cellAlignment ? {
938
+ "justify-start": cellAlignment === "left",
939
+ "justify-end": cellAlignment === "right"
940
+ } : {
941
+ "justify-end": typeof cellValue === "number"
942
+ }
943
+ ),
944
+ useMenuDefaultMinWidth,
945
+ children: [
946
+ cellAlignment === "left" && /* @__PURE__ */ jsx8(Subheader, { tall: true, children: header.column.columnDef.header }),
947
+ getSortIcon(header.column.getIsSorted()),
948
+ !header.column.getIsSorted() && header.column.getCanSort() && getSortIcon(
949
+ header.column.getNextSortingOrder(),
950
+ true
951
+ ),
952
+ header.column.getSortIndex() !== -1 && table.getState().sorting.length > 1 && /* @__PURE__ */ jsx8(Subheader, { tall: true, children: header.column.getSortIndex() + 1 }),
953
+ cellAlignment === "right" && /* @__PURE__ */ jsx8(Subheader, { tall: true, children: header.column.columnDef.header }),
954
+ /* @__PURE__ */ jsx8(
955
+ "div",
956
+ {
957
+ onDoubleClick: (e) => {
958
+ e.stopPropagation();
959
+ header.column.resetSize();
960
+ },
961
+ onMouseDown: (e) => {
962
+ e.stopPropagation();
963
+ header.getResizeHandler()(e);
964
+ },
965
+ onTouchStart: (e) => {
966
+ e.stopPropagation();
967
+ header.getResizeHandler()(e);
968
+ },
969
+ className: "absolute right-0 inset-y-0 w-px bg-black cursor-col-resize"
970
+ }
971
+ )
972
+ ]
973
+ },
974
+ header.id
975
+ );
976
+ }
977
+ return /* @__PURE__ */ jsx8(React3.Fragment, { children: ((_e2 = header.column.columnDef.meta) == null ? void 0 : _e2.checkbox) ? /* @__PURE__ */ jsx8(
978
+ DataGridCell,
979
+ {
980
+ id: id ? `${id}-header-${header.id}` : void 0,
981
+ testid: testid ? `${testid}-header-${header.id}` : void 0,
982
+ type: "header",
983
+ component: "checkbox",
984
+ locked: true,
985
+ children: /* @__PURE__ */ jsx8(
986
+ Checkbox,
987
+ {
988
+ id: id ? `${id}-select-all-checkbox` : void 0,
989
+ testid: testid ? `${testid}-select-all-checkbox` : void 0,
990
+ checked: allSelectedAcrossPages,
991
+ indeterminate: someSelectedAcrossPages,
992
+ onChange: toggleSelectAllAcrossPages
993
+ }
994
+ )
995
+ }
996
+ ) : flexRender3(
997
+ header.column.columnDef.header,
998
+ header.getContext()
999
+ ) }, header.id);
1000
+ }),
1001
+ virtualPaddingRight ? (
1002
+ //fake empty column to the right for virtualization scroll padding
1003
+ /* @__PURE__ */ jsx8(
1004
+ "th",
1005
+ {
1006
+ style: { display: "flex", width: virtualPaddingRight }
1007
+ }
1008
+ )
1009
+ ) : null
1010
+ ]
1011
+ },
1012
+ headerGroup.id
1013
+ )) }),
1014
+ /* @__PURE__ */ jsx8(
1015
+ TableBody,
1016
+ {
1017
+ id,
1018
+ testid,
1019
+ columnVirtualizer,
1020
+ table,
1021
+ tableContainerRef: containerRef,
1022
+ virtualPaddingLeft,
1023
+ virtualPaddingRight,
1024
+ pagination,
1025
+ isLoadingMore,
1026
+ hasMore,
1027
+ showFilterRow,
1028
+ enableColumnSelector
1029
+ }
1030
+ )
1031
+ ] }),
1032
+ /* @__PURE__ */ jsx8(
1033
+ PinnedColumns,
1034
+ {
1035
+ id,
1036
+ enableColumnSelector,
1037
+ toggleColumnVisibility,
1038
+ resetColumnVisibility,
1039
+ testid,
1040
+ pinDirection: "right",
1041
+ table,
1042
+ tableContainerRef: containerRef,
1043
+ pagination,
1044
+ isLoadingMore,
1045
+ hasMore,
1046
+ showFilterRow
1047
+ }
1048
+ )
1049
+ ]
1050
+ }
1051
+ ),
1052
+ empty && /* @__PURE__ */ jsxs5(
1053
+ "div",
1054
+ {
1055
+ className: clsx5(
1056
+ NO_RESULTS_HEIGHT,
1057
+ "flex flex-col items-center justify-center",
1058
+ componentGap,
1059
+ componentPadding
1060
+ ),
1061
+ "data-testid": testid ? `${testid}-no-results` : void 0,
1062
+ children: [
1063
+ /* @__PURE__ */ jsx8(
1064
+ "img",
1065
+ {
1066
+ src: (_g = (_f = no_results_image_default) == null ? void 0 : _f.src) != null ? _g : no_results_image_default,
1067
+ alt: "No Results",
1068
+ className: "h-30 opacity-20",
1069
+ width: 120,
1070
+ height: 120
1071
+ }
1072
+ ),
1073
+ /* @__PURE__ */ jsx8(Subheader, { color: "text-secondary-normal", children: "No Results" }),
1074
+ /* @__PURE__ */ jsx8(Paragraph, { color: "text-secondary-normal", children: "To view results, enter or update your search criteria." })
1075
+ ]
1076
+ }
1077
+ ),
1078
+ !hideStatusBar && /* @__PURE__ */ jsxs5("div", { className: "p-2 pt-[7px] border-t border-border-primary-normal h-full min-h-[34px]", children: [
1079
+ pagination && /* @__PURE__ */ jsxs5("div", { className: "flex justify-between items-center", children: [
1080
+ /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-1 w-min", children: [
1081
+ /* @__PURE__ */ jsx8(
1082
+ Select,
1083
+ {
1084
+ id: id ? `${id}-pagesize-select` : void 0,
1085
+ testid: testid ? `${testid}-pagesize-select` : void 0,
1086
+ wrapperClassName: "!w-20",
1087
+ value: pagination.pageSize.toString(),
1088
+ onChange: (e) => {
1089
+ var _a2;
1090
+ return (_a2 = pagination.onPageSizeChange) == null ? void 0 : _a2.call(pagination, Number(e.target.value));
1091
+ },
1092
+ renderMenu: (props) => /* @__PURE__ */ jsx8(
1093
+ Menu,
1094
+ __spreadProps(__spreadValues({}, props), {
1095
+ id: id ? `${id}-pagesize-menu` : void 0,
1096
+ testid: testid ? `${testid}-pagesize-menu` : void 0,
1097
+ children: PAGE_SIZE_OPTIONS.map((option) => /* @__PURE__ */ jsx8(
1098
+ MenuOption,
1099
+ {
1100
+ id: id ? `${id}-pagesize-option-${option}` : void 0,
1101
+ selected: pagination.pageSize === option,
1102
+ onClick: () => {
1103
+ var _a2;
1104
+ return (_a2 = pagination.onPageSizeChange) == null ? void 0 : _a2.call(pagination, option);
1105
+ },
1106
+ children: option
1107
+ },
1108
+ option
1109
+ ))
1110
+ })
1111
+ )
1112
+ }
1113
+ ),
1114
+ /* @__PURE__ */ jsx8(Label, { children: "Per Page" })
1115
+ ] }),
1116
+ /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-2", children: [
1117
+ /* @__PURE__ */ jsx8(
1118
+ Button,
1119
+ {
1120
+ id: id ? `${id}-prev-page-button` : void 0,
1121
+ testid: testid ? `${testid}-prev-page-button` : void 0,
1122
+ iconOnly: true,
1123
+ leftIcon: /* @__PURE__ */ jsx8(Icon, { name: "chevron_left" }),
1124
+ onClick: () => pagination.onPageChange(pagination.pageIndex - 1),
1125
+ variant: "tertiary",
1126
+ disabled: pagination.pageIndex === 0
1127
+ }
1128
+ ),
1129
+ /* @__PURE__ */ jsxs5(Paragraph, { children: [
1130
+ pagination.pageIndex * pagination.pageSize + 1,
1131
+ " -",
1132
+ " ",
1133
+ Math.min(
1134
+ (pagination.pageIndex + 1) * pagination.pageSize,
1135
+ pagination.total
1136
+ ),
1137
+ " ",
1138
+ "of ",
1139
+ pagination.total
1140
+ ] }),
1141
+ /* @__PURE__ */ jsx8(
1142
+ Button,
1143
+ {
1144
+ id: id ? `${id}-next-page-button` : void 0,
1145
+ testid: testid ? `${testid}-next-page-button` : void 0,
1146
+ iconOnly: true,
1147
+ leftIcon: /* @__PURE__ */ jsx8(Icon, { name: "chevron_right" }),
1148
+ onClick: () => pagination.onPageChange(pagination.pageIndex + 1),
1149
+ variant: "tertiary",
1150
+ disabled: (pagination.pageIndex + 1) * pagination.pageSize >= pagination.total
1151
+ }
1152
+ )
1153
+ ] })
1154
+ ] }),
1155
+ status && /* @__PURE__ */ jsx8(
1156
+ Paragraph,
1157
+ {
1158
+ testid: testid ? `${testid}-status-text` : void 0,
1159
+ children: status
1160
+ }
1161
+ )
1162
+ ] })
1163
+ ]
1164
+ }
1165
+ )
1166
+ }
1167
+ )
1168
+ }
1169
+ );
1170
+ }
1171
+ DataGrid.displayName = "DataGrid";
1172
+ function adaptTableStateSetter(setter) {
1173
+ return (valueOrFn) => {
1174
+ setter(
1175
+ (prev) => typeof valueOrFn === "function" ? valueOrFn(prev) : valueOrFn
1176
+ );
1177
+ };
1178
+ }
1179
+
1180
+ export {
1181
+ DataGrid
1182
+ };