material-react-table 0.5.9 → 0.6.2

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 (38) hide show
  1. package/dist/MaterialReactTable.d.ts +13 -5
  2. package/dist/filtersFNs.d.ts +6 -10
  3. package/dist/localization.d.ts +43 -46
  4. package/dist/material-react-table.cjs.development.js +404 -331
  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 +405 -332
  9. package/dist/material-react-table.esm.js.map +1 -1
  10. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +3 -2
  11. package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +8 -0
  12. package/dist/useMRT.d.ts +4 -0
  13. package/package.json +3 -3
  14. package/src/MaterialReactTable.tsx +59 -47
  15. package/src/buttons/MRT_EditActionButtons.tsx +4 -7
  16. package/src/buttons/MRT_ExpandAllButton.tsx +2 -2
  17. package/src/buttons/MRT_ExpandButton.tsx +2 -2
  18. package/src/buttons/MRT_FullScreenToggleButton.tsx +2 -2
  19. package/src/buttons/MRT_ShowHideColumnsButton.tsx +4 -52
  20. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +2 -2
  21. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +2 -2
  22. package/src/buttons/MRT_ToggleFiltersButton.tsx +2 -2
  23. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +3 -7
  24. package/src/buttons/MRT_ToggleSearchButton.tsx +1 -1
  25. package/src/filtersFNs.ts +6 -16
  26. package/src/head/MRT_TableHeadCell.tsx +19 -6
  27. package/src/head/MRT_TableHeadCellActions.tsx +1 -1
  28. package/src/inputs/MRT_FilterTextField.tsx +34 -9
  29. package/src/inputs/MRT_SearchTextField.tsx +3 -3
  30. package/src/inputs/MRT_SelectCheckbox.tsx +4 -4
  31. package/src/localization.ts +87 -92
  32. package/src/menus/MRT_ColumnActionMenu.tsx +59 -14
  33. package/src/menus/MRT_FilterTypeMenu.tsx +10 -10
  34. package/src/menus/MRT_RowActionMenu.tsx +1 -1
  35. package/src/menus/MRT_ShowHideColumnsMenu.tsx +52 -35
  36. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +57 -0
  37. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +3 -3
  38. package/src/useMRT.tsx +38 -34
@@ -7,8 +7,8 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
7
7
  var React = require('react');
8
8
  var React__default = _interopDefault(React);
9
9
  var reactTable = require('react-table');
10
- var matchSorter = require('match-sorter');
11
10
  var material = require('@mui/material');
11
+ var matchSorter = require('match-sorter');
12
12
  var ArrowRightIcon = _interopDefault(require('@mui/icons-material/ArrowRight'));
13
13
  var CancelIcon = _interopDefault(require('@mui/icons-material/Cancel'));
14
14
  var ClearAllIcon = _interopDefault(require('@mui/icons-material/ClearAll'));
@@ -104,122 +104,6 @@ function _objectWithoutPropertiesLoose(source, excluded) {
104
104
  return target;
105
105
  }
106
106
 
107
- var fuzzyFilterFN = function fuzzyFilterFN(rows, id, filterValue) {
108
- return matchSorter.matchSorter(rows, filterValue.toString().trim(), {
109
- keys: ["values." + id],
110
- sorter: function sorter(rankedItems) {
111
- return rankedItems;
112
- }
113
- });
114
- };
115
-
116
- fuzzyFilterFN.autoRemove = function (val) {
117
- return !val;
118
- };
119
-
120
- var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
121
- return rows.filter(function (row) {
122
- return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
123
- });
124
- };
125
-
126
- containsFilterFN.autoRemove = function (val) {
127
- return !val;
128
- };
129
-
130
- var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
131
- return rows.filter(function (row) {
132
- return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
133
- });
134
- };
135
-
136
- startsWithFilterFN.autoRemove = function (val) {
137
- return !val;
138
- };
139
-
140
- var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
141
- return rows.filter(function (row) {
142
- return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
143
- });
144
- };
145
-
146
- endsWithFilterFN.autoRemove = function (val) {
147
- return !val;
148
- };
149
-
150
- var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
151
- return rows.filter(function (row) {
152
- return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
153
- });
154
- };
155
-
156
- equalsFilterFN.autoRemove = function (val) {
157
- return !val;
158
- };
159
-
160
- var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
161
- return rows.filter(function (row) {
162
- return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
163
- });
164
- };
165
-
166
- notEqualsFilterFN.autoRemove = function (val) {
167
- return !val;
168
- };
169
-
170
- var greaterThanFilterFN = function greaterThanFilterFN(rows, id, filterValue) {
171
- return rows.filter(function (row) {
172
- return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] > +filterValue : row.values[id].toString().toLowerCase().trim() > filterValue.toString().toLowerCase().trim();
173
- });
174
- };
175
-
176
- greaterThanFilterFN.autoRemove = function (val) {
177
- return !val;
178
- };
179
-
180
- var lessThanFilterFN = function lessThanFilterFN(rows, id, filterValue) {
181
- return rows.filter(function (row) {
182
- return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] < +filterValue : row.values[id].toString().toLowerCase().trim() < filterValue.toString().toLowerCase().trim();
183
- });
184
- };
185
-
186
- lessThanFilterFN.autoRemove = function (val) {
187
- return !val;
188
- };
189
-
190
- var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
191
- return rows.filter(function (row) {
192
- return !row.values[id].toString().toLowerCase().trim();
193
- });
194
- };
195
-
196
- emptyFilterFN.autoRemove = function (val) {
197
- return !val;
198
- };
199
-
200
- var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
201
- return rows.filter(function (row) {
202
- return !!row.values[id].toString().toLowerCase().trim();
203
- });
204
- };
205
-
206
- notEmptyFilterFN.autoRemove = function (val) {
207
- return !val;
208
- };
209
-
210
- var defaultFilterFNs = {
211
- contains: containsFilterFN,
212
- empty: emptyFilterFN,
213
- endsWith: endsWithFilterFN,
214
- greaterThan: greaterThanFilterFN,
215
- lessThan: lessThanFilterFN,
216
- equals: equalsFilterFN,
217
- fuzzy: fuzzyFilterFN,
218
- notEmpty: notEmptyFilterFN,
219
- notEquals: notEqualsFilterFN,
220
- startsWith: startsWithFilterFN
221
- };
222
-
223
107
  var MaterialReactTableContext = /*#__PURE__*/function () {
224
108
  return React.createContext({});
225
109
  }();
@@ -250,11 +134,7 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
250
134
  showSearch = _useState5[0],
251
135
  setShowSearch = _useState5[1];
252
136
 
253
- var filterTypes = React.useMemo(function () {
254
- return _extends({}, defaultFilterFNs, props.filterTypes);
255
- }, [props.filterTypes]);
256
-
257
- var getInitialFilterTypeState = function getInitialFilterTypeState() {
137
+ var findLowestLevelCols = React.useCallback(function () {
258
138
  var lowestLevelColumns = props.columns;
259
139
  var currentCols = props.columns;
260
140
 
@@ -276,33 +156,41 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
276
156
  currentCols = nextCols;
277
157
  }
278
158
 
279
- lowestLevelColumns = lowestLevelColumns.filter(function (col) {
159
+ return lowestLevelColumns.filter(function (col) {
280
160
  return !col.columns;
281
161
  });
282
- return Object.assign.apply(Object, [{}].concat(lowestLevelColumns.map(function (c) {
162
+ }, [props.columns]);
163
+
164
+ var _useState6 = React.useState(function () {
165
+ return Object.assign.apply(Object, [{}].concat(findLowestLevelCols().map(function (c) {
283
166
  var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
284
167
 
285
168
  return _ref2 = {}, _ref2[c.accessor] = (_ref = (_c$filter = c.filter) != null ? _c$filter : props == null ? void 0 : (_props$initialState5 = props.initialState) == null ? void 0 : (_props$initialState5$ = _props$initialState5.filters) == null ? void 0 : _props$initialState5$[c.accessor]) != null ? _ref : !!c.filterSelectOptions ? 'equals' : 'fuzzy', _ref2;
286
169
  })));
287
- };
288
-
289
- var _useState6 = React.useState(function () {
290
- return getInitialFilterTypeState();
291
170
  }),
292
171
  currentFilterTypes = _useState6[0],
293
172
  setCurrentFilterTypes = _useState6[1];
294
173
 
295
- var columns = React.useMemo(function () {
296
- return props.columns.map(function (column) {
297
- column.filter = filterTypes[currentFilterTypes[column.accessor]];
174
+ var applyFiltersToColumns = React.useCallback(function (cols) {
175
+ return cols.map(function (column) {
176
+ if (column.columns) {
177
+ applyFiltersToColumns(column.columns);
178
+ } else {
179
+ var _props$filterTypes;
180
+
181
+ column.filter = props == null ? void 0 : (_props$filterTypes = props.filterTypes) == null ? void 0 : _props$filterTypes[currentFilterTypes[column.accessor]];
182
+ }
183
+
298
184
  return column;
299
185
  });
300
- }, [props.columns, filterTypes, currentFilterTypes]);
301
- var tableInstance = reactTable.useTable.apply(void 0, [_extends({}, props, {
302
- columns: columns,
186
+ }, [currentFilterTypes, props.filterTypes]);
187
+ var columns = React.useMemo(function () {
188
+ return applyFiltersToColumns(props.columns);
189
+ }, [props.columns, applyFiltersToColumns]);
190
+ var tableInstance = reactTable.useTable.apply(void 0, [// @ts-ignore
191
+ _extends({}, props, {
303
192
  // @ts-ignore
304
- filterTypes: filterTypes,
305
- globalFilterValue: 'fuzzy',
193
+ columns: columns,
306
194
  useControlledState: function useControlledState(state) {
307
195
  return React.useMemo(function () {
308
196
  return _extends({}, state, {
@@ -367,6 +255,124 @@ var MRT_FILTER_TYPE;
367
255
  MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
368
256
  })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
369
257
 
258
+ var fuzzyFilterFN = function fuzzyFilterFN(rows, columnIds, filterValue) {
259
+ return matchSorter.matchSorter(rows, filterValue.toString().trim(), {
260
+ keys: Array.isArray(columnIds) ? columnIds.map(function (c) {
261
+ return "values." + c;
262
+ }) : ["values." + columnIds],
263
+ sorter: function sorter(rankedItems) {
264
+ return rankedItems;
265
+ }
266
+ });
267
+ };
268
+
269
+ fuzzyFilterFN.autoRemove = function (val) {
270
+ return !val;
271
+ };
272
+
273
+ var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
274
+ return rows.filter(function (row) {
275
+ return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
276
+ });
277
+ };
278
+
279
+ containsFilterFN.autoRemove = function (val) {
280
+ return !val;
281
+ };
282
+
283
+ var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
284
+ return rows.filter(function (row) {
285
+ return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
286
+ });
287
+ };
288
+
289
+ startsWithFilterFN.autoRemove = function (val) {
290
+ return !val;
291
+ };
292
+
293
+ var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
294
+ return rows.filter(function (row) {
295
+ return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
296
+ });
297
+ };
298
+
299
+ endsWithFilterFN.autoRemove = function (val) {
300
+ return !val;
301
+ };
302
+
303
+ var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
304
+ return rows.filter(function (row) {
305
+ return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
306
+ });
307
+ };
308
+
309
+ equalsFilterFN.autoRemove = function (val) {
310
+ return !val;
311
+ };
312
+
313
+ var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
314
+ return rows.filter(function (row) {
315
+ return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
316
+ });
317
+ };
318
+
319
+ notEqualsFilterFN.autoRemove = function (val) {
320
+ return !val;
321
+ };
322
+
323
+ var greaterThanFilterFN = function greaterThanFilterFN(rows, id, filterValue) {
324
+ return rows.filter(function (row) {
325
+ return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] > +filterValue : row.values[id].toString().toLowerCase().trim() > filterValue.toString().toLowerCase().trim();
326
+ });
327
+ };
328
+
329
+ greaterThanFilterFN.autoRemove = function (val) {
330
+ return !val;
331
+ };
332
+
333
+ var lessThanFilterFN = function lessThanFilterFN(rows, id, filterValue) {
334
+ return rows.filter(function (row) {
335
+ return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] < +filterValue : row.values[id].toString().toLowerCase().trim() < filterValue.toString().toLowerCase().trim();
336
+ });
337
+ };
338
+
339
+ lessThanFilterFN.autoRemove = function (val) {
340
+ return !val;
341
+ };
342
+
343
+ var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
344
+ return rows.filter(function (row) {
345
+ return !row.values[id].toString().toLowerCase().trim();
346
+ });
347
+ };
348
+
349
+ emptyFilterFN.autoRemove = function (val) {
350
+ return !val;
351
+ };
352
+
353
+ var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
354
+ return rows.filter(function (row) {
355
+ return !!row.values[id].toString().toLowerCase().trim();
356
+ });
357
+ };
358
+
359
+ notEmptyFilterFN.autoRemove = function (val) {
360
+ return !val;
361
+ };
362
+
363
+ var defaultFilterFNs = {
364
+ contains: containsFilterFN,
365
+ empty: emptyFilterFN,
366
+ endsWith: endsWithFilterFN,
367
+ equals: equalsFilterFN,
368
+ fuzzy: fuzzyFilterFN,
369
+ greaterThan: greaterThanFilterFN,
370
+ lessThan: lessThanFilterFN,
371
+ notEmpty: notEmptyFilterFN,
372
+ notEquals: notEqualsFilterFN,
373
+ startsWith: startsWithFilterFN
374
+ };
375
+
370
376
  var commonMenuItemStyles = {
371
377
  py: '6px',
372
378
  my: 0,
@@ -386,52 +392,52 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
386
392
  var filterTypes = React.useMemo(function () {
387
393
  return [{
388
394
  type: MRT_FILTER_TYPE.FUZZY,
389
- label: localization.filterMenuItemFuzzy,
395
+ label: localization.filterFuzzy,
390
396
  divider: false,
391
397
  fn: fuzzyFilterFN
392
398
  }, {
393
399
  type: MRT_FILTER_TYPE.CONTAINS,
394
- label: localization.filterMenuItemContains,
400
+ label: localization.filterContains,
395
401
  divider: true,
396
402
  fn: containsFilterFN
397
403
  }, {
398
404
  type: MRT_FILTER_TYPE.STARTS_WITH,
399
- label: localization.filterMenuItemStartsWith,
405
+ label: localization.filterStartsWith,
400
406
  divider: false,
401
407
  fn: startsWithFilterFN
402
408
  }, {
403
409
  type: MRT_FILTER_TYPE.ENDS_WITH,
404
- label: localization.filterMenuItemEndsWith,
410
+ label: localization.filterEndsWith,
405
411
  divider: true,
406
412
  fn: endsWithFilterFN
407
413
  }, {
408
414
  type: MRT_FILTER_TYPE.EQUALS,
409
- label: localization.filterMenuItemEquals,
415
+ label: localization.filterEquals,
410
416
  divider: false,
411
417
  fn: equalsFilterFN
412
418
  }, {
413
419
  type: MRT_FILTER_TYPE.NOT_EQUALS,
414
- label: localization.filterMenuItemNotEquals,
420
+ label: localization.filterNotEquals,
415
421
  divider: true,
416
422
  fn: notEqualsFilterFN
417
423
  }, {
418
424
  type: MRT_FILTER_TYPE.GREATER_THAN,
419
- label: localization.filterMenuItemGreaterThan,
425
+ label: localization.filterGreaterThan,
420
426
  divider: false,
421
427
  fn: greaterThanFilterFN
422
428
  }, {
423
429
  type: MRT_FILTER_TYPE.LESS_THAN,
424
- label: localization.filterMenuItemLessThan,
430
+ label: localization.filterLessThan,
425
431
  divider: true,
426
432
  fn: lessThanFilterFN
427
433
  }, {
428
434
  type: MRT_FILTER_TYPE.EMPTY,
429
- label: localization.filterMenuItemEmpty,
435
+ label: localization.filterEmpty,
430
436
  divider: false,
431
437
  fn: emptyFilterFN
432
438
  }, {
433
439
  type: MRT_FILTER_TYPE.NOT_EMPTY,
434
- label: localization.filterMenuItemNotEmpty,
440
+ label: localization.filterNotEmpty,
435
441
  divider: false,
436
442
  fn: notEmptyFilterFN
437
443
  }];
@@ -485,7 +491,7 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
485
491
  };
486
492
 
487
493
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
488
- var _localization$filterT, _localization$filterT2, _column$filterSelectO;
494
+ var _localization$filterB, _localization$clearFi, _column$filterSelectO;
489
495
 
490
496
  var column = _ref.column;
491
497
 
@@ -544,10 +550,10 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
544
550
  }
545
551
 
546
552
  var filterType = tableInstance.state.currentFilterTypes[column.id];
547
- var isCustomFilterType = filterType instanceof Function;
548
553
  var isSelectFilter = !!column.filterSelectOptions;
549
- var filterChipLabel = !isCustomFilterType && [MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(filterType);
550
- var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
554
+ var filterChipLabel = !(filterType instanceof Function) && [MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(filterType) ? //@ts-ignore
555
+ localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))] : '';
556
+ var filterPlaceholder = (_localization$filterB = localization.filterByColumn) == null ? void 0 : _localization$filterB.replace('{column}', String(column.Header));
551
557
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.TextField, Object.assign({
552
558
  fullWidth: true,
553
559
  id: "mrt-" + idPrefix + "-" + column.id + "-filter-text-field",
@@ -559,6 +565,14 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
559
565
  },
560
566
  title: filterPlaceholder
561
567
  },
568
+ helperText: filterType instanceof Function ? '' : localization.filterMode.replace('{filterType}', // @ts-ignore
569
+ localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))]),
570
+ FormHelperTextProps: {
571
+ sx: {
572
+ fontSize: '0.6rem',
573
+ lineHeight: '0.8rem'
574
+ }
575
+ },
562
576
  label: isSelectFilter && !filterValue ? filterPlaceholder : undefined,
563
577
  InputLabelProps: {
564
578
  shrink: false,
@@ -586,6 +600,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
586
600
  arrow: true,
587
601
  title: localization.changeFilterMode
588
602
  }, React__default.createElement("span", null, React__default.createElement(material.IconButton, {
603
+ "aria-label": localization.changeFilterMode,
589
604
  onClick: handleFilterMenuOpen,
590
605
  size: "small",
591
606
  sx: {
@@ -594,7 +609,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
594
609
  }
595
610
  }, React__default.createElement(FilterListIcon, null)))), filterChipLabel && React__default.createElement(material.Chip, {
596
611
  onDelete: handleClearFilterChip,
597
- label: filterType
612
+ label: filterChipLabel
598
613
  })),
599
614
  endAdornment: !filterChipLabel && React__default.createElement(material.InputAdornment, {
600
615
  position: "end"
@@ -602,9 +617,9 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
602
617
  arrow: true,
603
618
  disableHoverListener: isSelectFilter,
604
619
  placement: "right",
605
- title: (_localization$filterT2 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT2 : ''
620
+ title: (_localization$clearFi = localization.clearFilter) != null ? _localization$clearFi : ''
606
621
  }, React__default.createElement("span", null, React__default.createElement(material.IconButton, {
607
- "aria-label": localization.filterTextFieldClearButtonTitle,
622
+ "aria-label": localization.clearFilter,
608
623
  disabled: !(filterValue != null && filterValue.length),
609
624
  onClick: handleClear,
610
625
  size: "small",
@@ -618,7 +633,8 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
618
633
  }
619
634
  }, textFieldProps, {
620
635
  sx: _extends({
621
- m: '0 -0.25rem',
636
+ m: '-0.25rem',
637
+ p: 0,
622
638
  minWidth: !filterChipLabel ? '5rem' : 'auto',
623
639
  width: 'calc(100% + 0.5rem)',
624
640
  mt: isSelectFilter && !filterValue ? '-1rem' : undefined,
@@ -630,7 +646,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
630
646
  divider: true,
631
647
  disabled: !filterValue,
632
648
  value: ""
633
- }, localization.filterTextFieldClearButtonTitle), column == null ? void 0 : (_column$filterSelectO = column.filterSelectOptions) == null ? void 0 : _column$filterSelectO.map(function (option) {
649
+ }, localization.clearFilter), column == null ? void 0 : (_column$filterSelectO = column.filterSelectOptions) == null ? void 0 : _column$filterSelectO.map(function (option) {
634
650
  var value;
635
651
  var text;
636
652
 
@@ -653,6 +669,101 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
653
669
  }));
654
670
  };
655
671
 
672
+ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
673
+ var _column$columns, _column$columns2, _column$isVisible, _column$columns4;
674
+
675
+ var column = _ref.column,
676
+ isSubMenu = _ref.isSubMenu;
677
+ var isParentHeader = !!(column != null && (_column$columns = column.columns) != null && _column$columns.length);
678
+ var allChildColumnsVisible = isParentHeader && !!((_column$columns2 = column.columns) != null && _column$columns2.every(function (childColumn) {
679
+ return childColumn.isVisible;
680
+ }));
681
+ var switchChecked = (_column$isVisible = column.isVisible) != null ? _column$isVisible : allChildColumnsVisible;
682
+
683
+ var handleToggleColumnHidden = function handleToggleColumnHidden(column) {
684
+ if (isParentHeader) {
685
+ var _column$columns3;
686
+
687
+ column == null ? void 0 : (_column$columns3 = column.columns) == null ? void 0 : _column$columns3.forEach == null ? void 0 : _column$columns3.forEach(function (childColumn) {
688
+ childColumn.toggleHidden(switchChecked);
689
+ });
690
+ } else {
691
+ column.toggleHidden();
692
+ }
693
+ };
694
+
695
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.MenuItem, {
696
+ sx: _extends({}, commonMenuItemStyles$1, {
697
+ pl: (column.depth + 0.5) * 2 + "rem"
698
+ })
699
+ }, React__default.createElement(material.FormControlLabel, {
700
+ componentsProps: {
701
+ typography: {
702
+ sx: {
703
+ marginBottom: 0
704
+ }
705
+ }
706
+ },
707
+ checked: switchChecked,
708
+ control: React__default.createElement(material.Switch, null),
709
+ disabled: isSubMenu && switchChecked,
710
+ label: column.Header,
711
+ onChange: function onChange() {
712
+ return handleToggleColumnHidden(column);
713
+ }
714
+ })), (_column$columns4 = column.columns) == null ? void 0 : _column$columns4.map(function (c, i) {
715
+ return React__default.createElement(MRT_ShowHideColumnsMenuItems, {
716
+ key: i + "-" + c.id,
717
+ column: c,
718
+ isSubMenu: isSubMenu
719
+ });
720
+ }));
721
+ };
722
+
723
+ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
724
+ var anchorEl = _ref.anchorEl,
725
+ isSubMenu = _ref.isSubMenu,
726
+ setAnchorEl = _ref.setAnchorEl;
727
+
728
+ var _useMRT = useMRT(),
729
+ localization = _useMRT.localization,
730
+ tableInstance = _useMRT.tableInstance;
731
+
732
+ return React__default.createElement(material.Menu, {
733
+ anchorEl: anchorEl,
734
+ open: !!anchorEl,
735
+ onClose: function onClose() {
736
+ return setAnchorEl(null);
737
+ },
738
+ MenuListProps: {
739
+ dense: tableInstance.state.densePadding
740
+ }
741
+ }, React__default.createElement(material.Box, {
742
+ sx: {
743
+ display: 'flex',
744
+ justifyContent: isSubMenu ? 'center' : 'space-between',
745
+ p: '0.5rem',
746
+ pt: 0
747
+ }
748
+ }, !isSubMenu && React__default.createElement(material.Button, {
749
+ disabled: !tableInstance.getToggleHideAllColumnsProps().checked && !tableInstance.getToggleHideAllColumnsProps().indeterminate,
750
+ onClick: function onClick() {
751
+ return tableInstance.toggleHideAllColumns(true);
752
+ }
753
+ }, localization.hideAll), React__default.createElement(material.Button, {
754
+ disabled: tableInstance.getToggleHideAllColumnsProps().checked,
755
+ onClick: function onClick() {
756
+ return tableInstance.toggleHideAllColumns(false);
757
+ }
758
+ }, localization.showAll)), React__default.createElement(material.Divider, null), tableInstance.columns.map(function (column, index) {
759
+ return React__default.createElement(MRT_ShowHideColumnsMenuItems, {
760
+ column: column,
761
+ isSubMenu: isSubMenu,
762
+ key: index + "-" + column.id
763
+ });
764
+ }));
765
+ };
766
+
656
767
  var commonMenuItemStyles$1 = {
657
768
  py: '6px',
658
769
  my: 0,
@@ -665,7 +776,7 @@ var commonListItemStyles = {
665
776
  alignItems: 'center'
666
777
  };
667
778
  var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
668
- var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
779
+ var _localization$sortByC, _localization$sortByC2, _localization$filterB, _localization, _localization$hideCol, _tableInstance$state$, _localization$showAll;
669
780
 
670
781
  var anchorEl = _ref.anchorEl,
671
782
  column = _ref.column,
@@ -679,6 +790,7 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
679
790
  _useMRT$icons = _useMRT.icons,
680
791
  ArrowRightIcon = _useMRT$icons.ArrowRightIcon,
681
792
  ClearAllIcon = _useMRT$icons.ClearAllIcon,
793
+ ViewColumnIcon = _useMRT$icons.ViewColumnIcon,
682
794
  DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
683
795
  FilterListIcon = _useMRT$icons.FilterListIcon,
684
796
  FilterListOffIcon = _useMRT$icons.FilterListOffIcon,
@@ -693,6 +805,10 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
693
805
  filterMenuAnchorEl = _useState[0],
694
806
  setFilterMenuAnchorEl = _useState[1];
695
807
 
808
+ var _useState2 = React.useState(null),
809
+ showHideColumnsMenuAnchorEl = _useState2[0],
810
+ setShowHideColumnsMenuAnchorEl = _useState2[1];
811
+
696
812
  var handleClearSort = function handleClearSort() {
697
813
  column.clearSortBy();
698
814
  setAnchorEl(null);
@@ -739,6 +855,15 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
739
855
  setFilterMenuAnchorEl(event.currentTarget);
740
856
  };
741
857
 
858
+ var handleShowAllColumns = function handleShowAllColumns() {
859
+ tableInstance.toggleHideAllColumns(false);
860
+ };
861
+
862
+ var handleOpenShowHideColumnsMenu = function handleOpenShowHideColumnsMenu(event) {
863
+ event.stopPropagation();
864
+ setShowHideColumnsMenuAnchorEl(event.currentTarget);
865
+ };
866
+
742
867
  return React__default.createElement(material.Menu, {
743
868
  anchorEl: anchorEl,
744
869
  open: !!anchorEl,
@@ -750,21 +875,21 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
750
875
  }
751
876
  }, !disableSortBy && column.canSort && [React__default.createElement(material.MenuItem, {
752
877
  disabled: !column.isSorted,
753
- key: 1,
878
+ key: 0,
754
879
  onClick: handleClearSort,
755
880
  sx: commonMenuItemStyles$1
756
881
  }, React__default.createElement(material.Box, {
757
882
  sx: commonListItemStyles
758
- }, React__default.createElement(ClearAllIcon, null), localization.columnActionMenuItemClearSort)), React__default.createElement(material.MenuItem, {
883
+ }, React__default.createElement(ClearAllIcon, null), localization.clearSort)), React__default.createElement(material.MenuItem, {
759
884
  disabled: column.isSorted && !column.isSortedDesc,
760
- key: 2,
885
+ key: 1,
761
886
  onClick: handleSortAsc,
762
887
  sx: commonMenuItemStyles$1
763
888
  }, React__default.createElement(material.Box, {
764
889
  sx: commonListItemStyles
765
- }, React__default.createElement(SortIcon, null), (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React__default.createElement(material.MenuItem, {
890
+ }, React__default.createElement(SortIcon, null), (_localization$sortByC = localization.sortByColumnAsc) == null ? void 0 : _localization$sortByC.replace('{column}', String(column.Header)))), React__default.createElement(material.MenuItem, {
766
891
  divider: !disableFilters || enableColumnGrouping || !disableColumnHiding,
767
- key: 3,
892
+ key: 2,
768
893
  disabled: column.isSorted && column.isSortedDesc,
769
894
  onClick: handleSortDesc,
770
895
  sx: commonMenuItemStyles$1
@@ -774,21 +899,21 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
774
899
  style: {
775
900
  transform: 'rotate(180deg) scaleX(-1)'
776
901
  }
777
- }), (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React__default.createElement(material.MenuItem, {
902
+ }), (_localization$sortByC2 = localization.sortByColumnDesc) == null ? void 0 : _localization$sortByC2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React__default.createElement(material.MenuItem, {
778
903
  disabled: !column.filterValue,
779
904
  key: 0,
780
905
  onClick: handleClearFilter,
781
906
  sx: commonMenuItemStyles$1
782
907
  }, React__default.createElement(material.Box, {
783
908
  sx: commonListItemStyles
784
- }, React__default.createElement(FilterListOffIcon, null), localization.filterTextFieldClearButtonTitle)), React__default.createElement(material.MenuItem, {
909
+ }, React__default.createElement(FilterListOffIcon, null), localization.clearFilter)), React__default.createElement(material.MenuItem, {
785
910
  divider: enableColumnGrouping || !disableColumnHiding,
786
911
  key: 1,
787
912
  onClick: handleFilterByColumn,
788
913
  sx: commonMenuItemStyles$1
789
914
  }, React__default.createElement(material.Box, {
790
915
  sx: commonListItemStyles
791
- }, React__default.createElement(FilterListIcon, null), (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), !column.filterSelectOptions && React__default.createElement(material.IconButton, {
916
+ }, React__default.createElement(FilterListIcon, null), (_localization$filterB = localization.filterByColumn) == null ? void 0 : _localization$filterB.replace('{column}', String(column.Header))), !column.filterSelectOptions && React__default.createElement(material.IconButton, {
792
917
  onClick: handleOpenFilterModeMenu,
793
918
  onMouseEnter: handleOpenFilterModeMenu,
794
919
  size: "small",
@@ -803,18 +928,37 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
803
928
  onSelect: handleFilterByColumn
804
929
  })], enableColumnGrouping && column.canGroupBy && [React__default.createElement(material.MenuItem, {
805
930
  divider: !disableColumnHiding,
806
- key: 2,
931
+ key: 0,
807
932
  onClick: handleGroupByColumn,
808
933
  sx: commonMenuItemStyles$1
809
934
  }, React__default.createElement(material.Box, {
810
935
  sx: commonListItemStyles
811
- }, React__default.createElement(DynamicFeedIcon, null), (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React__default.createElement(material.MenuItem, {
812
- key: 1,
936
+ }, React__default.createElement(DynamicFeedIcon, null), (_localization = localization[column.isGrouped ? 'ungroupByColumn' : 'groupByColumn']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React__default.createElement(material.MenuItem, {
937
+ key: 0,
813
938
  onClick: handleHideColumn,
814
939
  sx: commonMenuItemStyles$1
815
940
  }, React__default.createElement(material.Box, {
816
941
  sx: commonListItemStyles
817
- }, React__default.createElement(VisibilityOffIcon, null), (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]);
942
+ }, React__default.createElement(VisibilityOffIcon, null), (_localization$hideCol = localization.hideColumn) == null ? void 0 : _localization$hideCol.replace('{column}', String(column.Header)))), React__default.createElement(material.MenuItem, {
943
+ disabled: !((_tableInstance$state$ = tableInstance.state.hiddenColumns) != null && _tableInstance$state$.length),
944
+ key: 1,
945
+ onClick: handleShowAllColumns,
946
+ sx: commonMenuItemStyles$1
947
+ }, React__default.createElement(material.Box, {
948
+ sx: commonListItemStyles
949
+ }, React__default.createElement(ViewColumnIcon, null), (_localization$showAll = localization.showAllColumns) == null ? void 0 : _localization$showAll.replace('{column}', String(column.Header))), !column.filterSelectOptions && React__default.createElement(material.IconButton, {
950
+ onClick: handleOpenShowHideColumnsMenu,
951
+ onMouseEnter: handleOpenShowHideColumnsMenu,
952
+ size: "small",
953
+ sx: {
954
+ p: 0
955
+ }
956
+ }, React__default.createElement(ArrowRightIcon, null))), React__default.createElement(MRT_ShowHideColumnsMenu, {
957
+ anchorEl: showHideColumnsMenuAnchorEl,
958
+ isSubMenu: true,
959
+ key: 2,
960
+ setAnchorEl: setShowHideColumnsMenuAnchorEl
961
+ })]);
818
962
  };
819
963
 
820
964
  var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
@@ -839,9 +983,9 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
839
983
  enterDelay: 1000,
840
984
  enterNextDelay: 1000,
841
985
  placement: "top",
842
- title: localization.columnActionMenuButtonTitle
986
+ title: localization.columnActions
843
987
  }, React__default.createElement(material.IconButton, {
844
- "aria-label": localization.columnActionMenuButtonTitle,
988
+ "aria-label": localization.columnActions,
845
989
  onClick: handleClick,
846
990
  size: "small",
847
991
  sx: {
@@ -873,7 +1017,7 @@ var commonTableHeadCellStyles = function commonTableHeadCellStyles(densePadding,
873
1017
  };
874
1018
  };
875
1019
  var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
876
- var _column$columns, _localization$columnA, _localization$columnA2;
1020
+ var _column$columns, _localization$sortByC, _localization$sortByC2;
877
1021
 
878
1022
  var column = _ref.column;
879
1023
 
@@ -897,8 +1041,10 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
897
1041
  style: _extends({}, column.getHeaderProps().style, mTableHeadCellProps == null ? void 0 : mTableHeadCellProps.style, mcTableHeadCellProps == null ? void 0 : mcTableHeadCellProps.style)
898
1042
  });
899
1043
 
900
- 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);
901
- var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}', column.filterValue) : localization.toggleFilterButtonTitle;
1044
+ var sortTooltip = column.isSorted ? column.isSortedDesc ? localization.clearSort : (_localization$sortByC = localization.sortByColumnDesc) == null ? void 0 : _localization$sortByC.replace('{column}', column.Header) : (_localization$sortByC2 = localization.sortByColumnAsc) == null ? void 0 : _localization$sortByC2.replace('{column}', column.Header);
1045
+ var filterType = tableInstance.state.currentFilterTypes[column.id];
1046
+ var filterTooltip = !!column.filterValue ? localization.filteringByColumn.replace('{column}', String(column.Header)).replace('{filterType}', filterType instanceof Function ? '' : // @ts-ignore
1047
+ localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))]).replace('{filterValue}', column.filterValue) : localization.showHideFilters;
902
1048
  var columnHeader = column.render('Header');
903
1049
  return React__default.createElement(material.TableCell, Object.assign({
904
1050
  align: isParentHeader ? 'center' : 'left'
@@ -1102,10 +1248,10 @@ var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
1102
1248
  arrow: true,
1103
1249
  enterDelay: 1000,
1104
1250
  enterNextDelay: 1000,
1105
- title: selectAll ? localization.selectAllCheckboxTitle : localization.selectCheckboxTitle
1251
+ title: selectAll ? localization.toggleSelectAll : localization.toggleSelectRow
1106
1252
  }, React__default.createElement(material.Checkbox, Object.assign({
1107
1253
  inputProps: {
1108
- 'aria-label': selectAll ? localization.selectAllCheckboxTitle : localization.selectCheckboxTitle
1254
+ 'aria-label': selectAll ? localization.toggleSelectAll : localization.toggleSelectRow
1109
1255
  },
1110
1256
  onChange: onSelectChange
1111
1257
  }, checkboxProps, {
@@ -1125,8 +1271,8 @@ var MRT_ExpandAllButton = function MRT_ExpandAllButton() {
1125
1271
  }, tableInstance.getToggleAllRowsExpandedProps(), {
1126
1272
  sx: commonTableBodyButtonCellStyles(tableInstance.state.densePadding)
1127
1273
  }), React__default.createElement(material.IconButton, {
1128
- "aria-label": localization.expandAllButtonTitle,
1129
- title: localization.expandAllButtonTitle
1274
+ "aria-label": localization.expandAll,
1275
+ title: localization.expandAll
1130
1276
  }, React__default.createElement(DoubleArrowDownIcon, {
1131
1277
  style: {
1132
1278
  transform: "rotate(" + (tableInstance.isAllRowsExpanded ? -180 : anyRowsExpanded ? -90 : 0) + "deg)",
@@ -1166,7 +1312,7 @@ var MRT_TableHeadCellActions = function MRT_TableHeadCellActions() {
1166
1312
  sx: _extends({}, commonTableHeadCellStyles(densePadding), {
1167
1313
  textAlign: 'center'
1168
1314
  })
1169
- }, localization.actionsHeadColumnTitle);
1315
+ }, localization.actions);
1170
1316
  };
1171
1317
 
1172
1318
  var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
@@ -1272,9 +1418,9 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
1272
1418
  textAlign: 'left'
1273
1419
  })
1274
1420
  }, React__default.createElement(material.IconButton, Object.assign({
1275
- "aria-label": localization.expandButtonTitle,
1421
+ "aria-label": localization.expand,
1276
1422
  disabled: !row.canExpand && !renderDetailPanel,
1277
- title: localization.expandButtonTitle
1423
+ title: localization.expand
1278
1424
  }, row.getToggleRowExpandedProps()), React__default.createElement(ExpandMoreIcon, {
1279
1425
  style: {
1280
1426
  transform: "rotate(" + (!row.canExpand && !renderDetailPanel ? -90 : row.isExpanded ? -180 : 0) + "deg)",
@@ -1310,7 +1456,7 @@ var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
1310
1456
  }, enableRowEditing && React__default.createElement(material.MenuItem, {
1311
1457
  onClick: handleEdit,
1312
1458
  sx: commonMenuItemStyles$1
1313
- }, React__default.createElement(EditIcon, null), localization.rowActionMenuItemEdit), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1459
+ }, React__default.createElement(EditIcon, null), localization.edit), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1314
1460
  return setAnchorEl(null);
1315
1461
  })) != null ? _renderRowActionMenuI : null);
1316
1462
  };
@@ -2124,15 +2270,15 @@ var MRT_EditActionButtons = function MRT_EditActionButtons(_ref) {
2124
2270
  }
2125
2271
  }, React__default.createElement(material.Tooltip, {
2126
2272
  arrow: true,
2127
- title: localization.rowActionButtonCancel
2273
+ title: localization.cancel
2128
2274
  }, React__default.createElement(material.IconButton, {
2129
- "aria-label": localization.rowActionButtonCancel,
2275
+ "aria-label": localization.cancel,
2130
2276
  onClick: handleCancel
2131
2277
  }, React__default.createElement(CancelIcon, null))), React__default.createElement(material.Tooltip, {
2132
2278
  arrow: true,
2133
- title: localization.rowActionButtonSave
2279
+ title: localization.save
2134
2280
  }, React__default.createElement(material.IconButton, {
2135
- "aria-label": localization.rowActionButtonSave,
2281
+ "aria-label": localization.save,
2136
2282
  color: "info",
2137
2283
  onClick: handleSave
2138
2284
  }, React__default.createElement(SaveIcon, null))));
@@ -2186,7 +2332,7 @@ var MRT_ToggleRowActionMenuButton = function MRT_ToggleRowActionMenuButton(_ref)
2186
2332
  }) : !renderRowActionMenuItems && enableRowEditing ? React__default.createElement(material.Tooltip, {
2187
2333
  placement: "right",
2188
2334
  arrow: true,
2189
- title: localization.rowActionMenuItemEdit
2335
+ title: localization.edit
2190
2336
  }, React__default.createElement(material.IconButton, {
2191
2337
  sx: commonIconButtonStyles,
2192
2338
  onClick: handleEdit
@@ -2194,9 +2340,9 @@ var MRT_ToggleRowActionMenuButton = function MRT_ToggleRowActionMenuButton(_ref)
2194
2340
  arrow: true,
2195
2341
  enterDelay: 1000,
2196
2342
  enterNextDelay: 1000,
2197
- title: localization.rowActionMenuButtonTitle
2343
+ title: localization.rowActions
2198
2344
  }, React__default.createElement(material.IconButton, {
2199
- "aria-label": localization.rowActionMenuButtonTitle,
2345
+ "aria-label": localization.rowActions,
2200
2346
  onClick: handleOpenRowActionMenu,
2201
2347
  size: "small",
2202
2348
  sx: commonIconButtonStyles
@@ -2416,7 +2562,7 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2416
2562
  orientation: "horizontal"
2417
2563
  }, React__default.createElement(material.TextField, Object.assign({
2418
2564
  id: "mrt-" + idPrefix + "-search-text-field",
2419
- placeholder: localization.searchTextFieldPlaceholder,
2565
+ placeholder: localization.search,
2420
2566
  onChange: function onChange(event) {
2421
2567
  setSearchValue(event.target.value);
2422
2568
  handleChange(event);
@@ -2432,11 +2578,11 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2432
2578
  endAdornment: React__default.createElement(material.InputAdornment, {
2433
2579
  position: "end"
2434
2580
  }, React__default.createElement(material.IconButton, {
2435
- "aria-label": localization.searchTextFieldClearButtonTitle,
2581
+ "aria-label": localization.clearSearch,
2436
2582
  disabled: (searchValue == null ? void 0 : searchValue.length) === 0,
2437
2583
  onClick: handleClear,
2438
2584
  size: "small",
2439
- title: localization.searchTextFieldClearButtonTitle
2585
+ title: localization.clearSearch
2440
2586
  }, React__default.createElement(CloseIcon, {
2441
2587
  fontSize: "small"
2442
2588
  })))
@@ -2461,9 +2607,9 @@ var MRT_FullScreenToggleButton = function MRT_FullScreenToggleButton(_ref) {
2461
2607
 
2462
2608
  return React__default.createElement(material.Tooltip, {
2463
2609
  arrow: true,
2464
- title: localization.toggleFullScreenButtonTitle
2610
+ title: localization.toggleFullScreen
2465
2611
  }, React__default.createElement(material.IconButton, Object.assign({
2466
- "aria-label": localization.toggleFilterButtonTitle,
2612
+ "aria-label": localization.showHideFilters,
2467
2613
  onClick: function onClick() {
2468
2614
  return setFullScreen(!fullScreen);
2469
2615
  },
@@ -2471,61 +2617,12 @@ var MRT_FullScreenToggleButton = function MRT_FullScreenToggleButton(_ref) {
2471
2617
  }, rest), fullScreen ? React__default.createElement(FullscreenExitIcon, null) : React__default.createElement(FullscreenIcon, null)));
2472
2618
  };
2473
2619
 
2474
- var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
2475
- var _column$columns, _column$columns2, _column$isVisible, _column$columns4;
2476
-
2477
- var column = _ref.column;
2478
- var isParentHeader = !!(column != null && (_column$columns = column.columns) != null && _column$columns.length);
2479
- var allChildColumnsVisible = isParentHeader && !!((_column$columns2 = column.columns) != null && _column$columns2.every(function (childColumn) {
2480
- return childColumn.isVisible;
2481
- }));
2482
- var switchChecked = (_column$isVisible = column.isVisible) != null ? _column$isVisible : allChildColumnsVisible;
2483
-
2484
- var handleToggleColumnHidden = function handleToggleColumnHidden(column) {
2485
- if (isParentHeader) {
2486
- var _column$columns3;
2487
-
2488
- column == null ? void 0 : (_column$columns3 = column.columns) == null ? void 0 : _column$columns3.forEach == null ? void 0 : _column$columns3.forEach(function (childColumn) {
2489
- childColumn.toggleHidden(switchChecked);
2490
- });
2491
- } else {
2492
- column.toggleHidden();
2493
- }
2494
- };
2495
-
2496
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.MenuItem, {
2497
- sx: _extends({}, commonMenuItemStyles$1, {
2498
- pl: (column.depth + 0.5) * 2 + "rem"
2499
- })
2500
- }, React__default.createElement(material.FormControlLabel, {
2501
- componentsProps: {
2502
- typography: {
2503
- sx: {
2504
- marginBottom: 0
2505
- }
2506
- }
2507
- },
2508
- checked: switchChecked,
2509
- control: React__default.createElement(material.Switch, null),
2510
- label: column.Header,
2511
- onChange: function onChange() {
2512
- return handleToggleColumnHidden(column);
2513
- }
2514
- })), (_column$columns4 = column.columns) == null ? void 0 : _column$columns4.map(function (c, i) {
2515
- return React__default.createElement(MRT_ShowHideColumnsMenu, {
2516
- key: i + "-" + c.id,
2517
- column: c
2518
- });
2519
- }));
2520
- };
2521
-
2522
2620
  var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2523
2621
  var rest = _extends({}, _ref);
2524
2622
 
2525
2623
  var _useMRT = useMRT(),
2526
2624
  ViewColumnIcon = _useMRT.icons.ViewColumnIcon,
2527
- localization = _useMRT.localization,
2528
- tableInstance = _useMRT.tableInstance;
2625
+ localization = _useMRT.localization;
2529
2626
 
2530
2627
  var _useState = React.useState(null),
2531
2628
  anchorEl = _useState[0],
@@ -2537,42 +2634,15 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2537
2634
 
2538
2635
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.Tooltip, {
2539
2636
  arrow: true,
2540
- title: localization.showHideColumnsButtonTitle
2637
+ title: localization.showHideColumns
2541
2638
  }, React__default.createElement(material.IconButton, Object.assign({
2542
- "aria-label": localization.showHideColumnsButtonTitle,
2639
+ "aria-label": localization.showHideColumns,
2543
2640
  onClick: handleClick,
2544
2641
  size: "small"
2545
- }, rest), React__default.createElement(ViewColumnIcon, null))), React__default.createElement(material.Menu, {
2642
+ }, rest), React__default.createElement(ViewColumnIcon, null))), React__default.createElement(MRT_ShowHideColumnsMenu, {
2546
2643
  anchorEl: anchorEl,
2547
- open: !!anchorEl,
2548
- onClose: function onClose() {
2549
- return setAnchorEl(null);
2550
- },
2551
- MenuListProps: {
2552
- dense: tableInstance.state.densePadding
2553
- }
2554
- }, React__default.createElement(material.Box, {
2555
- sx: {
2556
- display: 'flex',
2557
- justifyContent: 'space-between',
2558
- p: '0.5rem'
2559
- }
2560
- }, React__default.createElement(material.Button, {
2561
- disabled: !tableInstance.getToggleHideAllColumnsProps().checked && !tableInstance.getToggleHideAllColumnsProps().indeterminate,
2562
- onClick: function onClick() {
2563
- return tableInstance.toggleHideAllColumns(true);
2564
- }
2565
- }, localization.columnShowHideMenuHideAll), React__default.createElement(material.Button, {
2566
- disabled: tableInstance.getToggleHideAllColumnsProps().checked,
2567
- onClick: function onClick() {
2568
- return tableInstance.toggleHideAllColumns(false);
2569
- }
2570
- }, localization.columnShowHideMenuShowAll)), React__default.createElement(material.Divider, null), tableInstance.columns.map(function (column, index) {
2571
- return React__default.createElement(MRT_ShowHideColumnsMenu, {
2572
- key: index + "-" + column.id,
2573
- column: column
2574
- });
2575
- })));
2644
+ setAnchorEl: setAnchorEl
2645
+ }));
2576
2646
  };
2577
2647
 
2578
2648
  var MRT_ToggleDensePaddingButton = function MRT_ToggleDensePaddingButton(_ref) {
@@ -2588,9 +2658,9 @@ var MRT_ToggleDensePaddingButton = function MRT_ToggleDensePaddingButton(_ref) {
2588
2658
 
2589
2659
  return React__default.createElement(material.Tooltip, {
2590
2660
  arrow: true,
2591
- title: localization.toggleDensePaddingSwitchTitle
2661
+ title: localization.toggleDensePadding
2592
2662
  }, React__default.createElement(material.IconButton, Object.assign({
2593
- "aria-label": localization.toggleDensePaddingSwitchTitle,
2663
+ "aria-label": localization.toggleDensePadding,
2594
2664
  onClick: function onClick() {
2595
2665
  return setDensePadding(!densePadding);
2596
2666
  },
@@ -2611,9 +2681,9 @@ var MRT_ToggleFiltersButton = function MRT_ToggleFiltersButton(_ref) {
2611
2681
 
2612
2682
  return React__default.createElement(material.Tooltip, {
2613
2683
  arrow: true,
2614
- title: localization.toggleFilterButtonTitle
2684
+ title: localization.showHideFilters
2615
2685
  }, React__default.createElement(material.IconButton, Object.assign({
2616
- "aria-label": localization.toggleFilterButtonTitle,
2686
+ "aria-label": localization.showHideFilters,
2617
2687
  onClick: function onClick() {
2618
2688
  return setShowFilters(!showFilters);
2619
2689
  },
@@ -2645,7 +2715,7 @@ var MRT_ToggleSearchButton = function MRT_ToggleSearchButton(_ref) {
2645
2715
 
2646
2716
  return React__default.createElement(material.Tooltip, {
2647
2717
  arrow: true,
2648
- title: localization.toggleSearchButtonTitle
2718
+ title: localization.showHideSearch
2649
2719
  }, React__default.createElement(material.IconButton, Object.assign({
2650
2720
  size: "small",
2651
2721
  onClick: handleToggleSearch
@@ -2720,7 +2790,7 @@ var MRT_TablePagination = function MRT_TablePagination() {
2720
2790
  };
2721
2791
 
2722
2792
  var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
2723
- var _localization$toolbar, _localization$toolbar2;
2793
+ var _localization$selecte, _localization$selecte2;
2724
2794
 
2725
2795
  var _useMRT = useMRT(),
2726
2796
  muiTableToolbarAlertBannerProps = _useMRT.muiTableToolbarAlertBannerProps,
@@ -2732,13 +2802,13 @@ var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
2732
2802
 
2733
2803
  var isMobile = material.useMediaQuery('(max-width:720px)');
2734
2804
  var alertProps = muiTableToolbarAlertBannerProps instanceof Function ? muiTableToolbarAlertBannerProps(tableInstance) : muiTableToolbarAlertBannerProps;
2735
- var selectMessage = tableInstance.selectedFlatRows.length > 0 ? (_localization$toolbar = localization.toolbarAlertSelectionMessage) == null ? void 0 : (_localization$toolbar2 = _localization$toolbar.replace('{selectedCount}', tableInstance.selectedFlatRows.length.toString())) == null ? void 0 : _localization$toolbar2.replace('{rowCount}', tableInstance.flatRows.length.toString()) : null;
2736
- var groupedByMessage = tableInstance.state.groupBy.length > 0 ? React__default.createElement("span", null, localization.toolbarAlertGroupedByMessage, ' ', tableInstance.state.groupBy.map(function (columnId, index) {
2805
+ var selectMessage = tableInstance.selectedFlatRows.length > 0 ? (_localization$selecte = localization.selectedCountOfRowCountRowsSelected) == null ? void 0 : (_localization$selecte2 = _localization$selecte.replace('{selectedCount}', tableInstance.selectedFlatRows.length.toString())) == null ? void 0 : _localization$selecte2.replace('{rowCount}', tableInstance.flatRows.length.toString()) : null;
2806
+ var groupedByMessage = tableInstance.state.groupBy.length > 0 ? React__default.createElement("span", null, localization.groupedBy, ' ', tableInstance.state.groupBy.map(function (columnId, index) {
2737
2807
  var _tableInstance$allCol;
2738
2808
 
2739
2809
  return React__default.createElement(React.Fragment, {
2740
2810
  key: index + "-" + columnId
2741
- }, index > 0 ? localization.toolbarAlertGroupedThenByMessage : '', React__default.createElement(material.Chip, {
2811
+ }, index > 0 ? localization.thenBy : '', React__default.createElement(material.Chip, {
2742
2812
  color: "secondary",
2743
2813
  label: (_tableInstance$allCol = tableInstance.allColumns.find(function (column) {
2744
2814
  return column.id === columnId;
@@ -2910,53 +2980,50 @@ var MRT_TableContainer = function MRT_TableContainer() {
2910
2980
  };
2911
2981
 
2912
2982
  var MRT_DefaultLocalization_EN = {
2913
- actionsHeadColumnTitle: 'Actions',
2983
+ actions: 'Actions',
2984
+ cancel: 'Cancel',
2914
2985
  changeFilterMode: 'Change filter mode',
2915
- columnActionMenuButtonTitle: 'Column Actions',
2916
- columnActionMenuItemClearSort: 'Clear sort',
2917
- columnActionMenuItemGroupBy: 'Group by {column}',
2918
- columnActionMenuItemHideColumn: 'Hide {column} column',
2919
- columnActionMenuItemSortAsc: 'Sort by {column} ascending',
2920
- columnActionMenuItemSortDesc: 'Sort by {column} descending',
2921
- columnActionMenuItemUnGroupBy: 'Ungroup by {column}',
2922
- columnShowHideMenuHideAll: 'Hide all',
2923
- columnShowHideMenuShowAll: 'Show all',
2924
- expandAllButtonTitle: 'Expand all',
2925
- expandButtonTitle: 'Expand',
2926
- filterApplied: 'Filtering by {column} - ({filterType})',
2927
- filterMenuItemContains: 'Contains Exact',
2928
- filterMenuItemEmpty: 'Empty',
2929
- filterMenuItemEndsWith: 'Ends With',
2930
- filterMenuItemEquals: 'Equals',
2931
- filterMenuItemFuzzy: 'Fuzzy Match (Default)',
2932
- filterMenuItemGreaterThan: 'Greater Than',
2933
- filterMenuItemLessThan: 'Less Than',
2934
- filterMenuItemNotEmpty: 'Not Empty',
2935
- filterMenuItemNotEquals: 'Not Equals',
2936
- filterMenuItemStartsWith: 'Starts With',
2937
- filterMenuTitle: 'Filter Mode',
2938
- filterTextFieldChangeFilterButtonTitle: 'Change Filter Mode',
2939
- filterTextFieldChipLabelEmpty: 'Empty',
2940
- filterTextFieldChipLabelNotEmpty: 'Not Empty',
2941
- filterTextFieldClearButtonTitle: 'Clear filter',
2942
- filterTextFieldPlaceholder: 'Filter by {column}',
2943
- rowActionButtonCancel: 'Cancel',
2944
- rowActionButtonSave: 'Save',
2945
- rowActionMenuButtonTitle: 'Row Actions',
2946
- rowActionMenuItemEdit: 'Edit',
2947
- rowActionsColumnTitle: 'Actions',
2948
- searchTextFieldClearButtonTitle: 'Clear search',
2949
- searchTextFieldPlaceholder: 'Search',
2950
- selectAllCheckboxTitle: 'Toggle select all',
2951
- selectCheckboxTitle: 'Toggle select row',
2952
- showHideColumnsButtonTitle: 'Show/Hide columns',
2953
- toggleDensePaddingSwitchTitle: 'Toggle dense padding',
2954
- toggleFilterButtonTitle: 'Show/Hide filters',
2955
- toggleFullScreenButtonTitle: 'Toggle full screen',
2956
- toggleSearchButtonTitle: 'Show/Hide search',
2957
- toolbarAlertGroupedByMessage: 'Grouped by ',
2958
- toolbarAlertGroupedThenByMessage: ', then by ',
2959
- toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected'
2986
+ clearFilter: 'Clear filter',
2987
+ clearSearch: 'Clear search',
2988
+ clearSort: 'Clear sort',
2989
+ columnActions: 'Column Actions',
2990
+ edit: 'Edit',
2991
+ expand: 'Expand',
2992
+ expandAll: 'Expand all',
2993
+ filterByColumn: 'Filter by {column}',
2994
+ filterContains: 'Contains Exact',
2995
+ filterEmpty: 'Empty',
2996
+ filterEndsWith: 'Ends With',
2997
+ filterEquals: 'Equals',
2998
+ filterFuzzy: 'Fuzzy Match',
2999
+ filterGreaterThan: 'Greater Than',
3000
+ filterLessThan: 'Less Than',
3001
+ filterMode: 'Filter Mode: {filterType}',
3002
+ filterNotEmpty: 'Not Empty',
3003
+ filterNotEquals: 'Not Equals',
3004
+ filterStartsWith: 'Starts With',
3005
+ filteringByColumn: 'Filtering by {column} - {filterType} "{filterValue}"',
3006
+ groupByColumn: 'Group by {column}',
3007
+ groupedBy: 'Grouped by ',
3008
+ hideAll: 'Hide all',
3009
+ hideColumn: 'Hide {column} column',
3010
+ rowActions: 'Row Actions',
3011
+ save: 'Save',
3012
+ search: 'Search',
3013
+ selectedCountOfRowCountRowsSelected: '{selectedCount} of {rowCount} row(s) selected',
3014
+ showAll: 'Show all',
3015
+ showAllColumns: 'Show all columns',
3016
+ showHideColumns: 'Show/Hide columns',
3017
+ showHideFilters: 'Show/Hide filters',
3018
+ showHideSearch: 'Show/Hide search',
3019
+ sortByColumnAsc: 'Sort by {column} ascending',
3020
+ sortByColumnDesc: 'Sort by {column} descending',
3021
+ thenBy: ', then by ',
3022
+ toggleDensePadding: 'Toggle dense padding',
3023
+ toggleFullScreen: 'Toggle full screen',
3024
+ toggleSelectAll: 'Toggle select all',
3025
+ toggleSelectRow: 'Toggle select row',
3026
+ ungroupByColumn: 'Ungroup by {column}'
2960
3027
  };
2961
3028
 
2962
3029
  var MRT_Default_Icons = {
@@ -2987,13 +3054,16 @@ var MRT_Default_Icons = {
2987
3054
  VisibilityOffIcon: VisibilityOffIcon
2988
3055
  };
2989
3056
 
2990
- var _excluded = ["defaultColumn", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
3057
+ var _excluded = ["defaultColumn", "filterTypes", "globalFilter", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
2991
3058
  var MaterialReactTable = (function (_ref) {
2992
3059
  var _ref$defaultColumn = _ref.defaultColumn,
2993
3060
  defaultColumn = _ref$defaultColumn === void 0 ? {
2994
3061
  minWidth: 50,
2995
3062
  maxWidth: 1000
2996
3063
  } : _ref$defaultColumn,
3064
+ filterTypes = _ref.filterTypes,
3065
+ _ref$globalFilter = _ref.globalFilter,
3066
+ globalFilter = _ref$globalFilter === void 0 ? 'fuzzy' : _ref$globalFilter,
2997
3067
  icons = _ref.icons,
2998
3068
  localization = _ref.localization,
2999
3069
  _ref$positionActionsC = _ref.positionActionsColumn,
@@ -3008,6 +3078,9 @@ var MaterialReactTable = (function (_ref) {
3008
3078
 
3009
3079
  return React__default.createElement(MaterialReactTableProvider, Object.assign({
3010
3080
  defaultColumn: defaultColumn,
3081
+ // @ts-ignore
3082
+ filterTypes: _extends({}, defaultFilterFNs, filterTypes),
3083
+ globalFilter: globalFilter,
3011
3084
  icons: _extends({}, MRT_Default_Icons, icons),
3012
3085
  localization: _extends({}, MRT_DefaultLocalization_EN, localization),
3013
3086
  positionActionsColumn: positionActionsColumn,