@ackplus/react-tanstack-data-table 1.0.35 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/{src → dist}/index.d.ts +21 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/{src → dist}/lib/components/droupdown/menu-dropdown.d.ts +2 -1
- package/dist/lib/components/droupdown/menu-dropdown.d.ts.map +1 -0
- package/{src → dist}/lib/components/droupdown/menu-dropdown.js +38 -7
- package/{src → dist}/lib/components/filters/filter-value-input.d.ts +3 -1
- package/dist/lib/components/filters/filter-value-input.d.ts.map +1 -0
- package/dist/lib/components/filters/filter-value-input.js +83 -0
- package/{src → dist}/lib/components/filters/index.d.ts +1 -0
- package/dist/lib/components/filters/index.d.ts.map +1 -0
- package/dist/lib/components/filters/index.js +142 -0
- package/{src → dist}/lib/components/headers/draggable-header.d.ts +2 -2
- package/dist/lib/components/headers/draggable-header.d.ts.map +1 -0
- package/{src → dist}/lib/components/headers/draggable-header.js +81 -17
- package/dist/lib/components/headers/index.d.ts +6 -0
- package/dist/lib/components/headers/index.d.ts.map +1 -0
- package/dist/lib/components/headers/index.js +21 -0
- package/{src → dist}/lib/components/headers/table-header.d.ts +15 -1
- package/dist/lib/components/headers/table-header.d.ts.map +1 -0
- package/{src → dist}/lib/components/headers/table-header.js +50 -17
- package/{src → dist}/lib/components/index.d.ts +6 -1
- package/dist/lib/components/index.d.ts.map +1 -0
- package/dist/lib/components/index.js +32 -0
- package/{src → dist}/lib/components/pagination/data-table-pagination.d.ts +2 -1
- package/dist/lib/components/pagination/data-table-pagination.d.ts.map +1 -0
- package/{src → dist}/lib/components/pagination/data-table-pagination.js +20 -6
- package/dist/lib/components/pagination/index.d.ts +5 -0
- package/dist/lib/components/pagination/index.d.ts.map +1 -0
- package/dist/lib/components/pagination/index.js +20 -0
- package/{src → dist}/lib/components/rows/data-table-row.d.ts +15 -2
- package/dist/lib/components/rows/data-table-row.d.ts.map +1 -0
- package/{src → dist}/lib/components/rows/data-table-row.js +58 -25
- package/{src → dist}/lib/components/rows/empty-data-row.d.ts +3 -3
- package/dist/lib/components/rows/empty-data-row.d.ts.map +1 -0
- package/{src → dist}/lib/components/rows/empty-data-row.js +12 -4
- package/dist/lib/components/rows/index.d.ts +7 -0
- package/dist/lib/components/rows/index.d.ts.map +1 -0
- package/dist/lib/components/rows/index.js +22 -0
- package/{src → dist}/lib/components/rows/loading-rows.d.ts +3 -1
- package/dist/lib/components/rows/loading-rows.d.ts.map +1 -0
- package/{src → dist}/lib/components/rows/loading-rows.js +27 -19
- package/{src → dist}/lib/components/toolbar/bulk-actions-toolbar.d.ts +4 -3
- package/dist/lib/components/toolbar/bulk-actions-toolbar.d.ts.map +1 -0
- package/dist/lib/components/toolbar/bulk-actions-toolbar.js +49 -0
- package/{src → dist}/lib/components/toolbar/column-filter-control.d.ts +3 -1
- package/dist/lib/components/toolbar/column-filter-control.d.ts.map +1 -0
- package/{src → dist}/lib/components/toolbar/column-filter-control.js +73 -4
- package/{src → dist}/lib/components/toolbar/column-pinning-control.d.ts +2 -1
- package/dist/lib/components/toolbar/column-pinning-control.d.ts.map +1 -0
- package/{src → dist}/lib/components/toolbar/column-pinning-control.js +70 -6
- package/{src → dist}/lib/components/toolbar/column-reset-control.d.ts +3 -1
- package/dist/lib/components/toolbar/column-reset-control.d.ts.map +1 -0
- package/{src → dist}/lib/components/toolbar/column-reset-control.js +9 -2
- package/{src → dist}/lib/components/toolbar/column-visibility-control.d.ts +2 -1
- package/dist/lib/components/toolbar/column-visibility-control.d.ts.map +1 -0
- package/dist/lib/components/toolbar/column-visibility-control.js +77 -0
- package/{src → dist}/lib/components/toolbar/data-table-toolbar.d.ts +3 -2
- package/dist/lib/components/toolbar/data-table-toolbar.d.ts.map +1 -0
- package/{src → dist}/lib/components/toolbar/data-table-toolbar.js +17 -4
- package/{src → dist}/lib/components/toolbar/index.d.ts +4 -0
- package/dist/lib/components/toolbar/index.d.ts.map +1 -0
- package/{src → dist}/lib/components/toolbar/index.js +6 -0
- package/dist/lib/components/toolbar/table-export-control.d.ts +12 -0
- package/dist/lib/components/toolbar/table-export-control.d.ts.map +1 -0
- package/dist/lib/components/toolbar/table-export-control.js +67 -0
- package/{src → dist}/lib/components/toolbar/table-search-control.d.ts +3 -1
- package/dist/lib/components/toolbar/table-search-control.d.ts.map +1 -0
- package/{src → dist}/lib/components/toolbar/table-search-control.js +45 -2
- package/{src → dist}/lib/components/toolbar/table-size-control.d.ts +3 -1
- package/dist/lib/components/toolbar/table-size-control.d.ts.map +1 -0
- package/{src → dist}/lib/components/toolbar/table-size-control.js +20 -8
- package/{src → dist}/lib/contexts/data-table-context.d.ts +6 -2
- package/dist/lib/contexts/data-table-context.d.ts.map +1 -0
- package/{src → dist}/lib/contexts/data-table-context.js +34 -1
- package/dist/lib/data-table.d.ts +5 -0
- package/dist/lib/data-table.d.ts.map +1 -0
- package/{src/lib/components/table → dist/lib}/data-table.js +427 -143
- package/dist/lib/features/column-filter.feature.d.ts +55 -0
- package/dist/lib/features/column-filter.feature.d.ts.map +1 -0
- package/{src → dist}/lib/features/column-filter.feature.js +116 -18
- package/dist/lib/features/index.d.ts +9 -0
- package/dist/lib/features/index.d.ts.map +1 -0
- package/{src → dist}/lib/features/index.js +7 -0
- package/{src → dist}/lib/features/selection.feature.d.ts +8 -1
- package/dist/lib/features/selection.feature.d.ts.map +1 -0
- package/{src → dist}/lib/features/selection.feature.js +76 -15
- package/dist/lib/icons/add-icon.d.ts +4 -0
- package/dist/lib/icons/add-icon.d.ts.map +1 -0
- package/dist/lib/icons/add-icon.js +12 -0
- package/dist/lib/icons/csv-icon.d.ts +4 -0
- package/dist/lib/icons/csv-icon.d.ts.map +1 -0
- package/dist/lib/icons/csv-icon.js +12 -0
- package/dist/lib/icons/delete-icon.d.ts +4 -0
- package/dist/lib/icons/delete-icon.d.ts.map +1 -0
- package/dist/lib/icons/delete-icon.js +12 -0
- package/dist/lib/icons/excel-icon.d.ts +4 -0
- package/dist/lib/icons/excel-icon.d.ts.map +1 -0
- package/dist/lib/icons/excel-icon.js +12 -0
- package/dist/lib/icons/index.d.ts +8 -0
- package/dist/lib/icons/index.d.ts.map +1 -0
- package/dist/lib/icons/unpin-icon.d.ts +4 -0
- package/dist/lib/icons/unpin-icon.d.ts.map +1 -0
- package/dist/lib/icons/unpin-icon.js +12 -0
- package/{src → dist}/lib/icons/view-comfortable-icon.d.ts +3 -1
- package/dist/lib/icons/view-comfortable-icon.d.ts.map +1 -0
- package/dist/lib/icons/view-comfortable-icon.js +12 -0
- package/dist/lib/icons/view-compact-icon.d.ts +4 -0
- package/dist/lib/icons/view-compact-icon.d.ts.map +1 -0
- package/dist/lib/icons/view-compact-icon.js +12 -0
- package/{src → dist}/lib/types/column.types.d.ts +10 -1
- package/dist/lib/types/column.types.d.ts.map +1 -0
- package/{src → dist}/lib/types/data-table-api.d.ts +2 -1
- package/dist/lib/types/data-table-api.d.ts.map +1 -0
- package/{src/lib/components/table → dist/lib/types}/data-table.types.d.ts +10 -10
- package/dist/lib/types/data-table.types.d.ts.map +1 -0
- package/{src → dist}/lib/types/export.types.d.ts +38 -0
- package/dist/lib/types/export.types.d.ts.map +1 -0
- package/dist/lib/types/export.types.js +6 -0
- package/{src → dist}/lib/types/index.d.ts +5 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/lib/types/index.js +30 -0
- package/{src → dist}/lib/types/slots.types.d.ts +50 -3
- package/dist/lib/types/slots.types.d.ts.map +1 -0
- package/{src → dist}/lib/types/table.types.d.ts +14 -0
- package/dist/lib/types/table.types.d.ts.map +1 -0
- package/{src → dist}/lib/utils/column-helpers.d.ts +10 -0
- package/dist/lib/utils/column-helpers.d.ts.map +1 -0
- package/{src → dist}/lib/utils/column-helpers.js +20 -4
- package/{src → dist}/lib/utils/debounced-fetch.utils.d.ts +3 -5
- package/dist/lib/utils/debounced-fetch.utils.d.ts.map +1 -0
- package/{src → dist}/lib/utils/debounced-fetch.utils.js +12 -6
- package/{src → dist}/lib/utils/export-utils.d.ts +13 -0
- package/dist/lib/utils/export-utils.d.ts.map +1 -0
- package/dist/lib/utils/export-utils.js +252 -0
- package/{src → dist}/lib/utils/index.d.ts +4 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +35 -0
- package/{src → dist}/lib/utils/logger.d.ts +43 -0
- package/dist/lib/utils/logger.d.ts.map +1 -0
- package/{src → dist}/lib/utils/logger.js +22 -2
- package/{src → dist}/lib/utils/slot-helpers.d.ts +39 -1
- package/dist/lib/utils/slot-helpers.d.ts.map +1 -0
- package/{src → dist}/lib/utils/slot-helpers.js +55 -6
- package/{src → dist}/lib/utils/special-columns.utils.d.ts +10 -0
- package/dist/lib/utils/special-columns.utils.d.ts.map +1 -0
- package/{src → dist}/lib/utils/special-columns.utils.js +41 -5
- package/{src → dist}/lib/utils/styling-helpers.d.ts +20 -0
- package/dist/lib/utils/styling-helpers.d.ts.map +1 -0
- package/dist/lib/utils/styling-helpers.js +108 -0
- package/{src → dist}/lib/utils/table-helpers.d.ts +25 -0
- package/dist/lib/utils/table-helpers.d.ts.map +1 -0
- package/{src → dist}/lib/utils/table-helpers.js +24 -0
- package/package.json +36 -11
- package/src/index.ts +71 -0
- package/src/lib/components/droupdown/menu-dropdown.tsx +97 -0
- package/src/lib/components/filters/filter-value-input.tsx +225 -0
- package/src/lib/components/filters/{index.js → index.ts} +3 -6
- package/src/lib/components/headers/draggable-header.tsx +326 -0
- package/src/lib/components/headers/{index.d.ts → index.ts} +4 -0
- package/src/lib/components/headers/table-header.tsx +173 -0
- package/src/lib/components/index.ts +21 -0
- package/src/lib/components/pagination/data-table-pagination.tsx +99 -0
- package/src/lib/components/pagination/index.ts +5 -0
- package/src/lib/components/rows/data-table-row.tsx +208 -0
- package/src/lib/components/rows/empty-data-row.tsx +69 -0
- package/src/lib/components/rows/{index.d.ts → index.ts} +4 -0
- package/src/lib/components/rows/loading-rows.tsx +160 -0
- package/src/lib/components/toolbar/bulk-actions-toolbar.tsx +125 -0
- package/src/lib/components/toolbar/column-filter-control.tsx +374 -0
- package/src/lib/components/toolbar/column-pinning-control.tsx +275 -0
- package/src/lib/components/toolbar/column-reset-control.tsx +74 -0
- package/src/lib/components/toolbar/column-visibility-control.tsx +105 -0
- package/src/lib/components/toolbar/data-table-toolbar.tsx +229 -0
- package/src/lib/components/toolbar/index.ts +17 -0
- package/src/lib/components/toolbar/table-export-control.tsx +179 -0
- package/src/lib/components/toolbar/table-search-control.tsx +155 -0
- package/src/lib/components/toolbar/table-size-control.tsx +102 -0
- package/src/lib/contexts/data-table-context.tsx +112 -0
- package/src/lib/data-table.tsx +1911 -0
- package/src/lib/features/README.md +161 -0
- package/src/lib/features/column-filter.feature.ts +456 -0
- package/src/lib/features/index.ts +23 -0
- package/src/lib/features/selection.feature.ts +318 -0
- package/src/lib/icons/add-icon.tsx +23 -0
- package/src/lib/icons/csv-icon.tsx +15 -0
- package/src/lib/icons/delete-icon.tsx +30 -0
- package/src/lib/icons/excel-icon.tsx +15 -0
- package/src/lib/icons/unpin-icon.tsx +18 -0
- package/src/lib/icons/view-comfortable-icon.tsx +45 -0
- package/src/lib/icons/view-compact-icon.tsx +55 -0
- package/src/lib/types/column.types.ts +44 -0
- package/src/lib/types/data-table-api.ts +169 -0
- package/src/lib/types/data-table.types.ts +139 -0
- package/src/lib/types/export.types.ts +154 -0
- package/src/lib/types/index.ts +22 -0
- package/src/lib/types/slots.types.ts +332 -0
- package/src/lib/types/table.types.ts +90 -0
- package/src/lib/utils/column-helpers.ts +72 -0
- package/src/lib/utils/debounced-fetch.utils.ts +54 -0
- package/src/lib/utils/export-utils.ts +285 -0
- package/src/lib/utils/index.ts +27 -0
- package/src/lib/utils/logger.ts +203 -0
- package/src/lib/utils/slot-helpers.tsx +194 -0
- package/src/lib/utils/special-columns.utils.ts +94 -0
- package/src/lib/utils/styling-helpers.ts +126 -0
- package/src/lib/utils/table-helpers.ts +106 -0
- package/src/index.js +0 -27
- package/src/lib/components/filters/filter-value-input.js +0 -41
- package/src/lib/components/headers/index.js +0 -5
- package/src/lib/components/index.js +0 -10
- package/src/lib/components/pagination/index.d.ts +0 -1
- package/src/lib/components/pagination/index.js +0 -4
- package/src/lib/components/rows/index.js +0 -6
- package/src/lib/components/table/data-table.d.ts +0 -4
- package/src/lib/components/table/index.d.ts +0 -2
- package/src/lib/components/table/index.js +0 -5
- package/src/lib/components/toolbar/bulk-actions-toolbar.js +0 -30
- package/src/lib/components/toolbar/column-visibility-control.js +0 -31
- package/src/lib/components/toolbar/table-export-control.d.ts +0 -31
- package/src/lib/components/toolbar/table-export-control.js +0 -56
- package/src/lib/examples/advanced-features-example.d.ts +0 -1
- package/src/lib/examples/advanced-features-example.js +0 -269
- package/src/lib/examples/bulk-actions-test.d.ts +0 -1
- package/src/lib/examples/bulk-actions-test.js +0 -44
- package/src/lib/examples/custom-column-filter-example.d.ts +0 -1
- package/src/lib/examples/custom-column-filter-example.js +0 -60
- package/src/lib/examples/index.d.ts +0 -8
- package/src/lib/examples/index.js +0 -19
- package/src/lib/examples/selection-test-example.d.ts +0 -1
- package/src/lib/examples/selection-test-example.js +0 -101
- package/src/lib/examples/server-side-fetching-example.d.ts +0 -1
- package/src/lib/examples/server-side-fetching-example.js +0 -245
- package/src/lib/examples/server-side-test.d.ts +0 -1
- package/src/lib/examples/server-side-test.js +0 -9
- package/src/lib/examples/simple-local-example.d.ts +0 -1
- package/src/lib/examples/simple-local-example.js +0 -95
- package/src/lib/examples/simple-slots-example.d.ts +0 -1
- package/src/lib/examples/simple-slots-example.js +0 -115
- package/src/lib/features/column-filter.feature.d.ts +0 -45
- package/src/lib/features/index.d.ts +0 -2
- package/src/lib/hooks/index.d.ts +0 -1
- package/src/lib/hooks/index.js +0 -4
- package/src/lib/hooks/use-data-table-api.d.ts +0 -46
- package/src/lib/hooks/use-data-table-api.js +0 -690
- package/src/lib/icons/add-icon.d.ts +0 -2
- package/src/lib/icons/add-icon.js +0 -8
- package/src/lib/icons/csv-icon.d.ts +0 -2
- package/src/lib/icons/csv-icon.js +0 -8
- package/src/lib/icons/delete-icon.d.ts +0 -2
- package/src/lib/icons/delete-icon.js +0 -8
- package/src/lib/icons/excel-icon.d.ts +0 -2
- package/src/lib/icons/excel-icon.js +0 -8
- package/src/lib/icons/unpin-icon.d.ts +0 -2
- package/src/lib/icons/unpin-icon.js +0 -8
- package/src/lib/icons/view-comfortable-icon.js +0 -8
- package/src/lib/icons/view-compact-icon.d.ts +0 -2
- package/src/lib/icons/view-compact-icon.js +0 -8
- package/src/lib/types/export.types.js +0 -2
- package/src/lib/types/index.js +0 -8
- package/src/lib/utils/export-utils.js +0 -175
- package/src/lib/utils/index.js +0 -11
- package/src/lib/utils/styling-helpers.js +0 -70
- package/tsconfig.tsbuildinfo +0 -1
- /package/{src → dist}/lib/icons/index.js +0 -0
- /package/{src → dist}/lib/types/column.types.js +0 -0
- /package/{src → dist}/lib/types/data-table-api.js +0 -0
- /package/{src/lib/components/table → dist/lib/types}/data-table.types.js +0 -0
- /package/{src → dist}/lib/types/slots.types.js +0 -0
- /package/{src → dist}/lib/types/table.types.js +0 -0
- /package/src/lib/icons/{index.d.ts → index.ts} +0 -0
|
@@ -1,42 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.DraggableHeaderMemo = void 0;
|
|
4
37
|
exports.DraggableHeader = DraggableHeader;
|
|
5
|
-
const tslib_1 = require("tslib");
|
|
6
38
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
39
|
const icons_material_1 = require("@mui/icons-material");
|
|
8
40
|
const material_1 = require("@mui/material");
|
|
9
41
|
const react_table_1 = require("@tanstack/react-table");
|
|
10
|
-
const react_1 =
|
|
42
|
+
const react_1 = __importStar(require("react"));
|
|
11
43
|
const slot_helpers_1 = require("../../utils/slot-helpers");
|
|
12
44
|
function DraggableHeader(props) {
|
|
13
|
-
const { header, enableSorting = true, draggable = false, onColumnReorder, containerSx, sortIconProps, alignment, slots, slotProps
|
|
45
|
+
const { header, enableSorting = true, draggable = false, onColumnReorder, containerSx, sortIconProps, alignment, slots, slotProps, ...otherProps } = props;
|
|
14
46
|
const [isDragging, setIsDragging] = (0, react_1.useState)(false);
|
|
15
47
|
const [dragOver, setDragOver] = (0, react_1.useState)(false);
|
|
16
48
|
const autoScrollIntervalRef = (0, react_1.useRef)(null);
|
|
17
49
|
const dragStartPositionRef = (0, react_1.useRef)(null);
|
|
18
50
|
const headerElementRef = (0, react_1.useRef)(null);
|
|
51
|
+
// Extract slot-specific props with enhanced merging
|
|
19
52
|
const sortIconAscSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'sortIconAsc');
|
|
20
53
|
const sortIconDescSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'sortIconDesc');
|
|
21
54
|
const SortIconAscSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'sortIconAsc', icons_material_1.ArrowUpwardOutlined);
|
|
22
55
|
const SortIconDescSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'sortIconDesc', icons_material_1.ArrowDownwardOutlined);
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const
|
|
56
|
+
// Auto-scroll configuration
|
|
57
|
+
const AUTO_SCROLL_THRESHOLD = 50; // Distance from edge to trigger scroll
|
|
58
|
+
const AUTO_SCROLL_SPEED = 10; // Pixels per scroll interval
|
|
59
|
+
const AUTO_SCROLL_INTERVAL = 16; // ~60fps
|
|
26
60
|
const justifyContent = (0, react_1.useMemo)(() => {
|
|
27
61
|
return alignment === 'left' ? 'flex-start' : alignment === 'right' ? 'flex-end' : 'center';
|
|
28
62
|
}, [alignment]);
|
|
29
63
|
const findScrollableContainer = (0, react_1.useCallback)((element) => {
|
|
64
|
+
// Start from the provided element or try to find the current table
|
|
30
65
|
let searchElement = element;
|
|
31
66
|
if (!searchElement) {
|
|
67
|
+
// Start from the header element if available
|
|
32
68
|
if (headerElementRef.current) {
|
|
33
69
|
searchElement = headerElementRef.current.closest('table');
|
|
34
70
|
}
|
|
35
71
|
}
|
|
36
72
|
if (!searchElement) {
|
|
73
|
+
// Find the table that contains our header
|
|
37
74
|
const tables = Array.from(document.querySelectorAll('table'));
|
|
38
75
|
for (const table of tables) {
|
|
39
|
-
|
|
76
|
+
// Check if this table contains a header with our ID
|
|
77
|
+
const headerExists = table.querySelector('th'); // fallback
|
|
40
78
|
if (headerExists) {
|
|
41
79
|
searchElement = table;
|
|
42
80
|
break;
|
|
@@ -44,10 +82,12 @@ function DraggableHeader(props) {
|
|
|
44
82
|
}
|
|
45
83
|
}
|
|
46
84
|
if (!searchElement) {
|
|
85
|
+
// Last resort: use the first table found
|
|
47
86
|
searchElement = document.querySelector('table');
|
|
48
87
|
}
|
|
49
88
|
if (!searchElement)
|
|
50
89
|
return null;
|
|
90
|
+
// Walk up the DOM tree to find the scrollable container
|
|
51
91
|
let container = searchElement;
|
|
52
92
|
while (container && container !== document.body) {
|
|
53
93
|
const styles = window.getComputedStyle(container);
|
|
@@ -68,6 +108,7 @@ function DraggableHeader(props) {
|
|
|
68
108
|
autoScrollIntervalRef.current = setInterval(() => {
|
|
69
109
|
const scrollAmount = direction === 'left' ? -AUTO_SCROLL_SPEED : AUTO_SCROLL_SPEED;
|
|
70
110
|
const newScrollLeft = container.scrollLeft + scrollAmount;
|
|
111
|
+
// Check bounds
|
|
71
112
|
if (direction === 'left' && newScrollLeft <= 0) {
|
|
72
113
|
container.scrollLeft = 0;
|
|
73
114
|
clearInterval(autoScrollIntervalRef.current);
|
|
@@ -126,12 +167,14 @@ function DraggableHeader(props) {
|
|
|
126
167
|
const mergedSortIconProps = (0, slot_helpers_1.mergeSlotProps)({
|
|
127
168
|
fontSize: 'small',
|
|
128
169
|
}, sortIconProps || {});
|
|
170
|
+
// Only show icons when column is actually sorted
|
|
129
171
|
if (sortDirection === 'asc') {
|
|
130
|
-
return ((0, jsx_runtime_1.jsx)(SortIconAscSlot,
|
|
172
|
+
return ((0, jsx_runtime_1.jsx)(SortIconAscSlot, { ...(0, slot_helpers_1.mergeSlotProps)(mergedSortIconProps, sortIconAscSlotProps) }));
|
|
131
173
|
}
|
|
132
174
|
if (sortDirection === 'desc') {
|
|
133
|
-
return ((0, jsx_runtime_1.jsx)(SortIconDescSlot,
|
|
175
|
+
return ((0, jsx_runtime_1.jsx)(SortIconDescSlot, { ...(0, slot_helpers_1.mergeSlotProps)(mergedSortIconProps, sortIconDescSlotProps) }));
|
|
134
176
|
}
|
|
177
|
+
// Don't show any icon when not sorted
|
|
135
178
|
return null;
|
|
136
179
|
};
|
|
137
180
|
const handleDragEnd = () => {
|
|
@@ -146,10 +189,12 @@ function DraggableHeader(props) {
|
|
|
146
189
|
e.preventDefault();
|
|
147
190
|
e.dataTransfer.dropEffect = 'move';
|
|
148
191
|
setDragOver(true);
|
|
192
|
+
// Check for auto-scroll during drag over
|
|
149
193
|
checkAutoScroll(e.clientX);
|
|
150
194
|
};
|
|
151
195
|
const handleDragLeave = () => {
|
|
152
196
|
setDragOver(false);
|
|
197
|
+
// Don't stop auto-scroll on drag leave as the drag might continue outside this element
|
|
153
198
|
};
|
|
154
199
|
const handleDrop = (e) => {
|
|
155
200
|
if (!draggable)
|
|
@@ -167,13 +212,13 @@ function DraggableHeader(props) {
|
|
|
167
212
|
return;
|
|
168
213
|
const currentSort = header.column.getIsSorted();
|
|
169
214
|
if (currentSort === false) {
|
|
170
|
-
header.column.toggleSorting(false);
|
|
215
|
+
header.column.toggleSorting(false); // asc
|
|
171
216
|
}
|
|
172
217
|
else if (currentSort === 'asc') {
|
|
173
|
-
header.column.toggleSorting(true);
|
|
218
|
+
header.column.toggleSorting(true); // desc
|
|
174
219
|
}
|
|
175
220
|
else {
|
|
176
|
-
header.column.clearSorting();
|
|
221
|
+
header.column.clearSorting(); // none
|
|
177
222
|
}
|
|
178
223
|
};
|
|
179
224
|
const getCursor = () => {
|
|
@@ -183,18 +228,36 @@ function DraggableHeader(props) {
|
|
|
183
228
|
return 'pointer';
|
|
184
229
|
return 'default';
|
|
185
230
|
};
|
|
231
|
+
// Merge all props for maximum flexibility
|
|
186
232
|
const mergedContainerProps = (0, slot_helpers_1.mergeSlotProps)({
|
|
187
233
|
ref: headerElementRef,
|
|
188
|
-
sx:
|
|
234
|
+
sx: {
|
|
235
|
+
display: 'flex',
|
|
236
|
+
alignItems: 'center',
|
|
237
|
+
justifyContent: justifyContent,
|
|
238
|
+
gap: 1,
|
|
239
|
+
cursor: getCursor(),
|
|
240
|
+
userSelect: 'none',
|
|
241
|
+
opacity: isDragging ? 0.5 : 1,
|
|
242
|
+
backgroundColor: dragOver ? 'rgba(25, 118, 210, 0.08)' : 'transparent',
|
|
243
|
+
borderLeft: dragOver ? '2px solid #1976d2' : 'none',
|
|
244
|
+
padding: dragOver ? '0 0 0 -2px' : '0',
|
|
245
|
+
width: '100%',
|
|
246
|
+
height: '100%',
|
|
247
|
+
minWidth: '0',
|
|
248
|
+
'&:active': {
|
|
189
249
|
cursor: draggable ? 'grabbing' : 'pointer',
|
|
190
|
-
},
|
|
250
|
+
},
|
|
251
|
+
'.header-content': {
|
|
191
252
|
display: 'block',
|
|
192
253
|
flex: 1,
|
|
193
254
|
minWidth: 0,
|
|
194
255
|
overflow: 'hidden',
|
|
195
256
|
whiteSpace: 'nowrap',
|
|
196
257
|
textOverflow: 'ellipsis',
|
|
197
|
-
}
|
|
258
|
+
},
|
|
259
|
+
...containerSx,
|
|
260
|
+
},
|
|
198
261
|
draggable: draggable,
|
|
199
262
|
onDragStart: handleDragStart,
|
|
200
263
|
onDrag: handleDrag,
|
|
@@ -207,9 +270,10 @@ function DraggableHeader(props) {
|
|
|
207
270
|
if (!draggable && !enableSorting) {
|
|
208
271
|
return (0, react_table_1.flexRender)(header.column.columnDef.header, header.getContext());
|
|
209
272
|
}
|
|
210
|
-
return ((0, jsx_runtime_1.jsx)(material_1.Box,
|
|
273
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Box, { ...mergedContainerProps, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { component: "span", className: 'header-wrapper', sx: {
|
|
211
274
|
display: 'inline-flex',
|
|
212
275
|
gap: 1,
|
|
213
|
-
}, children: [(0, jsx_runtime_1.jsx)(material_1.Box, { component: "span", className: 'header-content', children: (0, react_table_1.flexRender)(header.column.columnDef.header, header.getContext()) }), getSortIcon()] }) }))
|
|
276
|
+
}, children: [(0, jsx_runtime_1.jsx)(material_1.Box, { component: "span", className: 'header-content', children: (0, react_table_1.flexRender)(header.column.columnDef.header, header.getContext()) }), getSortIcon()] }) }));
|
|
214
277
|
}
|
|
278
|
+
// Memoize component to prevent unnecessary re-renders
|
|
215
279
|
exports.DraggableHeaderMemo = react_1.default.memo(DraggableHeader);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/headers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Header components for DataTable
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./table-header"), exports);
|
|
21
|
+
__exportStar(require("./draggable-header"), exports);
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableHeader Component
|
|
3
|
+
*
|
|
4
|
+
* Unified header component that combines:
|
|
5
|
+
* - Sortable functionality
|
|
6
|
+
* - Draggable column reordering
|
|
7
|
+
* - Column resizing
|
|
8
|
+
* - Pinning support
|
|
9
|
+
*/
|
|
10
|
+
import { ReactElement } from 'react';
|
|
1
11
|
import { TableHeadProps, TableRowProps, TableCellProps, SxProps } from '@mui/material';
|
|
2
12
|
export interface TableHeaderProps extends TableHeadProps {
|
|
3
13
|
draggable?: boolean;
|
|
@@ -13,4 +23,8 @@ export interface TableHeaderProps extends TableHeadProps {
|
|
|
13
23
|
slotProps?: Record<string, any>;
|
|
14
24
|
[key: string]: any;
|
|
15
25
|
}
|
|
16
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Renders table headers with sorting, dragging, and resizing capabilities
|
|
28
|
+
*/
|
|
29
|
+
export declare function TableHeader<T>(props: TableHeaderProps): ReactElement;
|
|
30
|
+
//# sourceMappingURL=table-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-header.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/headers/table-header.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAiD,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQtI,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5E,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,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,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAuIpE"}
|
|
@@ -1,23 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.TableHeader = TableHeader;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
/**
|
|
9
|
+
* TableHeader Component
|
|
10
|
+
*
|
|
11
|
+
* Unified header component that combines:
|
|
12
|
+
* - Sortable functionality
|
|
13
|
+
* - Draggable column reordering
|
|
14
|
+
* - Column resizing
|
|
15
|
+
* - Pinning support
|
|
16
|
+
*/
|
|
17
|
+
const react_1 = __importDefault(require("react"));
|
|
6
18
|
const material_1 = require("@mui/material");
|
|
7
19
|
const draggable_header_1 = require("./draggable-header");
|
|
8
20
|
const data_table_context_1 = require("../../contexts/data-table-context");
|
|
9
21
|
const utils_1 = require("../../utils");
|
|
10
22
|
const slot_helpers_1 = require("../../utils/slot-helpers");
|
|
23
|
+
/**
|
|
24
|
+
* Renders table headers with sorting, dragging, and resizing capabilities
|
|
25
|
+
*/
|
|
11
26
|
function TableHeader(props) {
|
|
12
|
-
const { draggable = false, enableColumnResizing = false, enableStickyHeader = false, fitToScreen = true, onColumnReorder, headerRowProps, headerCellProps, containerSx, resizeHandleSx, slots, slotProps
|
|
27
|
+
const { draggable = false, enableColumnResizing = false, enableStickyHeader = false, fitToScreen = true, onColumnReorder, headerRowProps, headerCellProps, containerSx, resizeHandleSx, slots, slotProps, ...otherProps } = props;
|
|
13
28
|
const theme = (0, material_1.useTheme)();
|
|
14
29
|
const { table } = (0, data_table_context_1.useDataTableContext)();
|
|
30
|
+
// Extract slot-specific props with enhanced merging
|
|
15
31
|
const headerCellSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'headerCell');
|
|
16
32
|
const headerRowSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'headerRow');
|
|
17
33
|
const headerSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'header');
|
|
18
34
|
const HeaderCellSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'headerCell', material_1.TableCell);
|
|
19
35
|
const HeaderRowSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'headerRow', material_1.TableRow);
|
|
20
36
|
const HeaderSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'header', material_1.TableHead);
|
|
37
|
+
// Merge all props for maximum flexibility
|
|
21
38
|
const mergedHeaderProps = (0, slot_helpers_1.mergeSlotProps)({
|
|
22
39
|
sx: containerSx,
|
|
23
40
|
}, headerSlotProps, otherProps);
|
|
@@ -30,28 +47,44 @@ function TableHeader(props) {
|
|
|
30
47
|
const alignment = (0, utils_1.getColumnAlignment)(header.column.columnDef);
|
|
31
48
|
const enableSorting = header.column.getCanSort();
|
|
32
49
|
const wrapText = (_a = header.column.columnDef.wrapText) !== null && _a !== void 0 ? _a : false;
|
|
50
|
+
const canResize = enableColumnResizing && header.column.getCanResize();
|
|
33
51
|
const mergedHeaderCellProps = (0, slot_helpers_1.mergeSlotProps)({
|
|
34
52
|
align: alignment,
|
|
35
|
-
sx:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
sx: {
|
|
54
|
+
...(0, utils_1.getPinnedColumnStyle)({
|
|
55
|
+
width: (fitToScreen && !enableColumnResizing) ? 'auto' : header.getSize(),
|
|
56
|
+
isPinned,
|
|
57
|
+
pinnedPosition,
|
|
58
|
+
isLastLeftPinnedColumn: isPinned === 'left' && header.column.getIsLastColumn('left'),
|
|
59
|
+
isFirstRightPinnedColumn: isPinned === 'right' && header.column.getIsFirstColumn('right'),
|
|
60
|
+
pinnedRightPosition,
|
|
61
|
+
zIndex: isPinned ? 10 : 1,
|
|
62
|
+
disableStickyHeader: enableStickyHeader,
|
|
63
|
+
wrapText,
|
|
64
|
+
}),
|
|
65
|
+
},
|
|
46
66
|
}, headerCellSlotProps, headerCellProps || {});
|
|
47
67
|
const mergedResizeHandleProps = (0, slot_helpers_1.mergeSlotProps)({
|
|
48
68
|
onMouseDown: header.getResizeHandler(),
|
|
49
69
|
onTouchStart: header.getResizeHandler(),
|
|
50
|
-
sx:
|
|
70
|
+
sx: {
|
|
71
|
+
position: 'absolute',
|
|
72
|
+
right: 0,
|
|
73
|
+
top: '25%',
|
|
74
|
+
height: '50%',
|
|
75
|
+
width: '3px',
|
|
76
|
+
cursor: 'col-resize',
|
|
77
|
+
userSelect: 'none',
|
|
78
|
+
touchAction: 'none',
|
|
79
|
+
borderRadius: '4px',
|
|
80
|
+
backgroundColor: header.column.getIsResizing() ? 'primary.main' : theme.palette.grey[300],
|
|
81
|
+
'&:hover': {
|
|
51
82
|
backgroundColor: theme.palette.primary.main,
|
|
52
|
-
}
|
|
83
|
+
},
|
|
84
|
+
...resizeHandleSx,
|
|
85
|
+
},
|
|
53
86
|
});
|
|
54
|
-
return ((0, jsx_runtime_1.jsxs)(HeaderCellSlot,
|
|
87
|
+
return ((0, jsx_runtime_1.jsxs)(HeaderCellSlot, { ...mergedHeaderCellProps, children: [(0, jsx_runtime_1.jsx)(draggable_header_1.DraggableHeader, { header: header, enableSorting: enableSorting, draggable: !!(draggable && !isPinned), onColumnReorder: onColumnReorder, slots: slots, slotProps: slotProps, alignment: alignment }), canResize ? ((0, jsx_runtime_1.jsx)(material_1.Box, { ...mergedResizeHandleProps })) : null] }, header.id));
|
|
55
88
|
};
|
|
56
|
-
return ((0, jsx_runtime_1.jsx)(HeaderSlot,
|
|
89
|
+
return ((0, jsx_runtime_1.jsx)(HeaderSlot, { ...mergedHeaderProps, children: table.getHeaderGroups().map(headerGroup => ((0, jsx_runtime_1.jsx)(HeaderRowSlot, { ...mergedHeaderRowProps, children: headerGroup.headers.map(renderHeaderCell) }, headerGroup.id))) }));
|
|
57
90
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* DataTable Components
|
|
3
|
+
*
|
|
4
|
+
* Organized component exports for the MUI TanStack DataTable
|
|
5
|
+
*/
|
|
2
6
|
export * from './headers';
|
|
3
7
|
export * from './rows';
|
|
4
8
|
export * from './toolbar';
|
|
5
9
|
export * from './filters';
|
|
6
10
|
export * from './pagination';
|
|
7
11
|
export * from './droupdown/menu-dropdown';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,WAAW,CAAC;AAG1B,cAAc,QAAQ,CAAC;AAGvB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAI1B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* DataTable Components
|
|
19
|
+
*
|
|
20
|
+
* Organized component exports for the MUI TanStack DataTable
|
|
21
|
+
*/
|
|
22
|
+
// Header components
|
|
23
|
+
__exportStar(require("./headers"), exports);
|
|
24
|
+
// Row components
|
|
25
|
+
__exportStar(require("./rows"), exports);
|
|
26
|
+
// Toolbar components
|
|
27
|
+
__exportStar(require("./toolbar"), exports);
|
|
28
|
+
// Filter components
|
|
29
|
+
__exportStar(require("./filters"), exports);
|
|
30
|
+
// Pagination components
|
|
31
|
+
__exportStar(require("./pagination"), exports);
|
|
32
|
+
__exportStar(require("./droupdown/menu-dropdown"), exports);
|
|
@@ -14,4 +14,5 @@ export interface DataTablePaginationProps extends Omit<TablePaginationProps, 'co
|
|
|
14
14
|
slotProps?: Record<string, any>;
|
|
15
15
|
[key: string]: any;
|
|
16
16
|
}
|
|
17
|
-
export declare const DataTablePagination:
|
|
17
|
+
export declare const DataTablePagination: any;
|
|
18
|
+
//# sourceMappingURL=data-table-pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-pagination.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/pagination/data-table-pagination.tsx"],"names":[],"mappings":"AACA,OAAO,EAAwB,oBAAoB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAQ,SAAS,EAAE,MAAM,OAAO,CAAC;AAKxC,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,cAAc,GAAG,qBAAqB,CAAC;IACnJ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,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,eAAO,MAAM,mBAAmB,KAyE9B,CAAC"}
|
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DataTablePagination = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
// data-table-pagination.tsx
|
|
6
6
|
const material_1 = require("@mui/material");
|
|
7
7
|
const react_1 = require("react");
|
|
8
8
|
const data_table_context_1 = require("../../contexts/data-table-context");
|
|
9
9
|
const slot_helpers_1 = require("../../utils/slot-helpers");
|
|
10
10
|
exports.DataTablePagination = (0, react_1.memo)((props) => {
|
|
11
|
-
const { footerFilter = null, pagination, totalRow, containerSx, paginationProps, footerSx,
|
|
12
|
-
const { table } = (0, data_table_context_1.useDataTableContext)();
|
|
11
|
+
const { footerFilter = null, pagination, totalRow, containerSx, paginationProps, footerSx, ...otherProps } = props;
|
|
12
|
+
const { table, tableSize } = (0, data_table_context_1.useDataTableContext)();
|
|
13
|
+
// Extract slot-specific props with enhanced merging
|
|
14
|
+
// const paginationSlotProps = extractSlotProps(slotProps, 'pagination');
|
|
15
|
+
// Merge all props for maximum flexibility
|
|
13
16
|
const mergedContainerProps = (0, slot_helpers_1.mergeSlotProps)({
|
|
14
|
-
sx:
|
|
17
|
+
sx: {
|
|
18
|
+
display: 'flex',
|
|
19
|
+
alignItems: 'center',
|
|
20
|
+
gap: 1,
|
|
21
|
+
justifyContent: 'space-between',
|
|
22
|
+
px: 2,
|
|
23
|
+
...containerSx,
|
|
24
|
+
},
|
|
15
25
|
});
|
|
16
26
|
const mergedPaginationProps = (0, slot_helpers_1.mergeSlotProps)({
|
|
17
27
|
component: 'div',
|
|
28
|
+
size: tableSize === 'small' ? 'small' : 'medium',
|
|
18
29
|
count: totalRow,
|
|
19
30
|
rowsPerPage: pagination === null || pagination === void 0 ? void 0 : pagination.pageSize,
|
|
20
31
|
page: pagination === null || pagination === void 0 ? void 0 : pagination.pageIndex,
|
|
21
32
|
onPageChange: (_, page) => {
|
|
33
|
+
// Use TanStack Table's native pagination methods
|
|
22
34
|
table.setPageIndex(page);
|
|
23
35
|
},
|
|
24
36
|
onRowsPerPageChange: (e) => {
|
|
25
37
|
const newPageSize = Number(e.target.value);
|
|
38
|
+
// Use TanStack Table's native pagination methods
|
|
26
39
|
table.setPageIndex(0);
|
|
27
40
|
table.setPageSize(newPageSize);
|
|
28
41
|
},
|
|
@@ -30,6 +43,7 @@ exports.DataTablePagination = (0, react_1.memo)((props) => {
|
|
|
30
43
|
showLastButton: true,
|
|
31
44
|
labelRowsPerPage: 'Rows per page:',
|
|
32
45
|
labelDisplayedRows: ({ from, to, count }) => `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`,
|
|
33
|
-
},
|
|
34
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Box,
|
|
46
|
+
}, { ...paginationProps, ...otherProps });
|
|
47
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { ...mergedContainerProps, children: [footerFilter && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: footerSx, children: footerFilter })), (0, jsx_runtime_1.jsx)(material_1.TablePagination, { ...mergedPaginationProps })] }));
|
|
35
48
|
});
|
|
49
|
+
exports.DataTablePagination.displayName = 'DataTablePagination';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/pagination/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pagination components for DataTable
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./data-table-pagination"), exports);
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataTableRow Component
|
|
3
|
+
*
|
|
4
|
+
* Renders individual table rows with support for:
|
|
5
|
+
* - Column pinning
|
|
6
|
+
* - Row expansion
|
|
7
|
+
* - Hover effects
|
|
8
|
+
* - Striped styling
|
|
9
|
+
*/
|
|
1
10
|
import { TableRowProps, TableCellProps, SxProps } from '@mui/material';
|
|
2
11
|
import { Row } from '@tanstack/react-table';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
12
|
+
import { ReactNode, ReactElement } from 'react';
|
|
4
13
|
export interface DataTableRowProps<T> extends TableRowProps {
|
|
5
14
|
row: Row<T>;
|
|
6
15
|
enableHover?: boolean;
|
|
@@ -19,4 +28,8 @@ export interface DataTableRowProps<T> extends TableRowProps {
|
|
|
19
28
|
slotProps?: Record<string, any>;
|
|
20
29
|
[key: string]: any;
|
|
21
30
|
}
|
|
22
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Individual table row component with cell rendering and expansion support
|
|
33
|
+
*/
|
|
34
|
+
export declare function DataTableRow<T>(props: DataTableRowProps<T>): ReactElement;
|
|
35
|
+
//# sourceMappingURL=data-table-row.d.ts.map
|
|
@@ -0,0 +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,CAqKzE"}
|