@monolith-forensics/monolith-ui 1.2.91 → 1.2.93

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 (122) hide show
  1. package/dist/Button/Button.d.ts +1 -0
  2. package/dist/Button/Button.js +3 -2
  3. package/dist/Calendar/CalendarStyles.d.ts +5 -15
  4. package/dist/Calendar/calendarHelpers.d.ts +1 -1
  5. package/dist/CheckBox/CheckBox.js +6 -4
  6. package/dist/DateInput/DateInput.d.ts +5 -3
  7. package/dist/DateInput/DateInput.js +41 -25
  8. package/dist/DropDownMenu/DropDownMenu.d.ts +2 -45
  9. package/dist/DropDownMenu/DropDownMenu.js +9 -315
  10. package/dist/DropDownMenu/components/Menu.d.ts +2 -0
  11. package/dist/DropDownMenu/components/Menu.js +11 -0
  12. package/dist/DropDownMenu/components/MenuComponent.d.ts +2 -0
  13. package/dist/DropDownMenu/components/MenuComponent.js +117 -0
  14. package/dist/DropDownMenu/components/MenuContext.d.ts +7 -0
  15. package/dist/DropDownMenu/components/MenuContext.js +8 -0
  16. package/dist/DropDownMenu/components/MenuItem.d.ts +7 -0
  17. package/dist/DropDownMenu/components/MenuItem.js +99 -0
  18. package/dist/DropDownMenu/components/MenuItemList.d.ts +18 -0
  19. package/dist/DropDownMenu/components/MenuItemList.js +92 -0
  20. package/dist/DropDownMenu/components/SearchInput.d.ts +1 -0
  21. package/dist/DropDownMenu/components/SearchInput.js +4 -0
  22. package/dist/DropDownMenu/components/StyledContent.d.ts +2 -0
  23. package/dist/DropDownMenu/components/StyledContent.js +42 -0
  24. package/dist/DropDownMenu/components/StyledFloatContainer.d.ts +1 -0
  25. package/dist/DropDownMenu/components/StyledFloatContainer.js +5 -0
  26. package/dist/DropDownMenu/components/StyledInnerItemContainer.d.ts +1 -0
  27. package/dist/DropDownMenu/components/StyledInnerItemContainer.js +9 -0
  28. package/dist/DropDownMenu/components/index.d.ts +9 -0
  29. package/dist/DropDownMenu/components/index.js +9 -0
  30. package/dist/DropDownMenu/index.d.ts +1 -1
  31. package/dist/DropDownMenu/index.js +1 -0
  32. package/dist/DropDownMenu/types.d.ts +52 -0
  33. package/dist/FieldLabel/FieldLabel.d.ts +1 -1
  34. package/dist/FileViewer/FileViewer.d.ts +13 -0
  35. package/dist/FileViewer/FileViewer.js +180 -0
  36. package/dist/FileViewer/index.d.ts +1 -0
  37. package/dist/FileViewer/index.js +1 -0
  38. package/dist/FileViewer/viewers/CodeViewer.d.ts +6 -0
  39. package/dist/FileViewer/viewers/CodeViewer.js +106 -0
  40. package/dist/FileViewer/viewers/ImageViewer.d.ts +6 -0
  41. package/dist/FileViewer/viewers/ImageViewer.js +58 -0
  42. package/dist/FileViewer/viewers/OfficeViewer.d.ts +5 -0
  43. package/dist/FileViewer/viewers/OfficeViewer.js +70 -0
  44. package/dist/FileViewer/viewers/PdfViewer.d.ts +8 -0
  45. package/dist/FileViewer/viewers/PdfViewer.js +63 -0
  46. package/dist/FileViewer/viewers/PlainTextViewer.d.ts +4 -0
  47. package/dist/FileViewer/viewers/PlainTextViewer.js +62 -0
  48. package/dist/FileViewer/viewers/VideoViewer.d.ts +6 -0
  49. package/dist/FileViewer/viewers/VideoViewer.js +30 -0
  50. package/dist/FileViewer/viewers/index.d.ts +6 -0
  51. package/dist/FileViewer/viewers/index.js +6 -0
  52. package/dist/FormSection/FormSection.d.ts +10 -2
  53. package/dist/FormSection/FormSection.js +43 -8
  54. package/dist/IconButton/IconButton.d.ts +1 -3
  55. package/dist/Input/Input.js +5 -0
  56. package/dist/MonolithUIProvider/GlobalStyle.d.ts +1 -1
  57. package/dist/MonolithUIProvider/GlobalStyle.js +1 -1
  58. package/dist/MonolithUIProvider/MonolithUIProvider.d.ts +2 -2
  59. package/dist/MonolithUIProvider/MonolithUIProvider.js +8 -3
  60. package/dist/MonolithUIProvider/index.d.ts +2 -2
  61. package/dist/MonolithUIProvider/index.js +2 -2
  62. package/dist/MonolithUIProvider/useMonolithUITheme.d.ts +1 -2
  63. package/dist/MonolithUIProvider/useMonolithUITheme.js +1 -2
  64. package/dist/Pill/Pill.d.ts +2 -1
  65. package/dist/Pill/Pill.js +2 -2
  66. package/dist/QueryFilter/DefaultOperators.d.ts +2 -3
  67. package/dist/QueryFilter/DefaultOperators.js +2 -3
  68. package/dist/QueryFilter/QueryFilter.d.ts +2 -3
  69. package/dist/QueryFilter/QueryFilter.js +126 -49
  70. package/dist/QueryFilter/index.d.ts +4 -2
  71. package/dist/QueryFilter/index.js +4 -2
  72. package/dist/QueryFilter/types.d.ts +12 -8
  73. package/dist/QueryFilter/useFilterHelper.d.ts +20 -0
  74. package/dist/QueryFilter/useFilterHelper.js +61 -0
  75. package/dist/QueryFilter/useQueryFilter.d.ts +1 -2
  76. package/dist/QueryFilter/useQueryFilter.js +5 -2
  77. package/dist/RichTextEditor/Components/BubbleMenu.d.ts +3 -4
  78. package/dist/RichTextEditor/Components/BubbleMenu.js +29 -26
  79. package/dist/RichTextEditor/Components/ColorPicker.d.ts +4 -0
  80. package/dist/RichTextEditor/Components/ColorPicker.js +37 -0
  81. package/dist/RichTextEditor/Components/index.d.ts +1 -0
  82. package/dist/RichTextEditor/Components/index.js +1 -0
  83. package/dist/RichTextEditor/RichTextEditor.d.ts +2 -3
  84. package/dist/RichTextEditor/RichTextEditor.js +83 -86
  85. package/dist/RichTextEditor/Toolbar/ControlsGroup.d.ts +1 -3
  86. package/dist/RichTextEditor/Toolbar/Toolbar.d.ts +1 -1
  87. package/dist/RichTextEditor/Toolbar/Toolbar.js +10 -14
  88. package/dist/SelectBox/SelectBox.d.ts +1 -1
  89. package/dist/SelectBox/SelectBox.js +133 -92
  90. package/dist/SelectBox/types.d.ts +8 -5
  91. package/dist/Switch/Switch.js +4 -4
  92. package/dist/Table/ActionButton.d.ts +1 -3
  93. package/dist/Table/ActionCell.d.ts +1 -3
  94. package/dist/Table/SelectionCell.d.ts +1 -3
  95. package/dist/Table/StaticRows.d.ts +2 -2
  96. package/dist/Table/Table.d.ts +1 -2
  97. package/dist/Table/Table.js +9 -13
  98. package/dist/Table/TableComponents.d.ts +2 -6
  99. package/dist/Table/TableComponents.js +0 -5
  100. package/dist/Table/TableHeader.js +8 -2
  101. package/dist/Table/TableMenu/TableMenu.js +12 -10
  102. package/dist/Table/TableProvider.js +36 -30
  103. package/dist/Table/TableRow.js +5 -2
  104. package/dist/Table/VirtualIzedRows.d.ts +2 -2
  105. package/dist/Table/VirtualIzedRows.js +12 -10
  106. package/dist/Table/index.d.ts +1 -2
  107. package/dist/Table/index.js +1 -2
  108. package/dist/Table/types.d.ts +23 -3
  109. package/dist/TagBox/TagBox.d.ts +1 -1
  110. package/dist/TagBox/TagBox.js +180 -92
  111. package/dist/TagBox/TagBoxStyles.d.ts +1 -3
  112. package/dist/TagBox/types.d.ts +4 -2
  113. package/dist/TextArea/TextArea.d.ts +1 -3
  114. package/dist/Tooltip/Tooltip.d.ts +1 -1
  115. package/dist/index.d.ts +4 -4
  116. package/dist/index.js +4 -4
  117. package/dist/theme/getTheme.d.ts +1 -1
  118. package/package.json +11 -5
  119. package/dist/RichTextEditor/Components/DefaultColorIcon.d.ts +0 -4
  120. package/dist/RichTextEditor/Components/DefaultColorIcon.js +0 -7
  121. package/dist/Table/Column.d.ts +0 -3
  122. package/dist/Table/Column.js +0 -5
@@ -10,7 +10,7 @@ import { useDebouncedCallback } from "use-debounce";
10
10
  import InfoBadge from "./InfoBadge";
11
11
  import { QueryFilter, useQueryFilter, } from "../../QueryFilter";
12
12
  import shortUUID from "short-uuid";
13
- import DefaultOperators from "../../QueryFilter/DefaultOperators";
13
+ import { DefaultOperators } from "../../QueryFilter";
14
14
  const StyledContainer = styled.div `
15
15
  display: flex;
16
16
  flex-direction: column;
@@ -27,14 +27,15 @@ const FlexedRow = styled.div `
27
27
  }
28
28
  `;
29
29
  const TableMenu = () => {
30
- var _a, _b, _c, _d, _e, _f, _g, _h;
30
+ var _a, _b, _c;
31
31
  const { data, columnState, searchState, toggleColumnVisibility, tableMenuOptions, runSearch, enableSelection, compactState, toggleCompact, totalRecords, getCalculatedSelectionTotal, filterState, handleFilterChange, } = useTable();
32
32
  if ((tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.enabled) !== true)
33
33
  return null;
34
- const { filterOptions } = tableMenuOptions;
34
+ const { addButtonOptions, filterOptions, tableCountOptions, exportOptions, compactOptions, columnSelectorOptions, searchOptions, } = tableMenuOptions;
35
35
  const queryFilter = useQueryFilter({
36
36
  defaultFilter: filterState,
37
37
  filterDefinitions: (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filterDefinitions) || [],
38
+ showCombinator: true,
38
39
  onFilterChange: (q) => {
39
40
  var _a;
40
41
  handleFilterChange(q);
@@ -54,11 +55,11 @@ const TableMenu = () => {
54
55
  id: shortUUID.generate(),
55
56
  dataField: item.value,
56
57
  operator: ((_a = data === null || data === void 0 ? void 0 : data.operators) === null || _a === void 0 ? void 0 : _a[0]) || DefaultOperators[0],
57
- value: "",
58
+ value: undefined,
58
59
  label: item.label,
59
60
  });
60
61
  };
61
- return (_jsxs(StyledContainer, { children: [_jsxs(FlexedRow, { className: "justify-sb", children: [_jsxs(FlexedRow, { children: [((_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _a === void 0 ? void 0 : _a.enabled) !== false && (_jsx(Button, { color: "primary", variant: "contained", size: "xxs", onClick: () => { var _a, _b; return (_b = (_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a); }, children: ((_b = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _b === void 0 ? void 0 : _b.label) || "+ Add Record" })), (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.enabled) !== false && (_jsx(DropDownMenu, { variant: "outlined", size: "xs", data: ((_c = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filterDefinitions) === null || _c === void 0 ? void 0 : _c.map((filter) => ({
62
+ return (_jsxs(StyledContainer, { children: [_jsxs(FlexedRow, { className: "justify-sb", children: [_jsxs(FlexedRow, { children: [(addButtonOptions === null || addButtonOptions === void 0 ? void 0 : addButtonOptions.enabled) === true && (_jsx(Button, { color: "primary", variant: "contained", size: "xxs", onClick: () => { var _a, _b; return (_b = (_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a); }, children: ((_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _a === void 0 ? void 0 : _a.label) || "+ Add Record" })), (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.enabled) === true && (_jsx(DropDownMenu, { variant: "outlined", size: "xs", data: ((_b = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filterDefinitions) === null || _b === void 0 ? void 0 : _b.map((filter) => ({
62
63
  label: filter.label,
63
64
  value: filter.dataField,
64
65
  data: filter,
@@ -68,7 +69,8 @@ const TableMenu = () => {
68
69
  leftSection: _jsx(FilterIcon, { size: 12 }),
69
70
  }, onItemSelect: handleSelectFilter, dropDownProps: {
70
71
  style: { width: 175, maxWidth: 400 },
71
- }, searchable: true, children: "Filter" })), _jsx(InfoBadge, { total: totalRecords || data.length }), enableSelection === true && (_jsx(InfoBadge, { total: getCalculatedSelectionTotal(), hint: "Selected Items", icon: CheckSquareIcon }))] }), _jsxs(FlexedRow, { children: [((_d = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.exportOptions) === null || _d === void 0 ? void 0 : _d.enabled) !== false && (_jsx(DropDownMenu, { variant: "outlined", size: "xs", data: [
72
+ }, searchable: true, children: "Filter" })), (tableCountOptions === null || tableCountOptions === void 0 ? void 0 : tableCountOptions.recordsTotalEnabled) === true && (_jsx(InfoBadge, { total: totalRecords || data.length })), enableSelection === true &&
73
+ (tableCountOptions === null || tableCountOptions === void 0 ? void 0 : tableCountOptions.selectionTotalEnabled) === true && (_jsx(InfoBadge, { total: getCalculatedSelectionTotal(), hint: "Selected Items", icon: CheckSquareIcon }))] }), _jsxs(FlexedRow, { children: [(exportOptions === null || exportOptions === void 0 ? void 0 : exportOptions.enabled) === true && (_jsx(DropDownMenu, { variant: "outlined", size: "xs", data: [
72
74
  {
73
75
  label: "Export Visible Columns",
74
76
  value: TableExportOptions.ExportVisible,
@@ -86,7 +88,7 @@ const TableMenu = () => {
86
88
  return (_b = (_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.exportOptions) === null || _a === void 0 ? void 0 : _a.onExport) === null || _b === void 0 ? void 0 : _b.call(_a, item.value);
87
89
  }, dropDownProps: {
88
90
  style: { width: 175, maxWidth: 400 },
89
- }, children: _jsx(DownloadIcon, { size: 14 }) })), ((_e = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.compactOptions) === null || _e === void 0 ? void 0 : _e.enabled) !== false && (_jsx(Button, { variant: "outlined", title: "Toggle Compact", size: "xxs", style: { padding: "0px 4px" }, onClick: () => toggleCompact(), children: compactState ? _jsx(Rows4Icon, { size: 14 }) : _jsx(Rows3Icon, { size: 14 }) })), ((_f = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.columnSelectorOptions) === null || _f === void 0 ? void 0 : _f.enabled) !== false && (_jsx(DropDownMenu, { variant: "outlined", size: "xs", data: columnState.map((col) => ({
91
+ }, children: _jsx(DownloadIcon, { size: 14 }) })), (compactOptions === null || compactOptions === void 0 ? void 0 : compactOptions.enabled) === true && (_jsx(Button, { variant: "outlined", title: "Toggle Compact", size: "xxs", style: { padding: "0px 4px" }, onClick: () => toggleCompact(), children: compactState ? _jsx(Rows4Icon, { size: 14 }) : _jsx(Rows3Icon, { size: 14 }) })), (columnSelectorOptions === null || columnSelectorOptions === void 0 ? void 0 : columnSelectorOptions.enabled) === true && (_jsx(DropDownMenu, { variant: "outlined", size: "xs", data: columnState.map((col) => ({
90
92
  label: (col === null || col === void 0 ? void 0 : col.caption) || col.dataField,
91
93
  value: col.dataField,
92
94
  onClick: () => toggleColumnVisibility(col.dataField),
@@ -97,10 +99,10 @@ const TableMenu = () => {
97
99
  value: col.dataField,
98
100
  })), multiselect: true, searchable: true, buttonProps: {
99
101
  title: "Show/Hide Columns",
100
- size: "xxs",
101
- style: { padding: "0px 4px" },
102
+ size: "xs",
103
+ style: { padding: "0px 4px", height: 24 },
102
104
  }, dropDownProps: {
103
105
  style: { width: 175, maxWidth: 400 },
104
- }, children: _jsx(Columns3Icon, { size: 14 }) })), ((_g = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.searchOptions) === null || _g === void 0 ? void 0 : _g.enabled) !== false && (_jsx(TextInput, { size: "xs", placeholder: ((_h = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.searchOptions) === null || _h === void 0 ? void 0 : _h.placeholder) || "Search", defaultValue: searchState, onChange: handleSearch }))] })] }), _jsx(QueryFilter, { queryFilter: queryFilter })] }));
106
+ }, children: _jsx(Columns3Icon, { size: 14 }) })), (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.enabled) === true && (_jsx(TextInput, { size: "xs", placeholder: ((_c = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.searchOptions) === null || _c === void 0 ? void 0 : _c.placeholder) || "Search", defaultValue: searchState, onChange: handleSearch }))] })] }), _jsx(QueryFilter, { queryFilter: queryFilter })] }));
105
107
  };
106
108
  export default TableMenu;
@@ -19,7 +19,7 @@ import { SelectionStatus } from "./enums";
19
19
  import moment from "moment";
20
20
  export const TableContext = createContext(null);
21
21
  const TableProvider = (_a) => {
22
- var { children, columns, tableInstanceRef, stateStorage } = _a, props = __rest(_a, ["children", "columns", "tableInstanceRef", "stateStorage"]);
22
+ var { children, columns, tableInstanceRef, stateStorage, height, maxHeight, minHeight } = _a, props = __rest(_a, ["children", "columns", "tableInstanceRef", "stateStorage", "height", "maxHeight", "minHeight"]);
23
23
  const _columns = columns
24
24
  .map((child, index) => {
25
25
  if (child.dataField === "__key") {
@@ -150,10 +150,9 @@ const TableProvider = (_a) => {
150
150
  });
151
151
  };
152
152
  const searchData = (searchText) => {
153
+ const columnKeys = columnState.map((col) => col.dataField);
153
154
  return props.data.filter((row) => {
154
- return Object.keys(row)
155
- .filter((key) => key !== "__key" && key !== "__index")
156
- .some((key) => {
155
+ return columnKeys.some((key) => {
157
156
  if (typeof row[key] === "string") {
158
157
  return row[key].toLowerCase().includes(searchText.toLowerCase());
159
158
  }
@@ -162,6 +161,8 @@ const TableProvider = (_a) => {
162
161
  });
163
162
  };
164
163
  const filterData = (filter) => {
164
+ if (!props.data)
165
+ return [];
165
166
  // create copy of data
166
167
  let processedData = props.data.map((row) => row);
167
168
  const { combinator, rules } = filter;
@@ -170,74 +171,81 @@ const TableProvider = (_a) => {
170
171
  for (const rule of rules) {
171
172
  const column = columnState.find((col) => col.dataField === rule.dataField);
172
173
  const { value, operator, dataField } = rule;
173
- if (!value) {
174
+ if (operator.value === "isEmpty" || operator.value === "isNotEmpty") {
175
+ processedData = processedData.filter((row) => {
176
+ return operator.value === "isEmpty"
177
+ ? !row[dataField]
178
+ : row[dataField];
179
+ });
180
+ }
181
+ if (!value || value.length === 0) {
174
182
  continue;
175
183
  }
176
184
  switch (operator.value) {
177
185
  case "=":
178
186
  processedData = processedData.filter((row) => {
179
187
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
180
- return moment(row[dataField]).isSame(moment(value), "day");
188
+ return moment(row[dataField]).isSame(moment(value[0]), "day");
181
189
  }
182
190
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
183
- return moment(row[dataField]).isSame(moment(value));
191
+ return moment(row[dataField]).isSame(moment(value[0]));
184
192
  }
185
- return row[dataField] == value;
193
+ return row[dataField] == value[0];
186
194
  });
187
195
  break;
188
196
  case "!=":
189
197
  processedData = processedData.filter((row) => {
190
198
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
191
- return !moment(row[dataField]).isSame(moment(value), "day");
199
+ return !moment(row[dataField]).isSame(moment(value[0]), "day");
192
200
  }
193
201
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
194
- return !moment(row[dataField]).isSame(moment(value));
202
+ return !moment(row[dataField]).isSame(moment(value[0]));
195
203
  }
196
- return row[dataField] != value;
204
+ return row[dataField] != value[0];
197
205
  });
198
206
  break;
199
207
  case ">":
200
208
  processedData = processedData.filter((row) => {
201
209
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
202
- return moment(row[dataField]).isAfter(moment(value), "day");
210
+ return moment(row[dataField]).isAfter(moment(value[0]), "day");
203
211
  }
204
212
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
205
- return moment(row[dataField]).isAfter(moment(value));
213
+ return moment(row[dataField]).isAfter(moment(value[0]));
206
214
  }
207
- return row[dataField] > value;
215
+ return row[dataField] > value[0];
208
216
  });
209
217
  break;
210
218
  case "<":
211
219
  processedData = processedData.filter((row) => {
212
220
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
213
- return moment(row[dataField]).isBefore(moment(value), "day");
221
+ return moment(row[dataField]).isBefore(moment(value[0]), "day");
214
222
  }
215
223
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
216
- return moment(row[dataField]).isBefore(moment(value));
224
+ return moment(row[dataField]).isBefore(moment(value[0]));
217
225
  }
218
- return row[dataField] < value;
226
+ return row[dataField] < value[0];
219
227
  });
220
228
  break;
221
229
  case ">=":
222
230
  processedData = processedData.filter((row) => {
223
231
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
224
- return moment(row[dataField]).isSameOrAfter(moment(value), "day");
232
+ return moment(row[dataField]).isSameOrAfter(moment(value[0]), "day");
225
233
  }
226
234
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
227
- return moment(row[dataField]).isSameOrAfter(moment(value));
235
+ return moment(row[dataField]).isSameOrAfter(moment(value[0]));
228
236
  }
229
- return row[dataField] >= value;
237
+ return row[dataField] >= value[0];
230
238
  });
231
239
  break;
232
240
  case "<=":
233
241
  processedData = processedData.filter((row) => {
234
242
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
235
- return moment(row[dataField]).isSameOrBefore(moment(value), "day");
243
+ return moment(row[dataField]).isSameOrBefore(moment(value[0]), "day");
236
244
  }
237
245
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
238
- return moment(row[dataField]).isSameOrBefore(moment(value));
246
+ return moment(row[dataField]).isSameOrBefore(moment(value[0]));
239
247
  }
240
- return row[dataField] <= value;
248
+ return row[dataField] <= value[0];
241
249
  });
242
250
  break;
243
251
  case "between":
@@ -266,16 +274,14 @@ const TableProvider = (_a) => {
266
274
  break;
267
275
  case "contains":
268
276
  processedData = processedData.filter((row) => {
269
- return row[dataField]
270
- .toLowerCase()
271
- .includes(value.toLowerCase());
277
+ var _a, _b;
278
+ 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());
272
279
  });
273
280
  break;
274
281
  case "doesNotContain":
275
282
  processedData = processedData.filter((row) => {
276
- return !row[dataField]
277
- .toLowerCase()
278
- .includes(value.toLowerCase());
283
+ var _a, _b;
284
+ 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()));
279
285
  });
280
286
  break;
281
287
  case "in":
@@ -501,6 +507,6 @@ const TableProvider = (_a) => {
501
507
  filterState,
502
508
  compactState,
503
509
  toggleCompact,
504
- getCalculatedSelectionTotal }, props), { data: _data }), children: children }));
510
+ getCalculatedSelectionTotal, tableHeight: height, tableMaxHeight: maxHeight, tableMinHeight: minHeight }, props), { onRowUpdated: (props === null || props === void 0 ? void 0 : props.onRowUpdated) || (() => { }), data: _data }), children: children }));
505
511
  };
506
512
  export default TableProvider;
@@ -7,7 +7,7 @@ import ActionCell from "./ActionCell";
7
7
  import ActionButton from "./ActionButton";
8
8
  import CheckBox from "../CheckBox";
9
9
  const TableRow = ({ rowData, rowStyle }) => {
10
- const { columnState, enableActionButton, onActionButtonClick, actionButtonIcon: Icon, enableSelection, selectRow, deselectRow, isRowSelected, } = useTable();
10
+ const { columnState, enableActionButton, onActionButtonClick, actionButtonIcon: Icon, enableSelection, selectRow, deselectRow, isRowSelected, onRowUpdated, } = useTable();
11
11
  const selected = isRowSelected(rowData);
12
12
  const handleSelectionChange = (e) => {
13
13
  e === true ? selectRow(rowData) : deselectRow(rowData);
@@ -20,7 +20,10 @@ const TableRow = ({ rowData, rowStyle }) => {
20
20
  minWidth: column.minWidth,
21
21
  flex: column.width ? "0 0 auto" : "1",
22
22
  }, children: [(column === null || column === void 0 ? void 0 : column.enableResize) === true && _jsx(ColumnResizer, { column: column }), _jsx(InnerCellContent, { className: "mfui inner-cell-content", children: column.render
23
- ? column.render(rowData)
23
+ ? column.render({
24
+ rowData,
25
+ onRowUpdated,
26
+ })
24
27
  : rowData[column.dataField] })] }, index));
25
28
  })] }));
26
29
  };
@@ -3,8 +3,8 @@ declare const VirtualizedRows: React.FC<{
3
3
  width: number;
4
4
  height: number;
5
5
  };
6
- targetElm: React.RefObject<HTMLDivElement>;
7
- listElm: React.RefObject<HTMLDivElement>;
6
+ targetElm: React.MutableRefObject<HTMLDivElement | null>;
7
+ listElm: React.MutableRefObject<HTMLDivElement | null>;
8
8
  rowHeight?: number;
9
9
  headerRowHeight?: number;
10
10
  }>;
@@ -6,16 +6,18 @@ import TableDefaults from "./TableDefaults";
6
6
  import TableRow from "./TableRow";
7
7
  const VirtualizedRows = ({ tableDimensions, targetElm, listElm, rowHeight, headerRowHeight }) => {
8
8
  const { data, compactState } = useTable();
9
- return (_jsx(TableViewPort, { className: "mfui-tbody-viewport", ref: targetElm, style: tableDimensions, children: _jsx(FixedSizeList, { itemData: { data }, overscanCount: 10, height: tableDimensions.height -
10
- (headerRowHeight
11
- ? headerRowHeight
12
- : compactState
13
- ? TableDefaults.row.height.compact
14
- : TableDefaults.row.height.normal), width: tableDimensions.width, itemCount: (data === null || data === void 0 ? void 0 : data.length) || 0, itemSize: rowHeight
15
- ? rowHeight
16
- : compactState
17
- ? TableDefaults.row.height.compact
18
- : TableDefaults.row.height.normal, outerRef: listElm, innerElementType: (props) => {
9
+ const effectiveRowHeight = compactState
10
+ ? TableDefaults.row.height.compact
11
+ : rowHeight
12
+ ? rowHeight
13
+ : TableDefaults.row.height.normal;
14
+ const viewPortHeight = tableDimensions.height -
15
+ (headerRowHeight
16
+ ? headerRowHeight
17
+ : compactState
18
+ ? TableDefaults.row.height.compact
19
+ : TableDefaults.row.height.normal);
20
+ return (_jsx(TableViewPort, { className: "mfui-tbody-viewport", ref: targetElm, style: tableDimensions, children: _jsx(FixedSizeList, { itemData: { data }, overscanCount: 10, height: viewPortHeight, width: tableDimensions.width, itemCount: (data === null || data === void 0 ? void 0 : data.length) || 0, itemSize: effectiveRowHeight, outerRef: listElm, innerElementType: (props) => {
19
21
  return _jsx(TBody, Object.assign({ className: "mfui-tbody" }, props));
20
22
  }, children: ({ data, index, style }) => {
21
23
  var _a;
@@ -1,4 +1,3 @@
1
- export { default as Table } from "./Table";
2
- export { default as Column } from "./Column";
1
+ export * from "./Table";
3
2
  export * from "./types";
4
3
  export * from "./enums";
@@ -1,4 +1,3 @@
1
- export { default as Table } from "./Table";
2
- export { default as Column } from "./Column";
1
+ export * from "./Table";
3
2
  export * from "./types";
4
3
  export * from "./enums";
@@ -1,5 +1,5 @@
1
1
  import { LucideIcon } from "lucide-react";
2
- import { MutableRefObject, ReactElement, Ref } from "react";
2
+ import { MutableRefObject, Ref } from "react";
3
3
  import { SelectionStatus, TableExportOptions } from "./enums";
4
4
  import { FilterDefinition, Query } from "../QueryFilter";
5
5
  export type StateStorage = {
@@ -7,6 +7,10 @@ export type StateStorage = {
7
7
  type: "localStorage";
8
8
  key: string;
9
9
  };
10
+ export type RenderOptions = {
11
+ rowData: any;
12
+ onRowUpdated?: () => void;
13
+ };
10
14
  export interface ColumnProps {
11
15
  columnId?: string;
12
16
  dataField: string;
@@ -20,7 +24,7 @@ export interface ColumnProps {
20
24
  enableReorder?: boolean;
21
25
  enableSorting?: boolean;
22
26
  orderValue?: number;
23
- render?: (rowData: any) => React.ReactNode;
27
+ render?: (options: RenderOptions) => React.ReactNode;
24
28
  }
25
29
  export interface ColumnState extends ColumnProps {
26
30
  columnId: string;
@@ -91,6 +95,9 @@ export type TableContextType = {
91
95
  totalRecords?: number;
92
96
  setColumnState: React.Dispatch<React.SetStateAction<ColumnState[]>>;
93
97
  keyField?: string;
98
+ tableHeight?: number;
99
+ tableMaxHeight?: number;
100
+ tableMinHeight?: number;
94
101
  compact?: boolean;
95
102
  headerRowHeight?: number;
96
103
  rowHeight?: number;
@@ -129,6 +136,7 @@ export type TableContextType = {
129
136
  onColumnResize?: (e: OnColumnChangeProps) => void;
130
137
  onColumnReorder?: (e: OnColumnChangeProps) => void;
131
138
  onTableExport?: OnTableExportFn;
139
+ onRowUpdated: () => void;
132
140
  handleColumnReorder: (dragColumn: ColumnState, dropColumn: ColumnState) => void;
133
141
  handleColumnHeaderClick: (column: ColumnState) => void;
134
142
  onColumnStateChange?: (e: ColumnState[]) => void;
@@ -142,6 +150,9 @@ export interface TableProviderProps {
142
150
  totalRecords?: number;
143
151
  keyField?: string;
144
152
  tableInstanceRef?: MutableRefObject<TableInstance | undefined>;
153
+ height?: number;
154
+ maxHeight?: number;
155
+ minHeight?: number;
145
156
  compact?: boolean;
146
157
  headerRowHeight?: number;
147
158
  rowHeight?: number;
@@ -176,6 +187,7 @@ export interface TableProviderProps {
176
187
  column: ColumnState;
177
188
  sort?: SortState | null;
178
189
  }) => void;
190
+ onRowUpdated?: () => void;
179
191
  }
180
192
  export interface TableRowProps {
181
193
  rowData: {
@@ -203,6 +215,10 @@ export type TableMenuOptions = {
203
215
  label?: string;
204
216
  onClick?: () => void;
205
217
  };
218
+ tableCountOptions?: {
219
+ recordsTotalEnabled?: boolean;
220
+ selectionTotalEnabled?: boolean;
221
+ };
206
222
  searchOptions?: {
207
223
  enabled?: boolean;
208
224
  placeholder?: string;
@@ -218,11 +234,14 @@ export type TableMenuOptions = {
218
234
  };
219
235
  };
220
236
  export interface TableProps {
221
- children: ReactElement<ColumnProps> | ReactElement<ColumnProps>[];
237
+ columnProps: ColumnProps[];
222
238
  data: any[];
223
239
  totalRecords?: number;
224
240
  keyField?: string;
225
241
  tableInstanceRef?: MutableRefObject<TableInstance | undefined>;
242
+ height?: number;
243
+ maxHeight?: number;
244
+ minHeight?: number;
226
245
  virtualized?: boolean;
227
246
  loading?: boolean;
228
247
  compact?: boolean;
@@ -241,6 +260,7 @@ export interface TableProps {
241
260
  manualFiltering?: boolean;
242
261
  manualExport?: boolean;
243
262
  tableMenuOptions?: TableMenuOptions;
263
+ onRowUpdated?: () => void;
244
264
  onSelectionChange?: onSelectionChangeFn;
245
265
  onActionButtonClick?: (rowData: any) => void;
246
266
  onColumnResize?: (e: OnColumnChangeProps) => void;
@@ -1,3 +1,3 @@
1
1
  import { TagBoxProps } from "./types";
2
- declare const TagBox: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<TagBoxProps, never>> & string & Omit<({ className, data, placeholder, arrow, defaultValue, value, grouped, searchFn, onChange, onScroll, onSearch, onItemAdded, size, variant, width, allowCustomValue, searchable, clearable, openOnFocus, label, description, required, error, loading, sort, renderOption, OptionTooltip, }: TagBoxProps) => import("react/jsx-runtime").JSX.Element, keyof import("react").Component<any, {}, any>>;
2
+ declare const TagBox: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<TagBoxProps, never>> & string & Omit<({ className, data, placeholder, arrow, defaultValue, value, grouped, searchFn, onChange, onScroll, onSearch, onItemAdded, size, variant, width, allowCustomValue, searchable, clearable, openOnFocus, label, description, required, error, loading, sort, disabled, renderOption, OptionTooltip, DropDownProps, }: TagBoxProps) => import("react/jsx-runtime").JSX.Element, keyof import("react").Component<any, {}, any>>;
3
3
  export default TagBox;