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