@ackplus/react-tanstack-data-table 1.1.1 → 1.1.5
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/lib/components/headers/table-header.js +1 -1
- package/dist/lib/components/rows/data-table-row.d.ts.map +1 -1
- package/dist/lib/components/rows/data-table-row.js +12 -4
- package/dist/lib/data-table.d.ts.map +1 -1
- package/dist/lib/data-table.js +9 -4
- package/dist/lib/features/column-filter.feature.d.ts.map +1 -1
- package/dist/lib/features/column-filter.feature.js +2 -1
- package/dist/lib/types/data-table.types.d.ts +1 -2
- package/dist/lib/types/data-table.types.d.ts.map +1 -1
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js +2 -0
- package/dist/lib/utils/special-columns.utils.d.ts.map +1 -1
- package/dist/lib/utils/special-columns.utils.js +9 -2
- package/package.json +1 -1
- package/src/lib/components/headers/table-header.tsx +1 -1
- package/src/lib/components/rows/data-table-row.tsx +14 -4
- package/src/lib/data-table.tsx +9 -4
- package/src/lib/features/column-filter.feature.ts +3 -1
- package/src/lib/types/data-table.types.ts +1 -4
- package/src/lib/types/index.ts +2 -0
- package/src/lib/utils/special-columns.utils.ts +9 -2
|
@@ -52,7 +52,7 @@ function TableHeader(props) {
|
|
|
52
52
|
align: alignment,
|
|
53
53
|
sx: {
|
|
54
54
|
...(0, utils_1.getPinnedColumnStyle)({
|
|
55
|
-
width:
|
|
55
|
+
width: fitToScreen ? 'auto' : header.getSize(),
|
|
56
56
|
isPinned,
|
|
57
57
|
pinnedPosition,
|
|
58
58
|
isLastLeftPinnedColumn: isPinned === 'left' && header.column.getIsLastColumn('left'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-row.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/rows/data-table-row.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAiC,aAAa,EAAE,cAAc,EAAE,OAAO,EAAmB,MAAM,eAAe,CAAC;AACvH,OAAO,EAAc,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMhD,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,aAAa;IACvD,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"data-table-row.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/rows/data-table-row.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAiC,aAAa,EAAE,cAAc,EAAE,OAAO,EAAmB,MAAM,eAAe,CAAC;AACvH,OAAO,EAAc,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMhD,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,aAAa;IACvD,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,CA+KzE"}
|
|
@@ -34,15 +34,23 @@ function DataTableRow(props) {
|
|
|
34
34
|
const handleRowClick = (event) => {
|
|
35
35
|
// Check if click target is a checkbox, button, or interactive element
|
|
36
36
|
const target = event.target;
|
|
37
|
+
// Check for various interactive elements
|
|
37
38
|
const isCheckboxClick = target.closest('input[type="checkbox"]') !== null;
|
|
38
39
|
const isButtonClick = target.closest('button') !== null;
|
|
39
40
|
const isLinkClick = target.closest('a') !== null;
|
|
40
|
-
//
|
|
41
|
-
|
|
41
|
+
// Check for elements with interactive roles (button, checkbox, switch, etc.)
|
|
42
|
+
const isInteractiveRole = target.closest('[role="button"]') !== null ||
|
|
43
|
+
target.closest('[role="checkbox"]') !== null ||
|
|
44
|
+
target.closest('[role="switch"]') !== null ||
|
|
45
|
+
target.closest('[role="menuitem"]') !== null;
|
|
46
|
+
// Determine if this is an interactive element click
|
|
47
|
+
const isInteractiveClick = isCheckboxClick || isButtonClick || isLinkClick || isInteractiveRole;
|
|
48
|
+
// If selectOnRowClick is enabled and it's not an interactive element click, toggle selection
|
|
49
|
+
if (selectOnRowClick && !isInteractiveClick && (table === null || table === void 0 ? void 0 : table.toggleRowSelected)) {
|
|
42
50
|
table.toggleRowSelected(row.id);
|
|
43
51
|
}
|
|
44
|
-
//
|
|
45
|
-
if (onRowClick) {
|
|
52
|
+
// Only call onRowClick if it's not an interactive element click
|
|
53
|
+
if (onRowClick && !isInteractiveClick) {
|
|
46
54
|
onRowClick(event, row);
|
|
47
55
|
}
|
|
48
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/lib/data-table.tsx"],"names":[],"mappings":"AA6EA;;GAEG;AACH,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/lib/data-table.tsx"],"names":[],"mappings":"AA6EA;;GAEG;AACH,eAAO,MAAM,SAAS,KA2yDpB,CAAC"}
|
package/dist/lib/data-table.js
CHANGED
|
@@ -113,7 +113,7 @@ enableGlobalFilter = true, enableColumnFilter = false, filterMode = 'client',
|
|
|
113
113
|
// Sorting props
|
|
114
114
|
enableSorting = true, sortingMode = 'client', onSortingChange, exportFilename = 'export', onExportProgress, onExportComplete, onExportError, onServerExport, onExportCancel,
|
|
115
115
|
// Styling props
|
|
116
|
-
enableHover = true, enableStripes = false, tableProps = {}, fitToScreen =
|
|
116
|
+
enableHover = true, enableStripes = false, tableProps = {}, fitToScreen = false, tableSize: initialTableSize = 'medium',
|
|
117
117
|
// Sticky header/footer props
|
|
118
118
|
enableStickyHeaderOrFooter = false, maxHeight = '400px',
|
|
119
119
|
// Virtualization props
|
|
@@ -601,7 +601,7 @@ logging, }, ref) {
|
|
|
601
601
|
// Row model
|
|
602
602
|
getCoreRowModel: (0, react_table_1.getCoreRowModel)(),
|
|
603
603
|
...(enableSorting ? { getSortedRowModel: (0, react_table_1.getSortedRowModel)() } : {}),
|
|
604
|
-
...(enableColumnFilter ? { getFilteredRowModel: (0, column_filter_feature_1.getCombinedFilteredRowModel)() } : {}),
|
|
604
|
+
...(enableColumnFilter || enableGlobalFilter ? { getFilteredRowModel: (0, column_filter_feature_1.getCombinedFilteredRowModel)() } : {}),
|
|
605
605
|
...(enablePagination ? { getPaginationRowModel: (0, react_table_1.getPaginationRowModel)() } : {}),
|
|
606
606
|
// Sorting
|
|
607
607
|
enableSorting: enableSorting,
|
|
@@ -642,8 +642,13 @@ logging, }, ref) {
|
|
|
642
642
|
// -------------------------------
|
|
643
643
|
// Virtualization and row memo
|
|
644
644
|
// -------------------------------
|
|
645
|
-
//
|
|
646
|
-
|
|
645
|
+
// Note: globalFilter is needed in dependencies to trigger recalculation when filter changes
|
|
646
|
+
// The table object is stable, so we need to depend on the filter state directly
|
|
647
|
+
const rows = (0, react_1.useMemo)(() => {
|
|
648
|
+
const rowModel = table.getRowModel();
|
|
649
|
+
return (rowModel === null || rowModel === void 0 ? void 0 : rowModel.rows) || [];
|
|
650
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
651
|
+
}, [table, globalFilter, enableGlobalFilter, enableColumnFilter, enablePagination]);
|
|
647
652
|
const rowVirtualizer = (0, react_virtual_1.useVirtualizer)({
|
|
648
653
|
count: rows.length,
|
|
649
654
|
getScrollElement: () => tableContainerRef.current,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-filter.feature.d.ts","sourceRoot":"","sources":["../../../src/lib/features/column-filter.feature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACH,KAAK,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EAGP,QAAQ,EAGX,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAChC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAErE,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC5D;AAGD,OAAO,QAAQ,uBAAuB,CAAC;IACnC,UAAU,UAAU;QAChB,YAAY,EAAE,iBAAiB,CAAC;KACnC;IAED,UAAU,oBAAoB,CAAC,KAAK,SAAS,OAAO;QAChD,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;QACrE,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;KAC5D;IAED,UAAU,KAAK,CAAC,KAAK,SAAS,OAAO;QACjC,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;QAGpE,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QACjF,yBAAyB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;QAC1F,yBAAyB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACtD,4BAA4B,EAAE,MAAM,IAAI,CAAC;QACzC,qBAAqB,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;QAGrD,yBAAyB,EAAE,MAAM,IAAI,CAAC;QAGtC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QAC1E,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;QACnF,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC/C,qBAAqB,EAAE,MAAM,IAAI,CAAC;QAClC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;QAG9C,sBAAsB,EAAE,MAAM,gBAAgB,EAAE,CAAC;QACjD,uBAAuB,EAAE,MAAM,gBAAgB,EAAE,CAAC;QAClD,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;KACjD;CACJ;AA8BD,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,GAAG,CAqLjD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,0BAA0B,CACtC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,GAAE,KAAK,GAAG,IAAY,GAC5B,OAAO,CA2BT;AAED,eAAO,MAAM,2BAA2B,GAAI,KAAK,QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,WAAS,QAAQ,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"column-filter.feature.d.ts","sourceRoot":"","sources":["../../../src/lib/features/column-filter.feature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACH,KAAK,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EAGP,QAAQ,EAGX,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAChC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAErE,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC5D;AAGD,OAAO,QAAQ,uBAAuB,CAAC;IACnC,UAAU,UAAU;QAChB,YAAY,EAAE,iBAAiB,CAAC;KACnC;IAED,UAAU,oBAAoB,CAAC,KAAK,SAAS,OAAO;QAChD,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;QACrE,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;KAC5D;IAED,UAAU,KAAK,CAAC,KAAK,SAAS,OAAO;QACjC,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;QAGpE,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QACjF,yBAAyB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;QAC1F,yBAAyB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACtD,4BAA4B,EAAE,MAAM,IAAI,CAAC;QACzC,qBAAqB,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;QAGrD,yBAAyB,EAAE,MAAM,IAAI,CAAC;QAGtC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QAC1E,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;QACnF,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC/C,qBAAqB,EAAE,MAAM,IAAI,CAAC;QAClC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;QAG9C,sBAAsB,EAAE,MAAM,gBAAgB,EAAE,CAAC;QACjD,uBAAuB,EAAE,MAAM,gBAAgB,EAAE,CAAC;QAClD,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;KACjD;CACJ;AA8BD,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,GAAG,CAqLjD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,0BAA0B,CACtC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,GAAE,KAAK,GAAG,IAAY,GAC5B,OAAO,CA2BT;AAED,eAAO,MAAM,2BAA2B,GAAI,KAAK,QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,WAAS,QAAQ,CAAC,KAAK,CAwCrD,CAAC"}
|
|
@@ -254,8 +254,9 @@ const getCombinedFilteredRowModel = () => {
|
|
|
254
254
|
filters: [],
|
|
255
255
|
logic: 'AND',
|
|
256
256
|
};
|
|
257
|
-
if (!filters.length || !table.options.enableAdvanceColumnFilter)
|
|
257
|
+
if (!filters.length || !table.options.enableAdvanceColumnFilter) {
|
|
258
258
|
return baseFilteredModel;
|
|
259
|
+
}
|
|
259
260
|
// Apply custom column filters to pre-filtered rows
|
|
260
261
|
const filteredRows = baseFilteredModel.rows.filter(row => matchesCustomColumnFilters(row, filters, logic));
|
|
261
262
|
const flatRows = [];
|
|
@@ -6,9 +6,8 @@ import { ReactNode } from 'react';
|
|
|
6
6
|
import type { ColumnFilterState, TableFilters, TableState } from './index';
|
|
7
7
|
import { DataTableSlots, PartialSlotProps } from './slots.types';
|
|
8
8
|
import { DataTableSize } from '../utils/table-helpers';
|
|
9
|
-
import { SelectionState } from '../features';
|
|
9
|
+
import { SelectionState, SelectMode } from '../features';
|
|
10
10
|
import { DataTableLoggingOptions } from '../utils/logger';
|
|
11
|
-
export type SelectMode = 'page' | 'all';
|
|
12
11
|
export interface DataTableProps<T> {
|
|
13
12
|
columns: ColumnDef<T, any>[];
|
|
14
13
|
data?: T[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/data-table.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC5H,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"data-table.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/data-table.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,eAAe,CAAC;AAG9B,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,eAAe,CAAC;AAG9B,cAAc,oBAAoB,CAAC;AAEnC,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/lib/types/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"special-columns.utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/special-columns.utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAgE,MAAM,UAAU,CAAC;AAEzG;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC;CAEzB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAE,QAAQ,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,KAAG,eAAe,CAAC,CAAC,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"special-columns.utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/special-columns.utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAgE,MAAM,UAAU,CAAC;AAEzG;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC;CAEzB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAE,QAAQ,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,KAAG,eAAe,CAAC,CAAC,EAAE,GAAG,CAyD9H,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAE,QAAQ,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAG,eAAe,CAAC,CAAC,CAqB9F,CAAC"}
|
|
@@ -10,7 +10,7 @@ const types_1 = require("../types");
|
|
|
10
10
|
*/
|
|
11
11
|
const createSelectionColumn = (config) => ({
|
|
12
12
|
id: types_1.DEFAULT_SELECTION_COLUMN_NAME,
|
|
13
|
-
|
|
13
|
+
maxSize: 60,
|
|
14
14
|
minSize: 60,
|
|
15
15
|
align: 'center',
|
|
16
16
|
filterable: false,
|
|
@@ -36,6 +36,8 @@ const createSelectionColumn = (config) => ({
|
|
|
36
36
|
},
|
|
37
37
|
size: 'small',
|
|
38
38
|
sx: { p: 0 },
|
|
39
|
+
role: 'checkbox',
|
|
40
|
+
'aria-checked': allSelected ? 'true' : (someSelected ? 'mixed' : 'false'),
|
|
39
41
|
});
|
|
40
42
|
},
|
|
41
43
|
cell: ({ row, table }) => {
|
|
@@ -58,6 +60,8 @@ const createSelectionColumn = (config) => ({
|
|
|
58
60
|
p: 0,
|
|
59
61
|
opacity: canSelect ? 1 : 0.5
|
|
60
62
|
},
|
|
63
|
+
role: 'checkbox',
|
|
64
|
+
'aria-checked': checked ? 'true' : 'false',
|
|
61
65
|
});
|
|
62
66
|
},
|
|
63
67
|
...config,
|
|
@@ -68,7 +72,7 @@ exports.createSelectionColumn = createSelectionColumn;
|
|
|
68
72
|
*/
|
|
69
73
|
const createExpandingColumn = (config) => ({
|
|
70
74
|
id: types_1.DEFAULT_EXPANDING_COLUMN_NAME,
|
|
71
|
-
|
|
75
|
+
maxSize: 60,
|
|
72
76
|
minSize: 60,
|
|
73
77
|
align: 'center',
|
|
74
78
|
filterable: false,
|
|
@@ -82,6 +86,9 @@ const createExpandingColumn = (config) => ({
|
|
|
82
86
|
onClick: row.getToggleExpandedHandler(),
|
|
83
87
|
size: 'small',
|
|
84
88
|
sx: { p: 0 },
|
|
89
|
+
role: 'button',
|
|
90
|
+
'aria-label': row.getIsExpanded() ? 'Collapse row' : 'Expand row',
|
|
91
|
+
'aria-expanded': row.getIsExpanded(),
|
|
85
92
|
}, row.getIsExpanded() ? (0, react_1.createElement)(icons_material_1.KeyboardArrowUpOutlined) : (0, react_1.createElement)(icons_material_1.KeyboardArrowDownOutlined)),
|
|
86
93
|
...config,
|
|
87
94
|
});
|
package/package.json
CHANGED
|
@@ -92,7 +92,7 @@ export function TableHeader<T>(props: TableHeaderProps): ReactElement {
|
|
|
92
92
|
align: alignment,
|
|
93
93
|
sx: {
|
|
94
94
|
...getPinnedColumnStyle({
|
|
95
|
-
width:
|
|
95
|
+
width: fitToScreen ? 'auto' : header.getSize(),
|
|
96
96
|
isPinned,
|
|
97
97
|
pinnedPosition,
|
|
98
98
|
isLastLeftPinnedColumn: isPinned === 'left' && header.column.getIsLastColumn('left'),
|
|
@@ -74,17 +74,27 @@ export function DataTableRow<T>(props: DataTableRowProps<T>): ReactElement {
|
|
|
74
74
|
const handleRowClick = (event: React.MouseEvent<HTMLTableRowElement>) => {
|
|
75
75
|
// Check if click target is a checkbox, button, or interactive element
|
|
76
76
|
const target = event.target as HTMLElement;
|
|
77
|
+
|
|
78
|
+
// Check for various interactive elements
|
|
77
79
|
const isCheckboxClick = target.closest('input[type="checkbox"]') !== null;
|
|
78
80
|
const isButtonClick = target.closest('button') !== null;
|
|
79
81
|
const isLinkClick = target.closest('a') !== null;
|
|
82
|
+
// Check for elements with interactive roles (button, checkbox, switch, etc.)
|
|
83
|
+
const isInteractiveRole = target.closest('[role="button"]') !== null ||
|
|
84
|
+
target.closest('[role="checkbox"]') !== null ||
|
|
85
|
+
target.closest('[role="switch"]') !== null ||
|
|
86
|
+
target.closest('[role="menuitem"]') !== null;
|
|
87
|
+
|
|
88
|
+
// Determine if this is an interactive element click
|
|
89
|
+
const isInteractiveClick = isCheckboxClick || isButtonClick || isLinkClick || isInteractiveRole;
|
|
80
90
|
|
|
81
|
-
// If selectOnRowClick is enabled and it's not
|
|
82
|
-
if (selectOnRowClick && !
|
|
91
|
+
// If selectOnRowClick is enabled and it's not an interactive element click, toggle selection
|
|
92
|
+
if (selectOnRowClick && !isInteractiveClick && table?.toggleRowSelected) {
|
|
83
93
|
table.toggleRowSelected(row.id);
|
|
84
94
|
}
|
|
85
95
|
|
|
86
|
-
//
|
|
87
|
-
if (onRowClick) {
|
|
96
|
+
// Only call onRowClick if it's not an interactive element click
|
|
97
|
+
if (onRowClick && !isInteractiveClick) {
|
|
88
98
|
onRowClick(event, row);
|
|
89
99
|
}
|
|
90
100
|
};
|
package/src/lib/data-table.tsx
CHANGED
|
@@ -154,7 +154,7 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
154
154
|
enableHover = true,
|
|
155
155
|
enableStripes = false,
|
|
156
156
|
tableProps = {},
|
|
157
|
-
fitToScreen =
|
|
157
|
+
fitToScreen = false,
|
|
158
158
|
tableSize: initialTableSize = 'medium',
|
|
159
159
|
|
|
160
160
|
// Sticky header/footer props
|
|
@@ -710,7 +710,7 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
710
710
|
// Row model
|
|
711
711
|
getCoreRowModel: getCoreRowModel(),
|
|
712
712
|
...(enableSorting ? { getSortedRowModel: getSortedRowModel() } : {}),
|
|
713
|
-
...(enableColumnFilter ? { getFilteredRowModel: getCombinedFilteredRowModel<T>() } : {}),
|
|
713
|
+
...(enableColumnFilter || enableGlobalFilter ? { getFilteredRowModel: getCombinedFilteredRowModel<T>() } : {}),
|
|
714
714
|
...(enablePagination ? { getPaginationRowModel: getPaginationRowModel() } : {}),
|
|
715
715
|
// Sorting
|
|
716
716
|
enableSorting: enableSorting,
|
|
@@ -755,8 +755,13 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
755
755
|
// -------------------------------
|
|
756
756
|
// Virtualization and row memo
|
|
757
757
|
// -------------------------------
|
|
758
|
-
//
|
|
759
|
-
|
|
758
|
+
// Note: globalFilter is needed in dependencies to trigger recalculation when filter changes
|
|
759
|
+
// The table object is stable, so we need to depend on the filter state directly
|
|
760
|
+
const rows = useMemo(() => {
|
|
761
|
+
const rowModel = table.getRowModel();
|
|
762
|
+
return rowModel?.rows || [];
|
|
763
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
764
|
+
}, [table, globalFilter, enableGlobalFilter, enableColumnFilter, enablePagination]);
|
|
760
765
|
const rowVirtualizer = useVirtualizer({
|
|
761
766
|
count: rows.length,
|
|
762
767
|
getScrollElement: () => tableContainerRef.current,
|
|
@@ -338,7 +338,9 @@ export const getCombinedFilteredRowModel = <TData,>() => {
|
|
|
338
338
|
logic: 'AND',
|
|
339
339
|
};
|
|
340
340
|
|
|
341
|
-
if (!filters.length || !table.options.enableAdvanceColumnFilter)
|
|
341
|
+
if (!filters.length || !table.options.enableAdvanceColumnFilter) {
|
|
342
|
+
return baseFilteredModel;
|
|
343
|
+
}
|
|
342
344
|
|
|
343
345
|
// Apply custom column filters to pre-filtered rows
|
|
344
346
|
const filteredRows = baseFilteredModel.rows.filter(row =>
|
|
@@ -7,12 +7,9 @@ import { ReactNode } from 'react';
|
|
|
7
7
|
import type { ColumnFilterState, TableFilters, TableState } from './index';
|
|
8
8
|
import { DataTableSlots, PartialSlotProps } from './slots.types';
|
|
9
9
|
import { DataTableSize } from '../utils/table-helpers';
|
|
10
|
-
import { SelectionState } from '../features';
|
|
10
|
+
import { SelectionState, SelectMode } from '../features';
|
|
11
11
|
import { DataTableLoggingOptions } from '../utils/logger';
|
|
12
12
|
|
|
13
|
-
// Selection mode type
|
|
14
|
-
export type SelectMode = 'page' | 'all';
|
|
15
|
-
|
|
16
13
|
// Dynamic data management interfaces
|
|
17
14
|
// TableFilters now imported from types folder
|
|
18
15
|
|
package/src/lib/types/index.ts
CHANGED
|
@@ -18,5 +18,7 @@ export * from './data-table-api';
|
|
|
18
18
|
// Slots and slotProps types
|
|
19
19
|
export * from './slots.types';
|
|
20
20
|
|
|
21
|
+
// DataTable types
|
|
22
|
+
export * from './data-table.types';
|
|
21
23
|
// Re-export commonly used types for convenience
|
|
22
24
|
export type { DataTableApi } from './data-table-api';
|
|
@@ -17,7 +17,7 @@ export interface SelectionColumnConfig<T> {
|
|
|
17
17
|
*/
|
|
18
18
|
export const createSelectionColumn = <T>(config: Partial<DataTableColumn<T>> & SelectionColumnConfig<T>): DataTableColumn<T, any> => ({
|
|
19
19
|
id: DEFAULT_SELECTION_COLUMN_NAME,
|
|
20
|
-
|
|
20
|
+
maxSize: 60,
|
|
21
21
|
minSize: 60,
|
|
22
22
|
align: 'center',
|
|
23
23
|
filterable: false,
|
|
@@ -42,6 +42,8 @@ export const createSelectionColumn = <T>(config: Partial<DataTableColumn<T>> & S
|
|
|
42
42
|
},
|
|
43
43
|
size: 'small',
|
|
44
44
|
sx: { p: 0 },
|
|
45
|
+
role: 'checkbox',
|
|
46
|
+
'aria-checked': allSelected ? 'true' : (someSelected ? 'mixed' : 'false'),
|
|
45
47
|
});
|
|
46
48
|
},
|
|
47
49
|
|
|
@@ -65,6 +67,8 @@ export const createSelectionColumn = <T>(config: Partial<DataTableColumn<T>> & S
|
|
|
65
67
|
p: 0,
|
|
66
68
|
opacity: canSelect ? 1 : 0.5
|
|
67
69
|
},
|
|
70
|
+
role: 'checkbox',
|
|
71
|
+
'aria-checked': checked ? 'true' : 'false',
|
|
68
72
|
});
|
|
69
73
|
},
|
|
70
74
|
...config,
|
|
@@ -75,7 +79,7 @@ export const createSelectionColumn = <T>(config: Partial<DataTableColumn<T>> & S
|
|
|
75
79
|
*/
|
|
76
80
|
export const createExpandingColumn = <T>(config: Partial<DataTableColumn<T>>): DataTableColumn<T> => ({
|
|
77
81
|
id: DEFAULT_EXPANDING_COLUMN_NAME,
|
|
78
|
-
|
|
82
|
+
maxSize: 60,
|
|
79
83
|
minSize: 60,
|
|
80
84
|
align: 'center',
|
|
81
85
|
filterable: false,
|
|
@@ -89,6 +93,9 @@ export const createExpandingColumn = <T>(config: Partial<DataTableColumn<T>>): D
|
|
|
89
93
|
onClick: row.getToggleExpandedHandler(),
|
|
90
94
|
size: 'small',
|
|
91
95
|
sx: { p: 0 },
|
|
96
|
+
role: 'button',
|
|
97
|
+
'aria-label': row.getIsExpanded() ? 'Collapse row' : 'Expand row',
|
|
98
|
+
'aria-expanded': row.getIsExpanded(),
|
|
92
99
|
}, row.getIsExpanded() ? createElement(KeyboardArrowUpOutlined) : createElement(KeyboardArrowDownOutlined)),
|
|
93
100
|
...config,
|
|
94
101
|
});
|