material-react-table 0.5.8 → 0.5.9

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 (57) hide show
  1. package/dist/MaterialReactTable.d.ts +1 -10
  2. package/dist/body/MRT_TableBodyCell.d.ts +1 -1
  3. package/dist/body/MRT_TableBodyRow.d.ts +1 -1
  4. package/dist/body/MRT_TableDetailPanel.d.ts +1 -1
  5. package/dist/buttons/MRT_EditActionButtons.d.ts +1 -1
  6. package/dist/buttons/MRT_ExpandButton.d.ts +1 -1
  7. package/dist/buttons/MRT_ToggleColumnActionMenuButton.d.ts +1 -1
  8. package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +1 -1
  9. package/dist/enums.d.ts +12 -0
  10. package/dist/filtersFNs.d.ts +16 -0
  11. package/dist/footer/MRT_TableFooterCell.d.ts +1 -1
  12. package/dist/footer/MRT_TableFooterRow.d.ts +1 -1
  13. package/dist/head/MRT_TableHeadCell.d.ts +1 -1
  14. package/dist/head/MRT_TableHeadRow.d.ts +1 -1
  15. package/dist/inputs/MRT_EditCellTextField.d.ts +1 -1
  16. package/dist/inputs/MRT_FilterTextField.d.ts +1 -1
  17. package/dist/inputs/MRT_SelectCheckbox.d.ts +1 -1
  18. package/dist/localization.d.ts +3 -1
  19. package/dist/material-react-table.cjs.development.js +111 -37
  20. package/dist/material-react-table.cjs.development.js.map +1 -1
  21. package/dist/material-react-table.cjs.production.min.js +1 -1
  22. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  23. package/dist/material-react-table.esm.js +100 -28
  24. package/dist/material-react-table.esm.js.map +1 -1
  25. package/dist/menus/MRT_ColumnActionMenu.d.ts +1 -1
  26. package/dist/menus/MRT_FilterTypeMenu.d.ts +1 -1
  27. package/dist/menus/MRT_RowActionMenu.d.ts +1 -1
  28. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
  29. package/dist/useMRT.d.ts +1 -1
  30. package/package.json +1 -1
  31. package/src/MaterialReactTable.tsx +1 -11
  32. package/src/body/MRT_TableBody.tsx +1 -1
  33. package/src/body/MRT_TableBodyCell.tsx +1 -1
  34. package/src/body/MRT_TableBodyRow.tsx +1 -1
  35. package/src/body/MRT_TableDetailPanel.tsx +1 -1
  36. package/src/buttons/MRT_EditActionButtons.tsx +1 -1
  37. package/src/buttons/MRT_ExpandButton.tsx +1 -1
  38. package/src/buttons/MRT_ShowHideColumnsButton.tsx +1 -1
  39. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +2 -1
  40. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +1 -1
  41. package/src/enums.ts +12 -0
  42. package/src/filtersFNs.ts +30 -0
  43. package/src/footer/MRT_TableFooter.tsx +1 -1
  44. package/src/footer/MRT_TableFooterCell.tsx +1 -1
  45. package/src/footer/MRT_TableFooterRow.tsx +1 -1
  46. package/src/head/MRT_TableHead.tsx +1 -1
  47. package/src/head/MRT_TableHeadCell.tsx +1 -1
  48. package/src/head/MRT_TableHeadRow.tsx +1 -1
  49. package/src/inputs/MRT_EditCellTextField.tsx +1 -1
  50. package/src/inputs/MRT_FilterTextField.tsx +2 -2
  51. package/src/inputs/MRT_SelectCheckbox.tsx +1 -1
  52. package/src/localization.ts +6 -2
  53. package/src/menus/MRT_ColumnActionMenu.tsx +1 -1
  54. package/src/menus/MRT_FilterTypeMenu.tsx +37 -3
  55. package/src/menus/MRT_RowActionMenu.tsx +1 -1
  56. package/src/menus/MRT_ShowHideColumnsMenu.tsx +1 -1
  57. package/src/useMRT.tsx +25 -8
@@ -160,6 +160,26 @@ notEqualsFilterFN.autoRemove = function (val) {
160
160
  return !val;
161
161
  };
162
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
+
163
183
  var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
164
184
  return rows.filter(function (row) {
165
185
  return !row.values[id].toString().toLowerCase().trim();
@@ -184,6 +204,8 @@ var defaultFilterFNs = {
184
204
  contains: containsFilterFN,
185
205
  empty: emptyFilterFN,
186
206
  endsWith: endsWithFilterFN,
207
+ greaterThan: greaterThanFilterFN,
208
+ lessThan: lessThanFilterFN,
187
209
  equals: equalsFilterFN,
188
210
  fuzzy: fuzzyFilterFN,
189
211
  notEmpty: notEmptyFilterFN,
@@ -225,12 +247,40 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
225
247
  return _extends({}, defaultFilterFNs, props.filterTypes);
226
248
  }, [props.filterTypes]);
227
249
 
228
- var _useState6 = useState(function () {
229
- return Object.assign.apply(Object, [{}].concat(props.columns.map(function (c) {
250
+ var getInitialFilterTypeState = function getInitialFilterTypeState() {
251
+ var lowestLevelColumns = props.columns;
252
+ var currentCols = props.columns;
253
+
254
+ while (!!currentCols.length && currentCols.some(function (col) {
255
+ return col.columns;
256
+ })) {
257
+ var nextCols = currentCols.filter(function (col) {
258
+ return !!col.columns;
259
+ }).map(function (col) {
260
+ return col.columns;
261
+ }).flat();
262
+
263
+ if (nextCols.every(function (col) {
264
+ return !col.columns;
265
+ })) {
266
+ lowestLevelColumns = [].concat(lowestLevelColumns, nextCols);
267
+ }
268
+
269
+ currentCols = nextCols;
270
+ }
271
+
272
+ lowestLevelColumns = lowestLevelColumns.filter(function (col) {
273
+ return !col.columns;
274
+ });
275
+ return Object.assign.apply(Object, [{}].concat(lowestLevelColumns.map(function (c) {
230
276
  var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
231
277
 
232
278
  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;
233
279
  })));
280
+ };
281
+
282
+ var _useState6 = useState(function () {
283
+ return getInitialFilterTypeState();
234
284
  }),
235
285
  currentFilterTypes = _useState6[0],
236
286
  setCurrentFilterTypes = _useState6[1];
@@ -295,6 +345,21 @@ var useMRT = function useMRT() {
295
345
  return useContext(MaterialReactTableContext);
296
346
  };
297
347
 
348
+ var MRT_FILTER_TYPE;
349
+
350
+ (function (MRT_FILTER_TYPE) {
351
+ MRT_FILTER_TYPE["CONTAINS"] = "contains";
352
+ MRT_FILTER_TYPE["EMPTY"] = "empty";
353
+ MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
354
+ MRT_FILTER_TYPE["EQUALS"] = "equals";
355
+ MRT_FILTER_TYPE["FUZZY"] = "fuzzy";
356
+ MRT_FILTER_TYPE["GREATER_THAN"] = "greaterThan";
357
+ MRT_FILTER_TYPE["LESS_THAN"] = "lessThan";
358
+ MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
359
+ MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
360
+ MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
361
+ })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
362
+
298
363
  var commonMenuItemStyles = {
299
364
  py: '6px',
300
365
  my: 0,
@@ -315,35 +380,53 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
315
380
  return [{
316
381
  type: MRT_FILTER_TYPE.FUZZY,
317
382
  label: localization.filterMenuItemFuzzy,
318
- divider: false
383
+ divider: false,
384
+ fn: fuzzyFilterFN
319
385
  }, {
320
386
  type: MRT_FILTER_TYPE.CONTAINS,
321
387
  label: localization.filterMenuItemContains,
322
- divider: true
388
+ divider: true,
389
+ fn: containsFilterFN
323
390
  }, {
324
391
  type: MRT_FILTER_TYPE.STARTS_WITH,
325
392
  label: localization.filterMenuItemStartsWith,
326
- divider: false
393
+ divider: false,
394
+ fn: startsWithFilterFN
327
395
  }, {
328
396
  type: MRT_FILTER_TYPE.ENDS_WITH,
329
397
  label: localization.filterMenuItemEndsWith,
330
- divider: true
398
+ divider: true,
399
+ fn: endsWithFilterFN
331
400
  }, {
332
401
  type: MRT_FILTER_TYPE.EQUALS,
333
402
  label: localization.filterMenuItemEquals,
334
- divider: false
403
+ divider: false,
404
+ fn: equalsFilterFN
335
405
  }, {
336
406
  type: MRT_FILTER_TYPE.NOT_EQUALS,
337
407
  label: localization.filterMenuItemNotEquals,
338
- divider: true
408
+ divider: true,
409
+ fn: notEqualsFilterFN
410
+ }, {
411
+ type: MRT_FILTER_TYPE.GREATER_THAN,
412
+ label: localization.filterMenuItemGreaterThan,
413
+ divider: false,
414
+ fn: greaterThanFilterFN
415
+ }, {
416
+ type: MRT_FILTER_TYPE.LESS_THAN,
417
+ label: localization.filterMenuItemLessThan,
418
+ divider: true,
419
+ fn: lessThanFilterFN
339
420
  }, {
340
421
  type: MRT_FILTER_TYPE.EMPTY,
341
422
  label: localization.filterMenuItemEmpty,
342
- divider: false
423
+ divider: false,
424
+ fn: emptyFilterFN
343
425
  }, {
344
426
  type: MRT_FILTER_TYPE.NOT_EMPTY,
345
427
  label: localization.filterMenuItemNotEmpty,
346
- divider: false
428
+ divider: false,
429
+ fn: notEmptyFilterFN
347
430
  }];
348
431
  }, []);
349
432
 
@@ -379,14 +462,15 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
379
462
  }, filterTypes.map(function (_ref2, index) {
380
463
  var type = _ref2.type,
381
464
  label = _ref2.label,
382
- divider = _ref2.divider;
465
+ divider = _ref2.divider,
466
+ fn = _ref2.fn;
383
467
  return React.createElement(MenuItem, {
384
468
  divider: divider,
385
469
  key: index,
386
470
  onClick: function onClick() {
387
471
  return handleSelectFilterType(type);
388
472
  },
389
- selected: type === filterType,
473
+ selected: type === filterType || fn === filterType,
390
474
  sx: commonMenuItemStyles,
391
475
  value: type
392
476
  }, label);
@@ -495,7 +579,6 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
495
579
  arrow: true,
496
580
  title: localization.changeFilterMode
497
581
  }, React.createElement("span", null, React.createElement(IconButton, {
498
- disabled: isCustomFilterType,
499
582
  onClick: handleFilterMenuOpen,
500
583
  size: "small",
501
584
  sx: {
@@ -748,6 +831,7 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
748
831
  arrow: true,
749
832
  enterDelay: 1000,
750
833
  enterNextDelay: 1000,
834
+ placement: "top",
751
835
  title: localization.columnActionMenuButtonTitle
752
836
  }, React.createElement(IconButton, {
753
837
  "aria-label": localization.columnActionMenuButtonTitle,
@@ -2820,6 +2904,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2820
2904
 
2821
2905
  var MRT_DefaultLocalization_EN = {
2822
2906
  actionsHeadColumnTitle: 'Actions',
2907
+ changeFilterMode: 'Change filter mode',
2823
2908
  columnActionMenuButtonTitle: 'Column Actions',
2824
2909
  columnActionMenuItemClearSort: 'Clear sort',
2825
2910
  columnActionMenuItemGroupBy: 'Group by {column}',
@@ -2836,8 +2921,9 @@ var MRT_DefaultLocalization_EN = {
2836
2921
  filterMenuItemEmpty: 'Empty',
2837
2922
  filterMenuItemEndsWith: 'Ends With',
2838
2923
  filterMenuItemEquals: 'Equals',
2839
- changeFilterMode: 'Change filter mode',
2840
2924
  filterMenuItemFuzzy: 'Fuzzy Match (Default)',
2925
+ filterMenuItemGreaterThan: 'Greater Than',
2926
+ filterMenuItemLessThan: 'Less Than',
2841
2927
  filterMenuItemNotEmpty: 'Not Empty',
2842
2928
  filterMenuItemNotEquals: 'Not Equals',
2843
2929
  filterMenuItemStartsWith: 'Starts With',
@@ -2895,19 +2981,6 @@ var MRT_Default_Icons = {
2895
2981
  };
2896
2982
 
2897
2983
  var _excluded = ["defaultColumn", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
2898
- var MRT_FILTER_TYPE;
2899
-
2900
- (function (MRT_FILTER_TYPE) {
2901
- MRT_FILTER_TYPE["CONTAINS"] = "contains";
2902
- MRT_FILTER_TYPE["EMPTY"] = "empty";
2903
- MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
2904
- MRT_FILTER_TYPE["EQUALS"] = "equals";
2905
- MRT_FILTER_TYPE["FUZZY"] = "fuzzy";
2906
- MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
2907
- MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
2908
- MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
2909
- })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
2910
-
2911
2984
  var MaterialReactTable = (function (_ref) {
2912
2985
  var _ref$defaultColumn = _ref.defaultColumn,
2913
2986
  defaultColumn = _ref$defaultColumn === void 0 ? {
@@ -2938,5 +3011,4 @@ var MaterialReactTable = (function (_ref) {
2938
3011
  });
2939
3012
 
2940
3013
  export default MaterialReactTable;
2941
- export { MRT_FILTER_TYPE };
2942
3014
  //# sourceMappingURL=material-react-table.esm.js.map