material-react-table 0.6.1 → 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.
@@ -1,7 +1,7 @@
1
- import React, { useState, useMemo, useCallback, 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 { matchSorter } from 'match-sorter';
4
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';
4
+ import { matchSorter } from 'match-sorter';
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,144 +97,12 @@ function _objectWithoutPropertiesLoose(source, excluded) {
97
97
  return target;
98
98
  }
99
99
 
100
- var fuzzySearchFN = function fuzzySearchFN(rows, columnIds, filterValue) {
101
- return matchSorter(rows, filterValue.toString().trim(), {
102
- keys: columnIds.map(function (c) {
103
- return "values." + c;
104
- }),
105
- sorter: function sorter(rankedItems) {
106
- return rankedItems;
107
- }
108
- });
109
- };
110
-
111
- fuzzySearchFN.autoRemove = function (val) {
112
- return !val;
113
- };
114
-
115
- var fuzzyFilterFN = function fuzzyFilterFN(rows, id, filterValue) {
116
- return matchSorter(rows, filterValue.toString().trim(), {
117
- keys: ["values." + id],
118
- sorter: function sorter(rankedItems) {
119
- return rankedItems;
120
- }
121
- });
122
- };
123
-
124
- fuzzyFilterFN.autoRemove = function (val) {
125
- return !val;
126
- };
127
-
128
- var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
129
- return rows.filter(function (row) {
130
- return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
131
- });
132
- };
133
-
134
- containsFilterFN.autoRemove = function (val) {
135
- return !val;
136
- };
137
-
138
- var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
139
- return rows.filter(function (row) {
140
- return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
141
- });
142
- };
143
-
144
- startsWithFilterFN.autoRemove = function (val) {
145
- return !val;
146
- };
147
-
148
- var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
149
- return rows.filter(function (row) {
150
- return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
151
- });
152
- };
153
-
154
- endsWithFilterFN.autoRemove = function (val) {
155
- return !val;
156
- };
157
-
158
- var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
159
- return rows.filter(function (row) {
160
- return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
161
- });
162
- };
163
-
164
- equalsFilterFN.autoRemove = function (val) {
165
- return !val;
166
- };
167
-
168
- var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
169
- return rows.filter(function (row) {
170
- return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
171
- });
172
- };
173
-
174
- notEqualsFilterFN.autoRemove = function (val) {
175
- return !val;
176
- };
177
-
178
- var greaterThanFilterFN = function greaterThanFilterFN(rows, id, filterValue) {
179
- return rows.filter(function (row) {
180
- return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] > +filterValue : row.values[id].toString().toLowerCase().trim() > filterValue.toString().toLowerCase().trim();
181
- });
182
- };
183
-
184
- greaterThanFilterFN.autoRemove = function (val) {
185
- return !val;
186
- };
187
-
188
- var lessThanFilterFN = function lessThanFilterFN(rows, id, filterValue) {
189
- return rows.filter(function (row) {
190
- return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] < +filterValue : row.values[id].toString().toLowerCase().trim() < filterValue.toString().toLowerCase().trim();
191
- });
192
- };
193
-
194
- lessThanFilterFN.autoRemove = function (val) {
195
- return !val;
196
- };
197
-
198
- var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
199
- return rows.filter(function (row) {
200
- return !row.values[id].toString().toLowerCase().trim();
201
- });
202
- };
203
-
204
- emptyFilterFN.autoRemove = function (val) {
205
- return !val;
206
- };
207
-
208
- var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
209
- return rows.filter(function (row) {
210
- return !!row.values[id].toString().toLowerCase().trim();
211
- });
212
- };
213
-
214
- notEmptyFilterFN.autoRemove = function (val) {
215
- return !val;
216
- };
217
-
218
- var defaultFilterFNs = {
219
- contains: containsFilterFN,
220
- empty: emptyFilterFN,
221
- endsWith: endsWithFilterFN,
222
- equals: equalsFilterFN,
223
- fuzzy: fuzzyFilterFN,
224
- globalFuzzy: fuzzySearchFN,
225
- greaterThan: greaterThanFilterFN,
226
- lessThan: lessThanFilterFN,
227
- notEmpty: notEmptyFilterFN,
228
- notEquals: notEqualsFilterFN,
229
- startsWith: startsWithFilterFN
230
- };
231
-
232
100
  var MaterialReactTableContext = /*#__PURE__*/function () {
233
101
  return createContext({});
234
102
  }();
235
103
 
236
104
  var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
237
- var _props$initialState$d, _props$initialState, _props$initialState$f, _props$initialState2, _props$initialState$s, _props$initialState3, _props$initialState$s2, _props$initialState4, _props$globalFilter;
105
+ var _props$initialState$d, _props$initialState, _props$initialState$f, _props$initialState2, _props$initialState$s, _props$initialState3, _props$initialState$s2, _props$initialState4;
238
106
 
239
107
  var hooks = [useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect];
240
108
  if (props.enableColumnResizing) hooks.unshift(useResizeColumns, useFlexLayout);
@@ -259,9 +127,6 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
259
127
  showSearch = _useState5[0],
260
128
  setShowSearch = _useState5[1];
261
129
 
262
- var filterTypes = useMemo(function () {
263
- return _extends({}, defaultFilterFNs, props.filterTypes);
264
- }, [props.filterTypes]);
265
130
  var findLowestLevelCols = useCallback(function () {
266
131
  var lowestLevelColumns = props.columns;
267
132
  var currentCols = props.columns;
@@ -299,17 +164,26 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
299
164
  currentFilterTypes = _useState6[0],
300
165
  setCurrentFilterTypes = _useState6[1];
301
166
 
302
- var columns = useMemo(function () {
303
- return findLowestLevelCols().map(function (column) {
304
- 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
+
305
177
  return column;
306
178
  });
307
- }, [props.columns, filterTypes, currentFilterTypes]);
308
- var tableInstance = useTable.apply(void 0, [_extends({}, props, {
309
- 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, {
310
185
  // @ts-ignore
311
- filterTypes: filterTypes,
312
- globalFilter: (_props$globalFilter = props.globalFilter) != null ? _props$globalFilter : 'globalFuzzy',
186
+ columns: columns,
313
187
  useControlledState: function useControlledState(state) {
314
188
  return useMemo(function () {
315
189
  return _extends({}, state, {
@@ -374,6 +248,124 @@ var MRT_FILTER_TYPE;
374
248
  MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
375
249
  })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
376
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
+
377
369
  var commonMenuItemStyles = {
378
370
  py: '6px',
379
371
  my: 0,
@@ -601,6 +593,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
601
593
  arrow: true,
602
594
  title: localization.changeFilterMode
603
595
  }, React.createElement("span", null, React.createElement(IconButton, {
596
+ "aria-label": localization.changeFilterMode,
604
597
  onClick: handleFilterMenuOpen,
605
598
  size: "small",
606
599
  sx: {
@@ -3054,13 +3047,16 @@ var MRT_Default_Icons = {
3054
3047
  VisibilityOffIcon: VisibilityOffIcon
3055
3048
  };
3056
3049
 
3057
- var _excluded = ["defaultColumn", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
3050
+ var _excluded = ["defaultColumn", "filterTypes", "globalFilter", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
3058
3051
  var MaterialReactTable = (function (_ref) {
3059
3052
  var _ref$defaultColumn = _ref.defaultColumn,
3060
3053
  defaultColumn = _ref$defaultColumn === void 0 ? {
3061
3054
  minWidth: 50,
3062
3055
  maxWidth: 1000
3063
3056
  } : _ref$defaultColumn,
3057
+ filterTypes = _ref.filterTypes,
3058
+ _ref$globalFilter = _ref.globalFilter,
3059
+ globalFilter = _ref$globalFilter === void 0 ? 'fuzzy' : _ref$globalFilter,
3064
3060
  icons = _ref.icons,
3065
3061
  localization = _ref.localization,
3066
3062
  _ref$positionActionsC = _ref.positionActionsColumn,
@@ -3075,6 +3071,9 @@ var MaterialReactTable = (function (_ref) {
3075
3071
 
3076
3072
  return React.createElement(MaterialReactTableProvider, Object.assign({
3077
3073
  defaultColumn: defaultColumn,
3074
+ // @ts-ignore
3075
+ filterTypes: _extends({}, defaultFilterFNs, filterTypes),
3076
+ globalFilter: globalFilter,
3078
3077
  icons: _extends({}, MRT_Default_Icons, icons),
3079
3078
  localization: _extends({}, MRT_DefaultLocalization_EN, localization),
3080
3079
  positionActionsColumn: positionActionsColumn,