@popmenu/table 0.126.4 → 0.127.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 (138) hide show
  1. package/build/cjs/components/ColumnFilterChip/ColumnFilterChip.d.ts +0 -1
  2. package/build/cjs/components/ColumnFilterResetButton/ColumnFilterResetButton.d.ts +0 -1
  3. package/build/cjs/components/FilterPanel/FilterControl/FilterControl.d.ts +0 -1
  4. package/build/cjs/components/FilterPanel/FilterControl/SelectFilter/SelectFilter.d.ts +0 -1
  5. package/build/cjs/components/FilterPanel/FilterControl/ToggleFilter/ToggleFilter.d.ts +0 -1
  6. package/build/cjs/components/FilterPanel/FilterPanel.d.ts +0 -1
  7. package/build/cjs/components/FilterPanel/FilterPanelContext/FilterPanelContext.d.ts +1 -1
  8. package/build/cjs/components/FilterPanel/FilterPanelProps.d.ts +2 -2
  9. package/build/cjs/components/FilterPanel/Panel/Panel.d.ts +1 -2
  10. package/build/cjs/components/FilterPanel/Trigger/Trigger.d.ts +1 -1
  11. package/build/cjs/components/GlobalFilter/GlobalFilter.d.ts +0 -1
  12. package/build/cjs/components/GlobalFilter/index.d.ts +1 -1
  13. package/build/cjs/components/RowActions/RowActions.d.ts +0 -1
  14. package/build/cjs/components/RowActions/index.d.ts +1 -1
  15. package/build/cjs/components/Table/Table.d.ts +0 -1
  16. package/build/cjs/components/Table/TableStyles.d.ts +1 -1
  17. package/build/cjs/components/Table/index.d.ts +1 -1
  18. package/build/cjs/components/TableBody/TableBody.d.ts +1 -1
  19. package/build/cjs/components/TableCell/TableCell.d.ts +1 -1
  20. package/build/cjs/components/TableContext/index.d.ts +2 -3
  21. package/build/cjs/components/TableControlsContainer/TableControlsContainer.d.ts +0 -1
  22. package/build/cjs/components/TableControlsContainer/TableControlsContainerProps.d.ts +1 -1
  23. package/build/cjs/components/TableFooter/TableFooter.d.ts +1 -1
  24. package/build/cjs/components/TableHeader/TableHeader.d.ts +1 -1
  25. package/build/cjs/components/TableHeaderCell/TableHeaderCell.d.ts +0 -1
  26. package/build/cjs/components/TableHeaderCell/TableHeaderCellProps.d.ts +1 -1
  27. package/build/cjs/components/TableHeaderCell/index.d.ts +1 -1
  28. package/build/cjs/components/TableHeaderRow/TableHeaderRow.d.ts +1 -1
  29. package/build/cjs/components/TableRow/TableRow.d.ts +1 -1
  30. package/build/cjs/components/index.d.ts +6 -3
  31. package/build/cjs/hooks/useColumnFilters.d.ts +1 -1
  32. package/build/cjs/index.js +469 -451
  33. package/build/cjs/index.js.map +1 -1
  34. package/build/esm/components/ColumnFilterChip/ColumnFilterChip.d.ts +0 -1
  35. package/build/esm/components/ColumnFilterChip/ColumnFilterChip.js +5 -6
  36. package/build/esm/components/ColumnFilterChip/ColumnFilterChip.js.map +1 -1
  37. package/build/esm/components/ColumnFilterChip/ColumnFilterChipStyles.js +1 -1
  38. package/build/esm/components/ColumnFilterChip/ColumnFilterChipStyles.js.map +1 -1
  39. package/build/esm/components/ColumnFilterResetButton/ColumnFilterResetButton.d.ts +0 -1
  40. package/build/esm/components/ColumnFilterResetButton/ColumnFilterResetButton.js +3 -4
  41. package/build/esm/components/ColumnFilterResetButton/ColumnFilterResetButton.js.map +1 -1
  42. package/build/esm/components/FilterPanel/FilterControl/FilterControl.d.ts +0 -1
  43. package/build/esm/components/FilterPanel/FilterControl/FilterControl.js +5 -6
  44. package/build/esm/components/FilterPanel/FilterControl/FilterControl.js.map +1 -1
  45. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilter.d.ts +0 -1
  46. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilter.js +28 -30
  47. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilter.js.map +1 -1
  48. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilterStyles.js +2 -2
  49. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilterStyles.js.map +1 -1
  50. package/build/esm/components/FilterPanel/FilterControl/ToggleFilter/ToggleFilter.d.ts +0 -1
  51. package/build/esm/components/FilterPanel/FilterControl/ToggleFilter/ToggleFilter.js +8 -8
  52. package/build/esm/components/FilterPanel/FilterControl/ToggleFilter/ToggleFilter.js.map +1 -1
  53. package/build/esm/components/FilterPanel/FilterPanel.d.ts +0 -1
  54. package/build/esm/components/FilterPanel/FilterPanel.js +5 -5
  55. package/build/esm/components/FilterPanel/FilterPanel.js.map +1 -1
  56. package/build/esm/components/FilterPanel/FilterPanelContext/FilterPanelContext.d.ts +1 -1
  57. package/build/esm/components/FilterPanel/FilterPanelContext/FilterPanelContext.js +3 -3
  58. package/build/esm/components/FilterPanel/FilterPanelContext/FilterPanelContext.js.map +1 -1
  59. package/build/esm/components/FilterPanel/FilterPanelProps.d.ts +2 -2
  60. package/build/esm/components/FilterPanel/Panel/Panel.d.ts +1 -2
  61. package/build/esm/components/FilterPanel/Panel/Panel.js +21 -23
  62. package/build/esm/components/FilterPanel/Panel/Panel.js.map +1 -1
  63. package/build/esm/components/FilterPanel/Panel/PanelStyles.js +3 -3
  64. package/build/esm/components/FilterPanel/Panel/PanelStyles.js.map +1 -1
  65. package/build/esm/components/FilterPanel/Trigger/Trigger.d.ts +1 -1
  66. package/build/esm/components/FilterPanel/Trigger/Trigger.js +3 -3
  67. package/build/esm/components/FilterPanel/Trigger/Trigger.js.map +1 -1
  68. package/build/esm/components/FilterPanel/Trigger/TriggerStyles.js +1 -1
  69. package/build/esm/components/FilterPanel/Trigger/TriggerStyles.js.map +1 -1
  70. package/build/esm/components/GlobalFilter/GlobalFilter.d.ts +0 -1
  71. package/build/esm/components/GlobalFilter/GlobalFilter.js +6 -7
  72. package/build/esm/components/GlobalFilter/GlobalFilter.js.map +1 -1
  73. package/build/esm/components/GlobalFilter/GlobalFilterStyles.js +1 -1
  74. package/build/esm/components/GlobalFilter/GlobalFilterStyles.js.map +1 -1
  75. package/build/esm/components/GlobalFilter/index.d.ts +1 -1
  76. package/build/esm/components/RowActions/RowActions.d.ts +0 -1
  77. package/build/esm/components/RowActions/RowActions.js +14 -18
  78. package/build/esm/components/RowActions/RowActions.js.map +1 -1
  79. package/build/esm/components/RowActions/index.d.ts +1 -1
  80. package/build/esm/components/Table/Table.d.ts +0 -1
  81. package/build/esm/components/Table/Table.js +76 -56
  82. package/build/esm/components/Table/Table.js.map +1 -1
  83. package/build/esm/components/Table/TableStyles.d.ts +1 -1
  84. package/build/esm/components/Table/TableStyles.js +17 -22
  85. package/build/esm/components/Table/TableStyles.js.map +1 -1
  86. package/build/esm/components/Table/index.d.ts +1 -1
  87. package/build/esm/components/TableBody/TableBody.d.ts +1 -1
  88. package/build/esm/components/TableBody/TableBody.js +3 -4
  89. package/build/esm/components/TableBody/TableBody.js.map +1 -1
  90. package/build/esm/components/TableCell/TableCell.d.ts +1 -1
  91. package/build/esm/components/TableCell/TableCell.js +4 -5
  92. package/build/esm/components/TableCell/TableCell.js.map +1 -1
  93. package/build/esm/components/TableCell/TableCellStyles.js +4 -4
  94. package/build/esm/components/TableCell/TableCellStyles.js.map +1 -1
  95. package/build/esm/components/TableContext/index.d.ts +2 -3
  96. package/build/esm/components/TableContext/index.js +1 -1
  97. package/build/esm/components/TableContext/index.js.map +1 -1
  98. package/build/esm/components/TableControlsContainer/TableControlsContainer.d.ts +0 -1
  99. package/build/esm/components/TableControlsContainer/TableControlsContainer.js +26 -10
  100. package/build/esm/components/TableControlsContainer/TableControlsContainer.js.map +1 -1
  101. package/build/esm/components/TableControlsContainer/TableControlsContainerProps.d.ts +1 -1
  102. package/build/esm/components/TableFooter/TableFooter.d.ts +1 -1
  103. package/build/esm/components/TableFooter/TableFooter.js +1 -1
  104. package/build/esm/components/TableFooter/TableFooter.js.map +1 -1
  105. package/build/esm/components/TableHeader/TableHeader.d.ts +1 -1
  106. package/build/esm/components/TableHeader/TableHeader.js +3 -4
  107. package/build/esm/components/TableHeader/TableHeader.js.map +1 -1
  108. package/build/esm/components/TableHeaderCell/TableHeaderCell.d.ts +0 -1
  109. package/build/esm/components/TableHeaderCell/TableHeaderCell.js +13 -15
  110. package/build/esm/components/TableHeaderCell/TableHeaderCell.js.map +1 -1
  111. package/build/esm/components/TableHeaderCell/TableHeaderCellProps.d.ts +1 -1
  112. package/build/esm/components/TableHeaderCell/TableHeaderCellStyles.js +3 -6
  113. package/build/esm/components/TableHeaderCell/TableHeaderCellStyles.js.map +1 -1
  114. package/build/esm/components/TableHeaderCell/index.d.ts +1 -1
  115. package/build/esm/components/TableHeaderRow/TableHeaderRow.d.ts +1 -1
  116. package/build/esm/components/TableHeaderRow/TableHeaderRow.js +3 -4
  117. package/build/esm/components/TableHeaderRow/TableHeaderRow.js.map +1 -1
  118. package/build/esm/components/TableRow/TableRow.d.ts +1 -1
  119. package/build/esm/components/TableRow/TableRow.js +4 -5
  120. package/build/esm/components/TableRow/TableRow.js.map +1 -1
  121. package/build/esm/components/TableRow/TableRowStyles.js +4 -4
  122. package/build/esm/components/TableRow/TableRowStyles.js.map +1 -1
  123. package/build/esm/components/index.d.ts +6 -3
  124. package/build/esm/hooks/useColumnFilters.d.ts +1 -1
  125. package/build/esm/hooks/useColumnFilters.js +33 -35
  126. package/build/esm/hooks/useColumnFilters.js.map +1 -1
  127. package/build/esm/hooks/useStagedColumnFilters.js +22 -27
  128. package/build/esm/hooks/useStagedColumnFilters.js.map +1 -1
  129. package/build/esm/index.js +2 -2
  130. package/build/esm/util/coercedValueIncludesString.js +2 -2
  131. package/build/esm/util/coercedValueIncludesString.js.map +1 -1
  132. package/build/esm/util/getTableMinHeight.js +11 -11
  133. package/build/esm/util/getTableMinHeight.js.map +1 -1
  134. package/build/esm/util/tableConstants.js +1 -1
  135. package/build/esm/util/tableConstants.js.map +1 -1
  136. package/build/esm/util/validateRowAction.js +5 -5
  137. package/build/esm/util/validateRowAction.js.map +1 -1
  138. package/package.json +3 -2
@@ -1,113 +1,252 @@
1
1
  'use strict';
2
2
 
3
- var tslib = require('tslib');
4
3
  var React = require('react');
5
4
  var core = require('@material-ui/core');
6
- var lab = require('@material-ui/lab');
7
5
  var commonUi = require('@popmenu/common-ui');
8
- var reactTable = require('@tanstack/react-table');
9
6
  var webIcons = require('@popmenu/web-icons');
7
+ var lab = require('@material-ui/lab');
8
+ var reactTable = require('@tanstack/react-table');
10
9
  var adminUi = require('@popmenu/admin-ui');
11
10
 
12
- var useTableRowStyles = core.makeStyles(function (theme) { return ({
13
- root: function () { return ({
14
- '&:nth-child(even)': {
15
- backgroundColor: theme.palette.grey[100],
16
- },
17
- }); },
18
- }); });
11
+ const useStyles$6 = core.makeStyles({
12
+ root: {
13
+ justifySelf: 'start',
14
+ maxWidth: 300,
15
+ minWidth: 200,
16
+ width: '100%',
17
+ gridArea: 'globalFilter',
18
+ },
19
+ });
20
+
21
+ const GlobalFilter = (props) => {
22
+ const { value, setValue, ...restProps } = props;
23
+ const classes = useStyles$6();
24
+ const handleChange = (e) => {
25
+ setValue(e.target.value);
26
+ };
27
+ return (React.createElement(core.TextField, { className: classes.root, variant: "outlined", value: value, onChange: handleChange, InputProps: {
28
+ startAdornment: (React.createElement(core.InputAdornment, { position: "start" },
29
+ React.createElement(commonUi.Icon, { icon: webIcons.Search }))),
30
+ }, ...restProps }));
31
+ };
19
32
 
20
- var TableRow = function (props) {
21
- var children = props.children, restProps = tslib.__rest(props, ["children"]);
22
- var root = useTableRowStyles(props).root;
23
- return (React.createElement("tr", tslib.__assign({ "data-table-element": "body-row", className: root }, restProps), children));
33
+ const validateAction = (action) => {
34
+ const { icon, label, onClick } = action;
35
+ const onClickIsValid = typeof onClick === 'function';
36
+ const labelIsValid = typeof label === 'string';
37
+ const iconIsValid = icon && React.isValidElement(React.createElement(icon));
38
+ return onClickIsValid && labelIsValid && iconIsValid;
24
39
  };
25
40
 
26
- var tableConstants = {
41
+ const RowActions = (props) => {
42
+ const { context, actions } = props;
43
+ const validActions = actions.filter(validateAction);
44
+ const [anchorEl, setAnchorEl] = React.useState(null);
45
+ const openMenu = (event) => {
46
+ setAnchorEl(event.currentTarget);
47
+ };
48
+ const closeMenu = () => {
49
+ setAnchorEl(null);
50
+ };
51
+ const actionsCount = validActions.length;
52
+ let mainActions;
53
+ let overflowActions;
54
+ if (actionsCount <= 3) {
55
+ mainActions = validActions;
56
+ }
57
+ else {
58
+ const [firstAction, secondAction, ...restActions] = validActions;
59
+ mainActions = [firstAction, secondAction];
60
+ overflowActions = restActions;
61
+ }
62
+ return (React.createElement(commonUi.Box, { display: "flex" },
63
+ mainActions.map(({ label, onClick, icon, ...restProps }) => (React.createElement(commonUi.Tooltip, { title: label, key: label },
64
+ React.createElement(commonUi.IconButton, { size: "small", onClick: () => onClick(context), ...restProps },
65
+ React.createElement(commonUi.Icon, { icon: icon }))))),
66
+ overflowActions && (React.createElement(React.Fragment, null,
67
+ React.createElement(commonUi.IconButton, { size: "small", onClick: openMenu },
68
+ React.createElement(commonUi.Icon, { icon: webIcons.More })),
69
+ React.createElement(commonUi.Menu, { anchorEl: anchorEl, open: Boolean(anchorEl), onClose: closeMenu }, overflowActions.map((action) => (React.createElement(commonUi.MenuItem, { key: action.label, onClick: () => action.onClick(context) }, action.label))))))));
70
+ };
71
+
72
+ const useColumnFilters = (table) => {
73
+ const selectedColumnFilters = getSelectedColumnFilters(table.getState());
74
+ const columnFilters = getColumnFilters(table.getAllFlatColumns());
75
+ const hasColumnFilters = columnFilters.length > 0;
76
+ const deselectColumnFilter = makeDeselectColumnFilter(table);
77
+ const formatSelectedFilterText = makeFormatSelectedFilterText(table);
78
+ const resetColumnFilters = table.resetColumnFilters;
79
+ return {
80
+ selectedColumnFilters,
81
+ columnFilters,
82
+ hasColumnFilters,
83
+ deselectColumnFilter,
84
+ formatSelectedFilterText,
85
+ resetColumnFilters,
86
+ };
87
+ };
88
+ function getSelectedColumnFilters(state) {
89
+ const { columnFilters } = state;
90
+ const selectedColumnFilters = columnFilters.reduce((acc, columnFilter) => {
91
+ const { id, value } = columnFilter;
92
+ const selections = [];
93
+ if (value) {
94
+ if (Array.isArray(value)) {
95
+ value.forEach((innerValue) => {
96
+ selections.push({ id, value: innerValue });
97
+ });
98
+ }
99
+ else if (typeof value === 'string' || typeof value === 'number') {
100
+ selections.push({ id, value });
101
+ }
102
+ }
103
+ return [...acc, ...selections];
104
+ }, []);
105
+ return selectedColumnFilters;
106
+ }
107
+ function getColumnFilters(columns) {
108
+ return columns
109
+ .map((column) => {
110
+ const { meta } = column.columnDef;
111
+ if (meta?.filter) {
112
+ return { columnId: column.id, ...meta.filter };
113
+ }
114
+ })
115
+ .filter(Boolean);
116
+ }
117
+ function makeDeselectColumnFilter(table) {
118
+ return function (columnFilter) {
119
+ const column = table.getColumn(columnFilter.id);
120
+ column.setFilterValue((prev) => {
121
+ if (Array.isArray(prev)) {
122
+ return prev.filter((value) => value !== columnFilter.value);
123
+ }
124
+ else if (typeof prev === 'string' || typeof prev === 'number') {
125
+ return null;
126
+ }
127
+ return prev;
128
+ });
129
+ };
130
+ }
131
+ function makeFormatSelectedFilterText(table) {
132
+ return function (columnFilter) {
133
+ const column = table.getColumn(columnFilter.id);
134
+ const { meta } = column.columnDef;
135
+ const name = meta?.filter.name || '';
136
+ const optionMatch = meta?.filter.options.find((option) => option.value === columnFilter.value);
137
+ const label = optionMatch?.label;
138
+ return [name, label];
139
+ };
140
+ }
141
+
142
+ const useStagedColumnFilters = (selectedColumnFilters) => {
143
+ const [columnInputValues, setColumnInputValues] = React.useState(() => selectedColumnFilters.reduce((acc, { id, value }) => {
144
+ if (acc.has(id)) {
145
+ const existingValue = acc.get(id);
146
+ // If the existing value is a string, convert it to an array and add the new value
147
+ if (typeof existingValue === 'string') {
148
+ acc.set(id, [existingValue, value]);
149
+ }
150
+ else {
151
+ existingValue.push(value);
152
+ }
153
+ }
154
+ else {
155
+ acc.set(id, value);
156
+ }
157
+ return acc;
158
+ }, new Map()));
159
+ const filterState = {
160
+ update: (columnId, value) => setColumnInputValues(columnInputValues.set(columnId, value)),
161
+ get: (columnId) => columnInputValues.get(columnId),
162
+ clear: () => {
163
+ columnInputValues.clear();
164
+ setColumnInputValues(columnInputValues);
165
+ },
166
+ delete: (columnFilter) => {
167
+ const values = columnInputValues.get(columnFilter.id);
168
+ if (values && Array.isArray(values)) {
169
+ const valueIndex = values.indexOf(columnFilter.value);
170
+ values.splice(valueIndex, 1);
171
+ if (values.length > 0) {
172
+ columnInputValues.set(columnFilter.id, values);
173
+ }
174
+ else {
175
+ columnInputValues.delete(columnFilter.id);
176
+ }
177
+ }
178
+ else {
179
+ columnInputValues.delete(columnFilter.id);
180
+ }
181
+ setColumnInputValues(columnInputValues);
182
+ },
183
+ exist: () => columnInputValues.size > 0,
184
+ };
185
+ return filterState;
186
+ };
187
+
188
+ const tableConstants = {
27
189
  tableTypography: 'body1',
28
190
  cellPaddingFactor: 2};
29
191
 
30
- var coercedValueIncludesString = function (row, columnId, value) {
192
+ const coercedValueIncludesString = (row, columnId, value) => {
31
193
  if (value === '')
32
194
  return true;
33
- var cellValue = row.getValue(columnId);
195
+ const cellValue = row.getValue(columnId);
34
196
  return String(cellValue).toLowerCase().includes(value.toLowerCase());
35
197
  };
36
198
 
37
- var getTableMinHeight = function (rootRef, pageSize) {
38
- var defaultBodyRowHeight = 56;
39
- var defaultHeaderRowHeight = 57;
40
- var defaultFooterHeight = 88;
41
- var minHeight = defaultBodyRowHeight * pageSize + defaultHeaderRowHeight + defaultFooterHeight;
42
- if (rootRef === null || rootRef === void 0 ? void 0 : rootRef.current) {
43
- var rootTableNode = rootRef.current;
44
- var headerRowNode = rootTableNode.querySelector("[data-table-element=\"header-row\"]");
45
- var bodyRowNode = rootTableNode.querySelector("[data-table-element=\"body-row\"]");
199
+ const getTableMinHeight = (rootRef, pageSize) => {
200
+ const defaultBodyRowHeight = 56;
201
+ const defaultHeaderRowHeight = 57;
202
+ const defaultFooterHeight = 88;
203
+ let minHeight = defaultBodyRowHeight * pageSize + defaultHeaderRowHeight + defaultFooterHeight;
204
+ if (rootRef?.current) {
205
+ const rootTableNode = rootRef.current;
206
+ const headerRowNode = rootTableNode.querySelector(`[data-table-element="header-row"]`);
207
+ const bodyRowNode = rootTableNode.querySelector(`[data-table-element="body-row"]`);
46
208
  if (headerRowNode && bodyRowNode) {
47
- var headerRowHeight = headerRowNode.getBoundingClientRect().height;
48
- var bodyRowHeight = bodyRowNode.getBoundingClientRect().height;
209
+ const headerRowHeight = headerRowNode.getBoundingClientRect().height;
210
+ const bodyRowHeight = bodyRowNode.getBoundingClientRect().height;
49
211
  minHeight = headerRowHeight + bodyRowHeight * pageSize + defaultFooterHeight;
50
212
  }
51
213
  }
52
214
  return minHeight;
53
215
  };
54
216
 
55
- var useTableCellStyles = core.makeStyles(function (theme) { return ({
56
- root: function () { return ({
57
- padding: theme.spacing(tableConstants.cellPaddingFactor),
58
- }); },
59
- }); });
60
-
61
- var TableCell = function (props) {
62
- var children = props.children, restProps = tslib.__rest(props, ["children"]);
63
- var root = useTableCellStyles(props).root;
64
- return (React.createElement("td", tslib.__assign({ className: root }, restProps), children));
65
- };
66
-
67
- var TableBody = function (props) {
68
- var children = props.children, restProps = tslib.__rest(props, ["children"]);
69
- return React.createElement("tbody", tslib.__assign({}, restProps), children);
70
- };
71
-
72
- var useStyles$6 = core.makeStyles(function (_a) {
73
- var typography = _a.typography;
74
- return ({
75
- root: function (_a) {
76
- var fullWidth = _a.fullWidth;
77
- return ({
78
- display: fullWidth ? 'flex' : 'inline-flex',
79
- flexDirection: 'column',
80
- });
81
- },
82
- table: function (_a) {
83
- var fullWidth = _a.fullWidth;
84
- return (tslib.__assign(tslib.__assign({ borderCollapse: 'collapse' }, (fullWidth && { width: '100%' })), typography[tableConstants.tableTypography]));
85
- },
86
- tableContainer: function () { return ({
87
- maxWidth: '100%',
88
- overflowX: 'auto',
89
- overflowY: 'hidden',
90
- }); },
91
- });
217
+ const useStyles$5 = core.makeStyles({
218
+ chip: {
219
+ overflow: 'visible',
220
+ height: 'auto',
221
+ },
222
+ label: {
223
+ whiteSpace: 'normal',
224
+ },
92
225
  });
93
226
 
94
- var TableHeader = function (props) {
95
- var children = props.children, restProps = tslib.__rest(props, ["children"]);
96
- return React.createElement("thead", tslib.__assign({}, restProps), children);
227
+ const ColumnFilterChip = (props) => {
228
+ const { columnFilter, onClick, label } = props;
229
+ const classes = useStyles$5();
230
+ return (React.createElement(commonUi.Chip, { className: classes.chip, onDelete: () => onClick(columnFilter), label: React.createElement(commonUi.Box, { display: "flex", gridGap: 4, flexWrap: "wrap" },
231
+ React.createElement(commonUi.Typography, null,
232
+ label[0],
233
+ ":"),
234
+ React.createElement(commonUi.Typography, { className: classes.label, weight: "semi-bold", component: 'span' }, label[1])) }));
97
235
  };
98
236
 
99
- var TableFooter = function (props) {
100
- return (React.createElement(commonUi.Box, { display: "flex", justifyContent: "center", alignItems: "end", paddingTop: 3, paddingBottom: 4 }, props.children));
237
+ const ColumnFilterResetButton = (props) => {
238
+ const { children = 'Clear All', ...restProps } = props;
239
+ return (React.createElement(adminUi.Button, { variant: "text", textTransform: "none", ...restProps }, children));
101
240
  };
102
241
 
103
- var useStyles$5 = core.makeStyles(function (theme) { return ({
242
+ const useStyles$4 = core.makeStyles((theme) => ({
104
243
  buttonBox: {
105
244
  '& > :last-child': {
106
245
  marginLeft: theme.spacing(2),
107
246
  },
108
247
  display: 'flex',
109
248
  justifyContent: 'flex-end',
110
- padding: "0px " + theme.spacing(3) + "px " + theme.spacing(3) + "px " + theme.spacing(3) + "px",
249
+ padding: `0px ${theme.spacing(3)}px ${theme.spacing(3)}px ${theme.spacing(3)}px`,
111
250
  },
112
251
  buttonLabel: {
113
252
  fontWeight: 400,
@@ -152,9 +291,20 @@ var useStyles$5 = core.makeStyles(function (theme) { return ({
152
291
  selectInput: {
153
292
  margin: '8px 0',
154
293
  },
155
- }); });
294
+ }));
295
+
296
+ const TableContext = React.createContext({});
297
+
298
+ const FilterPanelContext = React.createContext(null);
299
+ const useFilterPanelContext = () => {
300
+ const context = React.useContext(FilterPanelContext);
301
+ if (!context) {
302
+ throw new Error('useFilterPanelContext has to be used within <FilterPanelContext.Provider>');
303
+ }
304
+ return context;
305
+ };
156
306
 
157
- var useStyles$4 = core.makeStyles(function (theme) { return ({
307
+ const useStyles$3 = core.makeStyles((theme) => ({
158
308
  icon: {
159
309
  marginRight: theme.spacing(1.5),
160
310
  marginTop: theme.spacing(0.5),
@@ -171,64 +321,52 @@ var useStyles$4 = core.makeStyles(function (theme) { return ({
171
321
  hidden: {
172
322
  display: 'none',
173
323
  },
174
- }); });
175
-
176
- var TableContext = React.createContext({});
177
-
178
- var FilterPanelContext = React.createContext(null);
179
- var useFilterPanelContext = function () {
180
- var context = React.useContext(FilterPanelContext);
181
- if (!context) {
182
- throw new Error('useFilterPanelContext has to be used within <FilterPanelContext.Provider>');
183
- }
184
- return context;
185
- };
186
-
187
- var SelectFilter = function (props) {
188
- var _a, _b, _c;
189
- var options = props.options, columnId = props.columnId, multiple = props.multiple;
190
- var classes = useStyles$4();
191
- var _d = React.useContext(TableContext), table = _d.table, stagedColumnFilters = _d.stagedColumnFilters, stageFilterSelections = _d.stageFilterSelections;
192
- var _e = React.useState(false), open = _e[0], setOpen = _e[1];
193
- var _f = useFilterPanelContext().anchorState, setAnchorEl = _f[1];
194
- var column = table.getColumn(columnId);
195
- var meta = column.columnDef.meta;
196
- var filterName = (_a = meta === null || meta === void 0 ? void 0 : meta.filter) === null || _a === void 0 ? void 0 : _a.name;
197
- var value = '';
324
+ }));
325
+
326
+ const SelectFilter = (props) => {
327
+ const { options, columnId, multiple } = props;
328
+ const classes = useStyles$3();
329
+ const { table, stagedColumnFilters, stageFilterSelections } = React.useContext(TableContext);
330
+ const [open, setOpen] = React.useState(false);
331
+ const { anchorState: [, setAnchorEl], } = useFilterPanelContext();
332
+ const column = table.getColumn(columnId);
333
+ const { meta } = column.columnDef;
334
+ const filterName = meta?.filter?.name;
335
+ let value = '';
198
336
  if (stageFilterSelections && !!stagedColumnFilters.get(columnId)) {
199
337
  value = stagedColumnFilters.get(columnId);
200
338
  }
201
339
  else {
202
340
  value = column.getFilterValue();
203
341
  }
204
- var fallbackValue = multiple ? [] : '';
205
- var filteredOptions = options.map(function (option) {
342
+ const fallbackValue = multiple ? [] : '';
343
+ const filteredOptions = options.map((option) => {
206
344
  if (Array.isArray(value)) {
207
345
  if (value.includes(option.value)) {
208
- return tslib.__assign(tslib.__assign({}, option), { hide: !stageFilterSelections });
346
+ return { ...option, hide: !stageFilterSelections };
209
347
  }
210
348
  }
211
349
  if (typeof value === 'string' || typeof value === 'number') {
212
350
  if (value === option.value) {
213
- return tslib.__assign(tslib.__assign({}, option), { hide: !stageFilterSelections });
351
+ return { ...option, hide: !stageFilterSelections };
214
352
  }
215
353
  }
216
- return tslib.__assign(tslib.__assign({}, option), { hide: false });
354
+ return { ...option, hide: false };
217
355
  });
218
- var filteredOptionsCount = filteredOptions.filter(function (option) { return !(option === null || option === void 0 ? void 0 : option.hide); }).length;
219
- var renderedValue = '';
356
+ const filteredOptionsCount = filteredOptions.filter((option) => !option?.hide).length;
357
+ let renderedValue = '';
220
358
  if (!stageFilterSelections && value && filteredOptions && filteredOptionsCount > 0) {
221
359
  if (typeof value === 'string' || typeof value === 'number') {
222
- renderedValue = (_c = (_b = filteredOptions.find(function (option) { return option.value === value; })) === null || _b === void 0 ? void 0 : _b.label) !== null && _c !== void 0 ? _c : filterName;
360
+ renderedValue = filteredOptions.find((option) => option.value === value)?.label ?? filterName;
223
361
  }
224
362
  else if (Array.isArray(value) && value.length > 0) {
225
- renderedValue = value.length + " selected";
363
+ renderedValue = `${value.length} selected`;
226
364
  }
227
365
  else {
228
366
  renderedValue = filterName;
229
367
  }
230
368
  }
231
- var handleChange = function (event) {
369
+ const handleChange = (event) => {
232
370
  event.stopPropagation();
233
371
  if (stageFilterSelections) {
234
372
  stagedColumnFilters.update(columnId, event.target.value);
@@ -238,7 +376,7 @@ var SelectFilter = function (props) {
238
376
  setAnchorEl(null);
239
377
  }
240
378
  };
241
- var handleItemClick = function () {
379
+ const handleItemClick = () => {
242
380
  if (multiple) {
243
381
  if (!stageFilterSelections && filteredOptionsCount === 1) {
244
382
  setOpen(false);
@@ -250,8 +388,8 @@ var SelectFilter = function (props) {
250
388
  };
251
389
  return (React.createElement(core.Box, { className: classes.selectContainer },
252
390
  React.createElement(core.FormControl, { variant: "outlined", fullWidth: true },
253
- React.createElement(core.InputLabel, { id: "select-filter-label-" + filterName }, filterName || 'filter'),
254
- React.createElement(core.Select, { variant: "outlined", open: open, onOpen: function () { return setOpen(true); }, onClose: function () { return setOpen(false); }, value: value || fallbackValue, displayEmpty: true, multiple: multiple, renderValue: stageFilterSelections ? undefined : function () { return React.createElement(commonUi.Typography, null, renderedValue); }, label: filterName || 'filter', labelId: "select-filter-label-" + filterName, disabled: !filteredOptionsCount, IconComponent: webIcons.ChevronDown, onChange: handleChange, fullWidth: true, classes: {
391
+ React.createElement(core.InputLabel, { id: `select-filter-label-${filterName}` }, filterName || 'filter'),
392
+ React.createElement(core.Select, { variant: "outlined", open: open, onOpen: () => setOpen(true), onClose: () => setOpen(false), value: value || fallbackValue, displayEmpty: true, multiple: multiple, renderValue: stageFilterSelections ? undefined : () => React.createElement(commonUi.Typography, null, renderedValue), label: filterName || 'filter', labelId: `select-filter-label-${filterName}`, disabled: !filteredOptionsCount, IconComponent: webIcons.ChevronDown, onChange: handleChange, fullWidth: true, classes: {
255
393
  root: classes.selectRoot,
256
394
  icon: classes.icon,
257
395
  }, MenuProps: {
@@ -265,188 +403,66 @@ var SelectFilter = function (props) {
265
403
  horizontal: 'left',
266
404
  },
267
405
  getContentAnchorEl: null,
268
- } }, filteredOptions.map(function (option, index) {
269
- return (React.createElement(commonUi.MenuItem, { classes: { root: option.hide ? classes.hidden : undefined }, key: "option-" + value + "-" + index, value: option.value, onClick: handleItemClick }, option.label));
406
+ } }, filteredOptions.map((option, index) => {
407
+ return (React.createElement(commonUi.MenuItem, { classes: { root: option.hide ? classes.hidden : undefined }, key: `option-${value}-${index}`, value: option.value, onClick: handleItemClick }, option.label));
270
408
  })))));
271
409
  };
272
410
 
273
- var ToggleFilter = function (props) {
274
- var table = React.useContext(TableContext).table;
275
- var columnId = props.columnId;
276
- var column = table.getColumn(columnId);
277
- var meta = column.columnDef.meta;
278
- var filterName = meta.filter.name;
279
- var value = column.getFilterValue();
280
- var handleChange = function (event, checked) {
411
+ const ToggleFilter = (props) => {
412
+ const table = React.useContext(TableContext).table;
413
+ const { columnId } = props;
414
+ const column = table.getColumn(columnId);
415
+ const meta = column.columnDef.meta;
416
+ const filterName = meta.filter.name;
417
+ const value = column.getFilterValue();
418
+ const handleChange = (event, checked) => {
281
419
  event.stopPropagation();
282
420
  column.setFilterValue(checked);
283
421
  };
284
422
  return React.createElement(core.FormControlLabel, { control: React.createElement(core.Switch, { checked: value, onChange: handleChange }), label: filterName });
285
423
  };
286
424
 
287
- var FilterControl = function (props) {
288
- var input = props.input, columnFilter = tslib.__rest(props, ["input"]);
289
- var inputDictionary = {
425
+ const FilterControl = (props) => {
426
+ const { input, ...columnFilter } = props;
427
+ const inputDictionary = {
290
428
  text: core.TextField,
291
429
  select: SelectFilter,
292
430
  'multi-select': SelectFilter,
293
431
  toggle: ToggleFilter,
294
432
  };
295
- var propsDictionary = {
433
+ const propsDictionary = {
296
434
  select: { multiple: false },
297
435
  'multi-select': { multiple: true },
298
436
  };
299
437
  // @ts-expect-error - todo.
300
- return React.createElement("div", null, React.createElement(inputDictionary[input], tslib.__assign(tslib.__assign({}, columnFilter), propsDictionary[input])));
438
+ return React.createElement("div", null, React.createElement(inputDictionary[input], { ...columnFilter, ...propsDictionary[input] }));
301
439
  };
302
440
 
303
- var useColumnFilters = function (table) {
304
- var selectedColumnFilters = getSelectedColumnFilters(table.getState());
305
- var columnFilters = getColumnFilters(table.getAllFlatColumns());
306
- var hasColumnFilters = columnFilters.length > 0;
307
- var deselectColumnFilter = makeDeselectColumnFilter(table);
308
- var formatSelectedFilterText = makeFormatSelectedFilterText(table);
309
- var resetColumnFilters = table.resetColumnFilters;
310
- return {
311
- selectedColumnFilters: selectedColumnFilters,
312
- columnFilters: columnFilters,
313
- hasColumnFilters: hasColumnFilters,
314
- deselectColumnFilter: deselectColumnFilter,
315
- formatSelectedFilterText: formatSelectedFilterText,
316
- resetColumnFilters: resetColumnFilters,
317
- };
318
- };
319
- function getSelectedColumnFilters(state) {
320
- var columnFilters = state.columnFilters;
321
- var selectedColumnFilters = columnFilters.reduce(function (acc, columnFilter) {
322
- var id = columnFilter.id, value = columnFilter.value;
323
- var selections = [];
324
- if (value) {
325
- if (Array.isArray(value)) {
326
- value.forEach(function (innerValue) {
327
- selections.push({ id: id, value: innerValue });
328
- });
329
- }
330
- else if (typeof value === 'string' || typeof value === 'number') {
331
- selections.push({ id: id, value: value });
332
- }
333
- }
334
- return tslib.__spreadArray(tslib.__spreadArray([], acc), selections);
335
- }, []);
336
- return selectedColumnFilters;
337
- }
338
- function getColumnFilters(columns) {
339
- return columns
340
- .map(function (column) {
341
- var meta = column.columnDef.meta;
342
- if (meta === null || meta === void 0 ? void 0 : meta.filter) {
343
- return tslib.__assign({ columnId: column.id }, meta.filter);
344
- }
345
- })
346
- .filter(Boolean);
347
- }
348
- function makeDeselectColumnFilter(table) {
349
- return function (columnFilter) {
350
- var column = table.getColumn(columnFilter.id);
351
- column.setFilterValue(function (prev) {
352
- if (Array.isArray(prev)) {
353
- return prev.filter(function (value) { return value !== columnFilter.value; });
354
- }
355
- else if (typeof prev === 'string' || typeof prev === 'number') {
356
- return null;
357
- }
358
- return prev;
359
- });
360
- };
361
- }
362
- function makeFormatSelectedFilterText(table) {
363
- return function (columnFilter) {
364
- var column = table.getColumn(columnFilter.id);
365
- var meta = column.columnDef.meta;
366
- var name = (meta === null || meta === void 0 ? void 0 : meta.filter.name) || '';
367
- var optionMatch = meta === null || meta === void 0 ? void 0 : meta.filter.options.find(function (option) { return option.value === columnFilter.value; });
368
- var label = optionMatch === null || optionMatch === void 0 ? void 0 : optionMatch.label;
369
- return [name, label];
370
- };
371
- }
372
-
373
- var useStagedColumnFilters = function (selectedColumnFilters) {
374
- var _a = React.useState(function () {
375
- return selectedColumnFilters.reduce(function (acc, _a) {
376
- var id = _a.id, value = _a.value;
377
- if (acc.has(id)) {
378
- var existingValue = acc.get(id);
379
- // If the existing value is a string, convert it to an array and add the new value
380
- if (typeof existingValue === 'string') {
381
- acc.set(id, [existingValue, value]);
382
- }
383
- else {
384
- existingValue.push(value);
385
- }
386
- }
387
- else {
388
- acc.set(id, value);
389
- }
390
- return acc;
391
- }, new Map());
392
- }), columnInputValues = _a[0], setColumnInputValues = _a[1];
393
- var filterState = {
394
- update: function (columnId, value) {
395
- return setColumnInputValues(columnInputValues.set(columnId, value));
396
- },
397
- get: function (columnId) { return columnInputValues.get(columnId); },
398
- clear: function () {
399
- columnInputValues.clear();
400
- setColumnInputValues(columnInputValues);
401
- },
402
- delete: function (columnFilter) {
403
- var values = columnInputValues.get(columnFilter.id);
404
- if (values && Array.isArray(values)) {
405
- var valueIndex = values.indexOf(columnFilter.value);
406
- values.splice(valueIndex, 1);
407
- if (values.length > 0) {
408
- columnInputValues.set(columnFilter.id, values);
409
- }
410
- else {
411
- columnInputValues.delete(columnFilter.id);
412
- }
413
- }
414
- else {
415
- columnInputValues.delete(columnFilter.id);
416
- }
417
- setColumnInputValues(columnInputValues);
418
- },
419
- exist: function () { return columnInputValues.size > 0; },
420
- };
421
- return filterState;
422
- };
423
-
424
- var Panel = function (props) {
425
- var anchorEl = props.anchorEl, onClose = props.onClose;
426
- var classes = useStyles$5();
427
- var _a = React.useContext(TableContext), table = _a.table, stagedColumnFilters = _a.stagedColumnFilters, stageFilterSelections = _a.stageFilterSelections;
428
- var paperRef = React.useRef(null);
429
- var _b = useColumnFilters(table), columnFilters = _b.columnFilters, resetColumnFilters = _b.resetColumnFilters;
430
- var handleClick = function (e) {
431
- var _a;
432
- var rect = (_a = paperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
441
+ const Panel = (props) => {
442
+ const { anchorEl, onClose } = props;
443
+ const classes = useStyles$4();
444
+ const { table, stagedColumnFilters, stageFilterSelections } = React.useContext(TableContext);
445
+ const paperRef = React.useRef(null);
446
+ const { columnFilters, resetColumnFilters } = useColumnFilters(table);
447
+ const handleClick = (e) => {
448
+ const rect = paperRef.current?.getBoundingClientRect();
433
449
  if (rect) {
434
- var buffer = 10;
435
- var mouseX = e.nativeEvent.x;
436
- var mouseY = e.nativeEvent.y;
437
- var xHit = rect.x - buffer < mouseX && mouseX < rect.x + rect.width + buffer;
438
- var yHit = rect.y - buffer < mouseY && mouseY < rect.y + rect.height + buffer;
450
+ const buffer = 10;
451
+ const mouseX = e.nativeEvent.x;
452
+ const mouseY = e.nativeEvent.y;
453
+ const xHit = rect.x - buffer < mouseX && mouseX < rect.x + rect.width + buffer;
454
+ const yHit = rect.y - buffer < mouseY && mouseY < rect.y + rect.height + buffer;
439
455
  if (!xHit || !yHit) {
440
456
  onClose();
441
457
  }
442
458
  }
443
459
  };
444
- var handleApplyClick = function () {
460
+ const handleApplyClick = () => {
445
461
  if (stagedColumnFilters.exist()) {
446
- columnFilters.forEach(function (columnFilter) {
447
- var columnInputValue = stagedColumnFilters.get(columnFilter.columnId);
462
+ columnFilters.forEach((columnFilter) => {
463
+ const columnInputValue = stagedColumnFilters.get(columnFilter.columnId);
448
464
  if (columnInputValue) {
449
- var column = table.getColumn(columnFilter.columnId);
465
+ const column = table.getColumn(columnFilter.columnId);
450
466
  column.setFilterValue(columnInputValue);
451
467
  }
452
468
  });
@@ -456,10 +472,10 @@ var Panel = function (props) {
456
472
  }
457
473
  onClose();
458
474
  };
459
- var handleCancelClick = function () {
475
+ const handleCancelClick = () => {
460
476
  onClose();
461
477
  };
462
- var open = Boolean(anchorEl);
478
+ const open = Boolean(anchorEl);
463
479
  return (React.createElement(commonUi.Popover, { onClick: handleClick, anchorEl: anchorEl, anchorOrigin: {
464
480
  vertical: 'bottom',
465
481
  horizontal: 'right',
@@ -474,34 +490,34 @@ var Panel = function (props) {
474
490
  horizontal: 'right',
475
491
  } },
476
492
  React.createElement(commonUi.Paper, { className: classes.filterPopoverContents, elevation: 2 },
477
- React.createElement(commonUi.Box, tslib.__assign({}, { ref: paperRef }, { padding: 3 }),
493
+ React.createElement(commonUi.Box, { ref: paperRef, padding: 3 },
478
494
  React.createElement(commonUi.Typography, { className: classes.menuTitle }, "Filter By"),
479
- columnFilters.map(function (columnFilter, i) { return (React.createElement(FilterControl, tslib.__assign({}, columnFilter, { key: i }))); })),
495
+ columnFilters.map((columnFilter, i) => (React.createElement(FilterControl, { ...columnFilter, key: i })))),
480
496
  stageFilterSelections && (React.createElement(commonUi.Box, { className: classes.buttonBox },
481
497
  React.createElement(adminUi.Button, { variant: "secondary", onClick: handleCancelClick }, "Cancel"),
482
498
  React.createElement(adminUi.Button, { onClick: handleApplyClick }, "Apply"))))));
483
499
  };
484
500
 
485
- var useStyles$3 = core.makeStyles({
501
+ const useStyles$2 = core.makeStyles({
486
502
  root: {
487
503
  justifySelf: 'end',
488
504
  gridArea: 'columnFilter',
489
505
  },
490
506
  });
491
507
 
492
- var Trigger = function (props) {
493
- var _a = props.label, label = _a === void 0 ? 'Filter' : _a, onClick = props.onClick;
494
- var classes = useStyles$3();
508
+ const Trigger = (props) => {
509
+ const { label = 'Filter', onClick } = props;
510
+ const classes = useStyles$2();
495
511
  return (React.createElement(adminUi.Button, { className: classes.root, onClick: onClick, startIcon: React.createElement(commonUi.Icon, { icon: webIcons.Filter }), textTransform: "none", variant: "ghost" }, label));
496
512
  };
497
513
 
498
- var FilterPanel = function () {
499
- var _a = React.useState(null), anchorEl = _a[0], setAnchorEl = _a[1];
500
- var _b = React.useContext(TableContext), stageFilterSelections = _b.stageFilterSelections, stagedColumnFilters = _b.stagedColumnFilters;
501
- var handleClick = function (event) {
514
+ const FilterPanel = () => {
515
+ const [anchorEl, setAnchorEl] = React.useState(null);
516
+ const { stageFilterSelections, stagedColumnFilters } = React.useContext(TableContext);
517
+ const handleClick = (event) => {
502
518
  setAnchorEl(event.currentTarget);
503
519
  };
504
- var handleClose = function () {
520
+ const handleClose = () => {
505
521
  if (stageFilterSelections)
506
522
  stagedColumnFilters.clear();
507
523
  setAnchorEl(null);
@@ -511,31 +527,75 @@ var FilterPanel = function () {
511
527
  React.createElement(Panel, { onClose: handleClose, anchorEl: anchorEl })));
512
528
  };
513
529
 
514
- var useStyles$2 = core.makeStyles({
515
- root: {
516
- justifySelf: 'start',
517
- maxWidth: 300,
518
- minWidth: 200,
519
- width: '100%',
520
- gridArea: 'globalFilter',
521
- },
522
- });
530
+ const TableBody = (props) => {
531
+ const { children, ...restProps } = props;
532
+ return React.createElement("tbody", { ...restProps }, children);
533
+ };
523
534
 
524
- var GlobalFilter = function (props) {
525
- var value = props.value, setValue = props.setValue, restProps = tslib.__rest(props, ["value", "setValue"]);
526
- var classes = useStyles$2();
527
- var handleChange = function (e) {
528
- setValue(e.target.value);
529
- };
530
- return (React.createElement(core.TextField, tslib.__assign({ className: classes.root, variant: "outlined", value: value, onChange: handleChange, InputProps: {
531
- startAdornment: (React.createElement(core.InputAdornment, { position: "start" },
532
- React.createElement(commonUi.Icon, { icon: webIcons.Search }))),
533
- } }, restProps)));
535
+ const useTableCellStyles = core.makeStyles((theme) => ({
536
+ root: () => ({
537
+ padding: theme.spacing(tableConstants.cellPaddingFactor),
538
+ }),
539
+ }));
540
+
541
+ const TableCell = (props) => {
542
+ const { children, ...restProps } = props;
543
+ const { root } = useTableCellStyles(props);
544
+ return (React.createElement("td", { className: root, ...restProps }, children));
545
+ };
546
+
547
+ const TableControlsContainer = (props) => {
548
+ const { showTitle, showGlobalSearch, showColumnFilter } = props;
549
+ let gridTemplateAreas;
550
+ switch (true) {
551
+ case showTitle && showGlobalSearch && showColumnFilter:
552
+ gridTemplateAreas = `
553
+ "title ."
554
+ "globalFilter columnFilter"
555
+ `;
556
+ break;
557
+ case showTitle && !showGlobalSearch && showColumnFilter:
558
+ gridTemplateAreas = `
559
+ "title columnFilter"
560
+ `;
561
+ break;
562
+ case !showTitle && showGlobalSearch && showColumnFilter:
563
+ gridTemplateAreas = `
564
+ "globalFilter columnFilter"
565
+ `;
566
+ break;
567
+ case showTitle && !showGlobalSearch && !showColumnFilter:
568
+ gridTemplateAreas = `
569
+ "title ."
570
+ `;
571
+ break;
572
+ case !showTitle && !showGlobalSearch && showColumnFilter:
573
+ gridTemplateAreas = `
574
+ ". columnFilter"
575
+ `;
576
+ break;
577
+ case !showTitle && showGlobalSearch && !showColumnFilter:
578
+ gridTemplateAreas = `
579
+ "globalFilter ."
580
+ `;
581
+ break;
582
+ case showTitle && showGlobalSearch && !showColumnFilter:
583
+ gridTemplateAreas = `
584
+ "title ."
585
+ "globalFilter ."
586
+ `;
587
+ break;
588
+ }
589
+ return (React.createElement(core.Box, { display: "grid", gridTemplateColumns: "repeat(2, minmax(150px, 1fr))", gridTemplateAreas: gridTemplateAreas, gridGap: 16, marginBottom: 3 }, props.children));
534
590
  };
535
591
 
536
- var TableHeaderRow = function (props) {
537
- var children = props.children, restProps = tslib.__rest(props, ["children"]);
538
- return (React.createElement("tr", tslib.__assign({ "data-table-element": 'header-row' }, restProps), children));
592
+ const TableFooter = (props) => {
593
+ return (React.createElement(commonUi.Box, { display: "flex", justifyContent: "center", alignItems: "end", paddingTop: 3, paddingBottom: 4 }, props.children));
594
+ };
595
+
596
+ const TableHeader = (props) => {
597
+ const { children, ...restProps } = props;
598
+ return React.createElement("thead", { ...restProps }, children);
539
599
  };
540
600
 
541
601
  // const getWidth = (props: TableHeaderCellProps) => {
@@ -558,7 +618,7 @@ var TableHeaderRow = function (props) {
558
618
  // }
559
619
  // return width
560
620
  // }
561
- var useStyles$1 = core.makeStyles(function (theme) { return ({
621
+ const useStyles$1 = core.makeStyles((theme) => ({
562
622
  root: {
563
623
  borderBottomStyle: 'solid',
564
624
  borderBottomWidth: 2,
@@ -568,146 +628,146 @@ var useStyles$1 = core.makeStyles(function (theme) { return ({
568
628
  fontWeight: 500,
569
629
  },
570
630
  box: {
571
- cursor: function (_a) {
572
- var sortable = _a.sortable;
573
- return (sortable ? 'pointer' : 'default');
574
- },
631
+ cursor: ({ sortable }) => (sortable ? 'pointer' : 'default'),
575
632
  },
576
- }); });
577
-
578
- var TableHeaderCell = function (props) {
579
- var _a;
580
- var children = props.children, context = props.context, restProps = tslib.__rest(props, ["children", "context"]);
581
- var sortable = context.header.column.getCanSort();
582
- var sorted = context.header.column.getIsSorted();
583
- var handleSort = context.header.column.getToggleSortingHandler();
584
- var classes = useStyles$1(tslib.__assign(tslib.__assign({}, props), { sortable: sortable }));
585
- var _b = core.useTheme(), spacing = _b.spacing, palette = _b.palette;
586
- var sortIndicators = {
633
+ }));
634
+
635
+ const TableHeaderCell = (props) => {
636
+ const { children, context, ...restProps } = props;
637
+ const sortable = context.header.column.getCanSort();
638
+ const sorted = context.header.column.getIsSorted();
639
+ const handleSort = context.header.column.getToggleSortingHandler();
640
+ const classes = useStyles$1({ ...props, sortable });
641
+ const { spacing, palette } = core.useTheme();
642
+ const sortIndicators = {
587
643
  asc: webIcons.ChevronUp,
588
644
  desc: webIcons.ChevronDown,
589
645
  };
590
- var idBase = (_a = context.table.options.meta) === null || _a === void 0 ? void 0 : _a.idBase;
591
- var dataTourIdProps = idBase && sortable
592
- ? { 'data-tour-id': ("sort-" + idBase + "-on-" + context.header.column.id).toLowerCase().replace(/\s+/g, '-') }
646
+ const idBase = context.table.options.meta?.idBase;
647
+ const dataTourIdProps = idBase && sortable
648
+ ? { 'data-tour-id': `sort-${idBase}-on-${context.header.column.id}`.toLowerCase().replace(/\s+/g, '-') }
593
649
  : {};
594
- return (React.createElement("th", tslib.__assign({ className: classes.root }, restProps),
595
- React.createElement(commonUi.Box, tslib.__assign({ className: classes.box, display: "flex", alignItems: "center", gridGap: spacing(1), onClick: handleSort }, dataTourIdProps),
650
+ return (React.createElement("th", { className: classes.root, ...restProps },
651
+ React.createElement(commonUi.Box, { className: classes.box, display: "flex", alignItems: "center", gridGap: spacing(1), onClick: handleSort, ...dataTourIdProps },
596
652
  children,
597
653
  sortable && !sorted && React.createElement(commonUi.Icon, { icon: webIcons.Sort, color: palette.grey[500] }),
598
654
  sortable && sorted && React.createElement(commonUi.Icon, { icon: sortIndicators[sorted] }))));
599
655
  };
600
656
 
601
- var useStyles = core.makeStyles({
602
- chip: {
603
- overflow: 'visible',
604
- height: 'auto',
605
- },
606
- label: {
607
- whiteSpace: 'normal',
608
- },
609
- });
610
-
611
- var ColumnFilterChip = function (props) {
612
- var columnFilter = props.columnFilter, onClick = props.onClick, label = props.label;
613
- var classes = useStyles();
614
- return (React.createElement(commonUi.Chip, { className: classes.chip, onDelete: function () { return onClick(columnFilter); }, label: React.createElement(commonUi.Box, { display: "flex", gridGap: 4, flexWrap: "wrap" },
615
- React.createElement(commonUi.Typography, null,
616
- label[0],
617
- ":"),
618
- React.createElement(commonUi.Typography, tslib.__assign({ className: classes.label, weight: "semi-bold" }, { component: 'span' }), label[1])) }));
657
+ const TableHeaderRow = (props) => {
658
+ const { children, ...restProps } = props;
659
+ return (React.createElement("tr", { "data-table-element": 'header-row', ...restProps }, children));
619
660
  };
620
661
 
621
- var TableControlsContainer = function (props) {
622
- var showTitle = props.showTitle, showGlobalSearch = props.showGlobalSearch, showColumnFilter = props.showColumnFilter;
623
- var gridTemplateAreas;
624
- switch (true) {
625
- case showTitle && showGlobalSearch && showColumnFilter:
626
- gridTemplateAreas = "\n \"title .\"\n \"globalFilter columnFilter\"\n ";
627
- break;
628
- case showTitle && !showGlobalSearch && showColumnFilter:
629
- gridTemplateAreas = "\n \"title columnFilter\"\n ";
630
- break;
631
- case !showTitle && showGlobalSearch && showColumnFilter:
632
- gridTemplateAreas = "\n \"globalFilter columnFilter\"\n ";
633
- break;
634
- case showTitle && !showGlobalSearch && !showColumnFilter:
635
- gridTemplateAreas = "\n \"title .\"\n ";
636
- break;
637
- case !showTitle && !showGlobalSearch && showColumnFilter:
638
- gridTemplateAreas = "\n \". columnFilter\"\n ";
639
- break;
640
- case !showTitle && showGlobalSearch && !showColumnFilter:
641
- gridTemplateAreas = "\n \"globalFilter .\"\n ";
642
- break;
643
- case showTitle && showGlobalSearch && !showColumnFilter:
644
- gridTemplateAreas = "\n \"title .\"\n \"globalFilter .\"\n ";
645
- break;
646
- }
647
- return (React.createElement(core.Box, { display: "grid", gridTemplateColumns: "repeat(2, minmax(150px, 1fr))", gridTemplateAreas: gridTemplateAreas, gridGap: 16, marginBottom: 3 }, props.children));
648
- };
662
+ const useTableRowStyles = core.makeStyles((theme) => ({
663
+ root: () => ({
664
+ '&:nth-child(even)': {
665
+ backgroundColor: theme.palette.grey[100],
666
+ },
667
+ }),
668
+ }));
649
669
 
650
- var ColumnFilterResetButton = function (props) {
651
- var _a = props.children, children = _a === void 0 ? 'Clear All' : _a, restProps = tslib.__rest(props, ["children"]);
652
- return (React.createElement(adminUi.Button, tslib.__assign({ variant: "text", textTransform: "none" }, restProps), children));
670
+ const TableRow = (props) => {
671
+ const { children, ...restProps } = props;
672
+ const { root } = useTableRowStyles(props);
673
+ return (React.createElement("tr", { "data-table-element": "body-row", className: root, ...restProps }, children));
653
674
  };
654
675
 
655
- var Table = function (_a) {
656
- var title = _a.title, data = _a.data, columns = _a.columns, _b = _a.enableSortingRemoval, enableSortingRemoval = _b === void 0 ? true : _b, _c = _a.fullWidth, fullWidth = _c === void 0 ? true : _c, loading = _a.loading, _d = _a.searchable, searchable = _d === void 0 ? false : _d, _f = _a.sortable, sortable = _f === void 0 ? false : _f, externalFilterState = _a.filterState, externalGlobalFilterState = _a.globalFilterState, externalPaginationState = _a.paginationState, externalSortingState = _a.sortingState, externalVisibilityState = _a.visibilityState, _g = _a.paginated, paginated = _g === void 0 ? true : _g, pageCount = _a.pageCount, GlobalFilterProps = _a.GlobalFilterProps, Empty = _a.Empty, idBase = _a.idBase, stageFilterSelections = _a.stageFilterSelections;
657
- var classes = useStyles$6({ fullWidth: fullWidth });
658
- var rootRef = React.useRef(null);
676
+ const useStyles = core.makeStyles(({ typography }) => ({
677
+ root: ({ fullWidth }) => ({
678
+ display: fullWidth ? 'flex' : 'inline-flex',
679
+ flexDirection: 'column',
680
+ }),
681
+ table: ({ fullWidth }) => ({
682
+ borderCollapse: 'collapse',
683
+ ...(fullWidth && { width: '100%' }),
684
+ // @ts-expect-error - todo.
685
+ ...typography[tableConstants.tableTypography],
686
+ }),
687
+ tableContainer: () => ({
688
+ maxWidth: '100%',
689
+ overflowX: 'auto',
690
+ overflowY: 'hidden',
691
+ }),
692
+ }));
693
+
694
+ const Table = ({ title, data, columns, enableSortingRemoval = true, fullWidth = true, loading, searchable = false, sortable = false, filterState: externalFilterState, globalFilterState: externalGlobalFilterState, paginationState: externalPaginationState, sortingState: externalSortingState, visibilityState: externalVisibilityState, paginated = true, pageCount, GlobalFilterProps, Empty, idBase, stageFilterSelections, }) => {
695
+ const classes = useStyles({ fullWidth });
696
+ const rootRef = React.useRef(null);
659
697
  // Prepare Empty State
660
- var isEmpty = data.length === 0;
661
- var isEmptyComponentValid = Empty && React.isValidElement(React.createElement(Empty));
698
+ const isEmpty = data.length === 0;
699
+ const isEmptyComponentValid = Empty && React.isValidElement(React.createElement(Empty));
662
700
  // Prepare Sorting
663
- var _h = externalSortingState || [], sorting = _h[0], setSorting = _h[1];
664
- var isControlledColumnSort = Boolean(externalSortingState);
665
- var controlledColumnSortOptions = { onSortingChange: setSorting, manualSorting: true };
701
+ const [sorting, setSorting] = externalSortingState || [];
702
+ const isControlledColumnSort = Boolean(externalSortingState);
703
+ const controlledColumnSortOptions = { onSortingChange: setSorting, manualSorting: true };
666
704
  // Prepare Global Filtering
667
- var _j = externalGlobalFilterState || [], globalFilter = _j[0], setGlobalFilter = _j[1];
668
- var isControlledGlobalFilter = Boolean(externalGlobalFilterState);
669
- var controlledGlobalFilterOptions = { onGlobalFilterChange: setGlobalFilter, manualFiltering: true };
705
+ const [globalFilter, setGlobalFilter] = externalGlobalFilterState || [];
706
+ const isControlledGlobalFilter = Boolean(externalGlobalFilterState);
707
+ const controlledGlobalFilterOptions = { onGlobalFilterChange: setGlobalFilter, manualFiltering: true };
670
708
  // Prepare ColumnFiltering
671
- var _k = externalFilterState || [], columnFilters = _k[0], setColumnFilters = _k[1];
672
- var isControlledColumnFilters = Boolean(externalFilterState);
673
- var controlledColumnFiltersOptions = { onColumnFiltersChange: setColumnFilters, manualFiltering: true };
709
+ const [columnFilters, setColumnFilters] = externalFilterState || [];
710
+ const isControlledColumnFilters = Boolean(externalFilterState);
711
+ const controlledColumnFiltersOptions = { onColumnFiltersChange: setColumnFilters, manualFiltering: true };
674
712
  // Prepare Pagination
675
- var _l = externalPaginationState || [], pagination = _l[0], setPagination = _l[1];
676
- var isControlledPagination = Boolean(externalPaginationState && pageCount);
677
- var controlledPaginationOptions = { manualPagination: true, onPaginationChange: setPagination, pageCount: pageCount };
713
+ const [pagination, setPagination] = externalPaginationState || [];
714
+ const isControlledPagination = Boolean(externalPaginationState && pageCount);
715
+ const controlledPaginationOptions = { manualPagination: true, onPaginationChange: setPagination, pageCount };
678
716
  // Prepare Column Visibility
679
- var columnVisibility = (externalVisibilityState || [])[0];
680
- var isControlledColumnVisibility = Boolean(externalVisibilityState);
717
+ const [columnVisibility] = externalVisibilityState || [];
718
+ const isControlledColumnVisibility = Boolean(externalVisibilityState);
681
719
  // Init table instance
682
- var table = reactTable.useReactTable(tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign({ data: data, columns: columns, state: tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign({}, (isControlledPagination && { pagination: pagination })), (isControlledGlobalFilter && { globalFilter: globalFilter })), (isControlledColumnFilters && { columnFilters: columnFilters })), (isControlledColumnVisibility && { columnVisibility: columnVisibility })), (isControlledColumnSort && { sorting: sorting })), enableSorting: sortable, enableSortingRemoval: enableSortingRemoval, globalFilterFn: coercedValueIncludesString, getCoreRowModel: reactTable.getCoreRowModel(), getSortedRowModel: reactTable.getSortedRowModel(), getFilteredRowModel: reactTable.getFilteredRowModel() }, (paginated && { getPaginationRowModel: reactTable.getPaginationRowModel() })), (isControlledPagination && controlledPaginationOptions)), (isControlledGlobalFilter && controlledGlobalFilterOptions)), (isControlledColumnFilters && controlledColumnFiltersOptions)), (isControlledColumnSort && controlledColumnSortOptions)), { meta: { idBase: idBase } }));
683
- var _m = useColumnFilters(table), selectedColumnFilters = _m.selectedColumnFilters, hasColumnFilters = _m.hasColumnFilters, deselectColumnFilter = _m.deselectColumnFilter, formatSelectedFilterText = _m.formatSelectedFilterText, resetColumnFilters = _m.resetColumnFilters;
720
+ const table = reactTable.useReactTable({
721
+ data,
722
+ columns,
723
+ state: {
724
+ ...(isControlledPagination && { pagination }),
725
+ ...(isControlledGlobalFilter && { globalFilter }),
726
+ ...(isControlledColumnFilters && { columnFilters }),
727
+ ...(isControlledColumnVisibility && { columnVisibility }),
728
+ ...(isControlledColumnSort && { sorting }),
729
+ },
730
+ enableSorting: sortable,
731
+ enableSortingRemoval,
732
+ globalFilterFn: coercedValueIncludesString,
733
+ getCoreRowModel: reactTable.getCoreRowModel(),
734
+ getSortedRowModel: reactTable.getSortedRowModel(),
735
+ getFilteredRowModel: reactTable.getFilteredRowModel(),
736
+ ...(paginated && { getPaginationRowModel: reactTable.getPaginationRowModel() }),
737
+ ...(isControlledPagination && controlledPaginationOptions),
738
+ ...(isControlledGlobalFilter && controlledGlobalFilterOptions),
739
+ ...(isControlledColumnFilters && controlledColumnFiltersOptions),
740
+ ...(isControlledColumnSort && controlledColumnSortOptions),
741
+ meta: { idBase: idBase },
742
+ });
743
+ const { selectedColumnFilters, hasColumnFilters, deselectColumnFilter, formatSelectedFilterText, resetColumnFilters, } = useColumnFilters(table);
684
744
  // stagedColumnFilters is only used when stageFilterSelections is enabled
685
- var stagedColumnFilters = useStagedColumnFilters(selectedColumnFilters);
686
- var handlePagination = function (_e, pageNumber) {
687
- var pageIndex = pageNumber - 1;
745
+ const stagedColumnFilters = useStagedColumnFilters(selectedColumnFilters);
746
+ const handlePagination = (_e, pageNumber) => {
747
+ const pageIndex = pageNumber - 1;
688
748
  table.setPageIndex(pageIndex);
689
749
  };
690
- var showTitle = Boolean(title);
691
- var showGlobalSearch = Boolean(searchable || isControlledGlobalFilter);
692
- var showColumnFilter = Boolean(hasColumnFilters);
693
- var showControls = Boolean(showTitle || showGlobalSearch || showColumnFilter);
694
- return (React.createElement(TableContext.Provider, { value: { table: table, stagedColumnFilters: stagedColumnFilters, stageFilterSelections: stageFilterSelections } },
695
- React.createElement(commonUi.Box, tslib.__assign({ className: classes.root }, { ref: rootRef }, { "data-table-element": "root" }, (table.getPageCount() > 1 && {
696
- minHeight: getTableMinHeight(rootRef, table.getState().pagination.pageSize),
697
- })),
750
+ const showTitle = Boolean(title);
751
+ const showGlobalSearch = Boolean(searchable || isControlledGlobalFilter);
752
+ const showColumnFilter = Boolean(hasColumnFilters);
753
+ const showControls = Boolean(showTitle || showGlobalSearch || showColumnFilter);
754
+ return (React.createElement(TableContext.Provider, { value: { table, stagedColumnFilters, stageFilterSelections } },
755
+ React.createElement(commonUi.Box, { className: classes.root, ref: rootRef, "data-table-element": "root", ...(table.getPageCount() > 1 && {
756
+ minHeight: getTableMinHeight(rootRef, table.getState().pagination.pageSize),
757
+ }) },
698
758
  showControls && (React.createElement(commonUi.Box, null,
699
759
  React.createElement(TableControlsContainer, { showTitle: showTitle, showGlobalSearch: showGlobalSearch, showColumnFilter: showColumnFilter },
700
760
  showTitle && (React.createElement(core.Typography, { style: { gridArea: 'title', alignSelf: 'center', fontSize: '18px', lineHeight: '27px' } }, title)),
701
- showGlobalSearch && (React.createElement(GlobalFilter, tslib.__assign({}, GlobalFilterProps, { value: table.getState().globalFilter, setValue: table.setGlobalFilter }))),
761
+ showGlobalSearch && (React.createElement(GlobalFilter, { ...GlobalFilterProps, value: table.getState().globalFilter, setValue: table.setGlobalFilter })),
702
762
  showColumnFilter && React.createElement(FilterPanel, null)),
703
763
  React.createElement(commonUi.Box, { display: "flex", flexWrap: "wrap", gridGap: 8 },
704
- selectedColumnFilters.map(function (selectedColumnFilter, i) { return (React.createElement(ColumnFilterChip, { key: "selected-column-filter-chip-" + i, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick: function (columnFilter) {
764
+ selectedColumnFilters.map((selectedColumnFilter, i) => (React.createElement(ColumnFilterChip, { key: `selected-column-filter-chip-${i}`, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick: (columnFilter) => {
705
765
  if (stageFilterSelections) {
706
766
  stagedColumnFilters.delete(columnFilter);
707
767
  }
708
768
  deselectColumnFilter(columnFilter);
709
- } })); }),
710
- selectedColumnFilters.length >= 1 && (React.createElement(ColumnFilterResetButton, { onClick: function () {
769
+ } }))),
770
+ selectedColumnFilters.length >= 1 && (React.createElement(ColumnFilterResetButton, { onClick: () => {
711
771
  if (stageFilterSelections) {
712
772
  stagedColumnFilters.clear();
713
773
  }
@@ -715,8 +775,8 @@ var Table = function (_a) {
715
775
  } }))))),
716
776
  React.createElement(commonUi.Box, { className: classes.tableContainer, flexGrow: loading || isEmpty ? 0 : 1 },
717
777
  React.createElement("table", { className: classes.table },
718
- React.createElement(TableHeader, null, table.getHeaderGroups().map(function (headerGroup) { return (React.createElement(TableHeaderRow, { key: headerGroup.id }, headerGroup.headers.map(function (header) { return (React.createElement(TableHeaderCell, { key: header.id, context: header.getContext() }, reactTable.flexRender(header.column.columnDef.header, header.getContext()))); }))); })),
719
- !loading && (React.createElement(TableBody, null, table.getRowModel().rows.map(function (row) { return (React.createElement(TableRow, { key: row.id }, row.getVisibleCells().map(function (cell) { return (React.createElement(TableCell, { key: cell.id }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))); }))); }))))),
778
+ React.createElement(TableHeader, null, table.getHeaderGroups().map((headerGroup) => (React.createElement(TableHeaderRow, { key: headerGroup.id }, headerGroup.headers.map((header) => (React.createElement(TableHeaderCell, { key: header.id, context: header.getContext() }, reactTable.flexRender(header.column.columnDef.header, header.getContext())))))))),
779
+ !loading && (React.createElement(TableBody, null, table.getRowModel().rows.map((row) => (React.createElement(TableRow, { key: row.id }, row.getVisibleCells().map((cell) => (React.createElement(TableCell, { key: cell.id }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))))))))))),
720
780
  isEmpty && isEmptyComponentValid && Empty && !loading && (React.createElement(commonUi.Box, { display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", p: 2, flexGrow: 1 }, React.createElement(Empty))),
721
781
  loading && (React.createElement(commonUi.Box, { display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", p: 2, flexGrow: 1 },
722
782
  React.createElement(commonUi.CircularProgress, { size: 80, color: "inherit" }))),
@@ -724,48 +784,6 @@ var Table = function (_a) {
724
784
  React.createElement(lab.Pagination, { page: table.getState().pagination.pageIndex + 1, count: table.getPageCount(), onChange: handlePagination, disabled: loading }))))));
725
785
  };
726
786
 
727
- var validateAction = function (action) {
728
- var icon = action.icon, label = action.label, onClick = action.onClick;
729
- var onClickIsValid = typeof onClick === 'function';
730
- var labelIsValid = typeof label === 'string';
731
- var iconIsValid = icon && React.isValidElement(React.createElement(icon));
732
- return onClickIsValid && labelIsValid && iconIsValid;
733
- };
734
-
735
- var RowActions = function (props) {
736
- var context = props.context, actions = props.actions;
737
- var validActions = actions.filter(validateAction);
738
- var _a = React.useState(null), anchorEl = _a[0], setAnchorEl = _a[1];
739
- var openMenu = function (event) {
740
- setAnchorEl(event.currentTarget);
741
- };
742
- var closeMenu = function () {
743
- setAnchorEl(null);
744
- };
745
- var actionsCount = validActions.length;
746
- var mainActions;
747
- var overflowActions;
748
- if (actionsCount <= 3) {
749
- mainActions = validActions;
750
- }
751
- else {
752
- var firstAction = validActions[0], secondAction = validActions[1], restActions = validActions.slice(2);
753
- mainActions = [firstAction, secondAction];
754
- overflowActions = restActions;
755
- }
756
- return (React.createElement(commonUi.Box, { display: "flex" },
757
- mainActions.map(function (_a) {
758
- var label = _a.label, onClick = _a.onClick, icon = _a.icon, restProps = tslib.__rest(_a, ["label", "onClick", "icon"]);
759
- return (React.createElement(commonUi.Tooltip, { title: label, key: label },
760
- React.createElement(commonUi.IconButton, tslib.__assign({ size: "small", onClick: function () { return onClick(context); } }, restProps),
761
- React.createElement(commonUi.Icon, { icon: icon }))));
762
- }),
763
- overflowActions && (React.createElement(React.Fragment, null,
764
- React.createElement(commonUi.IconButton, { size: "small", onClick: openMenu },
765
- React.createElement(commonUi.Icon, { icon: webIcons.More })),
766
- React.createElement(commonUi.Menu, { anchorEl: anchorEl, open: Boolean(anchorEl), onClose: closeMenu }, overflowActions.map(function (action) { return (React.createElement(commonUi.MenuItem, { key: action.label, onClick: function () { return action.onClick(context); } }, action.label)); }))))));
767
- };
768
-
769
787
  exports.GlobalFilter = GlobalFilter;
770
788
  exports.RowActions = RowActions;
771
789
  exports.Table = Table;