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
@@ -1,7 +1,7 @@
1
- import React, { useState, useMemo, useContext, createContext, Fragment, useRef, useEffect } from 'react';
1
+ import React, { useState, useCallback, 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 { Menu, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, FormControlLabel, Switch, Box, Button, Divider, TableCell, TableSortLabel, Collapse, Skeleton, Checkbox, TableRow, TableHead, alpha, TableBody, TableFooter, Table, TablePagination, useMediaQuery, Alert, Toolbar, TableContainer, Paper, LinearProgress } from '@mui/material';
3
4
  import { matchSorter } from 'match-sorter';
4
- import { Menu, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, Box, TableCell, TableSortLabel, Divider, Collapse, Skeleton, Checkbox, TableRow, TableHead, alpha, TableBody, TableFooter, Table, FormControlLabel, Switch, Button, TablePagination, useMediaQuery, Alert, Toolbar, TableContainer, Paper, LinearProgress } from '@mui/material';
5
5
  import ArrowRightIcon from '@mui/icons-material/ArrowRight';
6
6
  import CancelIcon from '@mui/icons-material/Cancel';
7
7
  import ClearAllIcon from '@mui/icons-material/ClearAll';
@@ -97,122 +97,6 @@ function _objectWithoutPropertiesLoose(source, excluded) {
97
97
  return target;
98
98
  }
99
99
 
100
- var fuzzyFilterFN = function fuzzyFilterFN(rows, id, filterValue) {
101
- return matchSorter(rows, filterValue.toString().trim(), {
102
- keys: ["values." + id],
103
- sorter: function sorter(rankedItems) {
104
- return rankedItems;
105
- }
106
- });
107
- };
108
-
109
- fuzzyFilterFN.autoRemove = function (val) {
110
- return !val;
111
- };
112
-
113
- var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
114
- return rows.filter(function (row) {
115
- return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
116
- });
117
- };
118
-
119
- containsFilterFN.autoRemove = function (val) {
120
- return !val;
121
- };
122
-
123
- var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
124
- return rows.filter(function (row) {
125
- return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
126
- });
127
- };
128
-
129
- startsWithFilterFN.autoRemove = function (val) {
130
- return !val;
131
- };
132
-
133
- var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
134
- return rows.filter(function (row) {
135
- return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
136
- });
137
- };
138
-
139
- endsWithFilterFN.autoRemove = function (val) {
140
- return !val;
141
- };
142
-
143
- var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
144
- return rows.filter(function (row) {
145
- return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
146
- });
147
- };
148
-
149
- equalsFilterFN.autoRemove = function (val) {
150
- return !val;
151
- };
152
-
153
- var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
154
- return rows.filter(function (row) {
155
- return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
156
- });
157
- };
158
-
159
- notEqualsFilterFN.autoRemove = function (val) {
160
- return !val;
161
- };
162
-
163
- var greaterThanFilterFN = function greaterThanFilterFN(rows, id, filterValue) {
164
- return rows.filter(function (row) {
165
- return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] > +filterValue : row.values[id].toString().toLowerCase().trim() > filterValue.toString().toLowerCase().trim();
166
- });
167
- };
168
-
169
- greaterThanFilterFN.autoRemove = function (val) {
170
- return !val;
171
- };
172
-
173
- var lessThanFilterFN = function lessThanFilterFN(rows, id, filterValue) {
174
- return rows.filter(function (row) {
175
- return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] < +filterValue : row.values[id].toString().toLowerCase().trim() < filterValue.toString().toLowerCase().trim();
176
- });
177
- };
178
-
179
- lessThanFilterFN.autoRemove = function (val) {
180
- return !val;
181
- };
182
-
183
- var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
184
- return rows.filter(function (row) {
185
- return !row.values[id].toString().toLowerCase().trim();
186
- });
187
- };
188
-
189
- emptyFilterFN.autoRemove = function (val) {
190
- return !val;
191
- };
192
-
193
- var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
194
- return rows.filter(function (row) {
195
- return !!row.values[id].toString().toLowerCase().trim();
196
- });
197
- };
198
-
199
- notEmptyFilterFN.autoRemove = function (val) {
200
- return !val;
201
- };
202
-
203
- var defaultFilterFNs = {
204
- contains: containsFilterFN,
205
- empty: emptyFilterFN,
206
- endsWith: endsWithFilterFN,
207
- greaterThan: greaterThanFilterFN,
208
- lessThan: lessThanFilterFN,
209
- equals: equalsFilterFN,
210
- fuzzy: fuzzyFilterFN,
211
- notEmpty: notEmptyFilterFN,
212
- notEquals: notEqualsFilterFN,
213
- startsWith: startsWithFilterFN
214
- };
215
-
216
100
  var MaterialReactTableContext = /*#__PURE__*/function () {
217
101
  return createContext({});
218
102
  }();
@@ -243,11 +127,7 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
243
127
  showSearch = _useState5[0],
244
128
  setShowSearch = _useState5[1];
245
129
 
246
- var filterTypes = useMemo(function () {
247
- return _extends({}, defaultFilterFNs, props.filterTypes);
248
- }, [props.filterTypes]);
249
-
250
- var getInitialFilterTypeState = function getInitialFilterTypeState() {
130
+ var findLowestLevelCols = useCallback(function () {
251
131
  var lowestLevelColumns = props.columns;
252
132
  var currentCols = props.columns;
253
133
 
@@ -269,33 +149,41 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
269
149
  currentCols = nextCols;
270
150
  }
271
151
 
272
- lowestLevelColumns = lowestLevelColumns.filter(function (col) {
152
+ return lowestLevelColumns.filter(function (col) {
273
153
  return !col.columns;
274
154
  });
275
- return Object.assign.apply(Object, [{}].concat(lowestLevelColumns.map(function (c) {
155
+ }, [props.columns]);
156
+
157
+ var _useState6 = useState(function () {
158
+ return Object.assign.apply(Object, [{}].concat(findLowestLevelCols().map(function (c) {
276
159
  var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
277
160
 
278
161
  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;
279
162
  })));
280
- };
281
-
282
- var _useState6 = useState(function () {
283
- return getInitialFilterTypeState();
284
163
  }),
285
164
  currentFilterTypes = _useState6[0],
286
165
  setCurrentFilterTypes = _useState6[1];
287
166
 
288
- var columns = useMemo(function () {
289
- return props.columns.map(function (column) {
290
- column.filter = filterTypes[currentFilterTypes[column.accessor]];
167
+ var applyFiltersToColumns = useCallback(function (cols) {
168
+ return cols.map(function (column) {
169
+ if (column.columns) {
170
+ applyFiltersToColumns(column.columns);
171
+ } else {
172
+ var _props$filterTypes;
173
+
174
+ column.filter = props == null ? void 0 : (_props$filterTypes = props.filterTypes) == null ? void 0 : _props$filterTypes[currentFilterTypes[column.accessor]];
175
+ }
176
+
291
177
  return column;
292
178
  });
293
- }, [props.columns, filterTypes, currentFilterTypes]);
294
- var tableInstance = useTable.apply(void 0, [_extends({}, props, {
295
- columns: columns,
179
+ }, [currentFilterTypes, props.filterTypes]);
180
+ var columns = useMemo(function () {
181
+ return applyFiltersToColumns(props.columns);
182
+ }, [props.columns, applyFiltersToColumns]);
183
+ var tableInstance = useTable.apply(void 0, [// @ts-ignore
184
+ _extends({}, props, {
296
185
  // @ts-ignore
297
- filterTypes: filterTypes,
298
- globalFilterValue: 'fuzzy',
186
+ columns: columns,
299
187
  useControlledState: function useControlledState(state) {
300
188
  return useMemo(function () {
301
189
  return _extends({}, state, {
@@ -360,6 +248,124 @@ var MRT_FILTER_TYPE;
360
248
  MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
361
249
  })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
362
250
 
251
+ var fuzzyFilterFN = function fuzzyFilterFN(rows, columnIds, filterValue) {
252
+ return matchSorter(rows, filterValue.toString().trim(), {
253
+ keys: Array.isArray(columnIds) ? columnIds.map(function (c) {
254
+ return "values." + c;
255
+ }) : ["values." + columnIds],
256
+ sorter: function sorter(rankedItems) {
257
+ return rankedItems;
258
+ }
259
+ });
260
+ };
261
+
262
+ fuzzyFilterFN.autoRemove = function (val) {
263
+ return !val;
264
+ };
265
+
266
+ var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
267
+ return rows.filter(function (row) {
268
+ return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
269
+ });
270
+ };
271
+
272
+ containsFilterFN.autoRemove = function (val) {
273
+ return !val;
274
+ };
275
+
276
+ var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
277
+ return rows.filter(function (row) {
278
+ return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
279
+ });
280
+ };
281
+
282
+ startsWithFilterFN.autoRemove = function (val) {
283
+ return !val;
284
+ };
285
+
286
+ var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
287
+ return rows.filter(function (row) {
288
+ return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
289
+ });
290
+ };
291
+
292
+ endsWithFilterFN.autoRemove = function (val) {
293
+ return !val;
294
+ };
295
+
296
+ var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
297
+ return rows.filter(function (row) {
298
+ return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
299
+ });
300
+ };
301
+
302
+ equalsFilterFN.autoRemove = function (val) {
303
+ return !val;
304
+ };
305
+
306
+ var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
307
+ return rows.filter(function (row) {
308
+ return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
309
+ });
310
+ };
311
+
312
+ notEqualsFilterFN.autoRemove = function (val) {
313
+ return !val;
314
+ };
315
+
316
+ var greaterThanFilterFN = function greaterThanFilterFN(rows, id, filterValue) {
317
+ return rows.filter(function (row) {
318
+ return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] > +filterValue : row.values[id].toString().toLowerCase().trim() > filterValue.toString().toLowerCase().trim();
319
+ });
320
+ };
321
+
322
+ greaterThanFilterFN.autoRemove = function (val) {
323
+ return !val;
324
+ };
325
+
326
+ var lessThanFilterFN = function lessThanFilterFN(rows, id, filterValue) {
327
+ return rows.filter(function (row) {
328
+ return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] < +filterValue : row.values[id].toString().toLowerCase().trim() < filterValue.toString().toLowerCase().trim();
329
+ });
330
+ };
331
+
332
+ lessThanFilterFN.autoRemove = function (val) {
333
+ return !val;
334
+ };
335
+
336
+ var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
337
+ return rows.filter(function (row) {
338
+ return !row.values[id].toString().toLowerCase().trim();
339
+ });
340
+ };
341
+
342
+ emptyFilterFN.autoRemove = function (val) {
343
+ return !val;
344
+ };
345
+
346
+ var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
347
+ return rows.filter(function (row) {
348
+ return !!row.values[id].toString().toLowerCase().trim();
349
+ });
350
+ };
351
+
352
+ notEmptyFilterFN.autoRemove = function (val) {
353
+ return !val;
354
+ };
355
+
356
+ var defaultFilterFNs = {
357
+ contains: containsFilterFN,
358
+ empty: emptyFilterFN,
359
+ endsWith: endsWithFilterFN,
360
+ equals: equalsFilterFN,
361
+ fuzzy: fuzzyFilterFN,
362
+ greaterThan: greaterThanFilterFN,
363
+ lessThan: lessThanFilterFN,
364
+ notEmpty: notEmptyFilterFN,
365
+ notEquals: notEqualsFilterFN,
366
+ startsWith: startsWithFilterFN
367
+ };
368
+
363
369
  var commonMenuItemStyles = {
364
370
  py: '6px',
365
371
  my: 0,
@@ -379,52 +385,52 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
379
385
  var filterTypes = useMemo(function () {
380
386
  return [{
381
387
  type: MRT_FILTER_TYPE.FUZZY,
382
- label: localization.filterMenuItemFuzzy,
388
+ label: localization.filterFuzzy,
383
389
  divider: false,
384
390
  fn: fuzzyFilterFN
385
391
  }, {
386
392
  type: MRT_FILTER_TYPE.CONTAINS,
387
- label: localization.filterMenuItemContains,
393
+ label: localization.filterContains,
388
394
  divider: true,
389
395
  fn: containsFilterFN
390
396
  }, {
391
397
  type: MRT_FILTER_TYPE.STARTS_WITH,
392
- label: localization.filterMenuItemStartsWith,
398
+ label: localization.filterStartsWith,
393
399
  divider: false,
394
400
  fn: startsWithFilterFN
395
401
  }, {
396
402
  type: MRT_FILTER_TYPE.ENDS_WITH,
397
- label: localization.filterMenuItemEndsWith,
403
+ label: localization.filterEndsWith,
398
404
  divider: true,
399
405
  fn: endsWithFilterFN
400
406
  }, {
401
407
  type: MRT_FILTER_TYPE.EQUALS,
402
- label: localization.filterMenuItemEquals,
408
+ label: localization.filterEquals,
403
409
  divider: false,
404
410
  fn: equalsFilterFN
405
411
  }, {
406
412
  type: MRT_FILTER_TYPE.NOT_EQUALS,
407
- label: localization.filterMenuItemNotEquals,
413
+ label: localization.filterNotEquals,
408
414
  divider: true,
409
415
  fn: notEqualsFilterFN
410
416
  }, {
411
417
  type: MRT_FILTER_TYPE.GREATER_THAN,
412
- label: localization.filterMenuItemGreaterThan,
418
+ label: localization.filterGreaterThan,
413
419
  divider: false,
414
420
  fn: greaterThanFilterFN
415
421
  }, {
416
422
  type: MRT_FILTER_TYPE.LESS_THAN,
417
- label: localization.filterMenuItemLessThan,
423
+ label: localization.filterLessThan,
418
424
  divider: true,
419
425
  fn: lessThanFilterFN
420
426
  }, {
421
427
  type: MRT_FILTER_TYPE.EMPTY,
422
- label: localization.filterMenuItemEmpty,
428
+ label: localization.filterEmpty,
423
429
  divider: false,
424
430
  fn: emptyFilterFN
425
431
  }, {
426
432
  type: MRT_FILTER_TYPE.NOT_EMPTY,
427
- label: localization.filterMenuItemNotEmpty,
433
+ label: localization.filterNotEmpty,
428
434
  divider: false,
429
435
  fn: notEmptyFilterFN
430
436
  }];
@@ -478,7 +484,7 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
478
484
  };
479
485
 
480
486
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
481
- var _localization$filterT, _localization$filterT2, _column$filterSelectO;
487
+ var _localization$filterB, _localization$clearFi, _column$filterSelectO;
482
488
 
483
489
  var column = _ref.column;
484
490
 
@@ -537,10 +543,10 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
537
543
  }
538
544
 
539
545
  var filterType = tableInstance.state.currentFilterTypes[column.id];
540
- var isCustomFilterType = filterType instanceof Function;
541
546
  var isSelectFilter = !!column.filterSelectOptions;
542
- var filterChipLabel = !isCustomFilterType && [MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(filterType);
543
- var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
547
+ var filterChipLabel = !(filterType instanceof Function) && [MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(filterType) ? //@ts-ignore
548
+ localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))] : '';
549
+ var filterPlaceholder = (_localization$filterB = localization.filterByColumn) == null ? void 0 : _localization$filterB.replace('{column}', String(column.Header));
544
550
  return React.createElement(React.Fragment, null, React.createElement(TextField, Object.assign({
545
551
  fullWidth: true,
546
552
  id: "mrt-" + idPrefix + "-" + column.id + "-filter-text-field",
@@ -552,6 +558,14 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
552
558
  },
553
559
  title: filterPlaceholder
554
560
  },
561
+ helperText: filterType instanceof Function ? '' : localization.filterMode.replace('{filterType}', // @ts-ignore
562
+ localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))]),
563
+ FormHelperTextProps: {
564
+ sx: {
565
+ fontSize: '0.6rem',
566
+ lineHeight: '0.8rem'
567
+ }
568
+ },
555
569
  label: isSelectFilter && !filterValue ? filterPlaceholder : undefined,
556
570
  InputLabelProps: {
557
571
  shrink: false,
@@ -579,6 +593,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
579
593
  arrow: true,
580
594
  title: localization.changeFilterMode
581
595
  }, React.createElement("span", null, React.createElement(IconButton, {
596
+ "aria-label": localization.changeFilterMode,
582
597
  onClick: handleFilterMenuOpen,
583
598
  size: "small",
584
599
  sx: {
@@ -587,7 +602,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
587
602
  }
588
603
  }, React.createElement(FilterListIcon, null)))), filterChipLabel && React.createElement(Chip, {
589
604
  onDelete: handleClearFilterChip,
590
- label: filterType
605
+ label: filterChipLabel
591
606
  })),
592
607
  endAdornment: !filterChipLabel && React.createElement(InputAdornment, {
593
608
  position: "end"
@@ -595,9 +610,9 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
595
610
  arrow: true,
596
611
  disableHoverListener: isSelectFilter,
597
612
  placement: "right",
598
- title: (_localization$filterT2 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT2 : ''
613
+ title: (_localization$clearFi = localization.clearFilter) != null ? _localization$clearFi : ''
599
614
  }, React.createElement("span", null, React.createElement(IconButton, {
600
- "aria-label": localization.filterTextFieldClearButtonTitle,
615
+ "aria-label": localization.clearFilter,
601
616
  disabled: !(filterValue != null && filterValue.length),
602
617
  onClick: handleClear,
603
618
  size: "small",
@@ -611,7 +626,8 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
611
626
  }
612
627
  }, textFieldProps, {
613
628
  sx: _extends({
614
- m: '0 -0.25rem',
629
+ m: '-0.25rem',
630
+ p: 0,
615
631
  minWidth: !filterChipLabel ? '5rem' : 'auto',
616
632
  width: 'calc(100% + 0.5rem)',
617
633
  mt: isSelectFilter && !filterValue ? '-1rem' : undefined,
@@ -623,7 +639,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
623
639
  divider: true,
624
640
  disabled: !filterValue,
625
641
  value: ""
626
- }, localization.filterTextFieldClearButtonTitle), column == null ? void 0 : (_column$filterSelectO = column.filterSelectOptions) == null ? void 0 : _column$filterSelectO.map(function (option) {
642
+ }, localization.clearFilter), column == null ? void 0 : (_column$filterSelectO = column.filterSelectOptions) == null ? void 0 : _column$filterSelectO.map(function (option) {
627
643
  var value;
628
644
  var text;
629
645
 
@@ -646,6 +662,101 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
646
662
  }));
647
663
  };
648
664
 
665
+ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
666
+ var _column$columns, _column$columns2, _column$isVisible, _column$columns4;
667
+
668
+ var column = _ref.column,
669
+ isSubMenu = _ref.isSubMenu;
670
+ var isParentHeader = !!(column != null && (_column$columns = column.columns) != null && _column$columns.length);
671
+ var allChildColumnsVisible = isParentHeader && !!((_column$columns2 = column.columns) != null && _column$columns2.every(function (childColumn) {
672
+ return childColumn.isVisible;
673
+ }));
674
+ var switchChecked = (_column$isVisible = column.isVisible) != null ? _column$isVisible : allChildColumnsVisible;
675
+
676
+ var handleToggleColumnHidden = function handleToggleColumnHidden(column) {
677
+ if (isParentHeader) {
678
+ var _column$columns3;
679
+
680
+ column == null ? void 0 : (_column$columns3 = column.columns) == null ? void 0 : _column$columns3.forEach == null ? void 0 : _column$columns3.forEach(function (childColumn) {
681
+ childColumn.toggleHidden(switchChecked);
682
+ });
683
+ } else {
684
+ column.toggleHidden();
685
+ }
686
+ };
687
+
688
+ return React.createElement(React.Fragment, null, React.createElement(MenuItem, {
689
+ sx: _extends({}, commonMenuItemStyles$1, {
690
+ pl: (column.depth + 0.5) * 2 + "rem"
691
+ })
692
+ }, React.createElement(FormControlLabel, {
693
+ componentsProps: {
694
+ typography: {
695
+ sx: {
696
+ marginBottom: 0
697
+ }
698
+ }
699
+ },
700
+ checked: switchChecked,
701
+ control: React.createElement(Switch, null),
702
+ disabled: isSubMenu && switchChecked,
703
+ label: column.Header,
704
+ onChange: function onChange() {
705
+ return handleToggleColumnHidden(column);
706
+ }
707
+ })), (_column$columns4 = column.columns) == null ? void 0 : _column$columns4.map(function (c, i) {
708
+ return React.createElement(MRT_ShowHideColumnsMenuItems, {
709
+ key: i + "-" + c.id,
710
+ column: c,
711
+ isSubMenu: isSubMenu
712
+ });
713
+ }));
714
+ };
715
+
716
+ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
717
+ var anchorEl = _ref.anchorEl,
718
+ isSubMenu = _ref.isSubMenu,
719
+ setAnchorEl = _ref.setAnchorEl;
720
+
721
+ var _useMRT = useMRT(),
722
+ localization = _useMRT.localization,
723
+ tableInstance = _useMRT.tableInstance;
724
+
725
+ return React.createElement(Menu, {
726
+ anchorEl: anchorEl,
727
+ open: !!anchorEl,
728
+ onClose: function onClose() {
729
+ return setAnchorEl(null);
730
+ },
731
+ MenuListProps: {
732
+ dense: tableInstance.state.densePadding
733
+ }
734
+ }, React.createElement(Box, {
735
+ sx: {
736
+ display: 'flex',
737
+ justifyContent: isSubMenu ? 'center' : 'space-between',
738
+ p: '0.5rem',
739
+ pt: 0
740
+ }
741
+ }, !isSubMenu && React.createElement(Button, {
742
+ disabled: !tableInstance.getToggleHideAllColumnsProps().checked && !tableInstance.getToggleHideAllColumnsProps().indeterminate,
743
+ onClick: function onClick() {
744
+ return tableInstance.toggleHideAllColumns(true);
745
+ }
746
+ }, localization.hideAll), React.createElement(Button, {
747
+ disabled: tableInstance.getToggleHideAllColumnsProps().checked,
748
+ onClick: function onClick() {
749
+ return tableInstance.toggleHideAllColumns(false);
750
+ }
751
+ }, localization.showAll)), React.createElement(Divider, null), tableInstance.columns.map(function (column, index) {
752
+ return React.createElement(MRT_ShowHideColumnsMenuItems, {
753
+ column: column,
754
+ isSubMenu: isSubMenu,
755
+ key: index + "-" + column.id
756
+ });
757
+ }));
758
+ };
759
+
649
760
  var commonMenuItemStyles$1 = {
650
761
  py: '6px',
651
762
  my: 0,
@@ -658,7 +769,7 @@ var commonListItemStyles = {
658
769
  alignItems: 'center'
659
770
  };
660
771
  var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
661
- var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
772
+ var _localization$sortByC, _localization$sortByC2, _localization$filterB, _localization, _localization$hideCol, _tableInstance$state$, _localization$showAll;
662
773
 
663
774
  var anchorEl = _ref.anchorEl,
664
775
  column = _ref.column,
@@ -672,6 +783,7 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
672
783
  _useMRT$icons = _useMRT.icons,
673
784
  ArrowRightIcon = _useMRT$icons.ArrowRightIcon,
674
785
  ClearAllIcon = _useMRT$icons.ClearAllIcon,
786
+ ViewColumnIcon = _useMRT$icons.ViewColumnIcon,
675
787
  DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
676
788
  FilterListIcon = _useMRT$icons.FilterListIcon,
677
789
  FilterListOffIcon = _useMRT$icons.FilterListOffIcon,
@@ -686,6 +798,10 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
686
798
  filterMenuAnchorEl = _useState[0],
687
799
  setFilterMenuAnchorEl = _useState[1];
688
800
 
801
+ var _useState2 = useState(null),
802
+ showHideColumnsMenuAnchorEl = _useState2[0],
803
+ setShowHideColumnsMenuAnchorEl = _useState2[1];
804
+
689
805
  var handleClearSort = function handleClearSort() {
690
806
  column.clearSortBy();
691
807
  setAnchorEl(null);
@@ -732,6 +848,15 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
732
848
  setFilterMenuAnchorEl(event.currentTarget);
733
849
  };
734
850
 
851
+ var handleShowAllColumns = function handleShowAllColumns() {
852
+ tableInstance.toggleHideAllColumns(false);
853
+ };
854
+
855
+ var handleOpenShowHideColumnsMenu = function handleOpenShowHideColumnsMenu(event) {
856
+ event.stopPropagation();
857
+ setShowHideColumnsMenuAnchorEl(event.currentTarget);
858
+ };
859
+
735
860
  return React.createElement(Menu, {
736
861
  anchorEl: anchorEl,
737
862
  open: !!anchorEl,
@@ -743,21 +868,21 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
743
868
  }
744
869
  }, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
745
870
  disabled: !column.isSorted,
746
- key: 1,
871
+ key: 0,
747
872
  onClick: handleClearSort,
748
873
  sx: commonMenuItemStyles$1
749
874
  }, React.createElement(Box, {
750
875
  sx: commonListItemStyles
751
- }, React.createElement(ClearAllIcon, null), localization.columnActionMenuItemClearSort)), React.createElement(MenuItem, {
876
+ }, React.createElement(ClearAllIcon, null), localization.clearSort)), React.createElement(MenuItem, {
752
877
  disabled: column.isSorted && !column.isSortedDesc,
753
- key: 2,
878
+ key: 1,
754
879
  onClick: handleSortAsc,
755
880
  sx: commonMenuItemStyles$1
756
881
  }, React.createElement(Box, {
757
882
  sx: commonListItemStyles
758
- }, React.createElement(SortIcon, null), (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
883
+ }, React.createElement(SortIcon, null), (_localization$sortByC = localization.sortByColumnAsc) == null ? void 0 : _localization$sortByC.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
759
884
  divider: !disableFilters || enableColumnGrouping || !disableColumnHiding,
760
- key: 3,
885
+ key: 2,
761
886
  disabled: column.isSorted && column.isSortedDesc,
762
887
  onClick: handleSortDesc,
763
888
  sx: commonMenuItemStyles$1
@@ -767,21 +892,21 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
767
892
  style: {
768
893
  transform: 'rotate(180deg) scaleX(-1)'
769
894
  }
770
- }), (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(MenuItem, {
895
+ }), (_localization$sortByC2 = localization.sortByColumnDesc) == null ? void 0 : _localization$sortByC2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(MenuItem, {
771
896
  disabled: !column.filterValue,
772
897
  key: 0,
773
898
  onClick: handleClearFilter,
774
899
  sx: commonMenuItemStyles$1
775
900
  }, React.createElement(Box, {
776
901
  sx: commonListItemStyles
777
- }, React.createElement(FilterListOffIcon, null), localization.filterTextFieldClearButtonTitle)), React.createElement(MenuItem, {
902
+ }, React.createElement(FilterListOffIcon, null), localization.clearFilter)), React.createElement(MenuItem, {
778
903
  divider: enableColumnGrouping || !disableColumnHiding,
779
904
  key: 1,
780
905
  onClick: handleFilterByColumn,
781
906
  sx: commonMenuItemStyles$1
782
907
  }, React.createElement(Box, {
783
908
  sx: commonListItemStyles
784
- }, React.createElement(FilterListIcon, null), (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), !column.filterSelectOptions && React.createElement(IconButton, {
909
+ }, React.createElement(FilterListIcon, null), (_localization$filterB = localization.filterByColumn) == null ? void 0 : _localization$filterB.replace('{column}', String(column.Header))), !column.filterSelectOptions && React.createElement(IconButton, {
785
910
  onClick: handleOpenFilterModeMenu,
786
911
  onMouseEnter: handleOpenFilterModeMenu,
787
912
  size: "small",
@@ -796,18 +921,37 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
796
921
  onSelect: handleFilterByColumn
797
922
  })], enableColumnGrouping && column.canGroupBy && [React.createElement(MenuItem, {
798
923
  divider: !disableColumnHiding,
799
- key: 2,
924
+ key: 0,
800
925
  onClick: handleGroupByColumn,
801
926
  sx: commonMenuItemStyles$1
802
927
  }, React.createElement(Box, {
803
928
  sx: commonListItemStyles
804
- }, React.createElement(DynamicFeedIcon, null), (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(MenuItem, {
805
- key: 1,
929
+ }, React.createElement(DynamicFeedIcon, null), (_localization = localization[column.isGrouped ? 'ungroupByColumn' : 'groupByColumn']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(MenuItem, {
930
+ key: 0,
806
931
  onClick: handleHideColumn,
807
932
  sx: commonMenuItemStyles$1
808
933
  }, React.createElement(Box, {
809
934
  sx: commonListItemStyles
810
- }, React.createElement(VisibilityOffIcon, null), (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]);
935
+ }, React.createElement(VisibilityOffIcon, null), (_localization$hideCol = localization.hideColumn) == null ? void 0 : _localization$hideCol.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
936
+ disabled: !((_tableInstance$state$ = tableInstance.state.hiddenColumns) != null && _tableInstance$state$.length),
937
+ key: 1,
938
+ onClick: handleShowAllColumns,
939
+ sx: commonMenuItemStyles$1
940
+ }, React.createElement(Box, {
941
+ sx: commonListItemStyles
942
+ }, React.createElement(ViewColumnIcon, null), (_localization$showAll = localization.showAllColumns) == null ? void 0 : _localization$showAll.replace('{column}', String(column.Header))), !column.filterSelectOptions && React.createElement(IconButton, {
943
+ onClick: handleOpenShowHideColumnsMenu,
944
+ onMouseEnter: handleOpenShowHideColumnsMenu,
945
+ size: "small",
946
+ sx: {
947
+ p: 0
948
+ }
949
+ }, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_ShowHideColumnsMenu, {
950
+ anchorEl: showHideColumnsMenuAnchorEl,
951
+ isSubMenu: true,
952
+ key: 2,
953
+ setAnchorEl: setShowHideColumnsMenuAnchorEl
954
+ })]);
811
955
  };
812
956
 
813
957
  var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
@@ -832,9 +976,9 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
832
976
  enterDelay: 1000,
833
977
  enterNextDelay: 1000,
834
978
  placement: "top",
835
- title: localization.columnActionMenuButtonTitle
979
+ title: localization.columnActions
836
980
  }, React.createElement(IconButton, {
837
- "aria-label": localization.columnActionMenuButtonTitle,
981
+ "aria-label": localization.columnActions,
838
982
  onClick: handleClick,
839
983
  size: "small",
840
984
  sx: {
@@ -866,7 +1010,7 @@ var commonTableHeadCellStyles = function commonTableHeadCellStyles(densePadding,
866
1010
  };
867
1011
  };
868
1012
  var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
869
- var _column$columns, _localization$columnA, _localization$columnA2;
1013
+ var _column$columns, _localization$sortByC, _localization$sortByC2;
870
1014
 
871
1015
  var column = _ref.column;
872
1016
 
@@ -890,8 +1034,10 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
890
1034
  style: _extends({}, column.getHeaderProps().style, mTableHeadCellProps == null ? void 0 : mTableHeadCellProps.style, mcTableHeadCellProps == null ? void 0 : mcTableHeadCellProps.style)
891
1035
  });
892
1036
 
893
- 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);
894
- var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}', column.filterValue) : localization.toggleFilterButtonTitle;
1037
+ 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);
1038
+ var filterType = tableInstance.state.currentFilterTypes[column.id];
1039
+ var filterTooltip = !!column.filterValue ? localization.filteringByColumn.replace('{column}', String(column.Header)).replace('{filterType}', filterType instanceof Function ? '' : // @ts-ignore
1040
+ localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))]).replace('{filterValue}', column.filterValue) : localization.showHideFilters;
895
1041
  var columnHeader = column.render('Header');
896
1042
  return React.createElement(TableCell, Object.assign({
897
1043
  align: isParentHeader ? 'center' : 'left'
@@ -1095,10 +1241,10 @@ var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
1095
1241
  arrow: true,
1096
1242
  enterDelay: 1000,
1097
1243
  enterNextDelay: 1000,
1098
- title: selectAll ? localization.selectAllCheckboxTitle : localization.selectCheckboxTitle
1244
+ title: selectAll ? localization.toggleSelectAll : localization.toggleSelectRow
1099
1245
  }, React.createElement(Checkbox, Object.assign({
1100
1246
  inputProps: {
1101
- 'aria-label': selectAll ? localization.selectAllCheckboxTitle : localization.selectCheckboxTitle
1247
+ 'aria-label': selectAll ? localization.toggleSelectAll : localization.toggleSelectRow
1102
1248
  },
1103
1249
  onChange: onSelectChange
1104
1250
  }, checkboxProps, {
@@ -1118,8 +1264,8 @@ var MRT_ExpandAllButton = function MRT_ExpandAllButton() {
1118
1264
  }, tableInstance.getToggleAllRowsExpandedProps(), {
1119
1265
  sx: commonTableBodyButtonCellStyles(tableInstance.state.densePadding)
1120
1266
  }), React.createElement(IconButton, {
1121
- "aria-label": localization.expandAllButtonTitle,
1122
- title: localization.expandAllButtonTitle
1267
+ "aria-label": localization.expandAll,
1268
+ title: localization.expandAll
1123
1269
  }, React.createElement(DoubleArrowDownIcon, {
1124
1270
  style: {
1125
1271
  transform: "rotate(" + (tableInstance.isAllRowsExpanded ? -180 : anyRowsExpanded ? -90 : 0) + "deg)",
@@ -1159,7 +1305,7 @@ var MRT_TableHeadCellActions = function MRT_TableHeadCellActions() {
1159
1305
  sx: _extends({}, commonTableHeadCellStyles(densePadding), {
1160
1306
  textAlign: 'center'
1161
1307
  })
1162
- }, localization.actionsHeadColumnTitle);
1308
+ }, localization.actions);
1163
1309
  };
1164
1310
 
1165
1311
  var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
@@ -1265,9 +1411,9 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
1265
1411
  textAlign: 'left'
1266
1412
  })
1267
1413
  }, React.createElement(IconButton, Object.assign({
1268
- "aria-label": localization.expandButtonTitle,
1414
+ "aria-label": localization.expand,
1269
1415
  disabled: !row.canExpand && !renderDetailPanel,
1270
- title: localization.expandButtonTitle
1416
+ title: localization.expand
1271
1417
  }, row.getToggleRowExpandedProps()), React.createElement(ExpandMoreIcon, {
1272
1418
  style: {
1273
1419
  transform: "rotate(" + (!row.canExpand && !renderDetailPanel ? -90 : row.isExpanded ? -180 : 0) + "deg)",
@@ -1303,7 +1449,7 @@ var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
1303
1449
  }, enableRowEditing && React.createElement(MenuItem, {
1304
1450
  onClick: handleEdit,
1305
1451
  sx: commonMenuItemStyles$1
1306
- }, React.createElement(EditIcon, null), localization.rowActionMenuItemEdit), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1452
+ }, React.createElement(EditIcon, null), localization.edit), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1307
1453
  return setAnchorEl(null);
1308
1454
  })) != null ? _renderRowActionMenuI : null);
1309
1455
  };
@@ -2117,15 +2263,15 @@ var MRT_EditActionButtons = function MRT_EditActionButtons(_ref) {
2117
2263
  }
2118
2264
  }, React.createElement(Tooltip, {
2119
2265
  arrow: true,
2120
- title: localization.rowActionButtonCancel
2266
+ title: localization.cancel
2121
2267
  }, React.createElement(IconButton, {
2122
- "aria-label": localization.rowActionButtonCancel,
2268
+ "aria-label": localization.cancel,
2123
2269
  onClick: handleCancel
2124
2270
  }, React.createElement(CancelIcon, null))), React.createElement(Tooltip, {
2125
2271
  arrow: true,
2126
- title: localization.rowActionButtonSave
2272
+ title: localization.save
2127
2273
  }, React.createElement(IconButton, {
2128
- "aria-label": localization.rowActionButtonSave,
2274
+ "aria-label": localization.save,
2129
2275
  color: "info",
2130
2276
  onClick: handleSave
2131
2277
  }, React.createElement(SaveIcon, null))));
@@ -2179,7 +2325,7 @@ var MRT_ToggleRowActionMenuButton = function MRT_ToggleRowActionMenuButton(_ref)
2179
2325
  }) : !renderRowActionMenuItems && enableRowEditing ? React.createElement(Tooltip, {
2180
2326
  placement: "right",
2181
2327
  arrow: true,
2182
- title: localization.rowActionMenuItemEdit
2328
+ title: localization.edit
2183
2329
  }, React.createElement(IconButton, {
2184
2330
  sx: commonIconButtonStyles,
2185
2331
  onClick: handleEdit
@@ -2187,9 +2333,9 @@ var MRT_ToggleRowActionMenuButton = function MRT_ToggleRowActionMenuButton(_ref)
2187
2333
  arrow: true,
2188
2334
  enterDelay: 1000,
2189
2335
  enterNextDelay: 1000,
2190
- title: localization.rowActionMenuButtonTitle
2336
+ title: localization.rowActions
2191
2337
  }, React.createElement(IconButton, {
2192
- "aria-label": localization.rowActionMenuButtonTitle,
2338
+ "aria-label": localization.rowActions,
2193
2339
  onClick: handleOpenRowActionMenu,
2194
2340
  size: "small",
2195
2341
  sx: commonIconButtonStyles
@@ -2409,7 +2555,7 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2409
2555
  orientation: "horizontal"
2410
2556
  }, React.createElement(TextField, Object.assign({
2411
2557
  id: "mrt-" + idPrefix + "-search-text-field",
2412
- placeholder: localization.searchTextFieldPlaceholder,
2558
+ placeholder: localization.search,
2413
2559
  onChange: function onChange(event) {
2414
2560
  setSearchValue(event.target.value);
2415
2561
  handleChange(event);
@@ -2425,11 +2571,11 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2425
2571
  endAdornment: React.createElement(InputAdornment, {
2426
2572
  position: "end"
2427
2573
  }, React.createElement(IconButton, {
2428
- "aria-label": localization.searchTextFieldClearButtonTitle,
2574
+ "aria-label": localization.clearSearch,
2429
2575
  disabled: (searchValue == null ? void 0 : searchValue.length) === 0,
2430
2576
  onClick: handleClear,
2431
2577
  size: "small",
2432
- title: localization.searchTextFieldClearButtonTitle
2578
+ title: localization.clearSearch
2433
2579
  }, React.createElement(CloseIcon, {
2434
2580
  fontSize: "small"
2435
2581
  })))
@@ -2454,9 +2600,9 @@ var MRT_FullScreenToggleButton = function MRT_FullScreenToggleButton(_ref) {
2454
2600
 
2455
2601
  return React.createElement(Tooltip, {
2456
2602
  arrow: true,
2457
- title: localization.toggleFullScreenButtonTitle
2603
+ title: localization.toggleFullScreen
2458
2604
  }, React.createElement(IconButton, Object.assign({
2459
- "aria-label": localization.toggleFilterButtonTitle,
2605
+ "aria-label": localization.showHideFilters,
2460
2606
  onClick: function onClick() {
2461
2607
  return setFullScreen(!fullScreen);
2462
2608
  },
@@ -2464,61 +2610,12 @@ var MRT_FullScreenToggleButton = function MRT_FullScreenToggleButton(_ref) {
2464
2610
  }, rest), fullScreen ? React.createElement(FullscreenExitIcon, null) : React.createElement(FullscreenIcon, null)));
2465
2611
  };
2466
2612
 
2467
- var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
2468
- var _column$columns, _column$columns2, _column$isVisible, _column$columns4;
2469
-
2470
- var column = _ref.column;
2471
- var isParentHeader = !!(column != null && (_column$columns = column.columns) != null && _column$columns.length);
2472
- var allChildColumnsVisible = isParentHeader && !!((_column$columns2 = column.columns) != null && _column$columns2.every(function (childColumn) {
2473
- return childColumn.isVisible;
2474
- }));
2475
- var switchChecked = (_column$isVisible = column.isVisible) != null ? _column$isVisible : allChildColumnsVisible;
2476
-
2477
- var handleToggleColumnHidden = function handleToggleColumnHidden(column) {
2478
- if (isParentHeader) {
2479
- var _column$columns3;
2480
-
2481
- column == null ? void 0 : (_column$columns3 = column.columns) == null ? void 0 : _column$columns3.forEach == null ? void 0 : _column$columns3.forEach(function (childColumn) {
2482
- childColumn.toggleHidden(switchChecked);
2483
- });
2484
- } else {
2485
- column.toggleHidden();
2486
- }
2487
- };
2488
-
2489
- return React.createElement(React.Fragment, null, React.createElement(MenuItem, {
2490
- sx: _extends({}, commonMenuItemStyles$1, {
2491
- pl: (column.depth + 0.5) * 2 + "rem"
2492
- })
2493
- }, React.createElement(FormControlLabel, {
2494
- componentsProps: {
2495
- typography: {
2496
- sx: {
2497
- marginBottom: 0
2498
- }
2499
- }
2500
- },
2501
- checked: switchChecked,
2502
- control: React.createElement(Switch, null),
2503
- label: column.Header,
2504
- onChange: function onChange() {
2505
- return handleToggleColumnHidden(column);
2506
- }
2507
- })), (_column$columns4 = column.columns) == null ? void 0 : _column$columns4.map(function (c, i) {
2508
- return React.createElement(MRT_ShowHideColumnsMenu, {
2509
- key: i + "-" + c.id,
2510
- column: c
2511
- });
2512
- }));
2513
- };
2514
-
2515
2613
  var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2516
2614
  var rest = _extends({}, _ref);
2517
2615
 
2518
2616
  var _useMRT = useMRT(),
2519
2617
  ViewColumnIcon = _useMRT.icons.ViewColumnIcon,
2520
- localization = _useMRT.localization,
2521
- tableInstance = _useMRT.tableInstance;
2618
+ localization = _useMRT.localization;
2522
2619
 
2523
2620
  var _useState = useState(null),
2524
2621
  anchorEl = _useState[0],
@@ -2530,42 +2627,15 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2530
2627
 
2531
2628
  return React.createElement(React.Fragment, null, React.createElement(Tooltip, {
2532
2629
  arrow: true,
2533
- title: localization.showHideColumnsButtonTitle
2630
+ title: localization.showHideColumns
2534
2631
  }, React.createElement(IconButton, Object.assign({
2535
- "aria-label": localization.showHideColumnsButtonTitle,
2632
+ "aria-label": localization.showHideColumns,
2536
2633
  onClick: handleClick,
2537
2634
  size: "small"
2538
- }, rest), React.createElement(ViewColumnIcon, null))), React.createElement(Menu, {
2635
+ }, rest), React.createElement(ViewColumnIcon, null))), React.createElement(MRT_ShowHideColumnsMenu, {
2539
2636
  anchorEl: anchorEl,
2540
- open: !!anchorEl,
2541
- onClose: function onClose() {
2542
- return setAnchorEl(null);
2543
- },
2544
- MenuListProps: {
2545
- dense: tableInstance.state.densePadding
2546
- }
2547
- }, React.createElement(Box, {
2548
- sx: {
2549
- display: 'flex',
2550
- justifyContent: 'space-between',
2551
- p: '0.5rem'
2552
- }
2553
- }, React.createElement(Button, {
2554
- disabled: !tableInstance.getToggleHideAllColumnsProps().checked && !tableInstance.getToggleHideAllColumnsProps().indeterminate,
2555
- onClick: function onClick() {
2556
- return tableInstance.toggleHideAllColumns(true);
2557
- }
2558
- }, localization.columnShowHideMenuHideAll), React.createElement(Button, {
2559
- disabled: tableInstance.getToggleHideAllColumnsProps().checked,
2560
- onClick: function onClick() {
2561
- return tableInstance.toggleHideAllColumns(false);
2562
- }
2563
- }, localization.columnShowHideMenuShowAll)), React.createElement(Divider, null), tableInstance.columns.map(function (column, index) {
2564
- return React.createElement(MRT_ShowHideColumnsMenu, {
2565
- key: index + "-" + column.id,
2566
- column: column
2567
- });
2568
- })));
2637
+ setAnchorEl: setAnchorEl
2638
+ }));
2569
2639
  };
2570
2640
 
2571
2641
  var MRT_ToggleDensePaddingButton = function MRT_ToggleDensePaddingButton(_ref) {
@@ -2581,9 +2651,9 @@ var MRT_ToggleDensePaddingButton = function MRT_ToggleDensePaddingButton(_ref) {
2581
2651
 
2582
2652
  return React.createElement(Tooltip, {
2583
2653
  arrow: true,
2584
- title: localization.toggleDensePaddingSwitchTitle
2654
+ title: localization.toggleDensePadding
2585
2655
  }, React.createElement(IconButton, Object.assign({
2586
- "aria-label": localization.toggleDensePaddingSwitchTitle,
2656
+ "aria-label": localization.toggleDensePadding,
2587
2657
  onClick: function onClick() {
2588
2658
  return setDensePadding(!densePadding);
2589
2659
  },
@@ -2604,9 +2674,9 @@ var MRT_ToggleFiltersButton = function MRT_ToggleFiltersButton(_ref) {
2604
2674
 
2605
2675
  return React.createElement(Tooltip, {
2606
2676
  arrow: true,
2607
- title: localization.toggleFilterButtonTitle
2677
+ title: localization.showHideFilters
2608
2678
  }, React.createElement(IconButton, Object.assign({
2609
- "aria-label": localization.toggleFilterButtonTitle,
2679
+ "aria-label": localization.showHideFilters,
2610
2680
  onClick: function onClick() {
2611
2681
  return setShowFilters(!showFilters);
2612
2682
  },
@@ -2638,7 +2708,7 @@ var MRT_ToggleSearchButton = function MRT_ToggleSearchButton(_ref) {
2638
2708
 
2639
2709
  return React.createElement(Tooltip, {
2640
2710
  arrow: true,
2641
- title: localization.toggleSearchButtonTitle
2711
+ title: localization.showHideSearch
2642
2712
  }, React.createElement(IconButton, Object.assign({
2643
2713
  size: "small",
2644
2714
  onClick: handleToggleSearch
@@ -2713,7 +2783,7 @@ var MRT_TablePagination = function MRT_TablePagination() {
2713
2783
  };
2714
2784
 
2715
2785
  var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
2716
- var _localization$toolbar, _localization$toolbar2;
2786
+ var _localization$selecte, _localization$selecte2;
2717
2787
 
2718
2788
  var _useMRT = useMRT(),
2719
2789
  muiTableToolbarAlertBannerProps = _useMRT.muiTableToolbarAlertBannerProps,
@@ -2725,13 +2795,13 @@ var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
2725
2795
 
2726
2796
  var isMobile = useMediaQuery('(max-width:720px)');
2727
2797
  var alertProps = muiTableToolbarAlertBannerProps instanceof Function ? muiTableToolbarAlertBannerProps(tableInstance) : muiTableToolbarAlertBannerProps;
2728
- 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;
2729
- var groupedByMessage = tableInstance.state.groupBy.length > 0 ? React.createElement("span", null, localization.toolbarAlertGroupedByMessage, ' ', tableInstance.state.groupBy.map(function (columnId, index) {
2798
+ 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;
2799
+ var groupedByMessage = tableInstance.state.groupBy.length > 0 ? React.createElement("span", null, localization.groupedBy, ' ', tableInstance.state.groupBy.map(function (columnId, index) {
2730
2800
  var _tableInstance$allCol;
2731
2801
 
2732
2802
  return React.createElement(Fragment, {
2733
2803
  key: index + "-" + columnId
2734
- }, index > 0 ? localization.toolbarAlertGroupedThenByMessage : '', React.createElement(Chip, {
2804
+ }, index > 0 ? localization.thenBy : '', React.createElement(Chip, {
2735
2805
  color: "secondary",
2736
2806
  label: (_tableInstance$allCol = tableInstance.allColumns.find(function (column) {
2737
2807
  return column.id === columnId;
@@ -2903,53 +2973,50 @@ var MRT_TableContainer = function MRT_TableContainer() {
2903
2973
  };
2904
2974
 
2905
2975
  var MRT_DefaultLocalization_EN = {
2906
- actionsHeadColumnTitle: 'Actions',
2976
+ actions: 'Actions',
2977
+ cancel: 'Cancel',
2907
2978
  changeFilterMode: 'Change filter mode',
2908
- columnActionMenuButtonTitle: 'Column Actions',
2909
- columnActionMenuItemClearSort: 'Clear sort',
2910
- columnActionMenuItemGroupBy: 'Group by {column}',
2911
- columnActionMenuItemHideColumn: 'Hide {column} column',
2912
- columnActionMenuItemSortAsc: 'Sort by {column} ascending',
2913
- columnActionMenuItemSortDesc: 'Sort by {column} descending',
2914
- columnActionMenuItemUnGroupBy: 'Ungroup by {column}',
2915
- columnShowHideMenuHideAll: 'Hide all',
2916
- columnShowHideMenuShowAll: 'Show all',
2917
- expandAllButtonTitle: 'Expand all',
2918
- expandButtonTitle: 'Expand',
2919
- filterApplied: 'Filtering by {column} - ({filterType})',
2920
- filterMenuItemContains: 'Contains Exact',
2921
- filterMenuItemEmpty: 'Empty',
2922
- filterMenuItemEndsWith: 'Ends With',
2923
- filterMenuItemEquals: 'Equals',
2924
- filterMenuItemFuzzy: 'Fuzzy Match (Default)',
2925
- filterMenuItemGreaterThan: 'Greater Than',
2926
- filterMenuItemLessThan: 'Less Than',
2927
- filterMenuItemNotEmpty: 'Not Empty',
2928
- filterMenuItemNotEquals: 'Not Equals',
2929
- filterMenuItemStartsWith: 'Starts With',
2930
- filterMenuTitle: 'Filter Mode',
2931
- filterTextFieldChangeFilterButtonTitle: 'Change Filter Mode',
2932
- filterTextFieldChipLabelEmpty: 'Empty',
2933
- filterTextFieldChipLabelNotEmpty: 'Not Empty',
2934
- filterTextFieldClearButtonTitle: 'Clear filter',
2935
- filterTextFieldPlaceholder: 'Filter by {column}',
2936
- rowActionButtonCancel: 'Cancel',
2937
- rowActionButtonSave: 'Save',
2938
- rowActionMenuButtonTitle: 'Row Actions',
2939
- rowActionMenuItemEdit: 'Edit',
2940
- rowActionsColumnTitle: 'Actions',
2941
- searchTextFieldClearButtonTitle: 'Clear search',
2942
- searchTextFieldPlaceholder: 'Search',
2943
- selectAllCheckboxTitle: 'Toggle select all',
2944
- selectCheckboxTitle: 'Toggle select row',
2945
- showHideColumnsButtonTitle: 'Show/Hide columns',
2946
- toggleDensePaddingSwitchTitle: 'Toggle dense padding',
2947
- toggleFilterButtonTitle: 'Show/Hide filters',
2948
- toggleFullScreenButtonTitle: 'Toggle full screen',
2949
- toggleSearchButtonTitle: 'Show/Hide search',
2950
- toolbarAlertGroupedByMessage: 'Grouped by ',
2951
- toolbarAlertGroupedThenByMessage: ', then by ',
2952
- toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected'
2979
+ clearFilter: 'Clear filter',
2980
+ clearSearch: 'Clear search',
2981
+ clearSort: 'Clear sort',
2982
+ columnActions: 'Column Actions',
2983
+ edit: 'Edit',
2984
+ expand: 'Expand',
2985
+ expandAll: 'Expand all',
2986
+ filterByColumn: 'Filter by {column}',
2987
+ filterContains: 'Contains Exact',
2988
+ filterEmpty: 'Empty',
2989
+ filterEndsWith: 'Ends With',
2990
+ filterEquals: 'Equals',
2991
+ filterFuzzy: 'Fuzzy Match',
2992
+ filterGreaterThan: 'Greater Than',
2993
+ filterLessThan: 'Less Than',
2994
+ filterMode: 'Filter Mode: {filterType}',
2995
+ filterNotEmpty: 'Not Empty',
2996
+ filterNotEquals: 'Not Equals',
2997
+ filterStartsWith: 'Starts With',
2998
+ filteringByColumn: 'Filtering by {column} - {filterType} "{filterValue}"',
2999
+ groupByColumn: 'Group by {column}',
3000
+ groupedBy: 'Grouped by ',
3001
+ hideAll: 'Hide all',
3002
+ hideColumn: 'Hide {column} column',
3003
+ rowActions: 'Row Actions',
3004
+ save: 'Save',
3005
+ search: 'Search',
3006
+ selectedCountOfRowCountRowsSelected: '{selectedCount} of {rowCount} row(s) selected',
3007
+ showAll: 'Show all',
3008
+ showAllColumns: 'Show all columns',
3009
+ showHideColumns: 'Show/Hide columns',
3010
+ showHideFilters: 'Show/Hide filters',
3011
+ showHideSearch: 'Show/Hide search',
3012
+ sortByColumnAsc: 'Sort by {column} ascending',
3013
+ sortByColumnDesc: 'Sort by {column} descending',
3014
+ thenBy: ', then by ',
3015
+ toggleDensePadding: 'Toggle dense padding',
3016
+ toggleFullScreen: 'Toggle full screen',
3017
+ toggleSelectAll: 'Toggle select all',
3018
+ toggleSelectRow: 'Toggle select row',
3019
+ ungroupByColumn: 'Ungroup by {column}'
2953
3020
  };
2954
3021
 
2955
3022
  var MRT_Default_Icons = {
@@ -2980,13 +3047,16 @@ var MRT_Default_Icons = {
2980
3047
  VisibilityOffIcon: VisibilityOffIcon
2981
3048
  };
2982
3049
 
2983
- var _excluded = ["defaultColumn", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
3050
+ var _excluded = ["defaultColumn", "filterTypes", "globalFilter", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
2984
3051
  var MaterialReactTable = (function (_ref) {
2985
3052
  var _ref$defaultColumn = _ref.defaultColumn,
2986
3053
  defaultColumn = _ref$defaultColumn === void 0 ? {
2987
3054
  minWidth: 50,
2988
3055
  maxWidth: 1000
2989
3056
  } : _ref$defaultColumn,
3057
+ filterTypes = _ref.filterTypes,
3058
+ _ref$globalFilter = _ref.globalFilter,
3059
+ globalFilter = _ref$globalFilter === void 0 ? 'fuzzy' : _ref$globalFilter,
2990
3060
  icons = _ref.icons,
2991
3061
  localization = _ref.localization,
2992
3062
  _ref$positionActionsC = _ref.positionActionsColumn,
@@ -3001,6 +3071,9 @@ var MaterialReactTable = (function (_ref) {
3001
3071
 
3002
3072
  return React.createElement(MaterialReactTableProvider, Object.assign({
3003
3073
  defaultColumn: defaultColumn,
3074
+ // @ts-ignore
3075
+ filterTypes: _extends({}, defaultFilterFNs, filterTypes),
3076
+ globalFilter: globalFilter,
3004
3077
  icons: _extends({}, MRT_Default_Icons, icons),
3005
3078
  localization: _extends({}, MRT_DefaultLocalization_EN, localization),
3006
3079
  positionActionsColumn: positionActionsColumn,