@monolith-forensics/monolith-ui 1.8.1-dev.3 → 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.
Files changed (171) hide show
  1. package/dist/Button/Button.js +58 -9
  2. package/dist/Calendar/Calendar.d.ts +2 -7
  3. package/dist/Calendar/Calendar.js +49 -226
  4. package/dist/Calendar/CalendarStyles.d.ts +2 -6
  5. package/dist/Calendar/CalendarStyles.js +33 -153
  6. package/dist/Calendar/calendarHelpers.d.ts +2 -6
  7. package/dist/Calendar/calendarHelpers.js +5 -13
  8. package/dist/Charts/BarChart/BarChart.js +28 -14
  9. package/dist/Charts/BarChart/BarChart.styled.d.ts +7 -2
  10. package/dist/Charts/BarChart/BarChart.styled.js +5 -1
  11. package/dist/Charts/BarChart/BarChart.types.d.ts +13 -5
  12. package/dist/Charts/ChartUtils/chartSizing.d.ts +20 -0
  13. package/dist/Charts/ChartUtils/chartSizing.js +83 -0
  14. package/dist/Charts/ChartUtils/index.d.ts +1 -0
  15. package/dist/Charts/ChartUtils/index.js +1 -0
  16. package/dist/Charts/HeatMap/HeatMap.js +28 -7
  17. package/dist/Charts/HeatMap/HeatMap.styled.d.ts +6 -2
  18. package/dist/Charts/HeatMap/HeatMap.styled.js +3 -0
  19. package/dist/Charts/HeatMap/HeatMap.types.d.ts +7 -1
  20. package/dist/Charts/LineChart/LineChart.js +34 -15
  21. package/dist/Charts/LineChart/LineChart.styled.d.ts +7 -2
  22. package/dist/Charts/LineChart/LineChart.styled.js +5 -1
  23. package/dist/Charts/LineChart/LineChart.types.d.ts +13 -5
  24. package/dist/Charts/PieChart/PieChart.js +48 -33
  25. package/dist/Charts/PieChart/PieChart.styled.d.ts +7 -2
  26. package/dist/Charts/PieChart/PieChart.styled.js +6 -1
  27. package/dist/Charts/PieChart/PieChart.types.d.ts +7 -3
  28. package/dist/CheckBox/CheckBox.js +19 -36
  29. package/dist/DateInput/DateInput.js +143 -198
  30. package/dist/DropDownMenu/DropDownMenu.js +15 -25
  31. package/dist/DropDownMenu/components/MenuComponent.js +2 -8
  32. package/dist/DropDownMenu/components/MenuItem.d.ts +0 -2
  33. package/dist/DropDownMenu/components/MenuItem.js +21 -25
  34. package/dist/DropDownMenu/components/MenuItemList.d.ts +0 -3
  35. package/dist/DropDownMenu/components/MenuItemList.js +86 -192
  36. package/dist/DropDownMenu/components/StyledContent.js +2 -1
  37. package/dist/DropDownMenu/components/StyledFloatContainer.js +1 -1
  38. package/dist/DropDownMenu/types.d.ts +0 -3
  39. package/dist/FieldLabel/FieldLabel.js +12 -4
  40. package/dist/FileInputField/FileInputField.js +23 -4
  41. package/dist/FileViewer/viewers/ImageViewer.js +18 -75
  42. package/dist/FormSection/FormSection.js +25 -5
  43. package/dist/IconButton/IconButton.js +16 -2
  44. package/dist/Input/Input.js +56 -7
  45. package/dist/MonolithUIProvider/MonolithUIProvider.d.ts +4 -1
  46. package/dist/Pill/Pill.js +79 -8
  47. package/dist/Popover/Popover.context.d.ts +1 -2
  48. package/dist/Popover/Popover.js +2 -5
  49. package/dist/Popover/Popover.styles.d.ts +6 -1
  50. package/dist/Popover/Popover.styles.js +28 -11
  51. package/dist/Popover/Popover.transitions.d.ts +2 -4
  52. package/dist/Popover/Popover.transitions.js +49 -23
  53. package/dist/Popover/PopoverDropdown.js +8 -6
  54. package/dist/Popover/PopoverTarget.js +3 -6
  55. package/dist/QueryFilter/DefaultOperators.d.ts +76 -1
  56. package/dist/QueryFilter/DefaultOperators.js +21 -1
  57. package/dist/QueryFilter/QueryFilter.d.ts +1 -1
  58. package/dist/QueryFilter/QueryFilter.js +303 -3
  59. package/dist/QueryFilter/index.d.ts +2 -3
  60. package/dist/QueryFilter/index.js +2 -3
  61. package/dist/QueryFilter/types.d.ts +52 -1
  62. package/dist/QueryFilter/types.js +1 -1
  63. package/dist/QueryFilter/useQueryFilter.d.ts +1 -1
  64. package/dist/QueryFilter/useQueryFilter.js +19 -23
  65. package/dist/RichTextEditor/Components/CodeBlockBaseButton.d.ts +18 -0
  66. package/dist/RichTextEditor/Components/CodeBlockBaseButton.js +6 -0
  67. package/dist/RichTextEditor/Components/CodeBlockCopyButton.d.ts +9 -0
  68. package/dist/RichTextEditor/Components/CodeBlockCopyButton.js +42 -0
  69. package/dist/RichTextEditor/Components/CodeBlockFormatButton.d.ts +10 -0
  70. package/dist/RichTextEditor/Components/CodeBlockFormatButton.js +60 -0
  71. package/dist/RichTextEditor/Components/CodeBlockLanguageSelect.d.ts +9 -0
  72. package/dist/RichTextEditor/Components/CodeBlockLanguageSelect.js +30 -0
  73. package/dist/RichTextEditor/Components/CodeBlockNodeView.d.ts +3 -0
  74. package/dist/RichTextEditor/Components/CodeBlockNodeView.js +28 -0
  75. package/dist/RichTextEditor/Components/CodeBlockWrapButton.d.ts +10 -0
  76. package/dist/RichTextEditor/Components/CodeBlockWrapButton.js +17 -0
  77. package/dist/RichTextEditor/Components/LinkEditor.d.ts +8 -0
  78. package/dist/RichTextEditor/Components/LinkEditor.js +94 -0
  79. package/dist/RichTextEditor/Components/TableTools/TableCornerMenu.d.ts +2 -0
  80. package/dist/RichTextEditor/Components/TableTools/TableCornerMenu.js +19 -0
  81. package/dist/RichTextEditor/Components/TableTools/TableInsertControls.d.ts +2 -0
  82. package/dist/RichTextEditor/Components/TableTools/TableInsertControls.js +24 -0
  83. package/dist/RichTextEditor/Components/TableTools/TableRails.d.ts +2 -0
  84. package/dist/RichTextEditor/Components/TableTools/TableRails.js +180 -0
  85. package/dist/RichTextEditor/Components/TableTools/TableToolMenu.d.ts +5 -0
  86. package/dist/RichTextEditor/Components/TableTools/TableToolMenu.js +6 -0
  87. package/dist/RichTextEditor/Components/TableTools/TableTools.actions.d.ts +5 -0
  88. package/dist/RichTextEditor/Components/TableTools/TableTools.actions.js +183 -0
  89. package/dist/RichTextEditor/Components/TableTools/TableTools.commands.d.ts +16 -0
  90. package/dist/RichTextEditor/Components/TableTools/TableTools.commands.js +217 -0
  91. package/dist/RichTextEditor/Components/TableTools/TableTools.constants.d.ts +8 -0
  92. package/dist/RichTextEditor/Components/TableTools/TableTools.constants.js +11 -0
  93. package/dist/RichTextEditor/Components/TableTools/TableTools.d.ts +3 -0
  94. package/dist/RichTextEditor/Components/TableTools/TableTools.geometry.d.ts +23 -0
  95. package/dist/RichTextEditor/Components/TableTools/TableTools.geometry.js +75 -0
  96. package/dist/RichTextEditor/Components/TableTools/TableTools.js +3 -0
  97. package/dist/RichTextEditor/Components/TableTools/TableTools.selectors.d.ts +16 -0
  98. package/dist/RichTextEditor/Components/TableTools/TableTools.selectors.js +53 -0
  99. package/dist/RichTextEditor/Components/TableTools/TableTools.styled.d.ts +40 -0
  100. package/dist/RichTextEditor/Components/TableTools/TableTools.styled.js +167 -0
  101. package/dist/RichTextEditor/Components/TableTools/TableTools.types.d.ts +76 -0
  102. package/dist/RichTextEditor/Components/TableTools/TableTools.types.js +1 -0
  103. package/dist/RichTextEditor/Components/TableTools/TableTools.utils.d.ts +4 -0
  104. package/dist/RichTextEditor/Components/TableTools/TableTools.utils.js +4 -0
  105. package/dist/RichTextEditor/Components/TableTools/TableToolsPopover.d.ts +2 -0
  106. package/dist/RichTextEditor/Components/TableTools/TableToolsPopover.js +12 -0
  107. package/dist/RichTextEditor/Components/TableTools/index.d.ts +3 -0
  108. package/dist/RichTextEditor/Components/TableTools/index.js +2 -0
  109. package/dist/RichTextEditor/Enums/HighlightColors.d.ts +9 -0
  110. package/dist/RichTextEditor/Enums/HighlightColors.js +10 -0
  111. package/dist/RichTextEditor/Extensions/getTiptapExtensions.js +15 -5
  112. package/dist/RichTextEditor/Plugins/ImageActionsPlugin.js +4 -7
  113. package/dist/RichTextEditor/Plugins/UploadImagesPlugin.d.ts +0 -15
  114. package/dist/RichTextEditor/Plugins/UploadImagesPlugin.js +51 -115
  115. package/dist/RichTextEditor/Plugins/index.d.ts +0 -1
  116. package/dist/RichTextEditor/Plugins/index.js +0 -1
  117. package/dist/RichTextEditor/RichTextEditor.d.ts +2 -3
  118. package/dist/RichTextEditor/RichTextEditor.js +35 -302
  119. package/dist/RichTextEditor/Utils/codeBlockUtils.d.ts +20 -0
  120. package/dist/RichTextEditor/Utils/codeBlockUtils.js +137 -0
  121. package/dist/RichTextEditor/Utils/codeUtils.d.ts +3 -0
  122. package/dist/RichTextEditor/Utils/codeUtils.js +12 -0
  123. package/dist/RichTextEditor/Utils/linkUtils.d.ts +19 -0
  124. package/dist/RichTextEditor/Utils/linkUtils.js +57 -0
  125. package/dist/RichTextEditor/Utils/tableUtils.d.ts +1 -0
  126. package/dist/RichTextEditor/Utils/tableUtils.js +1 -0
  127. package/dist/SegmentedControl/SegmentedControl.utils.d.ts +2 -2
  128. package/dist/SegmentedControl/SegmentedControl.utils.js +30 -3
  129. package/dist/SelectBox/SelectBox.js +5 -5
  130. package/dist/SelectBox/select-box.styled-components.d.ts +1 -4
  131. package/dist/SelectBox/select-box.styled-components.js +48 -11
  132. package/dist/SelectBox/types.d.ts +0 -1
  133. package/dist/Switch/Switch.d.ts +2 -2
  134. package/dist/Switch/Switch.js +83 -18
  135. package/dist/Table/ColumnResizer.d.ts +9 -6
  136. package/dist/Table/ColumnResizer.js +10 -30
  137. package/dist/Table/StateStorage.d.ts +0 -4
  138. package/dist/Table/StateStorage.js +0 -13
  139. package/dist/Table/Table.js +12 -160
  140. package/dist/Table/TableComponents.d.ts +0 -10
  141. package/dist/Table/TableComponents.js +10 -71
  142. package/dist/Table/TableDefaults.d.ts +0 -7
  143. package/dist/Table/TableDefaults.js +0 -7
  144. package/dist/Table/TableHeader.js +16 -31
  145. package/dist/Table/TableMenu/TableMenu.js +1 -1
  146. package/dist/Table/TableProvider.js +75 -354
  147. package/dist/Table/TableRow.js +16 -28
  148. package/dist/Table/Utils/index.d.ts +1 -0
  149. package/dist/Table/Utils/index.js +1 -0
  150. package/dist/Table/types.d.ts +19 -70
  151. package/dist/TagBox/TagBox.d.ts +1 -1
  152. package/dist/TagBox/TagBox.js +80 -22
  153. package/dist/TagBox/types.d.ts +0 -1
  154. package/dist/TextArea/TextArea.js +23 -9
  155. package/dist/TextInput/TextInput.js +6 -12
  156. package/dist/Utilities/parseTimestamp.js +6 -11
  157. package/dist/core/ArrowButton.d.ts +0 -2
  158. package/dist/core/ArrowButton.js +3 -7
  159. package/dist/core/ClearButton.d.ts +0 -2
  160. package/dist/core/ClearButton.js +3 -7
  161. package/dist/core/controlSizes.js +9 -9
  162. package/dist/core/index.d.ts +0 -1
  163. package/dist/core/index.js +0 -1
  164. package/dist/index.d.ts +0 -3
  165. package/dist/index.js +0 -2
  166. package/dist/theme/variants.js +8 -2
  167. package/package.json +18 -26
  168. package/dist/DateTimeRangePicker/DateTimeRangePicker.d.ts +0 -41
  169. package/dist/DateTimeRangePicker/DateTimeRangePicker.js +0 -363
  170. package/dist/DateTimeRangePicker/index.d.ts +0 -2
  171. package/dist/DateTimeRangePicker/index.js +0 -2
@@ -1,11 +1,14 @@
1
- import { ColumnState } from "./types";
2
- declare const ColumnResizer: ({ onResizeStart, onResize, onResizeEnd, column, currentWidth, showOnHover, }: {
1
+ import { ColumnState, onResizeFinishedProps } from "./types";
2
+ declare const ColumnResizer: ({ onResize, onResizeFinished, column, showOnHover, }: {
3
3
  className?: string;
4
- onResizeStart?: () => void;
5
- onResize?: (width: number) => void;
6
- onResizeEnd?: (width: number) => void;
4
+ onResize?: (e: {
5
+ columns: {
6
+ dataField: string;
7
+ width: number;
8
+ }[];
9
+ }) => void;
10
+ onResizeFinished?: (e: onResizeFinishedProps) => void;
7
11
  column: ColumnState;
8
- currentWidth: number;
9
12
  showOnHover?: boolean;
10
13
  }) => import("react/jsx-runtime").JSX.Element;
11
14
  export default ColumnResizer;
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import styled from "styled-components";
3
+ import { resizeHandler } from "./Utils";
3
4
  const StyledContainer = styled.div `
4
5
  position: absolute;
5
6
  right: 0px;
@@ -23,43 +24,22 @@ const StyledContainer = styled.div `
23
24
  background: ${(props) => props.theme.palette.primary.main};
24
25
  }
25
26
  `;
26
- const ColumnResizer = ({ onResizeStart, onResize, onResizeEnd, column, currentWidth, showOnHover = false, }) => {
27
- const getConstrainedWidth = (width) => {
28
- const minWidth = column.minWidth;
29
- const maxWidth = column.maxWidth;
30
- if (typeof maxWidth === "number") {
31
- return Math.min(Math.max(width, minWidth), maxWidth);
32
- }
33
- return Math.max(width, minWidth);
34
- };
27
+ const ColumnResizer = ({ onResize = () => { }, onResizeFinished, column, showOnHover = false, }) => {
35
28
  return (_jsx(StyledContainer, { className: `resizer col-${column.columnId}`, "data-show-on-hover": showOnHover, onClick: (e) => {
36
29
  e.stopPropagation();
37
30
  e.nativeEvent.stopImmediatePropagation();
38
31
  e.preventDefault();
39
- }, onPointerDown: (e) => {
32
+ }, onMouseDown: (e) => {
40
33
  e.stopPropagation();
41
34
  e.nativeEvent.stopImmediatePropagation();
42
35
  e.preventDefault();
43
- const startX = e.clientX;
44
- const startWidth = currentWidth;
45
- const target = e.currentTarget;
46
- const handlePointerMove = (event) => {
47
- const nextWidth = getConstrainedWidth(startWidth + event.clientX - startX);
48
- onResize === null || onResize === void 0 ? void 0 : onResize(nextWidth);
49
- };
50
- const handlePointerUp = (event) => {
51
- const nextWidth = getConstrainedWidth(startWidth + event.clientX - startX);
52
- target.classList.remove("isResizing");
53
- document.removeEventListener("pointermove", handlePointerMove);
54
- document.removeEventListener("pointerup", handlePointerUp);
55
- document.removeEventListener("pointercancel", handlePointerUp);
56
- onResizeEnd === null || onResizeEnd === void 0 ? void 0 : onResizeEnd(nextWidth);
57
- };
58
- target.classList.add("isResizing");
59
- onResizeStart === null || onResizeStart === void 0 ? void 0 : onResizeStart();
60
- document.addEventListener("pointermove", handlePointerMove);
61
- document.addEventListener("pointerup", handlePointerUp);
62
- document.addEventListener("pointercancel", handlePointerUp);
36
+ resizeHandler({
37
+ event: e,
38
+ columnId: column.columnId,
39
+ columnProps: column,
40
+ onResize: onResize,
41
+ onResizeFinished: onResizeFinished,
42
+ });
63
43
  } }));
64
44
  };
65
45
  export default ColumnResizer;
@@ -11,8 +11,6 @@ type GetSearchStateFn = (key: string) => string;
11
11
  type SetSearchStateFn = (key: string, value: string) => void;
12
12
  type GetFilterStateFn = (key: string) => Query | undefined;
13
13
  type SetFilterStateFn = (key: string, value?: Query | null) => void;
14
- type GetExpandedKeysFn = (key: string) => string[] | undefined;
15
- type SetExpandedKeysFn = (key: string, value: string[]) => void;
16
14
  declare const StateStorage: {
17
15
  getTableState: GetTableStateFn;
18
16
  getColumnState: GetColumnStateFn;
@@ -25,7 +23,5 @@ declare const StateStorage: {
25
23
  setSearchState: SetSearchStateFn;
26
24
  getFilterState: GetFilterStateFn;
27
25
  setFilterState: SetFilterStateFn;
28
- getExpandedKeys: GetExpandedKeysFn;
29
- setExpandedKeys: SetExpandedKeysFn;
30
26
  };
31
27
  export default StateStorage;
@@ -82,17 +82,6 @@ const setFilterState = (key, value) => {
82
82
  const newState = Object.assign(Object.assign({}, previousState), { filterState: value });
83
83
  set(key, newState);
84
84
  };
85
- const getExpandedKeys = (key) => {
86
- const data = getTableState(key);
87
- return data.expandedKeys;
88
- };
89
- const setExpandedKeys = (key, value) => {
90
- // get previous state
91
- const previousState = getTableState(key);
92
- // merge previous state with new state
93
- const newState = Object.assign(Object.assign({}, previousState), { expandedKeys: value });
94
- set(key, newState);
95
- };
96
85
  const StateStorage = {
97
86
  getTableState,
98
87
  getColumnState,
@@ -105,7 +94,5 @@ const StateStorage = {
105
94
  setSearchState,
106
95
  getFilterState,
107
96
  setFilterState,
108
- getExpandedKeys,
109
- setExpandedKeys,
110
97
  };
111
98
  export default StateStorage;
@@ -22,7 +22,6 @@ import TableMenu from "./TableMenu";
22
22
  import useTable from "./useTable";
23
23
  import LoadingIndicator from "./LoadingIndicator";
24
24
  import styled from "styled-components";
25
- import TableDefaults from "./TableDefaults";
26
25
  const StyledTableContainer = styled.div `
27
26
  display: flex;
28
27
  flex-direction: column;
@@ -41,20 +40,8 @@ const TableContent = ({ children, }) => {
41
40
  }, ref: tableElement, "data-compact": compactState, children: [_jsx(LoadingIndicator, { visible: loading }), _jsx(TableHeader, { headerRowElm: headerRowElm }), visibleColumnCount === 0 && _jsx("div", { children: "No columns visible" }), virtualized === true ? (_jsx(VirtualizedRows, { tableDimensions: tableDimensions, targetElm: targetElm, listElm: listElm, rowHeight: rowHeight, headerRowHeight: headerRowHeight })) : (_jsx(StaticRows, { targetElm: targetElm, listElm: listElm }))] })] }));
42
41
  };
43
42
  export const Table = (_a) => {
44
- var { data, columnProps, children, treeOptions } = _a, props = __rest(_a, ["data", "columnProps", "children", "treeOptions"]) // pass through props straight to table context
43
+ var { data, columnProps, children } = _a, props = __rest(_a, ["data", "columnProps", "children"]) // pass through props straight to table context
45
44
  ;
46
- const resolvedTreeOptions = useMemo(() => {
47
- var _a, _b, _c, _d, _e, _f;
48
- return ({
49
- enabled: (_a = treeOptions === null || treeOptions === void 0 ? void 0 : treeOptions.enabled) !== null && _a !== void 0 ? _a : false,
50
- mode: (_b = treeOptions === null || treeOptions === void 0 ? void 0 : treeOptions.mode) !== null && _b !== void 0 ? _b : TableDefaults.tree.defaultMode,
51
- childrenField: (_c = treeOptions === null || treeOptions === void 0 ? void 0 : treeOptions.childrenField) !== null && _c !== void 0 ? _c : TableDefaults.tree.defaultChildrenField,
52
- parentIdField: (_d = treeOptions === null || treeOptions === void 0 ? void 0 : treeOptions.parentIdField) !== null && _d !== void 0 ? _d : TableDefaults.tree.defaultParentIdField,
53
- idField: treeOptions === null || treeOptions === void 0 ? void 0 : treeOptions.idField,
54
- indentPx: (_e = treeOptions === null || treeOptions === void 0 ? void 0 : treeOptions.indentPx) !== null && _e !== void 0 ? _e : TableDefaults.tree.indentPx,
55
- autoExpandOnMatch: (_f = treeOptions === null || treeOptions === void 0 ? void 0 : treeOptions.autoExpandOnMatch) !== null && _f !== void 0 ? _f : true,
56
- });
57
- }, [treeOptions]);
58
45
  const tableElement = useRef(null);
59
46
  const targetElm = useRef(null);
60
47
  const listElm = useRef(null);
@@ -126,153 +113,18 @@ export const Table = (_a) => {
126
113
  // Uses a WeakMap so entries are automatically garbage collected
127
114
  // when their corresponding row objects are no longer referenced.
128
115
  const uuidCache = useRef(new WeakMap());
129
- const getOrAssignKey = (row) => {
130
- let key = uuidCache.current.get(row);
116
+ // Augment each row with a stable __key (UUID) and __index.
117
+ // The WeakMap ensures that the same row object always receives
118
+ // the same UUID across re-renders, preventing unnecessary DOM
119
+ // reconciliation. useMemo preserves referential stability of
120
+ // the output array when the data reference hasn't changed.
121
+ const __data = useMemo(() => data === null || data === void 0 ? void 0 : data.map((d, i) => {
122
+ let key = uuidCache.current.get(d);
131
123
  if (!key) {
132
124
  key = shortUUID.uuid();
133
- uuidCache.current.set(row, key);
134
- }
135
- return key;
136
- };
137
- // Augment each row with stable metadata. When tree mode is disabled,
138
- // produces a flat 1:1 mapping with __key and __index. When enabled,
139
- // walks the input (nested or flat) into a flat depth-first array
140
- // and adds tree metadata (__level, __parentKey, __hasChildren, __childKeys).
141
- const { rows: __data, treeMeta } = useMemo(() => {
142
- const parentKeyMap = new Map();
143
- const childrenKeyMap = new Map();
144
- const expandableKeys = [];
145
- if (!data) {
146
- return {
147
- rows: [],
148
- treeMeta: { parentKeyMap, childrenKeyMap, expandableKeys },
149
- };
150
- }
151
- if (!resolvedTreeOptions.enabled) {
152
- const rows = data.map((d, i) => (Object.assign(Object.assign({}, d), { __key: getOrAssignKey(d), __index: i })));
153
- return {
154
- rows,
155
- treeMeta: { parentKeyMap, childrenKeyMap, expandableKeys },
156
- };
125
+ uuidCache.current.set(d, key);
157
126
  }
158
- const rows = [];
159
- let counter = 0;
160
- if (resolvedTreeOptions.mode === "nested") {
161
- const childrenField = resolvedTreeOptions.childrenField;
162
- const walk = (node, level, parentKey) => {
163
- const key = getOrAssignKey(node);
164
- const rawChildren = node === null || node === void 0 ? void 0 : node[childrenField];
165
- const children = Array.isArray(rawChildren) ? rawChildren : [];
166
- const childKeys = children.map((c) => getOrAssignKey(c));
167
- // Strip the nested children field from the augmented copy to avoid
168
- // memory bloat and prevent accidental iteration of the raw tree.
169
- const _a = node, _b = childrenField, _stripped = _a[_b], rest = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
170
- const augmented = Object.assign(Object.assign({}, rest), { __key: key, __index: counter++, __level: level, __parentKey: parentKey, __hasChildren: children.length > 0, __childKeys: childKeys });
171
- rows.push(augmented);
172
- parentKeyMap.set(key, parentKey);
173
- if (children.length > 0) {
174
- childrenKeyMap.set(key, childKeys);
175
- expandableKeys.push(key);
176
- }
177
- for (const child of children) {
178
- walk(child, level + 1, key);
179
- }
180
- };
181
- const rootKeys = [];
182
- for (const root of data) {
183
- rootKeys.push(getOrAssignKey(root));
184
- walk(root, 0, undefined);
185
- }
186
- childrenKeyMap.set(undefined, rootKeys);
187
- }
188
- else {
189
- // flat mode
190
- const idField = resolvedTreeOptions.idField || props.keyField;
191
- if (!idField) {
192
- throw new Error('Table treeOptions.mode="flat" requires either treeOptions.idField or keyField to be set so the table can resolve parent-child relationships against a stable id.');
193
- }
194
- const parentIdField = resolvedTreeOptions.parentIdField;
195
- // Pass 1: assign __key, build idToKey
196
- const idToKey = new Map();
197
- const idToRow = new Map();
198
- for (const d of data) {
199
- const id = d === null || d === void 0 ? void 0 : d[idField];
200
- if (id === undefined || id === null)
201
- continue;
202
- idToKey.set(id, getOrAssignKey(d));
203
- idToRow.set(id, d);
204
- }
205
- // Pass 2: build parent->children id map. Roots = parentId null/undefined
206
- // OR parentId points at a non-existent row.
207
- const parentToChildIds = new Map();
208
- const rootIds = [];
209
- let warnedOrphan = false;
210
- for (const d of data) {
211
- const id = d === null || d === void 0 ? void 0 : d[idField];
212
- if (id === undefined || id === null)
213
- continue;
214
- const parentId = d === null || d === void 0 ? void 0 : d[parentIdField];
215
- if (parentId === undefined || parentId === null) {
216
- rootIds.push(id);
217
- continue;
218
- }
219
- if (!idToRow.has(parentId)) {
220
- if (!warnedOrphan) {
221
- // eslint-disable-next-line no-console
222
- console.warn(`Table tree (flat mode): row id "${id}" references missing parentId "${parentId}"; treating as root.`);
223
- warnedOrphan = true;
224
- }
225
- rootIds.push(id);
226
- continue;
227
- }
228
- if (!parentToChildIds.has(parentId))
229
- parentToChildIds.set(parentId, []);
230
- parentToChildIds.get(parentId).push(id);
231
- }
232
- // Pass 3: DFS from roots with cycle detection
233
- const visiting = new Set();
234
- let warnedCycle = false;
235
- const walkFlat = (id, level, parentKey) => {
236
- if (visiting.has(id)) {
237
- if (!warnedCycle) {
238
- // eslint-disable-next-line no-console
239
- console.warn(`Table tree (flat mode): cycle detected at row id "${id}"; truncating subtree.`);
240
- warnedCycle = true;
241
- }
242
- return;
243
- }
244
- visiting.add(id);
245
- const node = idToRow.get(id);
246
- const key = idToKey.get(id);
247
- const childIds = parentToChildIds.get(id) || [];
248
- const childKeys = childIds
249
- .map((cid) => idToKey.get(cid))
250
- .filter((k) => !!k);
251
- const augmented = Object.assign(Object.assign({}, node), { __key: key, __index: counter++, __level: level, __parentKey: parentKey, __hasChildren: childIds.length > 0, __childKeys: childKeys });
252
- rows.push(augmented);
253
- parentKeyMap.set(key, parentKey);
254
- if (childIds.length > 0) {
255
- childrenKeyMap.set(key, childKeys);
256
- expandableKeys.push(key);
257
- }
258
- for (const cid of childIds) {
259
- walkFlat(cid, level + 1, key);
260
- }
261
- visiting.delete(id);
262
- };
263
- const rootKeys = [];
264
- for (const id of rootIds) {
265
- const k = idToKey.get(id);
266
- if (k)
267
- rootKeys.push(k);
268
- walkFlat(id, 0, undefined);
269
- }
270
- childrenKeyMap.set(undefined, rootKeys);
271
- }
272
- return {
273
- rows,
274
- treeMeta: { parentKeyMap, childrenKeyMap, expandableKeys },
275
- };
276
- }, [data, resolvedTreeOptions, props.keyField]);
277
- return (_jsx(TableProvider, Object.assign({ columns: columnProps, data: __data, tableElement: tableElement, headerRowElm: headerRowElm, tableDimensions: tableDimensions, targetElm: targetElm, listElm: listElm, treeOptions: resolvedTreeOptions, treeMeta: treeMeta }, props, { children: _jsx(TableContent, { children: children }) })));
127
+ return Object.assign(Object.assign({}, d), { __key: key, __index: i });
128
+ }), [data]);
129
+ return (_jsx(TableProvider, Object.assign({ columns: columnProps, data: __data, tableElement: tableElement, headerRowElm: headerRowElm, tableDimensions: tableDimensions, targetElm: targetElm, listElm: listElm }, props, { children: _jsx(TableContent, { children: children }) })));
278
130
  };
@@ -6,16 +6,6 @@ export declare const THR: import("styled-components/dist/types").IStyledComponen
6
6
  export declare const TD: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, TDProps>> & string;
7
7
  export declare const TH: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof TDProps> & TDProps, never>> & string;
8
8
  export declare const InnerCellContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
9
- export declare const TreeCellWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
10
- export declare const TreeIndentSpacer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
11
- $level: number;
12
- $indentPx: number;
13
- }>> & string;
14
- export declare const TreeChevronButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
15
- $expanded: boolean;
16
- }>> & string;
17
- export declare const TreeChevronPlaceholder: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
18
- export declare const TreeCellContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
19
9
  export declare const TableViewPort: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
20
10
  export declare const TableListElement: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
21
11
  export declare const TableWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
@@ -8,20 +8,18 @@ export const TBody = styled.div `
8
8
  overflow: hidden;
9
9
  `;
10
10
  export const TR = styled.div `
11
- box-sizing: border-box;
12
11
  display: flex;
13
12
  flex-direction: row;
14
- flex: 0 0 auto;
15
- min-width: 100%;
13
+
14
+ flex: 1;
16
15
 
17
16
  height: ${({ height }) => {
18
17
  const customHeight = height ? height + "px" : undefined;
19
18
  return customHeight || `${TableDefaults.row.height.normal}px`;
20
19
  }};
21
20
 
22
- box-shadow:
23
- inset 1px 0 ${({ theme }) => theme.palette.divider},
24
- inset -1px 0 ${({ theme }) => theme.palette.divider};
21
+ border-left: 1px solid ${({ theme }) => theme.palette.divider};
22
+ border-right: 1px solid ${({ theme }) => theme.palette.divider};
25
23
 
26
24
  .row-action {
27
25
  visibility: hidden;
@@ -32,6 +30,7 @@ export const TR = styled.div `
32
30
  }
33
31
 
34
32
  &[data-focused="true"] {
33
+ border: 1px solid transparent;
35
34
  outline: 1px solid ${({ theme }) => theme.palette.primary.main};
36
35
  outline-offset: -1px;
37
36
 
@@ -60,18 +59,21 @@ export const THR = styled(TR) `
60
59
  }
61
60
  `;
62
61
  export const TD = styled.div `
63
- box-sizing: border-box;
64
62
  position: relative;
65
63
  display: flex;
66
64
  flex-direction: row;
67
65
  align-items: center;
68
- flex: 0 0 auto;
66
+ flex: 1;
69
67
 
70
68
  padding: ${TableDefaults.td.padding.normal}px;
71
69
  font-size: ${`${TableDefaults.td.fontSize.normal}px`};
72
70
 
73
71
  min-width: ${TableDefaults.td.minWidth}px;
74
72
 
73
+ &:last-child {
74
+ flex: 1 !important; // ensure last column takes up remaining space
75
+ }
76
+
75
77
  background-color: ${({ theme }) => theme.palette.background.default};
76
78
 
77
79
  border-bottom: 1px solid ${({ theme }) => theme.palette.divider};
@@ -108,72 +110,18 @@ export const TH = styled(TD) `
108
110
  `;
109
111
  export const InnerCellContent = styled.div `
110
112
  max-width: 100%;
111
- min-width: 0;
112
113
 
113
114
  white-space: nowrap;
114
115
  overflow: hidden;
115
116
  text-overflow: ellipsis;
116
117
  `;
117
- export const TreeCellWrapper = styled.div `
118
- display: flex;
119
- flex-direction: row;
120
- align-items: center;
121
- flex: 1 1 auto;
122
- min-width: 0;
123
- `;
124
- export const TreeIndentSpacer = styled.div `
125
- flex: 0 0 auto;
126
- width: ${({ $level, $indentPx }) => $level * $indentPx}px;
127
- `;
128
- export const TreeChevronButton = styled.button `
129
- flex: 0 0 auto;
130
- width: 14px;
131
- height: 16px;
132
- padding: 0;
133
- margin: 0 8px 0 0;
134
- display: inline-flex;
135
- align-items: center;
136
- justify-content: flex-start;
137
- background: transparent;
138
- border: none;
139
- cursor: pointer;
140
- color: ${({ theme }) => theme.palette.text.secondary};
141
- transition: transform 120ms ease;
142
- transform: rotate(${({ $expanded }) => ($expanded ? "90deg" : "0deg")});
143
-
144
- &:hover {
145
- color: ${({ theme }) => theme.palette.text.primary};
146
- }
147
-
148
- &:focus-visible {
149
- outline: 1px solid ${({ theme }) => theme.palette.primary.main};
150
- outline-offset: 1px;
151
- }
152
- `;
153
- export const TreeChevronPlaceholder = styled.div `
154
- flex: 0 0 auto;
155
- width: 12px;
156
- height: 16px;
157
- margin: 0 10px 0 0;
158
- `;
159
- export const TreeCellContent = styled.div `
160
- flex: 1 1 auto;
161
- min-width: 0;
162
- overflow: hidden;
163
- text-overflow: ellipsis;
164
- white-space: nowrap;
165
- `;
166
118
  export const TableViewPort = styled.div `
167
- box-sizing: border-box;
168
119
  display: flex;
169
120
  flex-direction: column;
170
- min-width: 0;
171
121
  `;
172
122
  export const TableListElement = styled.div `
173
- box-sizing: border-box;
174
123
  display: flex;
175
124
  flex-direction: column;
176
- min-width: 100%;
177
125
  `;
178
126
  export const TableWrapper = styled.div `
179
127
  position: relative;
@@ -183,7 +131,6 @@ export const TableWrapper = styled.div `
183
131
  flex-direction: column;
184
132
  `;
185
133
  export const StyledTable = styled.div `
186
- box-sizing: border-box;
187
134
  position: relative;
188
135
  overflow: hidden;
189
136
  display: flex;
@@ -201,14 +148,6 @@ export const StyledTable = styled.div `
201
148
  font-size: ${TableDefaults.td.fontSize.compact}px !important;
202
149
  }
203
150
 
204
- .mfui-td[data-tree-cell="true"] {
205
- padding-left: ${TableDefaults.td.padding.normal - 3}px;
206
- }
207
-
208
- &[data-compact="true"] .mfui-td[data-tree-cell="true"] {
209
- padding-left: ${TableDefaults.td.padding.compact - 3}px !important;
210
- }
211
-
212
151
  .os-scrollbar {
213
152
  pointer-events: auto;
214
153
  visibility: visible;
@@ -21,12 +21,5 @@ declare const TableDefaults: {
21
21
  minWidth: number;
22
22
  maxWidth: number;
23
23
  };
24
- tree: {
25
- indentPx: number;
26
- chevronWidth: number;
27
- defaultMode: "nested";
28
- defaultChildrenField: string;
29
- defaultParentIdField: string;
30
- };
31
24
  };
32
25
  export default TableDefaults;
@@ -21,12 +21,5 @@ const TableDefaults = {
21
21
  minWidth: 35,
22
22
  maxWidth: 35,
23
23
  },
24
- tree: {
25
- indentPx: 16,
26
- chevronWidth: 16,
27
- defaultMode: "nested",
28
- defaultChildrenField: "children",
29
- defaultParentIdField: "parentId",
30
- },
31
24
  };
32
25
  export default TableDefaults;
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useRef, useState } from "react";
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, tableLayout, setResizeColumnWidths, } = useTable();
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 resizeStartWidths = useRef(null);
23
- const getResizeWidths = (column, newWidth) => (Object.assign(Object.assign({}, (resizeStartWidths.current || tableLayout.columnWidths)), { [column.columnId]: newWidth }));
24
- const handleResizeStart = () => {
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 === column.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, style: { width: tableLayout.contentWidth }, children: [enableSelection && (_jsx(TH, { className: `mfui-th column-action`, style: {
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
- flexBasis: TableDefaults.actionCell.width,
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: columnWidth,
89
+ width: column.width,
106
90
  minWidth: column.minWidth,
107
- maxWidth: column.maxWidth,
108
- flexBasis: columnWidth,
109
- flexGrow: 0,
110
- flexShrink: 0,
111
- }, children: [canResize && (_jsx(ColumnResizer, { column: column, currentWidth: columnWidth, showOnHover: true, onResizeStart: handleResizeStart, onResize: (width) => handleResize(column, width), onResizeEnd: (width) => handleResizeEnd(column, width) })), _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 &&
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
- value: filterState,
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) => {