@dmsi/wedgekit-react 0.0.53 → 0.0.55
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.
- package/dist/components/DataGrid.cjs +77 -78
- package/dist/components/DataGrid.js +77 -78
- package/package.json +1 -1
- package/src/components/DataGrid.tsx +116 -109
|
@@ -2728,6 +2728,7 @@ function DataGrid({
|
|
|
2728
2728
|
right: predeterminedRightPins
|
|
2729
2729
|
}
|
|
2730
2730
|
},
|
|
2731
|
+
enableColumnPinning: (predeterminedLeftPins == null ? void 0 : predeterminedLeftPins.length) > 0 || predeterminedRightPins.length > 0,
|
|
2731
2732
|
onColumnOrderChange: setColumnOrder,
|
|
2732
2733
|
onSortingChange: adaptTableStateSetter(setSortingState),
|
|
2733
2734
|
onColumnFiltersChange: adaptTableStateSetter(setColumnFilterState),
|
|
@@ -3312,90 +3313,88 @@ function PinnedColumns(_a) {
|
|
|
3312
3313
|
]);
|
|
3313
3314
|
var _a2;
|
|
3314
3315
|
const headerGroups = pinDirection === "left" ? table.getLeftHeaderGroups() : table.getRightHeaderGroups();
|
|
3315
|
-
return ((_a2 = headerGroups[0]) == null ? void 0 : _a2.headers.length) > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
3316
|
-
"
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
{
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
component: "checkbox",
|
|
3374
|
-
locked: true,
|
|
3375
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3316
|
+
return ((_a2 = headerGroups[0]) == null ? void 0 : _a2.headers.length) > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
3317
|
+
"table",
|
|
3318
|
+
{
|
|
3319
|
+
className: (0, import_clsx14.default)(
|
|
3320
|
+
"grid min-h-min sticky z-20 bg-background-grouped-primary-normal",
|
|
3321
|
+
pinDirection === "left" ? "left-0" : "right-0"
|
|
3322
|
+
),
|
|
3323
|
+
children: [
|
|
3324
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("thead", { className: "sticky top-0 z-20 grid", children: headerGroups.map((headerGroup) => {
|
|
3325
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("tr", { className: "flex w-full", children: headerGroup.headers.map((header) => {
|
|
3326
|
+
var _a3, _b2, _c;
|
|
3327
|
+
if (!header) {
|
|
3328
|
+
return;
|
|
3329
|
+
}
|
|
3330
|
+
if (typeof header.column.columnDef.header === "string") {
|
|
3331
|
+
const customHeaderWidth = (_a3 = header.column.columnDef.meta) == null ? void 0 : _a3.headerWidth;
|
|
3332
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
3333
|
+
DataCellHeader,
|
|
3334
|
+
{
|
|
3335
|
+
locked: true,
|
|
3336
|
+
header,
|
|
3337
|
+
center: centerHeader,
|
|
3338
|
+
width: customHeaderWidth,
|
|
3339
|
+
className: (0, import_clsx14.default)(
|
|
3340
|
+
header.column.getCanSort() ? "cursor-pointer" : "cursor-grab",
|
|
3341
|
+
"group"
|
|
3342
|
+
),
|
|
3343
|
+
children: [
|
|
3344
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Subheader, { tall: true, children: header.column.columnDef.header }),
|
|
3345
|
+
getSortIcon(header.column.getIsSorted()),
|
|
3346
|
+
!header.column.getIsSorted() && header.column.getCanSort() && getSortIcon(
|
|
3347
|
+
header.column.getNextSortingOrder(),
|
|
3348
|
+
true
|
|
3349
|
+
),
|
|
3350
|
+
header.column.getSortIndex() !== -1 && table.getState().sorting.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Subheader, { tall: true, children: header.column.getSortIndex() + 1 }),
|
|
3351
|
+
!((_b2 = header.column.columnDef.meta) == null ? void 0 : _b2.locked) && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3352
|
+
"div",
|
|
3353
|
+
{
|
|
3354
|
+
onDoubleClick: (e) => {
|
|
3355
|
+
e.stopPropagation();
|
|
3356
|
+
header.column.resetSize();
|
|
3357
|
+
},
|
|
3358
|
+
onMouseDown: (e) => {
|
|
3359
|
+
e.stopPropagation();
|
|
3360
|
+
header.getResizeHandler()(e);
|
|
3361
|
+
},
|
|
3362
|
+
onTouchStart: (e) => {
|
|
3363
|
+
e.stopPropagation();
|
|
3364
|
+
header.getResizeHandler()(e);
|
|
3365
|
+
},
|
|
3366
|
+
className: "absolute right-0 inset-y-0 w-px bg-black cursor-col-resize"
|
|
3367
|
+
}
|
|
3368
|
+
)
|
|
3369
|
+
]
|
|
3370
|
+
},
|
|
3371
|
+
header.id
|
|
3372
|
+
);
|
|
3373
|
+
}
|
|
3374
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react13.default.Fragment, { children: ((_c = header.column.columnDef.meta) == null ? void 0 : _c.checkbox) ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DataGridCell, { type: "header", component: "checkbox", locked: true, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3376
3375
|
Checkbox,
|
|
3377
3376
|
{
|
|
3378
3377
|
checked: allSelectedAcrossPages,
|
|
3379
3378
|
indeterminate: someSelectedAcrossPages,
|
|
3380
3379
|
onChange: toggleSelectAllAcrossPages
|
|
3381
3380
|
}
|
|
3382
|
-
)
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
) },
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3381
|
+
) }) : (0, import_react_table.flexRender)(
|
|
3382
|
+
header.column.columnDef.header,
|
|
3383
|
+
header.getContext()
|
|
3384
|
+
) }, header.id);
|
|
3385
|
+
}) }, headerGroup.id);
|
|
3386
|
+
}) }),
|
|
3387
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
3388
|
+
TableBody,
|
|
3389
|
+
__spreadProps(__spreadValues({}, props), {
|
|
3390
|
+
table,
|
|
3391
|
+
locked: true,
|
|
3392
|
+
pinDirection
|
|
3393
|
+
})
|
|
3394
|
+
)
|
|
3395
|
+
]
|
|
3396
|
+
}
|
|
3397
|
+
);
|
|
3399
3398
|
}
|
|
3400
3399
|
var LoadingCell = ({
|
|
3401
3400
|
id,
|
|
@@ -198,6 +198,7 @@ function DataGrid({
|
|
|
198
198
|
right: predeterminedRightPins
|
|
199
199
|
}
|
|
200
200
|
},
|
|
201
|
+
enableColumnPinning: (predeterminedLeftPins == null ? void 0 : predeterminedLeftPins.length) > 0 || predeterminedRightPins.length > 0,
|
|
201
202
|
onColumnOrderChange: setColumnOrder,
|
|
202
203
|
onSortingChange: adaptTableStateSetter(setSortingState),
|
|
203
204
|
onColumnFiltersChange: adaptTableStateSetter(setColumnFilterState),
|
|
@@ -782,90 +783,88 @@ function PinnedColumns(_a) {
|
|
|
782
783
|
]);
|
|
783
784
|
var _a2;
|
|
784
785
|
const headerGroups = pinDirection === "left" ? table.getLeftHeaderGroups() : table.getRightHeaderGroups();
|
|
785
|
-
return ((_a2 = headerGroups[0]) == null ? void 0 : _a2.headers.length) > 0 && /* @__PURE__ */ jsxs(
|
|
786
|
-
"
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
{
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
component: "checkbox",
|
|
844
|
-
locked: true,
|
|
845
|
-
children: /* @__PURE__ */ jsx(
|
|
786
|
+
return ((_a2 = headerGroups[0]) == null ? void 0 : _a2.headers.length) > 0 && /* @__PURE__ */ jsxs(
|
|
787
|
+
"table",
|
|
788
|
+
{
|
|
789
|
+
className: clsx(
|
|
790
|
+
"grid min-h-min sticky z-20 bg-background-grouped-primary-normal",
|
|
791
|
+
pinDirection === "left" ? "left-0" : "right-0"
|
|
792
|
+
),
|
|
793
|
+
children: [
|
|
794
|
+
/* @__PURE__ */ jsx("thead", { className: "sticky top-0 z-20 grid", children: headerGroups.map((headerGroup) => {
|
|
795
|
+
return /* @__PURE__ */ jsx("tr", { className: "flex w-full", children: headerGroup.headers.map((header) => {
|
|
796
|
+
var _a3, _b2, _c;
|
|
797
|
+
if (!header) {
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
if (typeof header.column.columnDef.header === "string") {
|
|
801
|
+
const customHeaderWidth = (_a3 = header.column.columnDef.meta) == null ? void 0 : _a3.headerWidth;
|
|
802
|
+
return /* @__PURE__ */ jsxs(
|
|
803
|
+
DataCellHeader,
|
|
804
|
+
{
|
|
805
|
+
locked: true,
|
|
806
|
+
header,
|
|
807
|
+
center: centerHeader,
|
|
808
|
+
width: customHeaderWidth,
|
|
809
|
+
className: clsx(
|
|
810
|
+
header.column.getCanSort() ? "cursor-pointer" : "cursor-grab",
|
|
811
|
+
"group"
|
|
812
|
+
),
|
|
813
|
+
children: [
|
|
814
|
+
/* @__PURE__ */ jsx(Subheader, { tall: true, children: header.column.columnDef.header }),
|
|
815
|
+
getSortIcon(header.column.getIsSorted()),
|
|
816
|
+
!header.column.getIsSorted() && header.column.getCanSort() && getSortIcon(
|
|
817
|
+
header.column.getNextSortingOrder(),
|
|
818
|
+
true
|
|
819
|
+
),
|
|
820
|
+
header.column.getSortIndex() !== -1 && table.getState().sorting.length > 1 && /* @__PURE__ */ jsx(Subheader, { tall: true, children: header.column.getSortIndex() + 1 }),
|
|
821
|
+
!((_b2 = header.column.columnDef.meta) == null ? void 0 : _b2.locked) && /* @__PURE__ */ jsx(
|
|
822
|
+
"div",
|
|
823
|
+
{
|
|
824
|
+
onDoubleClick: (e) => {
|
|
825
|
+
e.stopPropagation();
|
|
826
|
+
header.column.resetSize();
|
|
827
|
+
},
|
|
828
|
+
onMouseDown: (e) => {
|
|
829
|
+
e.stopPropagation();
|
|
830
|
+
header.getResizeHandler()(e);
|
|
831
|
+
},
|
|
832
|
+
onTouchStart: (e) => {
|
|
833
|
+
e.stopPropagation();
|
|
834
|
+
header.getResizeHandler()(e);
|
|
835
|
+
},
|
|
836
|
+
className: "absolute right-0 inset-y-0 w-px bg-black cursor-col-resize"
|
|
837
|
+
}
|
|
838
|
+
)
|
|
839
|
+
]
|
|
840
|
+
},
|
|
841
|
+
header.id
|
|
842
|
+
);
|
|
843
|
+
}
|
|
844
|
+
return /* @__PURE__ */ jsx(React.Fragment, { children: ((_c = header.column.columnDef.meta) == null ? void 0 : _c.checkbox) ? /* @__PURE__ */ jsx(DataGridCell, { type: "header", component: "checkbox", locked: true, children: /* @__PURE__ */ jsx(
|
|
846
845
|
Checkbox,
|
|
847
846
|
{
|
|
848
847
|
checked: allSelectedAcrossPages,
|
|
849
848
|
indeterminate: someSelectedAcrossPages,
|
|
850
849
|
onChange: toggleSelectAllAcrossPages
|
|
851
850
|
}
|
|
852
|
-
)
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
) },
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
851
|
+
) }) : flexRender(
|
|
852
|
+
header.column.columnDef.header,
|
|
853
|
+
header.getContext()
|
|
854
|
+
) }, header.id);
|
|
855
|
+
}) }, headerGroup.id);
|
|
856
|
+
}) }),
|
|
857
|
+
/* @__PURE__ */ jsx(
|
|
858
|
+
TableBody,
|
|
859
|
+
__spreadProps(__spreadValues({}, props), {
|
|
860
|
+
table,
|
|
861
|
+
locked: true,
|
|
862
|
+
pinDirection
|
|
863
|
+
})
|
|
864
|
+
)
|
|
865
|
+
]
|
|
866
|
+
}
|
|
867
|
+
);
|
|
869
868
|
}
|
|
870
869
|
var LoadingCell = ({
|
|
871
870
|
id,
|
package/package.json
CHANGED
|
@@ -147,7 +147,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
147
147
|
centerHeader,
|
|
148
148
|
enableColumnSelector,
|
|
149
149
|
predeterminedLeftPins = [],
|
|
150
|
-
predeterminedRightPins = []
|
|
150
|
+
predeterminedRightPins = [],
|
|
151
151
|
}: DataGridProps<T>) {
|
|
152
152
|
const [columnOrder, setColumnOrder] = useState<string[]>(() =>
|
|
153
153
|
columns.map((c) => c.id!),
|
|
@@ -267,8 +267,10 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
267
267
|
columnPinning: {
|
|
268
268
|
left: predeterminedLeftPins,
|
|
269
269
|
right: predeterminedRightPins,
|
|
270
|
-
}
|
|
270
|
+
},
|
|
271
271
|
},
|
|
272
|
+
enableColumnPinning:
|
|
273
|
+
predeterminedLeftPins?.length > 0 || predeterminedRightPins.length > 0,
|
|
272
274
|
onColumnOrderChange: setColumnOrder,
|
|
273
275
|
onSortingChange: adaptTableStateSetter(setSortingState),
|
|
274
276
|
onColumnFiltersChange: adaptTableStateSetter(setColumnFilterState),
|
|
@@ -278,7 +280,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
278
280
|
const cellValue = row?.getValue(columnId);
|
|
279
281
|
|
|
280
282
|
if (!cellValue || !filterValue) {
|
|
281
|
-
return true
|
|
283
|
+
return true;
|
|
282
284
|
}
|
|
283
285
|
|
|
284
286
|
return String(cellValue)
|
|
@@ -289,7 +291,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
289
291
|
const cellValue = row?.getValue(columnId);
|
|
290
292
|
|
|
291
293
|
if (!cellValue || !filterValue) {
|
|
292
|
-
return true
|
|
294
|
+
return true;
|
|
293
295
|
}
|
|
294
296
|
|
|
295
297
|
return String(cellValue)
|
|
@@ -401,7 +403,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
401
403
|
<div
|
|
402
404
|
className={clsx(
|
|
403
405
|
"flex overflow-auto scrollbar-thin relative contain-paint will-change-transform",
|
|
404
|
-
empty ? "overflow-y-hidden" : "h-full"
|
|
406
|
+
empty ? "overflow-y-hidden" : "h-full",
|
|
405
407
|
)}
|
|
406
408
|
ref={containerRef}
|
|
407
409
|
>
|
|
@@ -415,7 +417,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
415
417
|
showFilterRow={showFilterRow}
|
|
416
418
|
enableColumnSelector={enableColumnSelector}
|
|
417
419
|
/>
|
|
418
|
-
|
|
420
|
+
|
|
419
421
|
<table className="flex-1 grid min-h-min">
|
|
420
422
|
<thead className="sticky top-0 z-10 grid">
|
|
421
423
|
{table.getCenterHeaderGroups().map((headerGroup) => (
|
|
@@ -550,7 +552,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
550
552
|
enableColumnSelector={enableColumnSelector}
|
|
551
553
|
/>
|
|
552
554
|
</table>
|
|
553
|
-
|
|
555
|
+
|
|
554
556
|
<PinnedColumns
|
|
555
557
|
pinDirection="right"
|
|
556
558
|
table={table}
|
|
@@ -678,7 +680,7 @@ interface TableBodyProps<TData extends RowData> {
|
|
|
678
680
|
showFilterRow: boolean;
|
|
679
681
|
enableColumnSelector?: boolean;
|
|
680
682
|
locked?: boolean;
|
|
681
|
-
pinDirection?:
|
|
683
|
+
pinDirection?: "left" | "right";
|
|
682
684
|
}
|
|
683
685
|
|
|
684
686
|
// Helpers
|
|
@@ -711,9 +713,9 @@ function TableBody<T>({
|
|
|
711
713
|
const CellElement = locked ? DataGridCell : DragAlongCell;
|
|
712
714
|
|
|
713
715
|
let headerGroups: HeaderGroup<T>[];
|
|
714
|
-
if (pinDirection ===
|
|
716
|
+
if (pinDirection === "left") {
|
|
715
717
|
headerGroups = table.getLeftHeaderGroups();
|
|
716
|
-
} else if (pinDirection ===
|
|
718
|
+
} else if (pinDirection === "right") {
|
|
717
719
|
headerGroups = table.getRightHeaderGroups();
|
|
718
720
|
} else {
|
|
719
721
|
headerGroups = table.getCenterHeaderGroups();
|
|
@@ -751,7 +753,10 @@ function TableBody<T>({
|
|
|
751
753
|
noPadding
|
|
752
754
|
key={header.id}
|
|
753
755
|
cell={header}
|
|
754
|
-
width={
|
|
756
|
+
width={
|
|
757
|
+
header.column.columnDef.meta?.headerWidth ||
|
|
758
|
+
(locked ? `${header.column.getSize()}px` : "")
|
|
759
|
+
}
|
|
755
760
|
>
|
|
756
761
|
{header.column.getCanFilter() &&
|
|
757
762
|
(header.column.columnDef.meta?.filterRowCell?.({
|
|
@@ -828,7 +833,7 @@ interface TableBodyRowProps<T> {
|
|
|
828
833
|
showFilterRow: boolean;
|
|
829
834
|
enableColumnSelector?: boolean;
|
|
830
835
|
locked?: boolean;
|
|
831
|
-
pinDirection?:
|
|
836
|
+
pinDirection?: "left" | "right";
|
|
832
837
|
}
|
|
833
838
|
|
|
834
839
|
function TableBodyRow<T>({
|
|
@@ -847,9 +852,10 @@ function TableBodyRow<T>({
|
|
|
847
852
|
let visibleCells: Cell<T, unknown>[];
|
|
848
853
|
|
|
849
854
|
if (locked) {
|
|
850
|
-
visibleCells =
|
|
851
|
-
|
|
852
|
-
|
|
855
|
+
visibleCells =
|
|
856
|
+
pinDirection === "left"
|
|
857
|
+
? row.getLeftVisibleCells()
|
|
858
|
+
: row.getRightVisibleCells();
|
|
853
859
|
} else {
|
|
854
860
|
visibleCells = row.getCenterVisibleCells();
|
|
855
861
|
}
|
|
@@ -862,7 +868,7 @@ function TableBodyRow<T>({
|
|
|
862
868
|
row.original !== null &&
|
|
863
869
|
"rowState" in row.original &&
|
|
864
870
|
row.original.rowState === "error";
|
|
865
|
-
|
|
871
|
+
|
|
866
872
|
const CellElement = locked ? DataGridCell : DragAlongCell;
|
|
867
873
|
|
|
868
874
|
return (
|
|
@@ -891,7 +897,7 @@ function TableBodyRow<T>({
|
|
|
891
897
|
) : null}
|
|
892
898
|
|
|
893
899
|
{columns.map((column) => {
|
|
894
|
-
const cell = locked
|
|
900
|
+
const cell = locked
|
|
895
901
|
? (column as Cell<T, unknown>)
|
|
896
902
|
: visibleCells[(column as VirtualItem).index];
|
|
897
903
|
|
|
@@ -928,14 +934,15 @@ function TableBodyRow<T>({
|
|
|
928
934
|
<td style={{ display: "flex", width: virtualPaddingRight }} />
|
|
929
935
|
) : null}
|
|
930
936
|
|
|
931
|
-
{enableColumnSelector && !locked &&
|
|
937
|
+
{enableColumnSelector && !locked && (
|
|
938
|
+
<td className="p-2" style={{ width: "48.8px" }}></td>
|
|
939
|
+
)}
|
|
932
940
|
</tr>
|
|
933
941
|
);
|
|
934
942
|
}
|
|
935
943
|
|
|
936
|
-
|
|
937
944
|
interface PinnedColumnsProps<TData extends RowData> {
|
|
938
|
-
pinDirection:
|
|
945
|
+
pinDirection: "left" | "right";
|
|
939
946
|
table: Table<TData>;
|
|
940
947
|
tableContainerRef: React.RefObject<HTMLDivElement | null>;
|
|
941
948
|
pagination: DataGridPagination | undefined;
|
|
@@ -957,109 +964,108 @@ function PinnedColumns<TData>({
|
|
|
957
964
|
someSelectedAcrossPages,
|
|
958
965
|
toggleSelectAllAcrossPages,
|
|
959
966
|
...props
|
|
960
|
-
}
|
|
961
|
-
const headerGroups =
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
967
|
+
}: PinnedColumnsProps<TData>) {
|
|
968
|
+
const headerGroups =
|
|
969
|
+
pinDirection === "left"
|
|
970
|
+
? table.getLeftHeaderGroups()
|
|
971
|
+
: table.getRightHeaderGroups();
|
|
972
|
+
|
|
973
|
+
return (
|
|
974
|
+
headerGroups[0]?.headers.length > 0 && (
|
|
975
|
+
<table
|
|
976
|
+
className={clsx(
|
|
977
|
+
"grid min-h-min sticky z-20 bg-background-grouped-primary-normal",
|
|
978
|
+
pinDirection === "left" ? "left-0" : "right-0",
|
|
979
|
+
)}
|
|
980
|
+
>
|
|
970
981
|
<thead className="sticky top-0 z-20 grid">
|
|
971
982
|
{headerGroups.map((headerGroup) => {
|
|
972
983
|
return (
|
|
973
984
|
<tr key={headerGroup.id} className="flex w-full">
|
|
974
985
|
{headerGroup.headers.map((header) => {
|
|
986
|
+
if (!header) {
|
|
987
|
+
return;
|
|
988
|
+
}
|
|
975
989
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
if (typeof header.column.columnDef.header === "string") {
|
|
981
|
-
const customHeaderWidth =
|
|
982
|
-
header.column.columnDef.meta?.headerWidth;
|
|
990
|
+
if (typeof header.column.columnDef.header === "string") {
|
|
991
|
+
const customHeaderWidth =
|
|
992
|
+
header.column.columnDef.meta?.headerWidth;
|
|
983
993
|
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
)}
|
|
997
|
-
>
|
|
998
|
-
<Subheader tall>
|
|
999
|
-
{header.column.columnDef.header}
|
|
1000
|
-
</Subheader>
|
|
1001
|
-
|
|
1002
|
-
{getSortIcon(header.column.getIsSorted())}
|
|
1003
|
-
|
|
1004
|
-
{!header.column.getIsSorted() &&
|
|
1005
|
-
header.column.getCanSort() &&
|
|
1006
|
-
getSortIcon(
|
|
1007
|
-
header.column.getNextSortingOrder(),
|
|
1008
|
-
true,
|
|
994
|
+
return (
|
|
995
|
+
<DataCellHeader
|
|
996
|
+
locked
|
|
997
|
+
key={header.id}
|
|
998
|
+
header={header}
|
|
999
|
+
center={centerHeader}
|
|
1000
|
+
width={customHeaderWidth}
|
|
1001
|
+
className={clsx(
|
|
1002
|
+
header.column.getCanSort()
|
|
1003
|
+
? "cursor-pointer"
|
|
1004
|
+
: "cursor-grab",
|
|
1005
|
+
"group",
|
|
1009
1006
|
)}
|
|
1007
|
+
>
|
|
1008
|
+
<Subheader tall>
|
|
1009
|
+
{header.column.columnDef.header}
|
|
1010
|
+
</Subheader>
|
|
1010
1011
|
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1012
|
+
{getSortIcon(header.column.getIsSorted())}
|
|
1013
|
+
|
|
1014
|
+
{!header.column.getIsSorted() &&
|
|
1015
|
+
header.column.getCanSort() &&
|
|
1016
|
+
getSortIcon(
|
|
1017
|
+
header.column.getNextSortingOrder(),
|
|
1018
|
+
true,
|
|
1019
|
+
)}
|
|
1020
|
+
|
|
1021
|
+
{header.column.getSortIndex() !== -1 &&
|
|
1022
|
+
table.getState().sorting.length > 1 && (
|
|
1023
|
+
<Subheader tall>
|
|
1024
|
+
{header.column.getSortIndex() + 1}
|
|
1025
|
+
</Subheader>
|
|
1026
|
+
)}
|
|
1017
1027
|
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1028
|
+
{!header.column.columnDef.meta?.locked && (
|
|
1029
|
+
<div
|
|
1030
|
+
onDoubleClick={(e) => {
|
|
1031
|
+
e.stopPropagation();
|
|
1032
|
+
header.column.resetSize();
|
|
1033
|
+
}}
|
|
1034
|
+
onMouseDown={(e) => {
|
|
1035
|
+
e.stopPropagation();
|
|
1036
|
+
header.getResizeHandler()(e);
|
|
1037
|
+
}}
|
|
1038
|
+
onTouchStart={(e) => {
|
|
1039
|
+
e.stopPropagation();
|
|
1040
|
+
header.getResizeHandler()(e);
|
|
1041
|
+
}}
|
|
1042
|
+
className="absolute right-0 inset-y-0 w-px bg-black cursor-col-resize"
|
|
1043
|
+
/>
|
|
1044
|
+
)}
|
|
1045
|
+
</DataCellHeader>
|
|
1046
|
+
);
|
|
1047
|
+
}
|
|
1048
|
+
return (
|
|
1049
|
+
<React.Fragment key={header.id}>
|
|
1050
|
+
{header.column.columnDef.meta?.checkbox ? (
|
|
1051
|
+
<DataGridCell type="header" component="checkbox" locked>
|
|
1052
|
+
<Checkbox
|
|
1053
|
+
checked={allSelectedAcrossPages}
|
|
1054
|
+
indeterminate={someSelectedAcrossPages}
|
|
1055
|
+
onChange={toggleSelectAllAcrossPages}
|
|
1056
|
+
/>
|
|
1057
|
+
</DataGridCell>
|
|
1058
|
+
) : (
|
|
1059
|
+
flexRender(
|
|
1060
|
+
header.column.columnDef.header,
|
|
1061
|
+
header.getContext(),
|
|
1062
|
+
)
|
|
1034
1063
|
)}
|
|
1035
|
-
</
|
|
1064
|
+
</React.Fragment>
|
|
1036
1065
|
);
|
|
1037
|
-
}
|
|
1038
|
-
return (
|
|
1039
|
-
<React.Fragment key={header.id}>
|
|
1040
|
-
{header.column.columnDef.meta?.checkbox ? (
|
|
1041
|
-
<DataGridCell
|
|
1042
|
-
type="header"
|
|
1043
|
-
component="checkbox"
|
|
1044
|
-
locked
|
|
1045
|
-
>
|
|
1046
|
-
<Checkbox
|
|
1047
|
-
checked={allSelectedAcrossPages}
|
|
1048
|
-
indeterminate={someSelectedAcrossPages}
|
|
1049
|
-
onChange={toggleSelectAllAcrossPages}
|
|
1050
|
-
/>
|
|
1051
|
-
</DataGridCell>
|
|
1052
|
-
) : (
|
|
1053
|
-
flexRender(
|
|
1054
|
-
header.column.columnDef.header,
|
|
1055
|
-
header.getContext(),
|
|
1056
|
-
)
|
|
1057
|
-
)}
|
|
1058
|
-
</React.Fragment>
|
|
1059
|
-
);
|
|
1060
1066
|
})}
|
|
1061
1067
|
</tr>
|
|
1062
|
-
)
|
|
1068
|
+
);
|
|
1063
1069
|
})}
|
|
1064
1070
|
</thead>
|
|
1065
1071
|
|
|
@@ -1071,6 +1077,7 @@ function PinnedColumns<TData>({
|
|
|
1071
1077
|
/>
|
|
1072
1078
|
</table>
|
|
1073
1079
|
)
|
|
1080
|
+
);
|
|
1074
1081
|
}
|
|
1075
1082
|
|
|
1076
1083
|
const LoadingCell = <T extends RowData>({
|