material-react-table 0.1.0 → 0.2.0

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 (78) hide show
  1. package/dist/MaterialReactTable.d.ts +51 -20
  2. package/dist/{MRT_TableBody.d.ts → body/MRT_TableBody.d.ts} +0 -0
  3. package/dist/{MRT_TableBodyCell.d.ts → body/MRT_TableBodyCell.d.ts} +1 -1
  4. package/dist/{MRT_TableBodyRow.d.ts → body/MRT_TableBodyRow.d.ts} +1 -1
  5. package/dist/{MRT_TableDetailPanel.d.ts → body/MRT_TableDetailPanel.d.ts} +1 -1
  6. package/dist/buttons/MRT_ExpandAllButton.d.ts +5 -0
  7. package/dist/{MRT_TableExpandButton.d.ts → buttons/MRT_ExpandButton.d.ts} +2 -2
  8. package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +5 -0
  9. package/dist/buttons/MRT_ToggleColumnActionMenuButton.d.ts +7 -0
  10. package/dist/{MRT_TableFooter.d.ts → footer/MRT_TableFooter.d.ts} +0 -0
  11. package/dist/{MRT_TableFooterCell.d.ts → footer/MRT_TableFooterCell.d.ts} +0 -0
  12. package/dist/{MRT_TableFooterRow.d.ts → footer/MRT_TableFooterRow.d.ts} +1 -1
  13. package/dist/{MRT_TablePagination.d.ts → footer/MRT_TablePagination.d.ts} +0 -0
  14. package/dist/{MRT_TableHead.d.ts → head/MRT_TableHead.d.ts} +0 -0
  15. package/dist/{MRT_TableHeadCell.d.ts → head/MRT_TableHeadCell.d.ts} +1 -0
  16. package/dist/{MRT_TableHeadRow.d.ts → head/MRT_TableHeadRow.d.ts} +1 -1
  17. package/dist/inputs/MRT_FilterTextField.d.ts +7 -0
  18. package/dist/inputs/MRT_SearchTextField.d.ts +5 -0
  19. package/dist/inputs/MRT_SelectAllCheckbox.d.ts +2 -0
  20. package/dist/inputs/MRT_SelectCheckbox.d.ts +7 -0
  21. package/dist/material-react-table.cjs.development.js +755 -82
  22. package/dist/material-react-table.cjs.development.js.map +1 -1
  23. package/dist/material-react-table.cjs.production.min.js +1 -1
  24. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  25. package/dist/material-react-table.esm.js +759 -86
  26. package/dist/material-react-table.esm.js.map +1 -1
  27. package/dist/menus/MRT_ColumnActionMenu.d.ts +9 -0
  28. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +7 -0
  29. package/dist/{MRT_Table.d.ts → table/MRT_Table.d.ts} +0 -0
  30. package/dist/{MRT_TableContainer.d.ts → table/MRT_TableContainer.d.ts} +0 -0
  31. package/dist/table/MRT_TableSpacerCell.d.ts +6 -0
  32. package/dist/toolbar/MRT_Toolbar.d.ts +5 -0
  33. package/dist/useMaterialReactTable.d.ts +7 -10
  34. package/dist/utils/localization.d.ts +15 -0
  35. package/dist/utils/overrideWarnings.d.ts +1 -0
  36. package/dist/utils/useMRTCalcs.d.ts +11 -0
  37. package/package.json +13 -11
  38. package/src/MaterialReactTable.tsx +117 -31
  39. package/src/body/MRT_TableBody.tsx +57 -0
  40. package/src/{MRT_TableBodyCell.tsx → body/MRT_TableBodyCell.tsx} +11 -1
  41. package/src/body/MRT_TableBodyRow.tsx +56 -0
  42. package/src/{MRT_TableDetailPanel.tsx → body/MRT_TableDetailPanel.tsx} +15 -4
  43. package/src/buttons/MRT_ExpandAllButton.tsx +40 -0
  44. package/src/buttons/MRT_ExpandButton.tsx +39 -0
  45. package/src/buttons/MRT_ShowHideColumnsButton.tsx +43 -0
  46. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +49 -0
  47. package/src/footer/MRT_TableFooter.tsx +36 -0
  48. package/src/{MRT_TableFooterCell.tsx → footer/MRT_TableFooterCell.tsx} +8 -0
  49. package/src/footer/MRT_TableFooterRow.tsx +44 -0
  50. package/src/{MRT_TablePagination.tsx → footer/MRT_TablePagination.tsx} +7 -2
  51. package/src/head/MRT_TableHead.tsx +38 -0
  52. package/src/head/MRT_TableHeadCell.tsx +94 -0
  53. package/src/head/MRT_TableHeadRow.tsx +63 -0
  54. package/src/inputs/MRT_FilterTextField.tsx +59 -0
  55. package/src/inputs/MRT_SearchTextField.tsx +65 -0
  56. package/src/inputs/MRT_SelectAllCheckbox.tsx +15 -0
  57. package/src/inputs/MRT_SelectCheckbox.tsx +26 -0
  58. package/src/menus/MRT_ColumnActionMenu.tsx +82 -0
  59. package/src/menus/MRT_ShowHideColumnsMenu.tsx +34 -0
  60. package/src/table/MRT_Table.tsx +21 -0
  61. package/src/{MRT_TableContainer.tsx → table/MRT_TableContainer.tsx} +4 -2
  62. package/src/table/MRT_TableSpacerCell.tsx +10 -0
  63. package/src/toolbar/MRT_Toolbar.tsx +39 -0
  64. package/src/useMaterialReactTable.tsx +45 -23
  65. package/src/utils/localization.ts +29 -0
  66. package/src/utils/overrideWarnings.ts +41 -0
  67. package/src/utils/useMRTCalcs.tsx +42 -0
  68. package/dist/defaults.d.ts +0 -2
  69. package/src/MRT_Table.tsx +0 -20
  70. package/src/MRT_TableBody.tsx +0 -19
  71. package/src/MRT_TableBodyRow.tsx +0 -27
  72. package/src/MRT_TableExpandButton.tsx +0 -25
  73. package/src/MRT_TableFooter.tsx +0 -31
  74. package/src/MRT_TableFooterRow.tsx +0 -22
  75. package/src/MRT_TableHead.tsx +0 -25
  76. package/src/MRT_TableHeadCell.tsx +0 -27
  77. package/src/MRT_TableHeadRow.tsx +0 -22
  78. package/src/defaults.ts +0 -11
@@ -8,7 +8,16 @@ var React = require('react');
8
8
  var React__default = _interopDefault(React);
9
9
  var reactTable = require('react-table');
10
10
  var material = require('@mui/material');
11
- var ArrowForwardIosIcon = _interopDefault(require('@mui/icons-material/ArrowForwardIos'));
11
+ var CloseIcon = _interopDefault(require('@mui/icons-material/Close'));
12
+ var FilterIcon = _interopDefault(require('@mui/icons-material/FilterList'));
13
+ var MoreVertIcon = _interopDefault(require('@mui/icons-material/MoreVert'));
14
+ var ClearAllIcon = _interopDefault(require('@mui/icons-material/ClearAll'));
15
+ var SortIcon = _interopDefault(require('@mui/icons-material/Sort'));
16
+ var VisibilityOffIcon = _interopDefault(require('@mui/icons-material/VisibilityOff'));
17
+ var ArrowRightIcon = _interopDefault(require('@mui/icons-material/KeyboardDoubleArrowDown'));
18
+ var ViewColumnIcon = _interopDefault(require('@mui/icons-material/ViewColumn'));
19
+ var ExpandMoreIcon = _interopDefault(require('@mui/icons-material/ExpandMore'));
20
+ var SearchIcon = _interopDefault(require('@mui/icons-material/Search'));
12
21
 
13
22
  function _extends() {
14
23
  _extends = Object.assign || function (target) {
@@ -43,85 +52,506 @@ function _objectWithoutPropertiesLoose(source, excluded) {
43
52
  return target;
44
53
  }
45
54
 
46
- var defaultOptions = {
47
- enableFilters: false,
48
- enablePagination: 'bottom',
49
- enableSearch: true,
50
- enableSorting: true,
51
- showFooter: true,
52
- showHead: true,
53
- showToolbar: true
55
+ var useMRTCalcs = function useMRTCalcs(_ref) {
56
+ var tableInstance = _ref.tableInstance;
57
+ var anyRowsCanExpand = React.useMemo(function () {
58
+ return tableInstance.rows.some(function (row) {
59
+ return row.canExpand;
60
+ });
61
+ }, [tableInstance.rows]);
62
+ var anyRowsExpanded = React.useMemo(function () {
63
+ return tableInstance.rows.some(function (row) {
64
+ return row.isExpanded;
65
+ });
66
+ }, [tableInstance.rows]);
67
+ var maxColumnDepth = React.useMemo(function () {
68
+ var maxDepth = 1;
69
+ tableInstance.columns.forEach(function (column) {
70
+ var _column$columns;
71
+
72
+ if ((_column$columns = column.columns) != null && _column$columns.length) {
73
+ maxDepth = Math.max(maxDepth, column.columns.length);
74
+ }
75
+ });
76
+ return maxDepth - 1;
77
+ }, [tableInstance.columns]);
78
+ return {
79
+ anyRowsCanExpand: anyRowsCanExpand,
80
+ anyRowsExpanded: anyRowsExpanded,
81
+ maxColumnDepth: maxColumnDepth
82
+ };
83
+ };
84
+
85
+ var showOverrideWarnings = function showOverrideWarnings(props) {
86
+ if (props.OverrideTableBodyCellComponent) {
87
+ showWarning('TableCell', 'props');
88
+ }
89
+
90
+ if (props.OverrideTableBodyComponent) {
91
+ showWarning('TableBody', 'tableBodyProps');
92
+ }
93
+
94
+ if (props.OverrideTableBodyRowComponent) {
95
+ showWarning('TableRow', 'props');
96
+ }
97
+
98
+ if (props.OverrideTableDetailPanelComponent) {
99
+ showWarning('Detail Panel', 'tableDetailPanelProps');
100
+ }
101
+
102
+ if (props.OverrideTableFooterComponent) {
103
+ showWarning('TableFooter', 'tableFooterProps');
104
+ }
105
+
106
+ if (props.OverrideTableFooterCellComponent) {
107
+ showWarning('TableCell', 'props');
108
+ }
109
+
110
+ if (props.OverrideTableFooterRowComponent) {
111
+ showWarning('TableRow', 'props');
112
+ }
113
+
114
+ if (props.OverrideTableHeadComponent) {
115
+ showWarning('TableHead', 'tableHeadProps');
116
+ }
117
+
118
+ if (props.OverrideTableHeadRowComponent) {
119
+ showWarning('TableRow', 'props');
120
+ }
121
+
122
+ if (props.OverrideTablePaginationComponent) {
123
+ showWarning('', 'props');
124
+ }
125
+
126
+ if (props.OverrideTableToolbarComponent) {
127
+ showWarning('TableBodyCell', 'props');
128
+ }
129
+ };
130
+
131
+ var showWarning = function showWarning(componentName, propsName) {
132
+ console.warn("Caution.\nYou are overriding the built-in Mui " + componentName + " Component in material-react-table.\n\nYou should only use this as a last resort!\n\nConsider customizing the Mui " + componentName + " Component instead with " + propsName + ".");
54
133
  };
55
134
 
56
- var _excluded = ["children", "columns", "data", "options"];
57
- var MaterialReactTableContext = /*#__PURE__*/React.createContext({});
135
+ var _excluded = ["children", "columns", "data", "surpressOverrideWarnings"];
136
+
137
+ var MaterialReactTableContext = /*#__PURE__*/function () {
138
+ return React.createContext({});
139
+ }();
140
+
58
141
  var MaterialReactTableProvider = function MaterialReactTableProvider(_ref) {
59
142
  var children = _ref.children,
60
143
  columns = _ref.columns,
61
144
  data = _ref.data,
62
- options = _ref.options,
145
+ surpressOverrideWarnings = _ref.surpressOverrideWarnings,
63
146
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
64
147
 
65
148
  var tableInstance = reactTable.useTable({
66
149
  columns: columns,
67
150
  data: data
68
- }, reactTable.useSortBy, reactTable.useExpanded, reactTable.usePagination);
69
- return React__default.createElement(MaterialReactTableContext.Provider, {
151
+ }, reactTable.useFlexLayout, reactTable.useResizeColumns, reactTable.useFilters, reactTable.useGlobalFilter, reactTable.useSortBy, reactTable.useExpanded, reactTable.usePagination, reactTable.useRowSelect);
152
+ var mrtCalcs = useMRTCalcs({
153
+ tableInstance: tableInstance
154
+ });
155
+
156
+ if ( !surpressOverrideWarnings) {
157
+ showOverrideWarnings(rest);
158
+ }
159
+
160
+ return React__default.createElement(MaterialReactTableContext.Provider //@ts-ignore
161
+ , {
162
+ //@ts-ignore
70
163
  value: _extends({
71
- options: _extends({}, defaultOptions, options),
164
+ columns: columns,
165
+ data: data,
72
166
  tableInstance: tableInstance
73
- }, rest)
167
+ }, mrtCalcs, rest)
74
168
  }, children);
75
169
  };
76
170
  var useMaterialReactTable = function useMaterialReactTable() {
77
- return React.useContext(MaterialReactTableContext);
171
+ return (//@ts-ignore
172
+ React.useContext(MaterialReactTableContext)
173
+ );
174
+ };
175
+
176
+ var MRT_FilterTextfield = function MRT_FilterTextfield(_ref) {
177
+ var column = _ref.column;
178
+
179
+ var _useMaterialReactTabl = useMaterialReactTable(),
180
+ localization = _useMaterialReactTabl.localization;
181
+
182
+ var _useState = React.useState(''),
183
+ filterValue = _useState[0],
184
+ setFilterValue = _useState[1];
185
+
186
+ var handleChange = reactTable.useAsyncDebounce(function (value) {
187
+ column.setFilter(value != null ? value : undefined);
188
+ }, 150);
189
+
190
+ var handleClear = function handleClear() {
191
+ setFilterValue('');
192
+ column.setFilter(undefined);
193
+ };
194
+
195
+ return React__default.createElement(material.TextField, {
196
+ margin: "dense",
197
+ placeholder: localization == null ? void 0 : localization.filterTextFieldPlaceholder,
198
+ onChange: function onChange(e) {
199
+ setFilterValue(e.target.value);
200
+ handleChange(e.target.value);
201
+ },
202
+ onClick: function onClick(e) {
203
+ return e.stopPropagation();
204
+ },
205
+ value: filterValue != null ? filterValue : '',
206
+ variant: "standard",
207
+ InputProps: {
208
+ startAdornment: React__default.createElement(material.InputAdornment, {
209
+ position: "start"
210
+ }, React__default.createElement(FilterIcon, null)),
211
+ endAdornment: React__default.createElement(material.InputAdornment, {
212
+ position: "end"
213
+ }, React__default.createElement(material.IconButton, {
214
+ "aria-label": localization == null ? void 0 : localization.filterTextFieldClearButtonTitle,
215
+ disabled: (filterValue == null ? void 0 : filterValue.length) === 0,
216
+ onClick: handleClear,
217
+ size: "small",
218
+ title: localization == null ? void 0 : localization.filterTextFieldClearButtonTitle
219
+ }, React__default.createElement(CloseIcon, {
220
+ fontSize: "small"
221
+ })))
222
+ }
223
+ });
224
+ };
225
+
226
+ var MenuItem = /*#__PURE__*/material.styled(material.MenuItem)({
227
+ display: 'flex',
228
+ gap: '0.75rem'
229
+ });
230
+ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
231
+ var anchorEl = _ref.anchorEl,
232
+ column = _ref.column,
233
+ setAnchorEl = _ref.setAnchorEl;
234
+
235
+ var _useMaterialReactTabl = useMaterialReactTable(),
236
+ enableColumnHiding = _useMaterialReactTabl.enableColumnHiding,
237
+ enableSorting = _useMaterialReactTabl.enableSorting,
238
+ localization = _useMaterialReactTabl.localization;
239
+
240
+ var handleClearSort = function handleClearSort() {
241
+ column.clearSortBy();
242
+ setAnchorEl(null);
243
+ };
244
+
245
+ var handleSortAsc = function handleSortAsc() {
246
+ column.toggleSortBy(false);
247
+ setAnchorEl(null);
248
+ };
249
+
250
+ var handleSortDesc = function handleSortDesc() {
251
+ column.toggleSortBy(true);
252
+ setAnchorEl(null);
253
+ };
254
+
255
+ var handleHideColumn = function handleHideColumn() {
256
+ column.toggleHidden();
257
+ setAnchorEl(null);
258
+ };
259
+
260
+ return React__default.createElement(material.Menu, {
261
+ anchorEl: anchorEl,
262
+ open: !!anchorEl,
263
+ onClose: function onClose() {
264
+ return setAnchorEl(null);
265
+ }
266
+ }, enableSorting && React__default.createElement(React__default.Fragment, null, React__default.createElement(MenuItem, {
267
+ disabled: !column.isSorted,
268
+ onClick: handleClearSort
269
+ }, React__default.createElement(ClearAllIcon, null), " ", localization == null ? void 0 : localization.columnActionMenuItemClearSort), React__default.createElement(MenuItem, {
270
+ disabled: column.isSorted && !column.isSortedDesc,
271
+ onClick: handleSortAsc
272
+ }, React__default.createElement(SortIcon, null), " ", localization == null ? void 0 : localization.columnActionMenuItemSortAsc), React__default.createElement(MenuItem, {
273
+ disabled: column.isSorted && column.isSortedDesc,
274
+ onClick: handleSortDesc
275
+ }, React__default.createElement(SortIcon, {
276
+ style: {
277
+ transform: 'rotate(180deg) scaleX(-1)'
278
+ }
279
+ }), ' ', localization == null ? void 0 : localization.columnActionMenuItemSortDesc), React__default.createElement(material.Divider, null)), enableColumnHiding && React__default.createElement(MenuItem, {
280
+ onClick: handleHideColumn
281
+ }, React__default.createElement(VisibilityOffIcon, null), " ", localization == null ? void 0 : localization.columnActionMenuItemHideColumn));
78
282
  };
79
283
 
284
+ var IconButton = /*#__PURE__*/material.styled(material.IconButton)({
285
+ opacity: 0.2,
286
+ transition: 'opacity 0.2s',
287
+ marginRight: '2px',
288
+ '&:hover': {
289
+ opacity: 1
290
+ }
291
+ });
292
+ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
293
+ var column = _ref.column;
294
+
295
+ var _useMaterialReactTabl = useMaterialReactTable(),
296
+ localization = _useMaterialReactTabl.localization;
297
+
298
+ var _useState = React.useState(null),
299
+ anchorEl = _useState[0],
300
+ setAnchorEl = _useState[1];
301
+
302
+ var handleClick = function handleClick(event) {
303
+ event.stopPropagation();
304
+ event.preventDefault();
305
+ setAnchorEl(event.currentTarget);
306
+ };
307
+
308
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(IconButton, {
309
+ "aria-label": localization == null ? void 0 : localization.columnActionMenuButtonTitle,
310
+ title: localization == null ? void 0 : localization.columnActionMenuButtonTitle,
311
+ onClick: handleClick,
312
+ size: "small"
313
+ }, React__default.createElement(MoreVertIcon, null)), React__default.createElement(MRT_ColumnActionMenu, {
314
+ anchorEl: anchorEl,
315
+ column: column,
316
+ setAnchorEl: setAnchorEl
317
+ }));
318
+ };
319
+
320
+ var TableCell = /*#__PURE__*/material.styled(material.TableCell)({
321
+ fontWeight: 'bold'
322
+ });
323
+ var TableCellContents = /*#__PURE__*/material.styled('div')({
324
+ display: 'grid'
325
+ });
326
+ var TableCellText = /*#__PURE__*/material.styled('div')({
327
+ width: '100%',
328
+ display: 'flex',
329
+ alignItems: 'center',
330
+ justifyContent: 'space-between'
331
+ });
80
332
  var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
81
333
  var _column$columns$lengt, _column$columns;
82
334
 
83
- var column = _ref.column;
335
+ var column = _ref.column,
336
+ index = _ref.index;
337
+
338
+ var _useMaterialReactTabl = useMaterialReactTable(),
339
+ OverrideTableHeadCellComponent = _useMaterialReactTabl.OverrideTableHeadCellComponent,
340
+ enableColumnActions = _useMaterialReactTabl.enableColumnActions,
341
+ enableColumnResizing = _useMaterialReactTabl.enableColumnResizing,
342
+ enableFiltering = _useMaterialReactTabl.enableFiltering,
343
+ showFiltersInColumnHead = _useMaterialReactTabl.showFiltersInColumnHead,
344
+ tableInstance = _useMaterialReactTabl.tableInstance;
345
+
346
+ if (OverrideTableHeadCellComponent) {
347
+ return React__default.createElement(React__default.Fragment, null, OverrideTableHeadCellComponent(column, tableInstance));
348
+ }
349
+
84
350
  var isParentHeader = ((_column$columns$lengt = column == null ? void 0 : (_column$columns = column.columns) == null ? void 0 : _column$columns.length) != null ? _column$columns$lengt : 0) > 0;
85
- return React__default.createElement(material.TableCell, Object.assign({
86
- align: isParentHeader ? 'center' : 'left',
351
+ var isLastColumn = !isParentHeader && index === tableInstance.visibleColumns.length - 1 || isParentHeader && index === column.headers.length - 1;
352
+ return React__default.createElement(TableCell, Object.assign({
353
+ align: isParentHeader ? 'center' : 'left'
354
+ }, column.getHeaderProps()), React__default.createElement(TableCellContents, null, React__default.createElement(TableCellText, {
355
+ style: {
356
+ justifyContent: isParentHeader ? 'center' : undefined
357
+ }
358
+ }, React__default.createElement("span", Object.assign({}, column.getSortByToggleProps()), column.render('Header'), !isParentHeader && column.canSort && React__default.createElement(material.TableSortLabel, {
359
+ active: column.isSorted,
360
+ direction: column.isSortedDesc ? 'desc' : 'asc'
361
+ })), React__default.createElement("span", {
87
362
  style: {
88
- fontWeight: 'bold !important'
363
+ display: 'flex'
364
+ }
365
+ }, enableColumnActions && !isParentHeader && React__default.createElement(MRT_ToggleColumnActionMenuButton, {
366
+ column: column
367
+ }), enableColumnResizing && !isLastColumn && React__default.createElement(material.Divider, Object.assign({
368
+ flexItem: true,
369
+ orientation: "vertical",
370
+ style: {
371
+ borderRightWidth: '2px',
372
+ borderRadius: '2px'
373
+ },
374
+ onDoubleClick: function onDoubleClick() {
375
+ return tableInstance.resetResizing();
376
+ }
377
+ }, column.getResizerProps())))), enableFiltering && column.canFilter && React__default.createElement(material.Collapse, {
378
+ "in": showFiltersInColumnHead
379
+ }, React__default.createElement(MRT_FilterTextfield, {
380
+ column: column
381
+ }))));
382
+ };
383
+
384
+ var MRT_SelectAllCheckbox = function MRT_SelectAllCheckbox() {
385
+ var _useMaterialReactTabl = useMaterialReactTable(),
386
+ tableInstance = _useMaterialReactTabl.tableInstance,
387
+ enableSelectAll = _useMaterialReactTabl.enableSelectAll;
388
+
389
+ return React__default.createElement(material.TableCell, {
390
+ style: {
391
+ width: '2rem',
392
+ padding: '0.5rem'
89
393
  },
90
394
  variant: "head"
91
- }, column.getHeaderProps(column.getSortByToggleProps())), React__default.createElement(material.TableSortLabel, {
92
- active: column.isSorted,
93
- direction: column.isSortedDesc && column.isSortedDesc ? 'desc' : 'asc'
94
- }, column.render('Header')));
395
+ }, enableSelectAll ? React__default.createElement(material.Checkbox, Object.assign({
396
+ "aria-label": ''
397
+ }, tableInstance.getToggleAllPageRowsSelectedProps())) : null);
95
398
  };
96
399
 
97
- var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
98
- var headerGroup = _ref.headerGroup;
400
+ var MRT_ExpandAllButton = function MRT_ExpandAllButton() {
401
+ var _useMaterialReactTabl = useMaterialReactTable(),
402
+ tableInstance = _useMaterialReactTabl.tableInstance,
403
+ localization = _useMaterialReactTabl.localization,
404
+ anyRowsExpanded = _useMaterialReactTabl.anyRowsExpanded;
405
+
406
+ return React__default.createElement(material.TableCell, Object.assign({
407
+ size: "small"
408
+ }, tableInstance.getToggleAllRowsExpandedProps(), {
409
+ style: {
410
+ padding: '0.5rem',
411
+ paddingRight: '0',
412
+ width: tableInstance.expandedDepth + 2 + "rem"
413
+ }
414
+ }), React__default.createElement(material.IconButton, {
415
+ "aria-label": localization == null ? void 0 : localization.expandAllButtonTitle,
416
+ title: localization == null ? void 0 : localization.expandAllButtonTitle
417
+ }, React__default.createElement(ArrowRightIcon, {
418
+ fontSize: "small",
419
+ style: {
420
+ transform: tableInstance.isAllRowsExpanded ? 'rotate(-180deg)' : anyRowsExpanded ? 'rotate(-90deg)' : 'rotate(0)',
421
+ transition: 'transform 0.2s'
422
+ }
423
+ })));
424
+ };
425
+
426
+ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
427
+ var _column$columns;
428
+
429
+ var column = _ref.column;
99
430
 
100
431
  var _useMaterialReactTabl = useMaterialReactTable(),
101
- renderDetailPanel = _useMaterialReactTabl.renderDetailPanel;
432
+ maxColumnDepth = _useMaterialReactTabl.maxColumnDepth;
102
433
 
103
- return React__default.createElement(material.TableRow, Object.assign({}, headerGroup.getHeaderGroupProps()), renderDetailPanel && React__default.createElement(material.TableCell, {
434
+ var isMaxDepth = column.depth === maxColumnDepth;
435
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.MenuItem, {
104
436
  style: {
105
- width: '2rem'
437
+ paddingLeft: column.depth + 1 + "rem"
106
438
  }
107
- }), headerGroup.headers.map(function (column, index) {
108
- return React__default.createElement(MRT_TableHeadCell, {
439
+ }, isMaxDepth ? React__default.createElement(material.FormControlLabel, {
440
+ onChange: function onChange() {
441
+ return isMaxDepth && column.toggleHidden();
442
+ },
443
+ label: column.Header,
444
+ checked: column.isVisible,
445
+ control: React__default.createElement(material.Switch, null)
446
+ }) : React__default.createElement(material.Typography, null, column.Header)), (_column$columns = column.columns) == null ? void 0 : _column$columns.map(function (c, i) {
447
+ return React__default.createElement(MRT_ShowHideColumnsMenu, {
448
+ key: i + "-" + c.id,
449
+ column: c
450
+ });
451
+ }));
452
+ };
453
+
454
+ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton() {
455
+ var _useMaterialReactTabl = useMaterialReactTable(),
456
+ tableInstance = _useMaterialReactTabl.tableInstance,
457
+ localization = _useMaterialReactTabl.localization;
458
+
459
+ var _useState = React.useState(null),
460
+ anchorEl = _useState[0],
461
+ setAnchorEl = _useState[1];
462
+
463
+ var handleClick = function handleClick(event) {
464
+ setAnchorEl(event.currentTarget);
465
+ };
466
+
467
+ return React__default.createElement(material.TableCell, {
468
+ size: "small",
469
+ style: {
470
+ width: '2rem',
471
+ padding: '0.75rem 0'
472
+ }
473
+ }, React__default.createElement(material.IconButton, {
474
+ "aria-label": localization == null ? void 0 : localization.showHideColumnsButtonTitle,
475
+ title: localization == null ? void 0 : localization.showHideColumnsButtonTitle,
476
+ onClick: handleClick,
477
+ size: "small",
478
+ style: {
479
+ margin: '0 0 0 -0.75rem'
480
+ }
481
+ }, React__default.createElement(ViewColumnIcon, null)), React__default.createElement(material.Menu, {
482
+ anchorEl: anchorEl,
483
+ open: !!anchorEl,
484
+ onClose: function onClose() {
485
+ return setAnchorEl(null);
486
+ }
487
+ }, tableInstance.columns.map(function (column, index) {
488
+ return React__default.createElement(MRT_ShowHideColumnsMenu, {
109
489
  key: index + "-" + column.id,
110
490
  column: column
111
491
  });
112
- }));
492
+ })));
493
+ };
494
+
495
+ var MRT_TableSpacerCell = function MRT_TableSpacerCell(_ref) {
496
+ var width = _ref.width;
497
+ return React__default.createElement(material.TableCell, {
498
+ style: {
499
+ width: width
500
+ }
501
+ });
502
+ };
503
+
504
+ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
505
+ var headerGroup = _ref.headerGroup;
506
+
507
+ var _useMaterialReactTabl = useMaterialReactTable(),
508
+ OverrideTableHeadRowComponent = _useMaterialReactTabl.OverrideTableHeadRowComponent,
509
+ anyRowsCanExpand = _useMaterialReactTabl.anyRowsCanExpand,
510
+ enableColumnHiding = _useMaterialReactTabl.enableColumnHiding,
511
+ enableExpandAll = _useMaterialReactTabl.enableExpandAll,
512
+ enableSelection = _useMaterialReactTabl.enableSelection,
513
+ renderDetailPanel = _useMaterialReactTabl.renderDetailPanel,
514
+ tableInstance = _useMaterialReactTabl.tableInstance;
515
+
516
+ if (OverrideTableHeadRowComponent) {
517
+ return React__default.createElement(React__default.Fragment, null, OverrideTableHeadRowComponent(headerGroup, tableInstance));
518
+ }
519
+
520
+ var isParentHeader = React.useMemo(function () {
521
+ return headerGroup.headers.some(function (h) {
522
+ var _h$columns$length, _h$columns;
523
+
524
+ return ((_h$columns$length = (_h$columns = h.columns) == null ? void 0 : _h$columns.length) != null ? _h$columns$length : 0) > 0;
525
+ });
526
+ }, [headerGroup.headers]);
527
+ return React__default.createElement(material.TableRow, Object.assign({}, headerGroup.getHeaderGroupProps()), anyRowsCanExpand || renderDetailPanel ? enableExpandAll && !isParentHeader ? React__default.createElement(MRT_ExpandAllButton, null) : React__default.createElement(MRT_TableSpacerCell, {
528
+ width: tableInstance.expandedDepth + 0.5 + "rem"
529
+ }) : null, enableSelection ? !isParentHeader ? React__default.createElement(MRT_SelectAllCheckbox, null) : React__default.createElement(MRT_TableSpacerCell, {
530
+ width: "1rem"
531
+ }) : null, headerGroup.headers.map(function (column, index) {
532
+ return React__default.createElement(MRT_TableHeadCell, {
533
+ key: index + "-" + column.id,
534
+ column: column,
535
+ index: index
536
+ });
537
+ }), enableColumnHiding && !isParentHeader && React__default.createElement(MRT_ShowHideColumnsButton, null));
113
538
  };
114
539
 
115
540
  var MRT_TablePagination = function MRT_TablePagination() {
116
541
  var _useMaterialReactTabl = useMaterialReactTable(),
117
542
  tableInstance = _useMaterialReactTabl.tableInstance,
118
- tablePaginationProps = _useMaterialReactTabl.tablePaginationProps;
543
+ tablePaginationProps = _useMaterialReactTabl.tablePaginationProps,
544
+ OverrideTablePaginationComponent = _useMaterialReactTabl.OverrideTablePaginationComponent;
119
545
 
120
546
  var handleChangeRowsPerPage = function handleChangeRowsPerPage(event) {
121
547
  tableInstance.setPageSize(+event.target.value);
122
548
  tableInstance.gotoPage(0);
123
549
  };
124
550
 
551
+ if (OverrideTablePaginationComponent) {
552
+ return React__default.createElement(React__default.Fragment, null, OverrideTablePaginationComponent(tableInstance));
553
+ }
554
+
125
555
  return React__default.createElement(material.TableRow, null, React__default.createElement(material.TablePagination, Object.assign({
126
556
  colSpan: tableInstance.visibleColumns.length + 10,
127
557
  count: tableInstance.rows.length,
@@ -138,11 +568,18 @@ var MRT_TablePagination = function MRT_TablePagination() {
138
568
 
139
569
  var MRT_TableHead = function MRT_TableHead() {
140
570
  var _useMaterialReactTabl = useMaterialReactTable(),
571
+ OverrideTableHeadComponent = _useMaterialReactTabl.OverrideTableHeadComponent,
141
572
  tableInstance = _useMaterialReactTabl.tableInstance,
142
573
  tableHeadProps = _useMaterialReactTabl.tableHeadProps,
143
- options = _useMaterialReactTabl.options;
574
+ enablePagination = _useMaterialReactTabl.enablePagination,
575
+ isReloading = _useMaterialReactTabl.isReloading,
576
+ positionPagination = _useMaterialReactTabl.positionPagination;
144
577
 
145
- return React__default.createElement(material.TableHead, Object.assign({}, tableHeadProps), ['top', 'both'].includes(options.enablePagination.toString()) && React__default.createElement(MRT_TablePagination, null), tableInstance.headerGroups.map(function (headerGroup, index) {
578
+ if (OverrideTableHeadComponent) {
579
+ return React__default.createElement(React__default.Fragment, null, OverrideTableHeadComponent(tableInstance));
580
+ }
581
+
582
+ return React__default.createElement(material.TableHead, Object.assign({}, tableHeadProps), isReloading && React__default.createElement(material.LinearProgress, null), enablePagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null), tableInstance.headerGroups.map(function (headerGroup, index) {
146
583
  return React__default.createElement(MRT_TableHeadRow, {
147
584
  key: index + "-" + headerGroup.id,
148
585
  headerGroup: headerGroup
@@ -152,6 +589,15 @@ var MRT_TableHead = function MRT_TableHead() {
152
589
 
153
590
  var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
154
591
  var cell = _ref.cell;
592
+
593
+ var _useMaterialReactTabl = useMaterialReactTable(),
594
+ tableInstance = _useMaterialReactTabl.tableInstance,
595
+ OverrideTableBodyCellComponent = _useMaterialReactTabl.OverrideTableBodyCellComponent;
596
+
597
+ if (OverrideTableBodyCellComponent) {
598
+ return React__default.createElement(React__default.Fragment, null, OverrideTableBodyCellComponent(cell, tableInstance));
599
+ }
600
+
155
601
  return React__default.createElement(material.TableCell, Object.assign({
156
602
  variant: "body"
157
603
  }, cell.getCellProps()), cell.render('Cell'));
@@ -162,82 +608,171 @@ var MRT_TableDetailPanel = function MRT_TableDetailPanel(_ref) {
162
608
 
163
609
  var _useMaterialReactTabl = useMaterialReactTable(),
164
610
  tableInstance = _useMaterialReactTabl.tableInstance,
165
- renderDetailPanel = _useMaterialReactTabl.renderDetailPanel;
611
+ renderDetailPanel = _useMaterialReactTabl.renderDetailPanel,
612
+ OverrideTableDetailPanelComponent = _useMaterialReactTabl.OverrideTableDetailPanelComponent,
613
+ tableDetailPanelProps = _useMaterialReactTabl.tableDetailPanelProps;
166
614
 
167
- return React__default.createElement(material.TableRow, Object.assign({}, row.getToggleRowExpandedProps()), React__default.createElement(material.TableCell, {
615
+ if (OverrideTableDetailPanelComponent) {
616
+ return React__default.createElement(React__default.Fragment, null, OverrideTableDetailPanelComponent(row, tableInstance));
617
+ }
618
+
619
+ return React__default.createElement(material.TableRow, Object.assign({}, row.getToggleRowExpandedProps()), React__default.createElement(material.TableCell, Object.assign({
168
620
  colSpan: tableInstance.visibleColumns.length + 10,
169
621
  style: {
622
+ borderBottom: !row.isExpanded ? 'none' : undefined,
170
623
  paddingBottom: row.isExpanded ? '1rem' : 0,
171
624
  paddingTop: row.isExpanded ? '1rem' : 0,
172
- transition: 'padding 0.2s'
625
+ transition: 'all 0.2s'
173
626
  }
174
- }, React__default.createElement(material.Collapse, {
627
+ }, tableDetailPanelProps), React__default.createElement(material.Collapse, {
175
628
  "in": row.isExpanded
176
629
  }, renderDetailPanel == null ? void 0 : renderDetailPanel(row))));
177
630
  };
178
631
 
179
- var MRT_TableExpandButton = function MRT_TableExpandButton(_ref) {
632
+ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
180
633
  var row = _ref.row;
181
- return React__default.createElement(material.TableCell, {
182
- style: {
183
- width: '2rem'
184
- },
185
- size: "small",
186
- variant: "head"
187
- }, React__default.createElement(material.IconButton, {
188
- onClick: function onClick() {
189
- return row.toggleRowExpanded();
190
- },
634
+
635
+ var _useMaterialReactTabl = useMaterialReactTable(),
636
+ localization = _useMaterialReactTabl.localization,
637
+ tableInstance = _useMaterialReactTabl.tableInstance;
638
+
639
+ return React__default.createElement(material.TableCell, Object.assign({
191
640
  size: "small"
192
- }, React__default.createElement(ArrowForwardIosIcon, {
641
+ }, row.getToggleRowExpandedProps(), {
642
+ style: {
643
+ padding: '0.5rem',
644
+ paddingRight: '0',
645
+ paddingLeft: row.depth + 0.5 + "rem",
646
+ width: tableInstance.expandedDepth - row.depth + 2 + "rem"
647
+ }
648
+ }), React__default.createElement(material.IconButton, {
649
+ "aria-label": localization == null ? void 0 : localization.expandButtonTitle,
650
+ title: localization == null ? void 0 : localization.expandButtonTitle
651
+ }, React__default.createElement(ExpandMoreIcon, {
193
652
  fontSize: "small",
194
653
  style: {
195
- transform: row.isExpanded ? 'rotate(90deg)' : 'rotate(0)',
654
+ transform: row.isExpanded ? 'rotate(-180deg)' : 'rotate(0)',
196
655
  transition: 'transform 0.2s'
197
656
  }
198
657
  })));
199
658
  };
200
659
 
660
+ var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
661
+ var row = _ref.row;
662
+
663
+ var _useMaterialReactTabl = useMaterialReactTable(),
664
+ tableInstance = _useMaterialReactTabl.tableInstance,
665
+ onRowSelectChange = _useMaterialReactTabl.onRowSelectChange;
666
+
667
+ var onSelectChange = function onSelectChange(event) {
668
+ var _row$getToggleRowSele;
669
+
670
+ (_row$getToggleRowSele = row.getToggleRowSelectedProps()) == null ? void 0 : _row$getToggleRowSele.onChange == null ? void 0 : _row$getToggleRowSele.onChange(event);
671
+ onRowSelectChange == null ? void 0 : onRowSelectChange(event, row.state, tableInstance.selectedFlatRows);
672
+ };
673
+
674
+ return React__default.createElement(material.TableCell, {
675
+ style: {
676
+ width: '2rem',
677
+ padding: '0.5rem'
678
+ }
679
+ }, React__default.createElement(material.Checkbox, Object.assign({}, row.getToggleRowSelectedProps(), {
680
+ onChange: onSelectChange
681
+ })));
682
+ };
683
+
201
684
  var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
202
685
  var row = _ref.row;
203
686
 
204
687
  var _useMaterialReactTabl = useMaterialReactTable(),
205
- renderDetailPanel = _useMaterialReactTabl.renderDetailPanel;
688
+ OverrideTableBodyRowComponent = _useMaterialReactTabl.OverrideTableBodyRowComponent,
689
+ anyRowsCanExpand = _useMaterialReactTabl.anyRowsCanExpand,
690
+ enableSelection = _useMaterialReactTabl.enableSelection,
691
+ enableSubRowTree = _useMaterialReactTabl.enableSubRowTree,
692
+ enableColumnHiding = _useMaterialReactTabl.enableColumnHiding,
693
+ onRowClick = _useMaterialReactTabl.onRowClick,
694
+ renderDetailPanel = _useMaterialReactTabl.renderDetailPanel,
695
+ tableInstance = _useMaterialReactTabl.tableInstance;
696
+
697
+ if (OverrideTableBodyRowComponent) {
698
+ return React__default.createElement(React__default.Fragment, null, OverrideTableBodyRowComponent(row, tableInstance));
699
+ }
206
700
 
207
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.TableRow, Object.assign({}, row.getRowProps()), renderDetailPanel && React__default.createElement(MRT_TableExpandButton, {
701
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.TableRow, Object.assign({
702
+ onClick: function onClick(event) {
703
+ return onRowClick == null ? void 0 : onRowClick(event, row);
704
+ }
705
+ }, row.getRowProps()), (enableSubRowTree && anyRowsCanExpand || renderDetailPanel) && (row.canExpand || renderDetailPanel ? React__default.createElement(MRT_ExpandButton, {
706
+ row: row
707
+ }) : React__default.createElement(material.TableCell, {
708
+ style: {
709
+ width: tableInstance.expandedDepth + 0.5 + "rem"
710
+ }
711
+ })), enableSelection && React__default.createElement(MRT_SelectCheckbox, {
208
712
  row: row
209
713
  }), row.cells.map(function (cell, index) {
210
714
  return React__default.createElement(MRT_TableBodyCell, {
211
715
  key: index + "-" + cell.value,
212
716
  cell: cell
213
717
  });
214
- })), renderDetailPanel && React__default.createElement(MRT_TableDetailPanel, {
718
+ }), enableColumnHiding && React__default.createElement(MRT_TableSpacerCell, null)), renderDetailPanel && React__default.createElement(MRT_TableDetailPanel, {
215
719
  row: row
216
720
  }));
217
721
  };
218
722
 
723
+ var TableBody = /*#__PURE__*/material.styled(material.TableBody)({
724
+ overflowY: 'hidden'
725
+ });
726
+ var CircularProgressWrapper = /*#__PURE__*/material.styled('div')({
727
+ backgroundColor: 'rgba(255, 255, 255, 0.5)',
728
+ display: 'grid',
729
+ height: '100%',
730
+ justifyContent: 'center',
731
+ margin: 'auto',
732
+ paddingTop: '5rem',
733
+ position: 'fixed',
734
+ width: 'calc(100% - 2rem)'
735
+ });
219
736
  var MRT_TableBody = function MRT_TableBody() {
220
737
  var _useMaterialReactTabl = useMaterialReactTable(),
221
- tableInstance = _useMaterialReactTabl.tableInstance;
738
+ tableInstance = _useMaterialReactTabl.tableInstance,
739
+ tableBodyProps = _useMaterialReactTabl.tableBodyProps,
740
+ isLoading = _useMaterialReactTabl.isLoading,
741
+ enablePagination = _useMaterialReactTabl.enablePagination,
742
+ OverrideTableBodyComponent = _useMaterialReactTabl.OverrideTableBodyComponent;
743
+
744
+ if (OverrideTableBodyComponent) {
745
+ return React__default.createElement(React__default.Fragment, null, OverrideTableBodyComponent(tableInstance));
746
+ }
222
747
 
223
- return React__default.createElement(material.TableBody, Object.assign({}, tableInstance.getTableBodyProps()), tableInstance.page.map(function (row, index) {
748
+ var rows = enablePagination ? tableInstance.page : tableInstance.rows;
749
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(TableBody, Object.assign({}, tableBodyProps, tableInstance.getTableBodyProps()), isLoading && React__default.createElement(CircularProgressWrapper, null, React__default.createElement(material.CircularProgress, null)), rows.map(function (row, index) {
224
750
  tableInstance.prepareRow(row);
225
751
  return React__default.createElement(MRT_TableBodyRow, {
226
752
  key: index + "-" + row.id,
227
753
  row: row
228
754
  });
229
- }));
755
+ })));
230
756
  };
231
757
 
232
- var TableCell = /*#__PURE__*/material.styled(material.TableCell)({
758
+ var TableCell$1 = /*#__PURE__*/material.styled(material.TableCell)({
233
759
  fontWeight: 'bold'
234
760
  });
235
761
  var MRT_TableFooterCell = function MRT_TableFooterCell(_ref) {
236
762
  var _column$columns$lengt, _column$columns;
237
763
 
238
764
  var column = _ref.column;
765
+
766
+ var _useMaterialReactTabl = useMaterialReactTable(),
767
+ tableInstance = _useMaterialReactTabl.tableInstance,
768
+ OverrideTableFooterCellComponent = _useMaterialReactTabl.OverrideTableFooterCellComponent;
769
+
770
+ if (OverrideTableFooterCellComponent) {
771
+ return React__default.createElement(React__default.Fragment, null, OverrideTableFooterCellComponent(column, tableInstance));
772
+ }
773
+
239
774
  var isParentHeader = ((_column$columns$lengt = column == null ? void 0 : (_column$columns = column.columns) == null ? void 0 : _column$columns.length) != null ? _column$columns$lengt : 0) > 0;
240
- return React__default.createElement(TableCell, Object.assign({
775
+ return React__default.createElement(TableCell$1, Object.assign({
241
776
  align: isParentHeader ? 'center' : 'left',
242
777
  variant: "head"
243
778
  }, column.getFooterProps()), column.render('Footer'));
@@ -247,65 +782,203 @@ var MRT_TableFooterRow = function MRT_TableFooterRow(_ref) {
247
782
  var footerGroup = _ref.footerGroup;
248
783
 
249
784
  var _useMaterialReactTabl = useMaterialReactTable(),
250
- renderDetailPanel = _useMaterialReactTabl.renderDetailPanel;
785
+ renderDetailPanel = _useMaterialReactTabl.renderDetailPanel,
786
+ columns = _useMaterialReactTabl.columns,
787
+ anyRowsCanExpand = _useMaterialReactTabl.anyRowsCanExpand,
788
+ enableColumnHiding = _useMaterialReactTabl.enableColumnHiding,
789
+ enableSelection = _useMaterialReactTabl.enableSelection,
790
+ tableInstance = _useMaterialReactTabl.tableInstance,
791
+ OverrideTableFooterRowComponent = _useMaterialReactTabl.OverrideTableFooterRowComponent; //if no content in row, skip row
792
+
251
793
 
252
- return React__default.createElement(material.TableRow, Object.assign({}, footerGroup.getFooterGroupProps()), renderDetailPanel && React__default.createElement(material.TableCell, {
794
+ if (!columns.some(function (c) {
795
+ return c.Footer;
796
+ })) return null;
797
+
798
+ if (OverrideTableFooterRowComponent) {
799
+ return React__default.createElement(React__default.Fragment, null, OverrideTableFooterRowComponent(footerGroup, tableInstance));
800
+ }
801
+
802
+ return React__default.createElement(material.TableRow, Object.assign({}, footerGroup.getFooterGroupProps()), (anyRowsCanExpand || renderDetailPanel) && React__default.createElement(material.TableCell, {
253
803
  style: {
254
- width: '2rem'
804
+ width: tableInstance.expandedDepth + 0.5 + "rem"
255
805
  }
806
+ }), enableSelection && React__default.createElement(MRT_TableSpacerCell, {
807
+ width: "1rem"
256
808
  }), footerGroup.headers.map(function (column, index) {
257
809
  return React__default.createElement(MRT_TableFooterCell, {
258
810
  key: index + "-" + column.id,
259
811
  column: column
260
812
  });
261
- }));
813
+ }), enableColumnHiding && React__default.createElement(MRT_TableSpacerCell, null));
262
814
  };
263
815
 
264
816
  var MRT_TableFooter = function MRT_TableFooter() {
265
817
  var _useMaterialReactTabl = useMaterialReactTable(),
266
- tableInstance = _useMaterialReactTabl.tableInstance,
818
+ OverrideTableFooterComponent = _useMaterialReactTabl.OverrideTableFooterComponent,
819
+ enablePagination = _useMaterialReactTabl.enablePagination,
820
+ positionPagination = _useMaterialReactTabl.positionPagination,
267
821
  tableFooterProps = _useMaterialReactTabl.tableFooterProps,
268
- options = _useMaterialReactTabl.options;
822
+ tableInstance = _useMaterialReactTabl.tableInstance;
269
823
 
270
- var hasFooterGroups = tableInstance.columns.some(function (c) {
271
- return c.depth === 0 && !!c.Footer;
272
- });
273
- return React__default.createElement(material.TableFooter, Object.assign({}, tableFooterProps), hasFooterGroups && tableInstance.footerGroups.map(function (footerGroup, index) {
824
+ if (OverrideTableFooterComponent) {
825
+ return React__default.createElement(React__default.Fragment, null, OverrideTableFooterComponent(tableInstance));
826
+ }
827
+
828
+ return React__default.createElement(material.TableFooter, Object.assign({}, tableFooterProps), tableInstance.footerGroups.map(function (footerGroup, index) {
274
829
  return React__default.createElement(MRT_TableFooterRow, {
275
830
  key: index + "-" + footerGroup.id,
276
831
  footerGroup: footerGroup
277
832
  });
278
- }), options.enablePagination === true || ['bottom', 'both'].includes(options.enablePagination.toString()) && React__default.createElement(MRT_TablePagination, null));
833
+ }), enablePagination && ['bottom', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null));
279
834
  };
280
835
 
281
836
  var MRT_Table = function MRT_Table() {
282
837
  var _useMaterialReactTabl = useMaterialReactTable(),
283
838
  tableInstance = _useMaterialReactTabl.tableInstance,
284
839
  tableProps = _useMaterialReactTabl.tableProps,
285
- options = _useMaterialReactTabl.options;
840
+ showHead = _useMaterialReactTabl.showHead,
841
+ showFooter = _useMaterialReactTabl.showFooter;
286
842
 
287
- return React__default.createElement(material.Table, Object.assign({
288
- stickyHeader: true
289
- }, tableProps, tableInstance.getTableProps()), options.showHead && React__default.createElement(MRT_TableHead, null), React__default.createElement(MRT_TableBody, null), options.showFooter && React__default.createElement(MRT_TableFooter, null));
843
+ return React__default.createElement(material.Table, Object.assign({}, tableProps, tableInstance.getTableProps()), showHead && React__default.createElement(MRT_TableHead, null), React__default.createElement(MRT_TableBody, null), showFooter && React__default.createElement(MRT_TableFooter, null));
844
+ };
845
+
846
+ var TextField = /*#__PURE__*/material.styled(material.TextField)({
847
+ justifySelf: 'end'
848
+ });
849
+ var MRT_SearchTextField = function MRT_SearchTextField() {
850
+ var _useMaterialReactTabl = useMaterialReactTable(),
851
+ tableInstance = _useMaterialReactTabl.tableInstance,
852
+ tableSearchTextfieldProps = _useMaterialReactTabl.tableSearchTextfieldProps,
853
+ localization = _useMaterialReactTabl.localization;
854
+
855
+ var _useState = React.useState(''),
856
+ searchValue = _useState[0],
857
+ setSearchValue = _useState[1];
858
+
859
+ var handleChange = reactTable.useAsyncDebounce(function (value) {
860
+ tableInstance.setGlobalFilter(value != null ? value : undefined);
861
+ }, 200);
862
+
863
+ var handleClear = function handleClear() {
864
+ setSearchValue('');
865
+ tableInstance.setGlobalFilter(undefined);
866
+ };
867
+
868
+ return React__default.createElement(TextField, Object.assign({
869
+ placeholder: localization == null ? void 0 : localization.searchTextFieldPlaceholder,
870
+ onChange: function onChange(e) {
871
+ setSearchValue(e.target.value);
872
+ handleChange(e.target.value);
873
+ },
874
+ value: searchValue != null ? searchValue : '',
875
+ variant: "standard",
876
+ InputProps: {
877
+ startAdornment: React__default.createElement(material.InputAdornment, {
878
+ position: "start"
879
+ }, React__default.createElement(SearchIcon, {
880
+ fontSize: "small"
881
+ })),
882
+ endAdornment: React__default.createElement(material.InputAdornment, {
883
+ position: "end"
884
+ }, React__default.createElement(material.IconButton, {
885
+ "aria-label": localization == null ? void 0 : localization.searchTextFieldClearButtonTitle,
886
+ disabled: (searchValue == null ? void 0 : searchValue.length) === 0,
887
+ onClick: handleClear,
888
+ size: "small",
889
+ title: localization == null ? void 0 : localization.searchTextFieldClearButtonTitle
890
+ }, React__default.createElement(CloseIcon, {
891
+ fontSize: "small"
892
+ })))
893
+ }
894
+ }, tableSearchTextfieldProps));
895
+ };
896
+
897
+ var Toolbar = /*#__PURE__*/material.styled(material.Toolbar)({
898
+ padding: '0.5rem',
899
+ display: 'flex',
900
+ justifyContent: 'space-between'
901
+ });
902
+ var MRT_Toolbar = function MRT_Toolbar() {
903
+ var _useMaterialReactTabl = useMaterialReactTable(),
904
+ OverrideTableToolbarComponent = _useMaterialReactTabl.OverrideTableToolbarComponent,
905
+ enableSearch = _useMaterialReactTabl.enableSearch,
906
+ tableInstance = _useMaterialReactTabl.tableInstance,
907
+ tableTitleProps = _useMaterialReactTabl.tableTitleProps,
908
+ tableToolbarProps = _useMaterialReactTabl.tableToolbarProps,
909
+ title = _useMaterialReactTabl.title;
910
+
911
+ if (OverrideTableToolbarComponent) {
912
+ return React__default.createElement(React__default.Fragment, null, OverrideTableToolbarComponent(tableInstance));
913
+ } //if no features in the toolbar are enabled, don't render anything
914
+
915
+
916
+ if (!enableSearch && !title && !tableToolbarProps) {
917
+ return null;
918
+ }
919
+
920
+ return React__default.createElement(Toolbar, Object.assign({
921
+ variant: "dense"
922
+ }, tableToolbarProps), title ? React__default.createElement(material.Typography, Object.assign({}, tableTitleProps), title) : React__default.createElement("span", null), enableSearch && React__default.createElement(MRT_SearchTextField, null));
290
923
  };
291
924
 
292
925
  var MRT_TableContainer = function MRT_TableContainer() {
293
926
  var _useMaterialReactTabl = useMaterialReactTable(),
294
- tableContainerProps = _useMaterialReactTabl.tableContainerProps;
927
+ tableContainerProps = _useMaterialReactTabl.tableContainerProps,
928
+ showToolbar = _useMaterialReactTabl.showToolbar;
295
929
 
296
930
  return React__default.createElement(material.TableContainer, Object.assign({
297
931
  component: material.Paper
298
- }, tableContainerProps), React__default.createElement(MRT_Table, null));
932
+ }, tableContainerProps), showToolbar && React__default.createElement(MRT_Toolbar, null), React__default.createElement(MRT_Table, null));
933
+ };
934
+
935
+ var defaultLocalization = {
936
+ columnActionMenuButtonTitle: 'Column Actions',
937
+ columnActionMenuItemHideColumn: 'Hide column',
938
+ columnActionMenuItemSortAsc: 'Sort ascending',
939
+ columnActionMenuItemClearSort: 'Clear sorting',
940
+ columnActionMenuItemSortDesc: 'Sort descending',
941
+ expandAllButtonTitle: 'Expand all',
942
+ expandButtonTitle: 'Expand',
943
+ filterTextFieldClearButtonTitle: 'Clear filter',
944
+ filterTextFieldPlaceholder: 'Filter',
945
+ searchTextFieldClearButtonTitle: 'Clear search',
946
+ searchTextFieldPlaceholder: 'Search',
947
+ showHideColumnsButtonTitle: 'Show/Hide columns'
299
948
  };
300
949
 
301
- var _excluded$1 = ["options"];
950
+ var _excluded$1 = ["enablePagination", "enableSorting", "enableSubRowTree", "localization", "positionPagination", "showFiltersInColumnHead", "showFooter", "showHead", "showToolbar"];
302
951
  var MaterialReactTable = function MaterialReactTable(_ref) {
303
- var _ref$options = _ref.options,
304
- options = _ref$options === void 0 ? defaultOptions : _ref$options,
952
+ var _ref$enablePagination = _ref.enablePagination,
953
+ enablePagination = _ref$enablePagination === void 0 ? true : _ref$enablePagination,
954
+ _ref$enableSorting = _ref.enableSorting,
955
+ enableSorting = _ref$enableSorting === void 0 ? true : _ref$enableSorting,
956
+ _ref$enableSubRowTree = _ref.enableSubRowTree,
957
+ enableSubRowTree = _ref$enableSubRowTree === void 0 ? true : _ref$enableSubRowTree,
958
+ _ref$localization = _ref.localization,
959
+ localization = _ref$localization === void 0 ? defaultLocalization : _ref$localization,
960
+ _ref$positionPaginati = _ref.positionPagination,
961
+ positionPagination = _ref$positionPaginati === void 0 ? 'bottom' : _ref$positionPaginati,
962
+ _ref$showFiltersInCol = _ref.showFiltersInColumnHead,
963
+ showFiltersInColumnHead = _ref$showFiltersInCol === void 0 ? true : _ref$showFiltersInCol,
964
+ _ref$showFooter = _ref.showFooter,
965
+ showFooter = _ref$showFooter === void 0 ? true : _ref$showFooter,
966
+ _ref$showHead = _ref.showHead,
967
+ showHead = _ref$showHead === void 0 ? true : _ref$showHead,
968
+ _ref$showToolbar = _ref.showToolbar,
969
+ showToolbar = _ref$showToolbar === void 0 ? true : _ref$showToolbar,
305
970
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
306
971
 
307
972
  return React__default.createElement(MaterialReactTableProvider, Object.assign({
308
- options: options
973
+ enablePagination: enablePagination,
974
+ enableSorting: enableSorting,
975
+ enableSubRowTree: enableSubRowTree,
976
+ localization: _extends({}, defaultLocalization, localization),
977
+ positionPagination: positionPagination,
978
+ showFiltersInColumnHead: showFiltersInColumnHead,
979
+ showFooter: showFooter,
980
+ showHead: showHead,
981
+ showToolbar: showToolbar
309
982
  }, rest), React__default.createElement(MRT_TableContainer, null));
310
983
  };
311
984