material-react-table 0.5.1 → 0.5.4

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 (45) hide show
  1. package/dist/MaterialReactTable.d.ts +15 -9
  2. package/dist/filtersFNs.d.ts +67 -0
  3. package/dist/localization.d.ts +10 -1
  4. package/dist/material-react-table.cjs.development.js +455 -147
  5. package/dist/material-react-table.cjs.development.js.map +1 -1
  6. package/dist/material-react-table.cjs.production.min.js +1 -1
  7. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  8. package/dist/material-react-table.esm.js +457 -149
  9. package/dist/material-react-table.esm.js.map +1 -1
  10. package/dist/menus/MRT_FilterMenu.d.ts +10 -0
  11. package/dist/useMRT.d.ts +13 -14
  12. package/package.json +6 -2
  13. package/src/@types/react-table-config.d.ts +3 -3
  14. package/src/MaterialReactTable.tsx +30 -9
  15. package/src/body/MRT_TableBody.tsx +7 -2
  16. package/src/body/MRT_TableBodyCell.tsx +3 -2
  17. package/src/body/MRT_TableBodyRow.tsx +11 -8
  18. package/src/buttons/MRT_EditActionButtons.tsx +4 -2
  19. package/src/buttons/MRT_ExpandAllButton.tsx +3 -4
  20. package/src/buttons/MRT_ExpandButton.tsx +3 -1
  21. package/src/buttons/MRT_FullScreenToggleButton.tsx +3 -1
  22. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +4 -3
  23. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +3 -1
  24. package/src/buttons/MRT_ToggleFiltersButton.tsx +4 -2
  25. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +17 -11
  26. package/src/buttons/MRT_ToggleSearchButton.tsx +5 -2
  27. package/src/filtersFNs.ts +112 -0
  28. package/src/footer/MRT_TableFooter.tsx +6 -1
  29. package/src/footer/MRT_TableFooterCell.tsx +7 -2
  30. package/src/head/MRT_TableHeadCell.tsx +49 -47
  31. package/src/head/MRT_TableHeadCellActions.tsx +6 -1
  32. package/src/head/MRT_TableHeadRow.tsx +7 -2
  33. package/src/index.tsx +0 -2
  34. package/src/inputs/MRT_EditCellTextField.tsx +3 -1
  35. package/src/inputs/MRT_FilterTextField.tsx +117 -52
  36. package/src/inputs/MRT_SearchTextField.tsx +3 -3
  37. package/src/inputs/MRT_SelectCheckbox.tsx +5 -8
  38. package/src/localization.ts +20 -2
  39. package/src/menus/MRT_ColumnActionMenu.tsx +125 -85
  40. package/src/menus/MRT_FilterMenu.tsx +109 -0
  41. package/src/table/MRT_Table.tsx +7 -2
  42. package/src/table/MRT_TableContainer.tsx +16 -3
  43. package/src/toolbar/MRT_ToolbarBottom.tsx +2 -3
  44. package/src/toolbar/MRT_ToolbarTop.tsx +2 -3
  45. package/src/useMRT.tsx +104 -35
@@ -1,6 +1,8 @@
1
- import React, { useMemo, useState, useContext, createContext, Fragment, useRef, useEffect } from 'react';
1
+ import React, { useState, useMemo, useContext, createContext, Fragment, useRef, useEffect } from 'react';
2
2
  import { useTable, useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect, useResizeColumns, useFlexLayout, useAsyncDebounce } from 'react-table';
3
- import { TextField, Tooltip, InputAdornment, IconButton, Menu, MenuItem, Divider, TableCell, Box, TableSortLabel, Collapse, Checkbox, TableRow, TableHead, alpha, TableBody, TableFooter, Table, FormControlLabel, Switch, Button, TablePagination, useMediaQuery, Chip, Alert, Toolbar, TableContainer, Paper, LinearProgress } from '@mui/material';
3
+ import { matchSorter } from 'match-sorter';
4
+ import { Menu, Typography, Divider, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, MenuList, ListItemIcon, ListItemText, TableCell, Box, TableSortLabel, Collapse, Checkbox, TableRow, TableHead, alpha, TableBody, TableFooter, Table, FormControlLabel, Switch, Button, TablePagination, useMediaQuery, Alert, Toolbar, TableContainer, Paper, LinearProgress } from '@mui/material';
5
+ import ArrowRightIcon from '@mui/icons-material/ArrowRight';
4
6
  import CancelIcon from '@mui/icons-material/Cancel';
5
7
  import ClearAllIcon from '@mui/icons-material/ClearAll';
6
8
  import CloseIcon from '@mui/icons-material/Close';
@@ -93,6 +95,100 @@ function _objectWithoutPropertiesLoose(source, excluded) {
93
95
  return target;
94
96
  }
95
97
 
98
+ var fuzzyFilterFN = function fuzzyFilterFN(rows, id, filterValue) {
99
+ return matchSorter(rows, filterValue.toString().trim(), {
100
+ keys: ["values." + id],
101
+ sorter: function sorter(rankedItems) {
102
+ return rankedItems;
103
+ }
104
+ });
105
+ };
106
+
107
+ fuzzyFilterFN.autoRemove = function (val) {
108
+ return !val;
109
+ };
110
+
111
+ var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
112
+ return rows.filter(function (row) {
113
+ return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
114
+ });
115
+ };
116
+
117
+ containsFilterFN.autoRemove = function (val) {
118
+ return !val;
119
+ };
120
+
121
+ var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
122
+ return rows.filter(function (row) {
123
+ return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
124
+ });
125
+ };
126
+
127
+ startsWithFilterFN.autoRemove = function (val) {
128
+ return !val;
129
+ };
130
+
131
+ var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
132
+ return rows.filter(function (row) {
133
+ return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
134
+ });
135
+ };
136
+
137
+ endsWithFilterFN.autoRemove = function (val) {
138
+ return !val;
139
+ };
140
+
141
+ var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
142
+ return rows.filter(function (row) {
143
+ return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
144
+ });
145
+ };
146
+
147
+ equalsFilterFN.autoRemove = function (val) {
148
+ return !val;
149
+ };
150
+
151
+ var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
152
+ return rows.filter(function (row) {
153
+ return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
154
+ });
155
+ };
156
+
157
+ notEqualsFilterFN.autoRemove = function (val) {
158
+ return !val;
159
+ };
160
+
161
+ var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
162
+ return rows.filter(function (row) {
163
+ return !row.values[id].toString().toLowerCase().trim();
164
+ });
165
+ };
166
+
167
+ emptyFilterFN.autoRemove = function (val) {
168
+ return !val;
169
+ };
170
+
171
+ var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
172
+ return rows.filter(function (row) {
173
+ return !!row.values[id].toString().toLowerCase().trim();
174
+ });
175
+ };
176
+
177
+ notEmptyFilterFN.autoRemove = function (val) {
178
+ return !val;
179
+ };
180
+
181
+ var defaultFilterFNs = {
182
+ contains: containsFilterFN,
183
+ empty: emptyFilterFN,
184
+ endsWith: endsWithFilterFN,
185
+ equals: equalsFilterFN,
186
+ fuzzy: fuzzyFilterFN,
187
+ notEmpty: notEmptyFilterFN,
188
+ notEquals: notEqualsFilterFN,
189
+ startsWith: startsWithFilterFN
190
+ };
191
+
96
192
  var MaterialReactTableContext = /*#__PURE__*/function () {
97
193
  return createContext({});
98
194
  }();
@@ -102,19 +198,6 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
102
198
 
103
199
  var hooks = [useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect];
104
200
  if (props.enableColumnResizing) hooks.unshift(useResizeColumns, useFlexLayout);
105
- var tableInstance = useTable.apply(void 0, [props].concat(hooks));
106
- var anyRowsCanExpand = useMemo( // @ts-ignore
107
- function () {
108
- return tableInstance.rows.some(function (row) {
109
- return row.canExpand;
110
- });
111
- }, [tableInstance.rows]);
112
- var anyRowsExpanded = useMemo( // @ts-ignore
113
- function () {
114
- return tableInstance.rows.some(function (row) {
115
- return row.isExpanded;
116
- });
117
- }, [tableInstance.rows]);
118
201
 
119
202
  var _useState = useState(null),
120
203
  currentEditingRow = _useState[0],
@@ -132,37 +215,184 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
132
215
  showFilters = _useState4[0],
133
216
  setShowFilters = _useState4[1];
134
217
 
135
- var _useState5 = useState((_props$initialState$s2 = (_props$initialState4 = props.initialState) == null ? void 0 : _props$initialState4.showSearchTextField) != null ? _props$initialState$s2 : false),
218
+ var _useState5 = useState((_props$initialState$s2 = (_props$initialState4 = props.initialState) == null ? void 0 : _props$initialState4.showSearch) != null ? _props$initialState$s2 : false),
136
219
  showSearch = _useState5[0],
137
220
  setShowSearch = _useState5[1];
138
221
 
222
+ var filterTypes = useMemo(function () {
223
+ return _extends({}, defaultFilterFNs, props.filterTypes);
224
+ }, [props.filterTypes]);
225
+
226
+ var _useState6 = useState(function () {
227
+ return Object.assign.apply(Object, [{}].concat(props.columns.map(function (c) {
228
+ var _c$accessor;
229
+
230
+ return (_c$accessor = c.accessor) == null ? void 0 : _c$accessor.toString();
231
+ }).map(function (accessor) {
232
+ var _props$initialState$f2, _props$initialState5, _props$initialState5$, _ref;
233
+
234
+ return _ref = {}, _ref[accessor] = (_props$initialState$f2 = props == null ? void 0 : (_props$initialState5 = props.initialState) == null ? void 0 : (_props$initialState5$ = _props$initialState5.filters) == null ? void 0 : _props$initialState5$[accessor]) != null ? _props$initialState$f2 : 'fuzzy', _ref;
235
+ })));
236
+ }),
237
+ currentFilterTypes = _useState6[0],
238
+ setCurrentFilterTypes = _useState6[1];
239
+
240
+ var columns = useMemo(function () {
241
+ return props.columns.map(function (column) {
242
+ column.filter = filterTypes[currentFilterTypes[column.accessor]];
243
+ return column;
244
+ });
245
+ }, [props.columns, filterTypes, currentFilterTypes]);
246
+ var tableInstance = useTable.apply(void 0, [_extends({}, props, {
247
+ columns: columns,
248
+ // @ts-ignore
249
+ filterTypes: filterTypes,
250
+ useControlledState: function useControlledState(state) {
251
+ return useMemo(function () {
252
+ return _extends({}, state, {
253
+ currentEditingRow: currentEditingRow,
254
+ currentFilterTypes: currentFilterTypes,
255
+ densePadding: densePadding,
256
+ fullScreen: fullScreen,
257
+ showFilters: showFilters,
258
+ showSearch: showSearch
259
+ }, props == null ? void 0 : props.useControlledState == null ? void 0 : props.useControlledState(state));
260
+ }, [currentEditingRow, currentFilterTypes, densePadding, fullScreen, showFilters, showSearch, state]);
261
+ }
262
+ })].concat(hooks));
263
+ var idPrefix = useMemo(function () {
264
+ var _props$idPrefix;
265
+
266
+ return (_props$idPrefix = props.idPrefix) != null ? _props$idPrefix : Math.random().toString(36).substring(2, 9);
267
+ }, [props.idPrefix]);
268
+ var anyRowsCanExpand = useMemo(function () {
269
+ return tableInstance.rows.some(function (row) {
270
+ return row.canExpand;
271
+ });
272
+ }, [tableInstance.rows]);
273
+ var anyRowsExpanded = useMemo(function () {
274
+ return tableInstance.rows.some(function (row) {
275
+ return row.isExpanded;
276
+ });
277
+ }, [tableInstance.rows]);
139
278
  return React.createElement(MaterialReactTableContext.Provider, {
140
279
  value: _extends({}, props, {
141
280
  anyRowsCanExpand: anyRowsCanExpand,
142
281
  anyRowsExpanded: anyRowsExpanded,
143
- currentEditingRow: currentEditingRow,
144
- densePadding: densePadding,
282
+ idPrefix: idPrefix,
283
+ //@ts-ignore
145
284
  setCurrentEditingRow: setCurrentEditingRow,
285
+ setCurrentFilterTypes: setCurrentFilterTypes,
146
286
  setDensePadding: setDensePadding,
147
- fullScreen: fullScreen,
148
287
  setFullScreen: setFullScreen,
149
288
  setShowFilters: setShowFilters,
150
289
  setShowSearch: setShowSearch,
151
- showFilters: showFilters,
152
- showSearch: showSearch,
153
290
  //@ts-ignore
154
291
  tableInstance: tableInstance
155
292
  })
156
293
  }, props.children);
157
294
  };
158
295
  var useMRT = function useMRT() {
159
- return (// @ts-ignore
160
- useContext(MaterialReactTableContext)
161
- );
296
+ return useContext(MaterialReactTableContext);
297
+ };
298
+
299
+ var MRT_FilterMenu = function MRT_FilterMenu(_ref) {
300
+ var anchorEl = _ref.anchorEl,
301
+ column = _ref.column,
302
+ onSelect = _ref.onSelect,
303
+ setAnchorEl = _ref.setAnchorEl;
304
+
305
+ var _useMRT = useMRT(),
306
+ localization = _useMRT.localization,
307
+ setCurrentFilterTypes = _useMRT.setCurrentFilterTypes,
308
+ tableInstance = _useMRT.tableInstance;
309
+
310
+ var filterTypes = useMemo(function () {
311
+ return [{
312
+ type: 'fuzzy',
313
+ label: localization.filterMenuItemFuzzy,
314
+ divider: false
315
+ }, {
316
+ type: 'contains',
317
+ label: localization.filterMenuItemContains,
318
+ divider: true
319
+ }, {
320
+ type: 'startsWith',
321
+ label: localization.filterMenuItemStartsWith,
322
+ divider: false
323
+ }, {
324
+ type: 'endsWith',
325
+ label: localization.filterMenuItemEndsWith,
326
+ divider: true
327
+ }, {
328
+ type: 'equals',
329
+ label: localization.filterMenuItemEquals,
330
+ divider: false
331
+ }, {
332
+ type: 'notEquals',
333
+ label: localization.filterMenuItemNotEquals,
334
+ divider: true
335
+ }, {
336
+ type: 'empty',
337
+ label: localization.filterMenuItemEmpty,
338
+ divider: false
339
+ }, {
340
+ type: 'notEmpty',
341
+ label: localization.filterMenuItemNotEmpty,
342
+ divider: false
343
+ }];
344
+ }, []);
345
+
346
+ var handleSelectMenuItem = function handleSelectMenuItem(value) {
347
+ setAnchorEl(null);
348
+ setCurrentFilterTypes(function (prev) {
349
+ var _extends2;
350
+
351
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
352
+ });
353
+
354
+ if (['empty', 'notEmpty'].includes(value)) {
355
+ column.setFilter(' ');
356
+ }
357
+
358
+ onSelect == null ? void 0 : onSelect();
359
+ };
360
+
361
+ var filterType = tableInstance.state.currentFilterTypes[column.id];
362
+ return React.createElement(Menu, {
363
+ anchorEl: anchorEl,
364
+ open: !!anchorEl,
365
+ anchorOrigin: {
366
+ vertical: 'center',
367
+ horizontal: 'right'
368
+ },
369
+ onClose: function onClose() {
370
+ return setAnchorEl(null);
371
+ }
372
+ }, React.createElement(Typography, {
373
+ sx: {
374
+ fontWeight: 'bold',
375
+ p: '1rem',
376
+ fontSize: '1.1rem'
377
+ }
378
+ }, localization.filterMenuTitle), React.createElement(Divider, null), filterTypes.map(function (_ref2) {
379
+ var type = _ref2.type,
380
+ label = _ref2.label,
381
+ divider = _ref2.divider;
382
+ return React.createElement(MenuItem, {
383
+ divider: divider,
384
+ key: type,
385
+ onClick: function onClick() {
386
+ return handleSelectMenuItem(type);
387
+ },
388
+ selected: type === filterType,
389
+ value: type
390
+ }, label);
391
+ }));
162
392
  };
163
393
 
164
394
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
165
- var _localization$filterT, _localization$filterT2, _localization$filterT3;
395
+ var _localization$filterT, _localization$filterT2;
166
396
 
167
397
  var column = _ref.column;
168
398
 
@@ -170,37 +400,70 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
170
400
  _useMRT$icons = _useMRT.icons,
171
401
  FilterListIcon = _useMRT$icons.FilterListIcon,
172
402
  CloseIcon = _useMRT$icons.CloseIcon,
173
- localization = _useMRT.localization;
403
+ idPrefix = _useMRT.idPrefix,
404
+ localization = _useMRT.localization,
405
+ muiTableHeadCellFilterTextFieldProps = _useMRT.muiTableHeadCellFilterTextFieldProps,
406
+ setCurrentFilterTypes = _useMRT.setCurrentFilterTypes,
407
+ tableInstance = _useMRT.tableInstance;
174
408
 
175
- var _useState = useState(''),
176
- filterValue = _useState[0],
177
- setFilterValue = _useState[1];
409
+ var _useState = useState(null),
410
+ anchorEl = _useState[0],
411
+ setAnchorEl = _useState[1];
412
+
413
+ var mTableHeadCellFilterTextFieldProps = muiTableHeadCellFilterTextFieldProps instanceof Function ? muiTableHeadCellFilterTextFieldProps(column) : muiTableHeadCellFilterTextFieldProps;
414
+ var mcTableHeadCellFilterTextFieldProps = column.muiTableHeadCellFilterTextFieldProps instanceof Function ? column.muiTableHeadCellFilterTextFieldProps(column) : column.muiTableHeadCellFilterTextFieldProps;
415
+
416
+ var textFieldProps = _extends({}, mTableHeadCellFilterTextFieldProps, mcTableHeadCellFilterTextFieldProps, {
417
+ style: _extends({}, mTableHeadCellFilterTextFieldProps == null ? void 0 : mTableHeadCellFilterTextFieldProps.style, mcTableHeadCellFilterTextFieldProps == null ? void 0 : mcTableHeadCellFilterTextFieldProps.style)
418
+ });
419
+
420
+ var _useState2 = useState(''),
421
+ filterValue = _useState2[0],
422
+ setFilterValue = _useState2[1];
178
423
 
179
424
  var handleChange = useAsyncDebounce(function (value) {
180
425
  column.setFilter(value != null ? value : undefined);
181
426
  }, 150);
182
427
 
428
+ var handleFilterMenuOpen = function handleFilterMenuOpen(event) {
429
+ setAnchorEl(event.currentTarget);
430
+ };
431
+
183
432
  var handleClear = function handleClear() {
184
433
  setFilterValue('');
185
434
  column.setFilter(undefined);
186
435
  };
187
436
 
437
+ var handleClearFilterChip = function handleClearFilterChip() {
438
+ setFilterValue('');
439
+ column.setFilter(undefined);
440
+ setCurrentFilterTypes(function (prev) {
441
+ var _extends2;
442
+
443
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = 'fuzzy', _extends2));
444
+ });
445
+ };
446
+
188
447
  if (column.Filter) {
189
448
  return React.createElement(React.Fragment, null, column.Filter == null ? void 0 : column.Filter({
190
449
  column: column
191
450
  }));
192
451
  }
193
452
 
194
- return React.createElement(TextField, {
453
+ var filterType = tableInstance.state.currentFilterTypes[column.id];
454
+ var showFilterChip = ['empty', 'notEmpty'].includes(filterType);
455
+ var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
456
+ return React.createElement(React.Fragment, null, React.createElement(TextField, Object.assign({
195
457
  fullWidth: true,
196
- id: "filter-" + column.id + "-column",
458
+ id: "mrt-" + idPrefix + "-" + column.id + "-filter-text-field",
197
459
  inputProps: {
198
- style: {
460
+ sx: {
199
461
  textOverflow: 'ellipsis'
200
- }
462
+ },
463
+ title: filterPlaceholder
201
464
  },
202
- margin: "dense",
203
- placeholder: (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header)),
465
+ margin: "none",
466
+ placeholder: showFilterChip ? '' : filterPlaceholder,
204
467
  onChange: function onChange(e) {
205
468
  setFilterValue(e.target.value);
206
469
  handleChange(e.target.value);
@@ -211,33 +474,52 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
211
474
  value: filterValue != null ? filterValue : '',
212
475
  variant: "standard",
213
476
  InputProps: {
214
- startAdornment: React.createElement(Tooltip, {
215
- arrow: true,
216
- title: (_localization$filterT2 = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT2.replace('{column}', String(column.Header))
217
- }, React.createElement(InputAdornment, {
477
+ startAdornment: React.createElement(InputAdornment, {
218
478
  position: "start"
219
- }, React.createElement(FilterListIcon, null))),
220
- endAdornment: React.createElement(InputAdornment, {
479
+ }, React.createElement(Tooltip, {
480
+ arrow: true,
481
+ title: "Change Filter Mode"
482
+ }, React.createElement(IconButton, {
483
+ onClick: handleFilterMenuOpen,
484
+ size: "small",
485
+ sx: {
486
+ height: '1.75rem',
487
+ width: '1.75rem'
488
+ }
489
+ }, React.createElement(FilterListIcon, null))), showFilterChip && React.createElement(Chip, {
490
+ onDelete: handleClearFilterChip,
491
+ label: filterType
492
+ })),
493
+ endAdornment: !showFilterChip && React.createElement(InputAdornment, {
221
494
  position: "end"
222
495
  }, React.createElement(Tooltip, {
223
496
  arrow: true,
224
- title: (_localization$filterT3 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT3 : ''
497
+ placement: "right",
498
+ title: (_localization$filterT2 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT2 : ''
225
499
  }, React.createElement("span", null, React.createElement(IconButton, {
226
500
  "aria-label": localization.filterTextFieldClearButtonTitle,
227
501
  disabled: (filterValue == null ? void 0 : filterValue.length) === 0,
228
502
  onClick: handleClear,
229
- size: "small"
503
+ size: "small",
504
+ sx: {
505
+ height: '1.75rem',
506
+ width: '1.75rem'
507
+ }
230
508
  }, React.createElement(CloseIcon, {
231
509
  fontSize: "small"
232
510
  })))))
233
511
  }
234
- });
512
+ }, textFieldProps, {
513
+ sx: _extends({
514
+ minWidth: '6rem'
515
+ }, textFieldProps == null ? void 0 : textFieldProps.sx)
516
+ })), React.createElement(MRT_FilterMenu, {
517
+ anchorEl: anchorEl,
518
+ column: column,
519
+ setAnchorEl: setAnchorEl
520
+ }));
235
521
  };
236
522
 
237
- var commonMenuItemStyles = {
238
- display: 'flex',
239
- gap: '0.75rem'
240
- };
241
523
  var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
242
524
  var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
243
525
 
@@ -250,14 +532,19 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
250
532
  disableFilters = _useMRT.disableFilters,
251
533
  disableSortBy = _useMRT.disableSortBy,
252
534
  enableColumnGrouping = _useMRT.enableColumnGrouping,
253
- localization = _useMRT.localization,
254
- setShowFilters = _useMRT.setShowFilters,
255
535
  _useMRT$icons = _useMRT.icons,
256
- FilterListIcon = _useMRT$icons.FilterListIcon,
257
- SortIcon = _useMRT$icons.SortIcon,
258
536
  ClearAllIcon = _useMRT$icons.ClearAllIcon,
259
537
  DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
260
- VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon;
538
+ FilterListIcon = _useMRT$icons.FilterListIcon,
539
+ SortIcon = _useMRT$icons.SortIcon,
540
+ VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
541
+ idPrefix = _useMRT.idPrefix,
542
+ localization = _useMRT.localization,
543
+ setShowFilters = _useMRT.setShowFilters;
544
+
545
+ var _useState = useState(null),
546
+ filterMenuAnchorEl = _useState[0],
547
+ setFilterMenuAnchorEl = _useState[1];
261
548
 
262
549
  var handleClearSort = function handleClearSort() {
263
550
  column.clearSortBy();
@@ -290,55 +577,63 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
290
577
  var _document$getElementB, _column$muiTableHeadC, _column$muiTableHeadC2;
291
578
 
292
579
  return (_document$getElementB = document.getElementById( // @ts-ignore
293
- (_column$muiTableHeadC = (_column$muiTableHeadC2 = column.muiTableHeadCellFilterTextFieldProps) == null ? void 0 : _column$muiTableHeadC2.id) != null ? _column$muiTableHeadC : "filter-" + column.id + "-column")) == null ? void 0 : _document$getElementB.focus();
580
+ (_column$muiTableHeadC = (_column$muiTableHeadC2 = column.muiTableHeadCellFilterTextFieldProps) == null ? void 0 : _column$muiTableHeadC2.id) != null ? _column$muiTableHeadC : "mrt-" + idPrefix + "-" + column.id + "-filter-text-field")) == null ? void 0 : _document$getElementB.focus();
294
581
  }, 200);
295
582
  setAnchorEl(null);
296
583
  };
297
584
 
585
+ var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
586
+ event.stopPropagation();
587
+ setFilterMenuAnchorEl(event.currentTarget);
588
+ };
589
+
298
590
  return React.createElement(Menu, {
299
591
  anchorEl: anchorEl,
300
592
  open: !!anchorEl,
301
593
  onClose: function onClose() {
302
594
  return setAnchorEl(null);
303
595
  }
304
- }, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
596
+ }, React.createElement(MenuList, null, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
305
597
  key: 1,
306
598
  disabled: !column.isSorted,
307
- onClick: handleClearSort,
308
- sx: commonMenuItemStyles
309
- }, React.createElement(ClearAllIcon, null), " ", localization.columnActionMenuItemClearSort), React.createElement(MenuItem, {
599
+ onClick: handleClearSort
600
+ }, React.createElement(ListItemIcon, null, React.createElement(ClearAllIcon, null)), React.createElement(ListItemText, null, localization.columnActionMenuItemClearSort)), React.createElement(MenuItem, {
310
601
  key: 2,
311
602
  disabled: column.isSorted && !column.isSortedDesc,
312
- onClick: handleSortAsc,
313
- sx: commonMenuItemStyles
314
- }, React.createElement(SortIcon, null), ' ', (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header))), React.createElement(MenuItem, {
603
+ onClick: handleSortAsc
604
+ }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, null)), React.createElement(ListItemText, null, (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
315
605
  key: 3,
316
606
  disabled: column.isSorted && column.isSortedDesc,
317
- onClick: handleSortDesc,
318
- sx: commonMenuItemStyles
319
- }, React.createElement(SortIcon, {
607
+ onClick: handleSortDesc
608
+ }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, {
320
609
  style: {
321
610
  transform: 'rotate(180deg) scaleX(-1)'
322
611
  }
323
- }), ' ', (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header)))], !disableFilters && column.canFilter && [React.createElement(Divider, {
612
+ })), React.createElement(ListItemText, null, (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(Divider, {
324
613
  key: 0
325
614
  }), React.createElement(MenuItem, {
326
615
  key: 1,
327
- onClick: handleFilterByColumn,
328
- sx: commonMenuItemStyles
329
- }, React.createElement(FilterListIcon, null), ' ', (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header)))], enableColumnGrouping && column.canGroupBy && [React.createElement(Divider, {
616
+ onClick: handleFilterByColumn
617
+ }, React.createElement(ListItemIcon, null, React.createElement(FilterListIcon, null)), React.createElement(ListItemText, null, (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), React.createElement(IconButton, {
618
+ size: "small",
619
+ onMouseEnter: handleOpenFilterModeMenu
620
+ }, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_FilterMenu, {
621
+ anchorEl: filterMenuAnchorEl,
622
+ column: column,
623
+ key: 2,
624
+ setAnchorEl: setFilterMenuAnchorEl,
625
+ onSelect: handleFilterByColumn
626
+ })], enableColumnGrouping && column.canGroupBy && [React.createElement(Divider, {
330
627
  key: 1
331
628
  }), React.createElement(MenuItem, {
332
629
  key: 2,
333
- onClick: handleGroupByColumn,
334
- sx: commonMenuItemStyles
335
- }, React.createElement(DynamicFeedIcon, null), ' ', (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header)))], !disableColumnHiding && [React.createElement(Divider, {
630
+ onClick: handleGroupByColumn
631
+ }, React.createElement(ListItemIcon, null, React.createElement(DynamicFeedIcon, null)), React.createElement(ListItemText, null, (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(Divider, {
336
632
  key: 0
337
633
  }), React.createElement(MenuItem, {
338
634
  key: 1,
339
- onClick: handleHideColumn,
340
- sx: commonMenuItemStyles
341
- }, React.createElement(VisibilityOffIcon, null), ' ', (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header)))]);
635
+ onClick: handleHideColumn
636
+ }, React.createElement(ListItemIcon, null, React.createElement(VisibilityOffIcon, null)), React.createElement(ListItemText, null, (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]));
342
637
  };
343
638
 
344
639
  var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
@@ -368,11 +663,12 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
368
663
  onClick: handleClick,
369
664
  size: "small",
370
665
  sx: {
666
+ height: '2rem',
667
+ mr: '2px',
668
+ mt: '-0.2rem',
371
669
  opacity: 0.5,
372
670
  transition: 'opacity 0.2s',
373
- marginRight: '2px',
374
- height: '1.6rem',
375
- width: '1.6rem',
671
+ width: '2rem',
376
672
  '&:hover': {
377
673
  opacity: 1
378
674
  }
@@ -400,13 +696,11 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
400
696
  var column = _ref.column;
401
697
 
402
698
  var _useMRT = useMRT(),
403
- densePadding = _useMRT.densePadding,
404
699
  disableColumnActions = _useMRT.disableColumnActions,
405
700
  disableFilters = _useMRT.disableFilters,
406
701
  enableColumnResizing = _useMRT.enableColumnResizing,
407
702
  localization = _useMRT.localization,
408
703
  muiTableHeadCellProps = _useMRT.muiTableHeadCellProps,
409
- showFilters = _useMRT.showFilters,
410
704
  tableInstance = _useMRT.tableInstance;
411
705
 
412
706
  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;
@@ -418,17 +712,12 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
418
712
  });
419
713
 
420
714
  var sortTooltip = column.isSorted ? column.isSortedDesc ? localization.columnActionMenuItemClearSort : (_localization$columnA = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA.replace('{column}', column.Header) : (_localization$columnA2 = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA2.replace('{column}', column.Header);
715
+ var columnHeader = column.render('Header');
421
716
  return React.createElement(TableCell, Object.assign({
422
717
  align: isParentHeader ? 'center' : 'left'
423
718
  }, tableCellProps, {
424
- sx: _extends({}, commonTableHeadCellStyles(densePadding, enableColumnResizing), tableCellProps == null ? void 0 : tableCellProps.sx)
719
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding, enableColumnResizing), tableCellProps == null ? void 0 : tableCellProps.sx)
425
720
  }), React.createElement(Box, {
426
- sx: {
427
- alignContent: 'space-between',
428
- display: 'grid',
429
- height: '100%'
430
- }
431
- }, React.createElement(Box, {
432
721
  sx: {
433
722
  alignItems: 'flex-start',
434
723
  display: 'flex',
@@ -439,7 +728,8 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
439
728
  sx: {
440
729
  alignItems: 'center',
441
730
  display: 'flex',
442
- flexWrap: 'nowrap'
731
+ flexWrap: 'nowrap',
732
+ whiteSpace: columnHeader.length < 15 ? 'nowrap' : 'normal'
443
733
  },
444
734
  title: undefined
445
735
  }), column.render('Header'), !isParentHeader && column.canSort && React.createElement(Tooltip, {
@@ -470,10 +760,10 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
470
760
  maxHeight: '2rem'
471
761
  }
472
762
  })))), !disableFilters && column.canFilter && React.createElement(Collapse, {
473
- "in": showFilters
763
+ "in": tableInstance.state.showFilters
474
764
  }, React.createElement(MRT_FilterTextField, {
475
765
  column: column
476
- }))));
766
+ })));
477
767
  };
478
768
 
479
769
  var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
@@ -482,9 +772,9 @@ var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
482
772
  var cell = _ref.cell;
483
773
 
484
774
  var _useMRT = useMRT(),
485
- currentEditingRow = _useMRT.currentEditingRow,
486
775
  muiTableBodyCellEditTextFieldProps = _useMRT.muiTableBodyCellEditTextFieldProps,
487
- setCurrentEditingRow = _useMRT.setCurrentEditingRow;
776
+ setCurrentEditingRow = _useMRT.setCurrentEditingRow,
777
+ currentEditingRow = _useMRT.tableInstance.state.currentEditingRow;
488
778
 
489
779
  var handleChange = function handleChange(event) {
490
780
  if (currentEditingRow) {
@@ -540,8 +830,9 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
540
830
  var _useMRT = useMRT(),
541
831
  onCellClick = _useMRT.onCellClick,
542
832
  muiTableBodyCellProps = _useMRT.muiTableBodyCellProps,
543
- densePadding = _useMRT.densePadding,
544
- currentEditingRow = _useMRT.currentEditingRow;
833
+ _useMRT$tableInstance = _useMRT.tableInstance.state,
834
+ currentEditingRow = _useMRT$tableInstance.currentEditingRow,
835
+ densePadding = _useMRT$tableInstance.densePadding;
545
836
 
546
837
  var mTableCellBodyProps = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps(cell) : muiTableBodyCellProps;
547
838
  var mcTableCellBodyProps = cell.column.muiTableBodyCellProps instanceof Function ? cell.column.muiTableBodyCellProps(cell) : cell.column.muiTableBodyCellProps;
@@ -566,7 +857,6 @@ var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
566
857
  selectAll = _ref.selectAll;
567
858
 
568
859
  var _useMRT = useMRT(),
569
- densePadding = _useMRT.densePadding,
570
860
  localization = _useMRT.localization,
571
861
  onRowSelectChange = _useMRT.onRowSelectChange,
572
862
  onSelectAllChange = _useMRT.onSelectAllChange,
@@ -588,7 +878,7 @@ var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
588
878
 
589
879
  var checkboxProps = selectAll ? tableInstance.getToggleAllRowsSelectedProps() : row == null ? void 0 : row.getToggleRowSelectedProps();
590
880
  return React.createElement(TableCell, {
591
- sx: commonTableBodyButtonCellStyles(densePadding)
881
+ sx: commonTableBodyButtonCellStyles(tableInstance.state.densePadding)
592
882
  }, React.createElement(Tooltip, {
593
883
  arrow: true,
594
884
  enterDelay: 1000,
@@ -606,16 +896,15 @@ var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
606
896
 
607
897
  var MRT_ExpandAllButton = function MRT_ExpandAllButton() {
608
898
  var _useMRT = useMRT(),
609
- tableInstance = _useMRT.tableInstance,
610
- localization = _useMRT.localization,
611
899
  anyRowsExpanded = _useMRT.anyRowsExpanded,
612
- densePadding = _useMRT.densePadding,
613
- DoubleArrowDownIcon = _useMRT.icons.DoubleArrowDownIcon;
900
+ DoubleArrowDownIcon = _useMRT.icons.DoubleArrowDownIcon,
901
+ localization = _useMRT.localization,
902
+ tableInstance = _useMRT.tableInstance;
614
903
 
615
904
  return React.createElement(TableCell, Object.assign({
616
905
  size: "small"
617
906
  }, tableInstance.getToggleAllRowsExpandedProps(), {
618
- sx: commonTableBodyButtonCellStyles(densePadding)
907
+ sx: commonTableBodyButtonCellStyles(tableInstance.state.densePadding)
619
908
  }), React.createElement(IconButton, {
620
909
  "aria-label": localization.expandAllButtonTitle,
621
910
  title: localization.expandAllButtonTitle
@@ -648,8 +937,8 @@ var MRT_TableSpacerCell = function MRT_TableSpacerCell(_ref) {
648
937
 
649
938
  var MRT_TableHeadCellActions = function MRT_TableHeadCellActions() {
650
939
  var _useMRT = useMRT(),
651
- densePadding = _useMRT.densePadding,
652
- localization = _useMRT.localization;
940
+ localization = _useMRT.localization,
941
+ densePadding = _useMRT.tableInstance.state.densePadding;
653
942
 
654
943
  return React.createElement(TableCell, {
655
944
  style: {
@@ -666,7 +955,6 @@ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
666
955
 
667
956
  var _useMRT = useMRT(),
668
957
  anyRowsCanExpand = _useMRT.anyRowsCanExpand,
669
- densePadding = _useMRT.densePadding,
670
958
  disableExpandAll = _useMRT.disableExpandAll,
671
959
  enableRowActions = _useMRT.enableRowActions,
672
960
  enableRowEditing = _useMRT.enableRowEditing,
@@ -691,7 +979,7 @@ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
691
979
  });
692
980
 
693
981
  return React.createElement(TableRow, Object.assign({}, tableRowProps), enableRowNumbers && (isParentHeader ? React.createElement(MRT_TableSpacerCell, null) : React.createElement(TableCell, {
694
- sx: _extends({}, commonTableHeadCellStyles(densePadding))
982
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding))
695
983
  }, "#")), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && (isParentHeader ? React.createElement(MRT_TableSpacerCell, null) : React.createElement(MRT_TableHeadCellActions, null)), anyRowsCanExpand || renderDetailPanel ? !disableExpandAll && !isParentHeader ? React.createElement(MRT_ExpandAllButton, null) : React.createElement(MRT_TableSpacerCell, {
696
984
  width: (renderDetailPanel ? 2 : tableInstance.expandedDepth + 0.5) + "rem"
697
985
  }) : null, enableSelection ? !isParentHeader ? React.createElement(MRT_SelectCheckbox, {
@@ -753,10 +1041,10 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
753
1041
  var row = _ref.row;
754
1042
 
755
1043
  var _useMRT = useMRT(),
756
- densePadding = _useMRT.densePadding,
757
1044
  ExpandMoreIcon = _useMRT.icons.ExpandMoreIcon,
758
1045
  localization = _useMRT.localization,
759
- renderDetailPanel = _useMRT.renderDetailPanel;
1046
+ renderDetailPanel = _useMRT.renderDetailPanel,
1047
+ densePadding = _useMRT.tableInstance.state.densePadding;
760
1048
 
761
1049
  return React.createElement(TableCell, {
762
1050
  size: "small",
@@ -1576,9 +1864,9 @@ var MRT_EditActionButtons = function MRT_EditActionButtons(_ref) {
1576
1864
  CancelIcon = _useMRT$icons.CancelIcon,
1577
1865
  SaveIcon = _useMRT$icons.SaveIcon,
1578
1866
  localization = _useMRT.localization,
1579
- setCurrentEditingRow = _useMRT.setCurrentEditingRow,
1580
1867
  onRowEditSubmit = _useMRT.onRowEditSubmit,
1581
- currentEditingRow = _useMRT.currentEditingRow;
1868
+ setCurrentEditingRow = _useMRT.setCurrentEditingRow,
1869
+ currentEditingRow = _useMRT.tableInstance.state.currentEditingRow;
1582
1870
 
1583
1871
  var handleCancel = function handleCancel() {
1584
1872
  row.values = row.original;
@@ -1642,11 +1930,11 @@ var commonIconButtonStyles = {
1642
1930
  }
1643
1931
  };
1644
1932
  var MRT_ToggleRowActionMenuButton = function MRT_ToggleRowActionMenuButton(_ref) {
1933
+ var _tableInstance$state$;
1934
+
1645
1935
  var row = _ref.row;
1646
1936
 
1647
1937
  var _useMRT = useMRT(),
1648
- currentEditingRow = _useMRT.currentEditingRow,
1649
- densePadding = _useMRT.densePadding,
1650
1938
  enableRowEditing = _useMRT.enableRowEditing,
1651
1939
  _useMRT$icons = _useMRT.icons,
1652
1940
  EditIcon = _useMRT$icons.EditIcon,
@@ -1673,8 +1961,8 @@ var MRT_ToggleRowActionMenuButton = function MRT_ToggleRowActionMenuButton(_ref)
1673
1961
  };
1674
1962
 
1675
1963
  return React.createElement(TableCell, {
1676
- sx: commonTableBodyButtonCellStyles(densePadding)
1677
- }, renderRowActions ? React.createElement(React.Fragment, null, renderRowActions(row, tableInstance)) : row.id === (currentEditingRow == null ? void 0 : currentEditingRow.id) ? React.createElement(MRT_EditActionButtons, {
1964
+ sx: commonTableBodyButtonCellStyles(tableInstance.state.densePadding)
1965
+ }, renderRowActions ? React.createElement(React.Fragment, null, renderRowActions(row, tableInstance)) : row.id === ((_tableInstance$state$ = tableInstance.state.currentEditingRow) == null ? void 0 : _tableInstance$state$.id) ? React.createElement(MRT_EditActionButtons, {
1678
1966
  row: row
1679
1967
  }) : !renderRowActionMenuItems && enableRowEditing ? React.createElement(Tooltip, {
1680
1968
  placement: "right",
@@ -1683,13 +1971,17 @@ var MRT_ToggleRowActionMenuButton = function MRT_ToggleRowActionMenuButton(_ref)
1683
1971
  }, React.createElement(IconButton, {
1684
1972
  sx: commonIconButtonStyles,
1685
1973
  onClick: handleEdit
1686
- }, React.createElement(EditIcon, null))) : renderRowActionMenuItems ? React.createElement(React.Fragment, null, React.createElement(IconButton, {
1974
+ }, React.createElement(EditIcon, null))) : renderRowActionMenuItems ? React.createElement(React.Fragment, null, React.createElement(Tooltip, {
1975
+ arrow: true,
1976
+ enterDelay: 1000,
1977
+ enterNextDelay: 1000,
1978
+ title: localization.rowActionMenuButtonTitle
1979
+ }, React.createElement(IconButton, {
1687
1980
  "aria-label": localization.rowActionMenuButtonTitle,
1688
1981
  onClick: handleOpenRowActionMenu,
1689
1982
  size: "small",
1690
- sx: commonIconButtonStyles,
1691
- title: localization.rowActionMenuButtonTitle
1692
- }, React.createElement(MoreHorizIcon, null)), React.createElement(MRT_RowActionMenu, {
1983
+ sx: commonIconButtonStyles
1984
+ }, React.createElement(MoreHorizIcon, null))), React.createElement(MRT_RowActionMenu, {
1693
1985
  anchorEl: anchorEl,
1694
1986
  handleEdit: handleEdit,
1695
1987
  row: row,
@@ -1702,7 +1994,6 @@ var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
1702
1994
 
1703
1995
  var _useMRT = useMRT(),
1704
1996
  anyRowsCanExpand = _useMRT.anyRowsCanExpand,
1705
- densePadding = _useMRT.densePadding,
1706
1997
  enableRowActions = _useMRT.enableRowActions,
1707
1998
  enableRowEditing = _useMRT.enableRowEditing,
1708
1999
  enableRowNumbers = _useMRT.enableRowNumbers,
@@ -1710,7 +2001,8 @@ var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
1710
2001
  muiTableBodyRowProps = _useMRT.muiTableBodyRowProps,
1711
2002
  onRowClick = _useMRT.onRowClick,
1712
2003
  positionActionsColumn = _useMRT.positionActionsColumn,
1713
- renderDetailPanel = _useMRT.renderDetailPanel;
2004
+ renderDetailPanel = _useMRT.renderDetailPanel,
2005
+ densePadding = _useMRT.tableInstance.state.densePadding;
1714
2006
 
1715
2007
  var mTableBodyRowProps = muiTableBodyRowProps instanceof Function ? muiTableBodyRowProps(row) : muiTableBodyRowProps;
1716
2008
 
@@ -1724,7 +2016,6 @@ var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
1724
2016
  return onRowClick == null ? void 0 : onRowClick(event, row);
1725
2017
  }
1726
2018
  }, tableRowProps, {
1727
- //@ts-ignore
1728
2019
  sx: function sx(theme) {
1729
2020
  return _extends({
1730
2021
  backgroundColor: row.isSelected ? alpha(theme.palette.primary.light, 0.1) : 'transparent'
@@ -1757,9 +2048,10 @@ var MRT_TableBody = function MRT_TableBody() {
1757
2048
  manualPagination = _useMRT.manualPagination;
1758
2049
 
1759
2050
  var rows = manualPagination ? tableInstance.rows : tableInstance.page;
2051
+ var mTableBodyProps = muiTableBodyProps instanceof Function ? muiTableBodyProps(tableInstance) : muiTableBodyProps;
1760
2052
 
1761
- var tableBodyProps = _extends({}, muiTableBodyProps, tableInstance.getTableBodyProps(), {
1762
- style: _extends({}, tableInstance.getTableBodyProps().style, muiTableBodyProps == null ? void 0 : muiTableBodyProps.style)
2053
+ var tableBodyProps = _extends({}, mTableBodyProps, tableInstance.getTableBodyProps(), {
2054
+ style: _extends({}, tableInstance.getTableBodyProps().style, mTableBodyProps == null ? void 0 : mTableBodyProps.style)
1763
2055
  });
1764
2056
 
1765
2057
  return React.createElement(TableBody, Object.assign({}, tableBodyProps, {
@@ -1782,8 +2074,8 @@ var MRT_TableFooterCell = function MRT_TableFooterCell(_ref) {
1782
2074
 
1783
2075
  var _useMRT = useMRT(),
1784
2076
  muiTableFooterCellProps = _useMRT.muiTableFooterCellProps,
1785
- densePadding = _useMRT.densePadding,
1786
- enableColumnResizing = _useMRT.enableColumnResizing;
2077
+ enableColumnResizing = _useMRT.enableColumnResizing,
2078
+ densePadding = _useMRT.tableInstance.state.densePadding;
1787
2079
 
1788
2080
  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;
1789
2081
  var mTableFooterCellProps = muiTableFooterCellProps instanceof Function ? muiTableFooterCellProps(column) : muiTableFooterCellProps;
@@ -1848,7 +2140,8 @@ var MRT_TableFooter = function MRT_TableFooter() {
1848
2140
  muiTableFooterProps = _useMRT.muiTableFooterProps,
1849
2141
  tableInstance = _useMRT.tableInstance;
1850
2142
 
1851
- return React.createElement(TableFooter, Object.assign({}, muiTableFooterProps), tableInstance.footerGroups.map(function (footerGroup) {
2143
+ var tableFooterProps = muiTableFooterProps instanceof Function ? muiTableFooterProps(tableInstance) : muiTableFooterProps;
2144
+ return React.createElement(TableFooter, Object.assign({}, tableFooterProps), tableInstance.footerGroups.map(function (footerGroup) {
1852
2145
  return React.createElement(MRT_TableFooterRow, {
1853
2146
  key: footerGroup.getFooterGroupProps().key,
1854
2147
  footerGroup: footerGroup
@@ -1863,8 +2156,10 @@ var MRT_Table = function MRT_Table() {
1863
2156
  hideTableHead = _useMRT.hideTableHead,
1864
2157
  hideTableFooter = _useMRT.hideTableFooter;
1865
2158
 
1866
- var tableProps = _extends({}, muiTableProps, tableInstance.getTableProps(), {
1867
- style: _extends({}, tableInstance.getTableProps().style, muiTableProps == null ? void 0 : muiTableProps.style)
2159
+ var mTableProps = muiTableProps instanceof Function ? muiTableProps(tableInstance) : muiTableProps;
2160
+
2161
+ var tableProps = _extends({}, mTableProps, tableInstance.getTableProps(), {
2162
+ style: _extends({}, tableInstance.getTableProps().style, mTableProps == null ? void 0 : mTableProps.style)
1868
2163
  });
1869
2164
 
1870
2165
  return React.createElement(Table, Object.assign({}, tableProps), !hideTableHead && React.createElement(MRT_TableHead, null), React.createElement(MRT_TableBody, null), !hideTableFooter && React.createElement(MRT_TableFooter, null));
@@ -1875,7 +2170,7 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
1875
2170
  _useMRT$icons = _useMRT.icons,
1876
2171
  SearchIcon = _useMRT$icons.SearchIcon,
1877
2172
  CloseIcon = _useMRT$icons.CloseIcon,
1878
- showSearch = _useMRT.showSearch,
2173
+ idPrefix = _useMRT.idPrefix,
1879
2174
  localization = _useMRT.localization,
1880
2175
  muiSearchTextFieldProps = _useMRT.muiSearchTextFieldProps,
1881
2176
  onGlobalFilterChange = _useMRT.onGlobalFilterChange,
@@ -1898,10 +2193,10 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
1898
2193
  };
1899
2194
 
1900
2195
  return React.createElement(Collapse, {
1901
- "in": showSearch,
2196
+ "in": tableInstance.state.showSearch,
1902
2197
  orientation: "horizontal"
1903
2198
  }, React.createElement(TextField, Object.assign({
1904
- id: "global-search-text-field",
2199
+ id: "mrt-" + idPrefix + "-search-text-field",
1905
2200
  placeholder: localization.searchTextFieldPlaceholder,
1906
2201
  onChange: function onChange(event) {
1907
2202
  setSearchValue(event.target.value);
@@ -1938,12 +2233,12 @@ var MRT_FullScreenToggleButton = function MRT_FullScreenToggleButton(_ref) {
1938
2233
  var rest = _extends({}, _ref);
1939
2234
 
1940
2235
  var _useMRT = useMRT(),
1941
- fullScreen = _useMRT.fullScreen,
1942
2236
  _useMRT$icons = _useMRT.icons,
1943
2237
  FullscreenExitIcon = _useMRT$icons.FullscreenExitIcon,
1944
2238
  FullscreenIcon = _useMRT$icons.FullscreenIcon,
1945
2239
  localization = _useMRT.localization,
1946
- setFullScreen = _useMRT.setFullScreen;
2240
+ setFullScreen = _useMRT.setFullScreen,
2241
+ fullScreen = _useMRT.tableInstance.state.fullScreen;
1947
2242
 
1948
2243
  return React.createElement(Tooltip, {
1949
2244
  arrow: true,
@@ -2055,12 +2350,12 @@ var MRT_ToggleDensePaddingButton = function MRT_ToggleDensePaddingButton(_ref) {
2055
2350
  var rest = _extends({}, _ref);
2056
2351
 
2057
2352
  var _useMRT = useMRT(),
2058
- densePadding = _useMRT.densePadding,
2059
2353
  setDensePadding = _useMRT.setDensePadding,
2060
2354
  localization = _useMRT.localization,
2061
2355
  _useMRT$icons = _useMRT.icons,
2062
2356
  DensityMediumIcon = _useMRT$icons.DensityMediumIcon,
2063
- DensitySmallIcon = _useMRT$icons.DensitySmallIcon;
2357
+ DensitySmallIcon = _useMRT$icons.DensitySmallIcon,
2358
+ densePadding = _useMRT.tableInstance.state.densePadding;
2064
2359
 
2065
2360
  return React.createElement(Tooltip, {
2066
2361
  arrow: true,
@@ -2078,12 +2373,12 @@ var MRT_ToggleFiltersButton = function MRT_ToggleFiltersButton(_ref) {
2078
2373
  var rest = _extends({}, _ref);
2079
2374
 
2080
2375
  var _useMRT = useMRT(),
2081
- localization = _useMRT.localization,
2082
- setShowFilters = _useMRT.setShowFilters,
2083
- showFilters = _useMRT.showFilters,
2084
2376
  _useMRT$icons = _useMRT.icons,
2085
2377
  FilterListIcon = _useMRT$icons.FilterListIcon,
2086
- FilterListOffIcon = _useMRT$icons.FilterListOffIcon;
2378
+ FilterListOffIcon = _useMRT$icons.FilterListOffIcon,
2379
+ localization = _useMRT.localization,
2380
+ setShowFilters = _useMRT.setShowFilters,
2381
+ showFilters = _useMRT.tableInstance.state.showFilters;
2087
2382
 
2088
2383
  return React.createElement(Tooltip, {
2089
2384
  arrow: true,
@@ -2104,17 +2399,18 @@ var MRT_ToggleSearchButton = function MRT_ToggleSearchButton(_ref) {
2104
2399
  _useMRT$icons = _useMRT.icons,
2105
2400
  SearchIcon = _useMRT$icons.SearchIcon,
2106
2401
  SearchOffIcon = _useMRT$icons.SearchOffIcon,
2402
+ idPrefix = _useMRT.idPrefix,
2107
2403
  localization = _useMRT.localization,
2108
2404
  muiSearchTextFieldProps = _useMRT.muiSearchTextFieldProps,
2109
2405
  setShowSearch = _useMRT.setShowSearch,
2110
- showSearch = _useMRT.showSearch;
2406
+ showSearch = _useMRT.tableInstance.state.showSearch;
2111
2407
 
2112
2408
  var handleToggleSearch = function handleToggleSearch() {
2113
2409
  setShowSearch(!showSearch);
2114
2410
  setTimeout(function () {
2115
2411
  var _document$getElementB, _muiSearchTextFieldPr;
2116
2412
 
2117
- return (_document$getElementB = document.getElementById((_muiSearchTextFieldPr = muiSearchTextFieldProps == null ? void 0 : muiSearchTextFieldProps.id) != null ? _muiSearchTextFieldPr : "global-search-text-field")) == null ? void 0 : _document$getElementB.focus();
2413
+ return (_document$getElementB = document.getElementById((_muiSearchTextFieldPr = muiSearchTextFieldProps == null ? void 0 : muiSearchTextFieldProps.id) != null ? _muiSearchTextFieldPr : "mrt-" + idPrefix + "-search-text-field")) == null ? void 0 : _document$getElementB.focus();
2118
2414
  }, 200);
2119
2415
  };
2120
2416
 
@@ -2259,7 +2555,6 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
2259
2555
  muiTableToolbarTopProps = _useMRT.muiTableToolbarTopProps,
2260
2556
  positionPagination = _useMRT.positionPagination,
2261
2557
  positionToolbarActions = _useMRT.positionToolbarActions,
2262
- fullScreen = _useMRT.fullScreen,
2263
2558
  positionToolbarAlertBanner = _useMRT.positionToolbarAlertBanner,
2264
2559
  renderToolbarCustomActions = _useMRT.renderToolbarCustomActions,
2265
2560
  tableInstance = _useMRT.tableInstance;
@@ -2274,8 +2569,8 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
2274
2569
  backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
2275
2570
  display: 'grid',
2276
2571
  p: '0 !important',
2277
- position: fullScreen ? 'sticky' : undefined,
2278
- top: fullScreen ? '0' : undefined,
2572
+ position: tableInstance.state.fullScreen ? 'sticky' : undefined,
2573
+ top: tableInstance.state.fullScreen ? '0' : undefined,
2279
2574
  width: '100%',
2280
2575
  zIndex: 1
2281
2576
  }, toolbarProps == null ? void 0 : toolbarProps.sx);
@@ -2302,7 +2597,6 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
2302
2597
  manualPagination = _useMRT.manualPagination,
2303
2598
  muiTableToolbarBottomProps = _useMRT.muiTableToolbarBottomProps,
2304
2599
  positionPagination = _useMRT.positionPagination,
2305
- fullScreen = _useMRT.fullScreen,
2306
2600
  positionToolbarActions = _useMRT.positionToolbarActions,
2307
2601
  positionToolbarAlertBanner = _useMRT.positionToolbarAlertBanner,
2308
2602
  tableInstance = _useMRT.tableInstance;
@@ -2315,12 +2609,12 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
2315
2609
  return _extends({
2316
2610
  backgroundColor: theme.palette.background["default"],
2317
2611
  backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
2318
- bottom: fullScreen ? '0' : undefined,
2612
+ bottom: tableInstance.state.fullScreen ? '0' : undefined,
2319
2613
  display: 'flex',
2320
2614
  justifyContent: 'space-between',
2321
2615
  overflowY: 'hidden',
2322
2616
  p: '0 0.5rem !important',
2323
- position: fullScreen ? 'fixed' : undefined,
2617
+ position: tableInstance.state.fullScreen ? 'fixed' : undefined,
2324
2618
  width: 'calc(100% - 1rem)',
2325
2619
  zIndex: 1
2326
2620
  }, toolbarProps == null ? void 0 : toolbarProps.sx);
@@ -2330,7 +2624,6 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
2330
2624
 
2331
2625
  var MRT_TableContainer = function MRT_TableContainer() {
2332
2626
  var _useMRT = useMRT(),
2333
- fullScreen = _useMRT.fullScreen,
2334
2627
  hideToolbarBottom = _useMRT.hideToolbarBottom,
2335
2628
  hideToolbarTop = _useMRT.hideToolbarTop,
2336
2629
  isFetching = _useMRT.isFetching,
@@ -2338,6 +2631,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2338
2631
  muiTableContainerProps = _useMRT.muiTableContainerProps,
2339
2632
  tableInstance = _useMRT.tableInstance;
2340
2633
 
2634
+ var fullScreen = tableInstance.state.fullScreen;
2341
2635
  var originalBodyOverflowStyle = useRef();
2342
2636
  useEffect(function () {
2343
2637
  if (typeof window !== 'undefined') {
@@ -2376,7 +2670,12 @@ var MRT_TableContainer = function MRT_TableContainer() {
2376
2670
  }), !hideToolbarTop && React.createElement(MRT_ToolbarTop, null), React.createElement(Collapse, {
2377
2671
  "in": isFetching || isLoading,
2378
2672
  unmountOnExit: true
2379
- }, React.createElement(LinearProgress, null)), React.createElement(MRT_Table, null), !hideToolbarBottom && React.createElement(MRT_ToolbarBottom, null));
2673
+ }, React.createElement(LinearProgress, null)), React.createElement(Box, {
2674
+ sx: {
2675
+ maxWidth: '100%',
2676
+ overflowX: 'auto'
2677
+ }
2678
+ }, React.createElement(MRT_Table, null)), !hideToolbarBottom && React.createElement(MRT_ToolbarBottom, null));
2380
2679
  };
2381
2680
 
2382
2681
  var MRT_DefaultLocalization_EN = {
@@ -2392,6 +2691,15 @@ var MRT_DefaultLocalization_EN = {
2392
2691
  columnShowHideMenuShowAll: 'Show all',
2393
2692
  expandAllButtonTitle: 'Expand all',
2394
2693
  expandButtonTitle: 'Expand',
2694
+ filterMenuItemContains: 'Contains Exact',
2695
+ filterMenuItemEmpty: 'Empty',
2696
+ filterMenuItemEndsWith: 'Ends With',
2697
+ filterMenuItemEquals: 'Equals',
2698
+ filterMenuItemFuzzy: 'Fuzzy Match',
2699
+ filterMenuItemNotEmpty: 'Not Empty',
2700
+ filterMenuItemNotEquals: 'Not Equals',
2701
+ filterMenuItemStartsWith: 'Starts With',
2702
+ filterMenuTitle: 'Filter Mode',
2395
2703
  filterTextFieldClearButtonTitle: 'Clear filter',
2396
2704
  filterTextFieldPlaceholder: 'Filter by {column}',
2397
2705
  rowActionButtonCancel: 'Cancel',
@@ -2408,9 +2716,9 @@ var MRT_DefaultLocalization_EN = {
2408
2716
  toggleFilterButtonTitle: 'Toggle filters',
2409
2717
  toggleFullScreenButtonTitle: 'Toggle full screen',
2410
2718
  toggleSearchButtonTitle: 'Toggle search',
2411
- toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected',
2412
2719
  toolbarAlertGroupedByMessage: 'Grouped by ',
2413
- toolbarAlertGroupedThenByMessage: ', then by '
2720
+ toolbarAlertGroupedThenByMessage: ', then by ',
2721
+ toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected'
2414
2722
  };
2415
2723
 
2416
2724
  var MRT_Default_Icons = {