@monolith-forensics/monolith-ui 1.8.1-dev.4 → 1.8.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/dist/Button/Button.js +58 -9
- package/dist/Calendar/Calendar.d.ts +2 -7
- package/dist/Calendar/Calendar.js +49 -226
- package/dist/Calendar/CalendarStyles.d.ts +2 -6
- package/dist/Calendar/CalendarStyles.js +33 -153
- package/dist/Calendar/calendarHelpers.d.ts +2 -6
- package/dist/Calendar/calendarHelpers.js +5 -13
- package/dist/Charts/BarChart/BarChart.js +28 -14
- package/dist/Charts/BarChart/BarChart.styled.d.ts +7 -2
- package/dist/Charts/BarChart/BarChart.styled.js +5 -1
- package/dist/Charts/BarChart/BarChart.types.d.ts +13 -5
- package/dist/Charts/ChartUtils/chartSizing.d.ts +20 -0
- package/dist/Charts/ChartUtils/chartSizing.js +83 -0
- package/dist/Charts/ChartUtils/index.d.ts +1 -0
- package/dist/Charts/ChartUtils/index.js +1 -0
- package/dist/Charts/HeatMap/HeatMap.js +28 -7
- package/dist/Charts/HeatMap/HeatMap.styled.d.ts +6 -2
- package/dist/Charts/HeatMap/HeatMap.styled.js +3 -0
- package/dist/Charts/HeatMap/HeatMap.types.d.ts +7 -1
- package/dist/Charts/LineChart/LineChart.js +34 -15
- package/dist/Charts/LineChart/LineChart.styled.d.ts +7 -2
- package/dist/Charts/LineChart/LineChart.styled.js +5 -1
- package/dist/Charts/LineChart/LineChart.types.d.ts +13 -5
- package/dist/Charts/PieChart/PieChart.js +48 -33
- package/dist/Charts/PieChart/PieChart.styled.d.ts +7 -2
- package/dist/Charts/PieChart/PieChart.styled.js +6 -1
- package/dist/Charts/PieChart/PieChart.types.d.ts +7 -3
- package/dist/CheckBox/CheckBox.js +19 -36
- package/dist/DateInput/DateInput.js +143 -198
- package/dist/DropDownMenu/DropDownMenu.js +15 -25
- package/dist/DropDownMenu/components/MenuComponent.js +2 -8
- package/dist/DropDownMenu/components/MenuItem.d.ts +0 -2
- package/dist/DropDownMenu/components/MenuItem.js +21 -25
- package/dist/DropDownMenu/components/MenuItemList.d.ts +0 -3
- package/dist/DropDownMenu/components/MenuItemList.js +86 -192
- package/dist/DropDownMenu/components/StyledContent.js +2 -1
- package/dist/DropDownMenu/components/StyledFloatContainer.js +1 -1
- package/dist/DropDownMenu/types.d.ts +0 -3
- package/dist/FieldLabel/FieldLabel.js +12 -4
- package/dist/FileInputField/FileInputField.js +23 -4
- package/dist/FileViewer/viewers/ImageViewer.js +18 -75
- package/dist/FormSection/FormSection.js +25 -5
- package/dist/IconButton/IconButton.js +16 -2
- package/dist/Input/Input.js +56 -7
- package/dist/MonolithUIProvider/MonolithUIProvider.d.ts +4 -1
- package/dist/Pill/Pill.js +79 -8
- package/dist/Popover/Popover.context.d.ts +1 -2
- package/dist/Popover/Popover.js +2 -5
- package/dist/Popover/Popover.styles.d.ts +6 -1
- package/dist/Popover/Popover.styles.js +28 -11
- package/dist/Popover/Popover.transitions.d.ts +2 -4
- package/dist/Popover/Popover.transitions.js +49 -23
- package/dist/Popover/PopoverDropdown.js +8 -6
- package/dist/Popover/PopoverTarget.js +3 -6
- package/dist/QueryFilter/DefaultOperators.d.ts +76 -0
- package/dist/QueryFilter/DefaultOperators.js +21 -0
- package/dist/QueryFilter/QueryFilter.d.ts +1 -1
- package/dist/QueryFilter/QueryFilter.js +303 -3
- package/dist/QueryFilter/index.d.ts +2 -3
- package/dist/QueryFilter/index.js +2 -3
- package/dist/QueryFilter/types.d.ts +52 -0
- package/dist/QueryFilter/types.js +1 -0
- package/dist/QueryFilter/useQueryFilter.d.ts +1 -1
- package/dist/QueryFilter/useQueryFilter.js +19 -23
- package/dist/RichTextEditor/Components/CodeBlockBaseButton.d.ts +18 -0
- package/dist/RichTextEditor/Components/CodeBlockBaseButton.js +6 -0
- package/dist/RichTextEditor/Components/CodeBlockCopyButton.d.ts +9 -0
- package/dist/RichTextEditor/Components/CodeBlockCopyButton.js +42 -0
- package/dist/RichTextEditor/Components/CodeBlockFormatButton.d.ts +10 -0
- package/dist/RichTextEditor/Components/CodeBlockFormatButton.js +60 -0
- package/dist/RichTextEditor/Components/CodeBlockLanguageSelect.d.ts +9 -0
- package/dist/RichTextEditor/Components/CodeBlockLanguageSelect.js +30 -0
- package/dist/RichTextEditor/Components/CodeBlockNodeView.d.ts +3 -0
- package/dist/RichTextEditor/Components/CodeBlockNodeView.js +28 -0
- package/dist/RichTextEditor/Components/CodeBlockWrapButton.d.ts +10 -0
- package/dist/RichTextEditor/Components/CodeBlockWrapButton.js +17 -0
- package/dist/RichTextEditor/Components/LinkEditor.d.ts +8 -0
- package/dist/RichTextEditor/Components/LinkEditor.js +94 -0
- package/dist/RichTextEditor/Components/TableTools/TableCornerMenu.d.ts +2 -0
- package/dist/RichTextEditor/Components/TableTools/TableCornerMenu.js +19 -0
- package/dist/RichTextEditor/Components/TableTools/TableInsertControls.d.ts +2 -0
- package/dist/RichTextEditor/Components/TableTools/TableInsertControls.js +24 -0
- package/dist/RichTextEditor/Components/TableTools/TableRails.d.ts +2 -0
- package/dist/RichTextEditor/Components/TableTools/TableRails.js +180 -0
- package/dist/RichTextEditor/Components/TableTools/TableToolMenu.d.ts +5 -0
- package/dist/RichTextEditor/Components/TableTools/TableToolMenu.js +6 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.actions.d.ts +5 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.actions.js +183 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.commands.d.ts +16 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.commands.js +217 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.constants.d.ts +8 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.constants.js +11 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.d.ts +3 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.geometry.d.ts +23 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.geometry.js +75 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.js +3 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.selectors.d.ts +16 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.selectors.js +53 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.styled.d.ts +40 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.styled.js +167 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.types.d.ts +76 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.types.js +1 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.utils.d.ts +4 -0
- package/dist/RichTextEditor/Components/TableTools/TableTools.utils.js +4 -0
- package/dist/RichTextEditor/Components/TableTools/TableToolsPopover.d.ts +2 -0
- package/dist/RichTextEditor/Components/TableTools/TableToolsPopover.js +12 -0
- package/dist/RichTextEditor/Components/TableTools/index.d.ts +3 -0
- package/dist/RichTextEditor/Components/TableTools/index.js +2 -0
- package/dist/RichTextEditor/Enums/HighlightColors.d.ts +9 -0
- package/dist/RichTextEditor/Enums/HighlightColors.js +10 -0
- package/dist/RichTextEditor/Extensions/getTiptapExtensions.js +15 -5
- package/dist/RichTextEditor/Plugins/ImageActionsPlugin.js +4 -7
- package/dist/RichTextEditor/Plugins/UploadImagesPlugin.d.ts +0 -15
- package/dist/RichTextEditor/Plugins/UploadImagesPlugin.js +51 -115
- package/dist/RichTextEditor/Plugins/index.d.ts +0 -1
- package/dist/RichTextEditor/Plugins/index.js +0 -1
- package/dist/RichTextEditor/RichTextEditor.d.ts +2 -3
- package/dist/RichTextEditor/RichTextEditor.js +35 -309
- package/dist/RichTextEditor/Toolbar/Toolbar.js +2 -14
- package/dist/RichTextEditor/Utils/codeBlockUtils.d.ts +20 -0
- package/dist/RichTextEditor/Utils/codeBlockUtils.js +137 -0
- package/dist/RichTextEditor/Utils/codeUtils.d.ts +3 -0
- package/dist/RichTextEditor/Utils/codeUtils.js +12 -0
- package/dist/RichTextEditor/Utils/linkUtils.d.ts +19 -0
- package/dist/RichTextEditor/Utils/linkUtils.js +57 -0
- package/dist/RichTextEditor/Utils/tableUtils.d.ts +1 -0
- package/dist/RichTextEditor/Utils/tableUtils.js +1 -0
- package/dist/SegmentedControl/SegmentedControl.utils.d.ts +2 -2
- package/dist/SegmentedControl/SegmentedControl.utils.js +30 -3
- package/dist/SelectBox/SelectBox.js +5 -5
- package/dist/SelectBox/select-box.styled-components.d.ts +1 -4
- package/dist/SelectBox/select-box.styled-components.js +48 -11
- package/dist/SelectBox/types.d.ts +0 -1
- package/dist/Switch/Switch.d.ts +2 -2
- package/dist/Switch/Switch.js +83 -18
- package/dist/Table/ColumnResizer.d.ts +9 -6
- package/dist/Table/ColumnResizer.js +10 -30
- package/dist/Table/StateStorage.d.ts +0 -4
- package/dist/Table/StateStorage.js +0 -13
- package/dist/Table/Table.js +12 -160
- package/dist/Table/TableComponents.d.ts +0 -10
- package/dist/Table/TableComponents.js +10 -71
- package/dist/Table/TableDefaults.d.ts +0 -7
- package/dist/Table/TableDefaults.js +0 -7
- package/dist/Table/TableHeader.js +16 -31
- package/dist/Table/TableMenu/TableMenu.js +1 -1
- package/dist/Table/TableProvider.js +75 -354
- package/dist/Table/TableRow.js +16 -28
- package/dist/Table/Utils/index.d.ts +1 -0
- package/dist/Table/Utils/index.js +1 -0
- package/dist/Table/Utils/resizeHandler.d.ts +3 -0
- package/dist/Table/Utils/resizeHandler.js +84 -0
- package/dist/Table/types.d.ts +19 -70
- package/dist/TagBox/TagBox.d.ts +1 -1
- package/dist/TagBox/TagBox.js +80 -22
- package/dist/TagBox/types.d.ts +0 -1
- package/dist/TextArea/TextArea.js +23 -9
- package/dist/TextInput/TextInput.js +6 -12
- package/dist/Utilities/parseTimestamp.js +6 -11
- package/dist/core/ArrowButton.d.ts +0 -2
- package/dist/core/ArrowButton.js +3 -7
- package/dist/core/ClearButton.d.ts +0 -2
- package/dist/core/ClearButton.js +3 -7
- package/dist/core/controlSizes.js +9 -9
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.js +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -2
- package/dist/theme/variants.js +8 -2
- package/package.json +18 -26
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useState } from "react";
|
|
3
3
|
import ColumnResizer from "./ColumnResizer";
|
|
4
4
|
import { InnerCellContent, TH, THead, THR } from "./TableComponents";
|
|
5
5
|
import { resolveColumnResize } from "./Utils";
|
|
@@ -16,61 +16,45 @@ const StyledCaption = styled.span `
|
|
|
16
16
|
`;
|
|
17
17
|
const TableHeader = ({ headerRowElm }) => {
|
|
18
18
|
var _a;
|
|
19
|
-
const { columnState, sortState, setColumnState: updateColumnState, onColumnResize, handleColumnReorder, enableColumnReorder, handleColumnHeaderClick, enableColumnResize, headerRowHeight, enableActionButton, enableSelection, selectionState, disableSelectAll, selectAllRows, clearSelections, compactState,
|
|
19
|
+
const { columnState, sortState, setColumnState: updateColumnState, onColumnResize, handleColumnReorder, enableColumnReorder, handleColumnHeaderClick, enableColumnResize, headerRowHeight, enableActionButton, enableSelection, selectionState, disableSelectAll, selectAllRows, clearSelections, compactState, } = useTable();
|
|
20
20
|
const [dragColumn, setDragColumn] = useState(null);
|
|
21
21
|
const [dropColumn, setDropColumn] = useState(null);
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
resizeStartWidths.current = tableLayout.columnWidths;
|
|
26
|
-
setResizeColumnWidths(tableLayout.columnWidths);
|
|
27
|
-
};
|
|
28
|
-
const handleResize = (column, newWidth) => {
|
|
29
|
-
setResizeColumnWidths(getResizeWidths(column, newWidth));
|
|
30
|
-
};
|
|
31
|
-
const handleResizeEnd = (column, newWidth) => {
|
|
32
|
-
const nextWidths = getResizeWidths(column, newWidth);
|
|
22
|
+
const handleResize = (e) => {
|
|
23
|
+
const columnId = e.column.columnId;
|
|
24
|
+
const newWidth = Number(e.newWidth);
|
|
33
25
|
updateColumnState((prevColumnState) => {
|
|
34
26
|
const nextColumnState = prevColumnState.map((col) => {
|
|
35
|
-
if (col.columnId ===
|
|
27
|
+
if (col.columnId === columnId) {
|
|
36
28
|
return Object.assign(Object.assign({}, col), { width: newWidth });
|
|
37
29
|
}
|
|
38
30
|
return col;
|
|
39
31
|
});
|
|
40
32
|
onColumnResize === null || onColumnResize === void 0 ? void 0 : onColumnResize({
|
|
41
|
-
column: Object.assign(Object.assign({}, column), { width: newWidth }),
|
|
33
|
+
column: Object.assign(Object.assign({}, e.column), { width: newWidth }),
|
|
42
34
|
columnState: nextColumnState,
|
|
43
35
|
});
|
|
44
36
|
return nextColumnState;
|
|
45
37
|
});
|
|
46
|
-
resizeStartWidths.current = null;
|
|
47
|
-
setResizeColumnWidths(null);
|
|
48
38
|
};
|
|
49
39
|
const handleChangeSelection = (e) => {
|
|
50
40
|
e ? selectAllRows() : clearSelections();
|
|
51
41
|
};
|
|
52
|
-
return (_jsx(THead, { className: "mfui-thead", children: _jsxs(THR, { className: "mfui-thr", ref: headerRowElm, height: headerRowHeight, "data-compact": compactState,
|
|
42
|
+
return (_jsx(THead, { className: "mfui-thead", children: _jsxs(THR, { className: "mfui-thr", ref: headerRowElm, height: headerRowHeight, "data-compact": compactState, children: [enableSelection && (_jsx(TH, { className: `mfui-th column-action`, style: {
|
|
53
43
|
width: TableDefaults.actionCell.width,
|
|
54
44
|
minWidth: TableDefaults.actionCell.minWidth,
|
|
55
45
|
maxWidth: TableDefaults.actionCell.maxWidth,
|
|
56
|
-
|
|
57
|
-
flexGrow: 0,
|
|
58
|
-
flexShrink: 0,
|
|
46
|
+
display: "flex",
|
|
59
47
|
justifyContent: "center",
|
|
60
48
|
alignItems: "center",
|
|
61
49
|
}, children: _jsx(InnerCellContent, { className: "mfui inner-cell-content", children: disableSelectAll !== true && (_jsx(CheckBox, { value: selectionState.selectionStatus === "all", partialCheck: (_a = selectionState.selectionStatus) === null || _a === void 0 ? void 0 : _a.includes("some"), onChange: handleChangeSelection })) }) })), enableActionButton && (_jsx(TH, { className: `mfui-th column-action`, style: {
|
|
62
50
|
width: TableDefaults.actionCell.width,
|
|
63
51
|
minWidth: TableDefaults.actionCell.minWidth,
|
|
64
52
|
maxWidth: TableDefaults.actionCell.maxWidth,
|
|
65
|
-
flexBasis: TableDefaults.actionCell.width,
|
|
66
|
-
flexGrow: 0,
|
|
67
|
-
flexShrink: 0,
|
|
68
53
|
}, children: _jsx(InnerCellContent, { className: "mfui inner-cell-content" }) })), columnState.map((column) => {
|
|
69
54
|
if (column.visible === false)
|
|
70
55
|
return null;
|
|
71
56
|
const canReorder = resolveColumnReorder(column, enableColumnReorder);
|
|
72
57
|
const canResize = resolveColumnResize(column, enableColumnResize);
|
|
73
|
-
const columnWidth = tableLayout.columnWidths[column.columnId] || column.minWidth;
|
|
74
58
|
const dndEvents = canReorder
|
|
75
59
|
? {
|
|
76
60
|
onDragOver: (e) => {
|
|
@@ -102,13 +86,14 @@ const TableHeader = ({ headerRowElm }) => {
|
|
|
102
86
|
}
|
|
103
87
|
: {};
|
|
104
88
|
return (_jsxs(TH, Object.assign({ className: `mfui-th column-${column.columnId}`, "data-field": column.dataField, draggable: canReorder, onClick: () => handleColumnHeaderClick(column) }, dndEvents, { style: {
|
|
105
|
-
width:
|
|
89
|
+
width: column.width,
|
|
106
90
|
minWidth: column.minWidth,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
91
|
+
flex: column.width ? "0 0 auto" : "1",
|
|
92
|
+
}, children: [canResize && (_jsx(ColumnResizer, { column: column, showOnHover: true, onResize: (e) => {
|
|
93
|
+
// console.log("onResize", e);
|
|
94
|
+
}, onResizeFinished: (e) => {
|
|
95
|
+
handleResize(e);
|
|
96
|
+
} })), _jsxs(InnerCellContent, { className: "mfui inner-cell-content", children: [_jsx(StyledCaption, { style: { flex: 1 }, children: column.caption }), _jsx(StyledCaption, { children: (sortState === null || sortState === void 0 ? void 0 : sortState.dataField) === column.dataField &&
|
|
112
97
|
(sortState.dir === "asc" ? (_jsx(ArrowUpIcon, { size: 14 })) : (_jsx(ArrowDownIcon, { size: 14 }))) })] })] }), column.columnId));
|
|
113
98
|
})] }) }));
|
|
114
99
|
};
|
|
@@ -36,7 +36,7 @@ const TableMenu = () => {
|
|
|
36
36
|
return null;
|
|
37
37
|
const { addButtonOptions, filterOptions, tableCountOptions, exportOptions, compactOptions, columnSelectorOptions, searchOptions, children, customMenuItems, } = tableMenuOptions;
|
|
38
38
|
const queryFilter = useQueryFilter({
|
|
39
|
-
|
|
39
|
+
defaultFilter: filterState,
|
|
40
40
|
filterDefinitions: (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filterDefinitions) || [],
|
|
41
41
|
showCombinator: (_a = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.showCombinator) !== null && _a !== void 0 ? _a : true,
|
|
42
42
|
onFilterChange: (q) => {
|
|
@@ -29,27 +29,6 @@ import { SelectionStatus } from "./enums";
|
|
|
29
29
|
import moment from "moment";
|
|
30
30
|
import { useControlled } from "../Utilities";
|
|
31
31
|
import { exportTableToExcel } from "./Utils";
|
|
32
|
-
const RESERVED_FIELDS = [
|
|
33
|
-
"__key",
|
|
34
|
-
"__index",
|
|
35
|
-
"__level",
|
|
36
|
-
"__parentKey",
|
|
37
|
-
"__hasChildren",
|
|
38
|
-
"__childKeys",
|
|
39
|
-
];
|
|
40
|
-
const EMPTY_TREE_META = {
|
|
41
|
-
parentKeyMap: new Map(),
|
|
42
|
-
childrenKeyMap: new Map(),
|
|
43
|
-
expandableKeys: [],
|
|
44
|
-
};
|
|
45
|
-
const DEFAULT_TREE_OPTIONS = {
|
|
46
|
-
enabled: false,
|
|
47
|
-
mode: "nested",
|
|
48
|
-
childrenField: "children",
|
|
49
|
-
parentIdField: "parentId",
|
|
50
|
-
indentPx: 16,
|
|
51
|
-
autoExpandOnMatch: true,
|
|
52
|
-
};
|
|
53
32
|
const calculateSelectionTotal = (selectionState, totalRecords, dataLength = 0) => {
|
|
54
33
|
if (!selectionState) {
|
|
55
34
|
return 0;
|
|
@@ -68,85 +47,12 @@ const calculateSelectionTotal = (selectionState, totalRecords, dataLength = 0) =
|
|
|
68
47
|
}
|
|
69
48
|
};
|
|
70
49
|
export const TableContext = createContext(null);
|
|
71
|
-
const expandColumnWidthsToTable = ({ columnWidths, columns, expansionColumns, tableWidth, fixedCellWidth, }) => {
|
|
72
|
-
const availableWidth = Math.max(tableWidth - fixedCellWidth, 0);
|
|
73
|
-
const columnWidthTotal = columns.reduce((sum, column) => {
|
|
74
|
-
return sum + (columnWidths[column.columnId] || 0);
|
|
75
|
-
}, 0);
|
|
76
|
-
const remainingWidth = availableWidth - columnWidthTotal;
|
|
77
|
-
if (remainingWidth <= 0 || columns.length === 0) {
|
|
78
|
-
return columnWidths;
|
|
79
|
-
}
|
|
80
|
-
const targetColumns = expansionColumns.length > 0
|
|
81
|
-
? expansionColumns
|
|
82
|
-
: [columns[columns.length - 1]].filter(Boolean);
|
|
83
|
-
const widthToAdd = remainingWidth / targetColumns.length;
|
|
84
|
-
return targetColumns.reduce((widths, column) => (Object.assign(Object.assign({}, widths), { [column.columnId]: (widths[column.columnId] || column.minWidth) + widthToAdd })), columnWidths);
|
|
85
|
-
};
|
|
86
|
-
const getVisibleColumnLayout = ({ columns, tableWidth, fixedCellWidth, resizeColumnWidths, }) => {
|
|
87
|
-
const visibleColumns = columns.filter((column) => column.visible !== false);
|
|
88
|
-
const fluidColumns = visibleColumns.filter((column) => typeof column.width !== "number" || column.width <= 0);
|
|
89
|
-
if (resizeColumnWidths) {
|
|
90
|
-
const columnWidths = expandColumnWidthsToTable({
|
|
91
|
-
columnWidths: resizeColumnWidths,
|
|
92
|
-
columns: visibleColumns,
|
|
93
|
-
expansionColumns: fluidColumns,
|
|
94
|
-
tableWidth,
|
|
95
|
-
fixedCellWidth,
|
|
96
|
-
});
|
|
97
|
-
const contentWidth = fixedCellWidth +
|
|
98
|
-
visibleColumns.reduce((sum, column) => {
|
|
99
|
-
return sum + (columnWidths[column.columnId] || column.minWidth);
|
|
100
|
-
}, 0);
|
|
101
|
-
return {
|
|
102
|
-
contentWidth: Math.max(tableWidth, contentWidth),
|
|
103
|
-
columnWidths,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
const fixedColumns = visibleColumns.filter((column) => typeof column.width === "number" && column.width > 0);
|
|
107
|
-
const fixedWidth = fixedColumns.reduce((sum, column) => sum + column.width, 0);
|
|
108
|
-
const fluidMinWidth = fluidColumns.reduce((sum, column) => sum + column.minWidth, 0);
|
|
109
|
-
const availableFluidWidth = Math.max(tableWidth - fixedCellWidth - fixedWidth, fluidMinWidth);
|
|
110
|
-
const fluidWidth = fluidColumns.length > 0 ? availableFluidWidth / fluidColumns.length : 0;
|
|
111
|
-
const baseColumnWidths = visibleColumns.reduce((widths, column) => {
|
|
112
|
-
widths[column.columnId] =
|
|
113
|
-
typeof column.width === "number" && column.width > 0
|
|
114
|
-
? column.width
|
|
115
|
-
: Math.max(column.minWidth, fluidWidth);
|
|
116
|
-
return widths;
|
|
117
|
-
}, {});
|
|
118
|
-
const columnWidths = expandColumnWidthsToTable({
|
|
119
|
-
columnWidths: baseColumnWidths,
|
|
120
|
-
columns: visibleColumns,
|
|
121
|
-
expansionColumns: fluidColumns,
|
|
122
|
-
tableWidth,
|
|
123
|
-
fixedCellWidth,
|
|
124
|
-
});
|
|
125
|
-
const contentWidth = fixedCellWidth +
|
|
126
|
-
visibleColumns.reduce((sum, column) => {
|
|
127
|
-
return sum + columnWidths[column.columnId];
|
|
128
|
-
}, 0);
|
|
129
|
-
return {
|
|
130
|
-
contentWidth: Math.max(tableWidth, contentWidth),
|
|
131
|
-
columnWidths,
|
|
132
|
-
};
|
|
133
|
-
};
|
|
134
50
|
const TableProvider = (_a) => {
|
|
135
|
-
var { children, columns, data, keyField, tableInstanceRef, stateStorage, tableMenuOptions, manualSorting, manualFiltering, manualSearch, manualExport, height, maxHeight, minHeight, focusedRowId, enableColumnResize, enableSorting, compact, totalRecords, onColumnStateChange, onColumnReorder, onColumnHeaderClick, onSort, onRowUpdated, tableElement, headerRowElm, tableDimensions, targetElm, listElm, defaultSelectionState, selectionState, onSelectionChange, defaultFilterState, filterState, onFilterChange
|
|
136
|
-
const _treeOptions = treeOptions || DEFAULT_TREE_OPTIONS;
|
|
137
|
-
const _treeMeta = treeMeta || EMPTY_TREE_META;
|
|
138
|
-
if (_treeOptions.enabled) {
|
|
139
|
-
if (RESERVED_FIELDS.includes(_treeOptions.childrenField)) {
|
|
140
|
-
throw new Error(`treeOptions.childrenField cannot be a reserved internal field: "${_treeOptions.childrenField}".`);
|
|
141
|
-
}
|
|
142
|
-
if (RESERVED_FIELDS.includes(_treeOptions.parentIdField)) {
|
|
143
|
-
throw new Error(`treeOptions.parentIdField cannot be a reserved internal field: "${_treeOptions.parentIdField}".`);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
51
|
+
var { children, columns, data, keyField, tableInstanceRef, stateStorage, tableMenuOptions, manualSorting, manualFiltering, manualSearch, manualExport, height, maxHeight, minHeight, focusedRowId, enableColumnResize, enableSorting, compact, totalRecords, onColumnStateChange, onColumnReorder, onColumnHeaderClick, onSort, onRowUpdated, tableElement, headerRowElm, tableDimensions, targetElm, listElm, defaultSelectionState, selectionState, onSelectionChange, defaultFilterState, filterState, onFilterChange } = _a, props = __rest(_a, ["children", "columns", "data", "keyField", "tableInstanceRef", "stateStorage", "tableMenuOptions", "manualSorting", "manualFiltering", "manualSearch", "manualExport", "height", "maxHeight", "minHeight", "focusedRowId", "enableColumnResize", "enableSorting", "compact", "totalRecords", "onColumnStateChange", "onColumnReorder", "onColumnHeaderClick", "onSort", "onRowUpdated", "tableElement", "headerRowElm", "tableDimensions", "targetElm", "listElm", "defaultSelectionState", "selectionState", "onSelectionChange", "defaultFilterState", "filterState", "onFilterChange"]);
|
|
146
52
|
const _columns = useMemo(() => columns
|
|
147
53
|
.map((child, index) => {
|
|
148
|
-
if (
|
|
149
|
-
throw new Error(
|
|
54
|
+
if (child.dataField === "__key") {
|
|
55
|
+
throw new Error("dataField cannot be __key");
|
|
150
56
|
}
|
|
151
57
|
// check for duplicate dataFields
|
|
152
58
|
const dataFieldCount = columns.filter((col) => col.dataField === child.dataField).length;
|
|
@@ -165,10 +71,9 @@ const TableProvider = (_a) => {
|
|
|
165
71
|
? StateStorage.getTableState(stateStorage.key)
|
|
166
72
|
: undefined;
|
|
167
73
|
}, [stateStorage === null || stateStorage === void 0 ? void 0 : stateStorage.key]);
|
|
168
|
-
const { columnState: savedColumnState, selectionState: savedSelectionState, sortState: savedSortState, searchState: savedSearchState, filterState: savedFilterState,
|
|
74
|
+
const { columnState: savedColumnState, selectionState: savedSelectionState, sortState: savedSortState, searchState: savedSearchState, filterState: savedFilterState, } = savedTableState || {};
|
|
169
75
|
const [compactState, setCompactState] = useState(compact || false);
|
|
170
76
|
const [columnState, _setColumnState] = useState(syncColumnState(_columns, savedColumnState));
|
|
171
|
-
const [resizeColumnWidths, setResizeColumnWidths] = useState(null);
|
|
172
77
|
const columnStateRef = useRef(columnState);
|
|
173
78
|
useEffect(() => {
|
|
174
79
|
columnStateRef.current = columnState;
|
|
@@ -180,8 +85,6 @@ const TableProvider = (_a) => {
|
|
|
180
85
|
rules: [],
|
|
181
86
|
});
|
|
182
87
|
const [sortState, setSortState] = useState(savedSortState);
|
|
183
|
-
const [_expandedKeys, _setExpandedKeys] = useControlled(expandedKeys, defaultExpandedKeys || savedExpandedKeys || []);
|
|
184
|
-
const expandedKeysSet = useMemo(() => new Set(_expandedKeys), [_expandedKeys]);
|
|
185
88
|
const [_selectionState, _setSelectionState] = useControlled(selectionState, defaultSelectionState || {
|
|
186
89
|
selectedRowKeys: (savedSelectionState === null || savedSelectionState === void 0 ? void 0 : savedSelectionState.selectedRowKeys) || [],
|
|
187
90
|
excludedRowKeys: (savedSelectionState === null || savedSelectionState === void 0 ? void 0 : savedSelectionState.excludedRowKeys) || [],
|
|
@@ -206,19 +109,6 @@ const TableProvider = (_a) => {
|
|
|
206
109
|
return Object.assign(Object.assign({}, prev), { selectedRowKeys });
|
|
207
110
|
});
|
|
208
111
|
};
|
|
209
|
-
const tableLayout = useMemo(() => getVisibleColumnLayout({
|
|
210
|
-
columns: columnState,
|
|
211
|
-
tableWidth: tableDimensions.width,
|
|
212
|
-
fixedCellWidth: (props.enableSelection ? TableDefaults.actionCell.width : 0) +
|
|
213
|
-
(props.enableActionButton ? TableDefaults.actionCell.width : 0),
|
|
214
|
-
resizeColumnWidths,
|
|
215
|
-
}), [
|
|
216
|
-
columnState,
|
|
217
|
-
tableDimensions.width,
|
|
218
|
-
props.enableSelection,
|
|
219
|
-
props.enableActionButton,
|
|
220
|
-
resizeColumnWidths,
|
|
221
|
-
]);
|
|
222
112
|
const getCalculatedSelectionTotal = () => {
|
|
223
113
|
return calculateSelectionTotal({
|
|
224
114
|
selectedRowKeys,
|
|
@@ -348,99 +238,58 @@ const TableProvider = (_a) => {
|
|
|
348
238
|
}
|
|
349
239
|
}
|
|
350
240
|
};
|
|
351
|
-
const
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
241
|
+
const sortData = (sortState) => {
|
|
242
|
+
// sort data
|
|
243
|
+
return data.sort((a, b) => {
|
|
244
|
+
if (sortState) {
|
|
245
|
+
const aValue = a[sortState.dataField];
|
|
246
|
+
const bValue = b[sortState.dataField];
|
|
247
|
+
const aIsEmpty = aValue === null || aValue === undefined;
|
|
248
|
+
const bIsEmpty = bValue === null || bValue === undefined;
|
|
249
|
+
// Treat empty values as the smallest values.
|
|
250
|
+
if (aIsEmpty && bIsEmpty) {
|
|
251
|
+
return 0;
|
|
252
|
+
}
|
|
253
|
+
if (aIsEmpty || bIsEmpty) {
|
|
254
|
+
if (sortState.dir === "asc") {
|
|
255
|
+
return aIsEmpty ? -1 : 1;
|
|
256
|
+
}
|
|
257
|
+
if (sortState.dir === "desc") {
|
|
258
|
+
return aIsEmpty ? 1 : -1;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
362
261
|
if (sortState.dir === "asc") {
|
|
363
|
-
|
|
262
|
+
if (aValue < bValue) {
|
|
263
|
+
return -1;
|
|
264
|
+
}
|
|
265
|
+
if (aValue > bValue) {
|
|
266
|
+
return 1;
|
|
267
|
+
}
|
|
268
|
+
return 0;
|
|
364
269
|
}
|
|
365
|
-
if (sortState.dir === "desc") {
|
|
366
|
-
|
|
270
|
+
else if (sortState.dir === "desc") {
|
|
271
|
+
if (aValue > bValue) {
|
|
272
|
+
return -1;
|
|
273
|
+
}
|
|
274
|
+
if (aValue < bValue) {
|
|
275
|
+
return 1;
|
|
276
|
+
}
|
|
277
|
+
return 0;
|
|
367
278
|
}
|
|
368
279
|
}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
if (aValue > bValue)
|
|
373
|
-
return 1;
|
|
374
|
-
return 0;
|
|
280
|
+
// sort by __index
|
|
281
|
+
if (a.__index < b.__index) {
|
|
282
|
+
return -1;
|
|
375
283
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
return -1;
|
|
379
|
-
if (aValue < bValue)
|
|
380
|
-
return 1;
|
|
381
|
-
return 0;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
// sort by __index
|
|
385
|
-
if (a.__index < b.__index)
|
|
386
|
-
return -1;
|
|
387
|
-
if (a.__index > b.__index)
|
|
388
|
-
return 1;
|
|
389
|
-
return 0;
|
|
390
|
-
};
|
|
391
|
-
const sortData = (sortState) => {
|
|
392
|
-
if (!_treeOptions.enabled) {
|
|
393
|
-
// Flat data — sort in-place (preserves existing behavior).
|
|
394
|
-
return data.sort((a, b) => compareRows(a, b, sortState));
|
|
395
|
-
}
|
|
396
|
-
// Tree-aware sort: sort siblings only, then re-DFS to rebuild the
|
|
397
|
-
// flat order. Cross-parent sorting is never allowed in tree mode.
|
|
398
|
-
const byKey = new Map();
|
|
399
|
-
const childrenByParent = new Map();
|
|
400
|
-
for (const row of data) {
|
|
401
|
-
byKey.set(row.__key, row);
|
|
402
|
-
const pk = row.__parentKey;
|
|
403
|
-
if (!childrenByParent.has(pk))
|
|
404
|
-
childrenByParent.set(pk, []);
|
|
405
|
-
childrenByParent.get(pk).push(row);
|
|
406
|
-
}
|
|
407
|
-
for (const [, siblings] of childrenByParent) {
|
|
408
|
-
siblings.sort((a, b) => compareRows(a, b, sortState));
|
|
409
|
-
}
|
|
410
|
-
const result = [];
|
|
411
|
-
const walk = (parentKey) => {
|
|
412
|
-
const siblings = childrenByParent.get(parentKey);
|
|
413
|
-
if (!siblings)
|
|
414
|
-
return;
|
|
415
|
-
for (const row of siblings) {
|
|
416
|
-
result.push(row);
|
|
417
|
-
if (row.__hasChildren)
|
|
418
|
-
walk(row.__key);
|
|
284
|
+
if (a.__index > b.__index) {
|
|
285
|
+
return 1;
|
|
419
286
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
return result;
|
|
423
|
-
};
|
|
424
|
-
const collectAncestors = (rows) => {
|
|
425
|
-
const ancestorSet = new Set();
|
|
426
|
-
const byKey = new Map();
|
|
427
|
-
for (const r of data)
|
|
428
|
-
byKey.set(r.__key, r);
|
|
429
|
-
for (const row of rows) {
|
|
430
|
-
let parentKey = row.__parentKey;
|
|
431
|
-
while (parentKey) {
|
|
432
|
-
if (ancestorSet.has(parentKey))
|
|
433
|
-
break;
|
|
434
|
-
ancestorSet.add(parentKey);
|
|
435
|
-
const parent = byKey.get(parentKey);
|
|
436
|
-
parentKey = parent === null || parent === void 0 ? void 0 : parent.__parentKey;
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
return ancestorSet;
|
|
287
|
+
return 0;
|
|
288
|
+
});
|
|
440
289
|
};
|
|
441
|
-
const searchData = (
|
|
290
|
+
const searchData = (searchText) => {
|
|
442
291
|
const columnKeys = columnState.map((col) => col.dataField);
|
|
443
|
-
|
|
292
|
+
return data.filter((row) => {
|
|
444
293
|
return columnKeys.some((key) => {
|
|
445
294
|
if (typeof row[key] === "string") {
|
|
446
295
|
return row[key].toLowerCase().includes(searchText.toLowerCase());
|
|
@@ -448,18 +297,9 @@ const TableProvider = (_a) => {
|
|
|
448
297
|
return false;
|
|
449
298
|
});
|
|
450
299
|
});
|
|
451
|
-
if (!_treeOptions.enabled) {
|
|
452
|
-
return { rows: matched, ancestorKeys: new Set() };
|
|
453
|
-
}
|
|
454
|
-
const ancestorKeys = collectAncestors(matched);
|
|
455
|
-
const visibleSet = new Set(matched.map((r) => r.__key));
|
|
456
|
-
ancestorKeys.forEach((k) => visibleSet.add(k));
|
|
457
|
-
return {
|
|
458
|
-
rows: rows.filter((r) => visibleSet.has(r.__key)),
|
|
459
|
-
ancestorKeys,
|
|
460
|
-
};
|
|
461
300
|
};
|
|
462
301
|
const rowMatchesRule = (row, rule) => {
|
|
302
|
+
var _a, _b, _c, _d;
|
|
463
303
|
const column = columnState.find((col) => col.dataField === rule.dataField);
|
|
464
304
|
const { value, operator, dataField } = rule;
|
|
465
305
|
if (operator.value === "isEmpty") {
|
|
@@ -471,15 +311,6 @@ const TableProvider = (_a) => {
|
|
|
471
311
|
if (!value || value.length === 0) {
|
|
472
312
|
return true;
|
|
473
313
|
}
|
|
474
|
-
if ((operator.value === "between" || operator.value === "notBetween") &&
|
|
475
|
-
(value[0] == null ||
|
|
476
|
-
value[0] === "" ||
|
|
477
|
-
value[1] == null ||
|
|
478
|
-
value[1] === "")) {
|
|
479
|
-
return true;
|
|
480
|
-
}
|
|
481
|
-
const fieldText = row[dataField] == null ? "" : row[dataField].toString().toLowerCase();
|
|
482
|
-
const ruleText = value[0] == null ? "" : value[0].toString().toLowerCase();
|
|
483
314
|
switch (operator.value) {
|
|
484
315
|
case "=":
|
|
485
316
|
if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
|
|
@@ -548,9 +379,9 @@ const TableProvider = (_a) => {
|
|
|
548
379
|
return (row[dataField] < value[0] ||
|
|
549
380
|
row[dataField] > value[1]);
|
|
550
381
|
case "contains":
|
|
551
|
-
return
|
|
382
|
+
return (_a = row[dataField]) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes((_b = value[0]) === null || _b === void 0 ? void 0 : _b.toString().toLowerCase());
|
|
552
383
|
case "doesNotContain":
|
|
553
|
-
return !
|
|
384
|
+
return !((_c = row[dataField]) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes((_d = value[0]) === null || _d === void 0 ? void 0 : _d.toString().toLowerCase()));
|
|
554
385
|
case "in":
|
|
555
386
|
if (!Array.isArray(value) || value.length === 0) {
|
|
556
387
|
return true;
|
|
@@ -565,26 +396,16 @@ const TableProvider = (_a) => {
|
|
|
565
396
|
return true;
|
|
566
397
|
}
|
|
567
398
|
};
|
|
568
|
-
const filterData = (
|
|
569
|
-
if (!
|
|
570
|
-
return
|
|
399
|
+
const filterData = (filter) => {
|
|
400
|
+
if (!data)
|
|
401
|
+
return [];
|
|
571
402
|
const { combinator, rules } = filter;
|
|
572
|
-
if (!combinator || !rules
|
|
573
|
-
return
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
? rows.filter((row) => rules.some((rule) => rowMatchesRule(row, rule)))
|
|
577
|
-
: rows.filter((row) => rules.every((rule) => rowMatchesRule(row, rule)));
|
|
578
|
-
if (!_treeOptions.enabled) {
|
|
579
|
-
return { rows: matched, ancestorKeys: new Set() };
|
|
403
|
+
if (!combinator || !rules)
|
|
404
|
+
return data;
|
|
405
|
+
if (combinator === "or") {
|
|
406
|
+
return data.filter((row) => rules.some((rule) => rowMatchesRule(row, rule)));
|
|
580
407
|
}
|
|
581
|
-
|
|
582
|
-
const visibleSet = new Set(matched.map((r) => r.__key));
|
|
583
|
-
ancestorKeys.forEach((k) => visibleSet.add(k));
|
|
584
|
-
return {
|
|
585
|
-
rows: rows.filter((r) => visibleSet.has(r.__key)),
|
|
586
|
-
ancestorKeys,
|
|
587
|
-
};
|
|
408
|
+
return data.filter((row) => rules.every((rule) => rowMatchesRule(row, rule)));
|
|
588
409
|
};
|
|
589
410
|
const toggleColumnVisibility = (dataField) => {
|
|
590
411
|
const newColumnState = columnState.map((col) => {
|
|
@@ -613,47 +434,6 @@ const TableProvider = (_a) => {
|
|
|
613
434
|
const key = !!keyField ? row[keyField] : row.__key;
|
|
614
435
|
return String(key);
|
|
615
436
|
};
|
|
616
|
-
const firstVisibleDataField = useMemo(() => { var _a; return (_a = columnState.find((c) => c.visible !== false)) === null || _a === void 0 ? void 0 : _a.dataField; }, [columnState]);
|
|
617
|
-
const persistExpandedKeys = (next) => {
|
|
618
|
-
if ((stateStorage === null || stateStorage === void 0 ? void 0 : stateStorage.enabled) && (stateStorage === null || stateStorage === void 0 ? void 0 : stateStorage.type) === "localStorage") {
|
|
619
|
-
StateStorage.setExpandedKeys(stateStorage.key, next);
|
|
620
|
-
}
|
|
621
|
-
};
|
|
622
|
-
const updateExpandedKeys = (next) => {
|
|
623
|
-
_setExpandedKeys(next);
|
|
624
|
-
onExpandedChange === null || onExpandedChange === void 0 ? void 0 : onExpandedChange(next);
|
|
625
|
-
persistExpandedKeys(next);
|
|
626
|
-
};
|
|
627
|
-
const expandRow = (row) => {
|
|
628
|
-
var _a;
|
|
629
|
-
const key = (_a = row === null || row === void 0 ? void 0 : row.__key) !== null && _a !== void 0 ? _a : getRowKey(row);
|
|
630
|
-
if (expandedKeysSet.has(key))
|
|
631
|
-
return;
|
|
632
|
-
updateExpandedKeys([..._expandedKeys, key]);
|
|
633
|
-
};
|
|
634
|
-
const collapseRow = (row) => {
|
|
635
|
-
var _a;
|
|
636
|
-
const key = (_a = row === null || row === void 0 ? void 0 : row.__key) !== null && _a !== void 0 ? _a : getRowKey(row);
|
|
637
|
-
if (!expandedKeysSet.has(key))
|
|
638
|
-
return;
|
|
639
|
-
updateExpandedKeys(_expandedKeys.filter((k) => k !== key));
|
|
640
|
-
};
|
|
641
|
-
const toggleRowExpanded = (row) => {
|
|
642
|
-
var _a;
|
|
643
|
-
const key = (_a = row === null || row === void 0 ? void 0 : row.__key) !== null && _a !== void 0 ? _a : getRowKey(row);
|
|
644
|
-
if (expandedKeysSet.has(key)) {
|
|
645
|
-
updateExpandedKeys(_expandedKeys.filter((k) => k !== key));
|
|
646
|
-
}
|
|
647
|
-
else {
|
|
648
|
-
updateExpandedKeys([..._expandedKeys, key]);
|
|
649
|
-
}
|
|
650
|
-
};
|
|
651
|
-
const expandAllRows = () => {
|
|
652
|
-
updateExpandedKeys([..._treeMeta.expandableKeys]);
|
|
653
|
-
};
|
|
654
|
-
const collapseAllRows = () => {
|
|
655
|
-
updateExpandedKeys([]);
|
|
656
|
-
};
|
|
657
437
|
const selectRow = (row) => {
|
|
658
438
|
const key = getRowKey(row);
|
|
659
439
|
const newSelectionState = {
|
|
@@ -791,61 +571,6 @@ const TableProvider = (_a) => {
|
|
|
791
571
|
const key = getRowKey(row);
|
|
792
572
|
return focusedRowId === key;
|
|
793
573
|
};
|
|
794
|
-
const { _data, effectiveExpandedKeys } = useMemo(() => {
|
|
795
|
-
let processedData = data || [];
|
|
796
|
-
if (manualSorting !== true) {
|
|
797
|
-
processedData = sortData(sortState);
|
|
798
|
-
}
|
|
799
|
-
const autoExpandedSet = new Set();
|
|
800
|
-
if (manualFiltering !== true && _filterState) {
|
|
801
|
-
const result = filterData(processedData, _filterState);
|
|
802
|
-
processedData = result.rows;
|
|
803
|
-
if (_treeOptions.enabled && _treeOptions.autoExpandOnMatch) {
|
|
804
|
-
result.ancestorKeys.forEach((k) => autoExpandedSet.add(k));
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
if (manualSearch !== true && search) {
|
|
808
|
-
const result = searchData(processedData, search);
|
|
809
|
-
processedData = result.rows;
|
|
810
|
-
if (_treeOptions.enabled && _treeOptions.autoExpandOnMatch) {
|
|
811
|
-
result.ancestorKeys.forEach((k) => autoExpandedSet.add(k));
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
|
-
// Compute the effective expanded set: user expansion ∪ auto-expanded ancestors.
|
|
815
|
-
// Never mutates user's _expandedKeys.
|
|
816
|
-
const effective = new Set(expandedKeysSet);
|
|
817
|
-
autoExpandedSet.forEach((k) => effective.add(k));
|
|
818
|
-
// Final pass: drop rows whose ancestors are not in the effective set.
|
|
819
|
-
if (_treeOptions.enabled) {
|
|
820
|
-
const byKey = new Map();
|
|
821
|
-
for (const r of processedData)
|
|
822
|
-
byKey.set(r.__key, r);
|
|
823
|
-
processedData = processedData.filter((row) => {
|
|
824
|
-
let pk = row.__parentKey;
|
|
825
|
-
while (pk) {
|
|
826
|
-
if (!effective.has(pk))
|
|
827
|
-
return false;
|
|
828
|
-
const parent = byKey.get(pk);
|
|
829
|
-
pk = parent === null || parent === void 0 ? void 0 : parent.__parentKey;
|
|
830
|
-
}
|
|
831
|
-
return true;
|
|
832
|
-
});
|
|
833
|
-
}
|
|
834
|
-
return { _data: processedData, effectiveExpandedKeys: effective };
|
|
835
|
-
}, [
|
|
836
|
-
data,
|
|
837
|
-
columnState,
|
|
838
|
-
search,
|
|
839
|
-
sortState,
|
|
840
|
-
_filterState,
|
|
841
|
-
expandedKeysSet,
|
|
842
|
-
_treeOptions,
|
|
843
|
-
]);
|
|
844
|
-
const isRowExpanded = (row) => {
|
|
845
|
-
var _a;
|
|
846
|
-
const key = (_a = row === null || row === void 0 ? void 0 : row.__key) !== null && _a !== void 0 ? _a : getRowKey(row);
|
|
847
|
-
return effectiveExpandedKeys.has(key);
|
|
848
|
-
};
|
|
849
574
|
if (tableInstanceRef) {
|
|
850
575
|
tableInstanceRef.current = {
|
|
851
576
|
columnState,
|
|
@@ -862,13 +587,6 @@ const TableProvider = (_a) => {
|
|
|
862
587
|
clearSelections,
|
|
863
588
|
runSearch,
|
|
864
589
|
clearSearch,
|
|
865
|
-
expandRow,
|
|
866
|
-
collapseRow,
|
|
867
|
-
toggleRowExpanded,
|
|
868
|
-
isRowExpanded,
|
|
869
|
-
expandAllRows,
|
|
870
|
-
collapseAllRows,
|
|
871
|
-
getExpandedRowKeys: () => [..._expandedKeys],
|
|
872
590
|
getTableState: () => {
|
|
873
591
|
return {
|
|
874
592
|
columnState,
|
|
@@ -880,15 +598,25 @@ const TableProvider = (_a) => {
|
|
|
880
598
|
},
|
|
881
599
|
sortState,
|
|
882
600
|
searchState: search,
|
|
883
|
-
|
|
884
|
-
expandedKeys: [..._expandedKeys],
|
|
601
|
+
_filterState,
|
|
885
602
|
};
|
|
886
603
|
},
|
|
887
604
|
};
|
|
888
605
|
}
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
606
|
+
const _data = useMemo(() => {
|
|
607
|
+
let processedData = data; // create a new array to avoid mutating the original data
|
|
608
|
+
if (manualSorting !== true) {
|
|
609
|
+
processedData = sortData(sortState);
|
|
610
|
+
}
|
|
611
|
+
if (manualFiltering !== true && _filterState) {
|
|
612
|
+
processedData = filterData(_filterState);
|
|
613
|
+
}
|
|
614
|
+
if (manualSearch !== true && search) {
|
|
615
|
+
processedData = searchData(search);
|
|
616
|
+
}
|
|
617
|
+
return processedData;
|
|
618
|
+
}, [data, columnState, search, sortState, _filterState]);
|
|
619
|
+
return (_jsx(TableContext.Provider, { value: Object.assign({ columnState, setColumnState: updateColumnState, sortState, searchState: search, totalRecords,
|
|
892
620
|
keyField,
|
|
893
621
|
handleColumnReorder,
|
|
894
622
|
handleColumnHeaderClick, selectionState: _selectionState, selectRow,
|
|
@@ -912,13 +640,6 @@ const TableProvider = (_a) => {
|
|
|
912
640
|
stateStorage, tableHeight: height, tableMaxHeight: maxHeight, tableMinHeight: minHeight, compact, tableElement: tableElement, headerRowElm: headerRowElm, tableDimensions: tableDimensions, targetElm: targetElm, listElm: listElm, enableColumnResize,
|
|
913
641
|
onSelectionChange,
|
|
914
642
|
onColumnStateChange,
|
|
915
|
-
onColumnReorder, onRowUpdated: onRowUpdated || (() => { }), tableMenuOptions, data: _data
|
|
916
|
-
isRowExpanded,
|
|
917
|
-
toggleRowExpanded,
|
|
918
|
-
expandRow,
|
|
919
|
-
collapseRow,
|
|
920
|
-
expandAllRows,
|
|
921
|
-
collapseAllRows,
|
|
922
|
-
onExpandedChange }, props), children: children }));
|
|
643
|
+
onColumnReorder, onRowUpdated: onRowUpdated || (() => { }), tableMenuOptions, data: _data }, props), children: children }));
|
|
923
644
|
};
|
|
924
645
|
export default TableProvider;
|