material-react-table 1.8.1 → 1.8.3

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 (43) hide show
  1. package/dist/cjs/index.js +37 -30
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/MaterialReactTable.d.ts +38 -23
  4. package/dist/cjs/types/body/MRT_TableBody.d.ts +4 -3
  5. package/dist/cjs/types/body/MRT_TableBodyCell.d.ts +3 -2
  6. package/dist/cjs/types/body/MRT_TableBodyRow.d.ts +5 -4
  7. package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +3 -2
  8. package/dist/cjs/types/column.utils.d.ts +17 -1
  9. package/dist/cjs/types/footer/MRT_TableFooter.d.ts +3 -2
  10. package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +3 -2
  11. package/dist/cjs/types/head/MRT_TableHead.d.ts +3 -2
  12. package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +3 -2
  13. package/dist/cjs/types/sortingFns.d.ts +117 -1
  14. package/dist/esm/material-react-table.esm.js +37 -30
  15. package/dist/esm/material-react-table.esm.js.map +1 -1
  16. package/dist/esm/types/MaterialReactTable.d.ts +38 -23
  17. package/dist/esm/types/body/MRT_TableBody.d.ts +4 -3
  18. package/dist/esm/types/body/MRT_TableBodyCell.d.ts +3 -2
  19. package/dist/esm/types/body/MRT_TableBodyRow.d.ts +5 -4
  20. package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +3 -2
  21. package/dist/esm/types/column.utils.d.ts +17 -1
  22. package/dist/esm/types/footer/MRT_TableFooter.d.ts +3 -2
  23. package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +3 -2
  24. package/dist/esm/types/head/MRT_TableHead.d.ts +3 -2
  25. package/dist/esm/types/head/MRT_TableHeadRow.d.ts +3 -2
  26. package/dist/esm/types/sortingFns.d.ts +117 -1
  27. package/dist/index.d.ts +39 -24
  28. package/package.json +15 -15
  29. package/src/MaterialReactTable.tsx +655 -624
  30. package/src/body/MRT_TableBody.tsx +10 -11
  31. package/src/body/MRT_TableBodyCell.tsx +3 -2
  32. package/src/body/MRT_TableBodyRow.tsx +7 -14
  33. package/src/body/MRT_TableDetailPanel.tsx +3 -2
  34. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +1 -1
  35. package/src/footer/MRT_TableFooter.tsx +3 -2
  36. package/src/footer/MRT_TableFooterRow.tsx +3 -7
  37. package/src/head/MRT_TableHead.tsx +3 -2
  38. package/src/head/MRT_TableHeadRow.tsx +3 -7
  39. package/src/inputs/MRT_EditCellTextField.tsx +28 -27
  40. package/src/inputs/MRT_FilterTextField.tsx +36 -35
  41. package/src/menus/MRT_FilterOptionMenu.tsx +8 -3
  42. package/src/table/MRT_Table.tsx +4 -3
  43. package/src/table/MRT_TableRoot.tsx +6 -0
package/dist/cjs/index.js CHANGED
@@ -658,15 +658,18 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, setFilt
658
658
  }
659
659
  else if ((columnDef === null || columnDef === void 0 ? void 0 : columnDef.filterVariant) === 'multi-select' ||
660
660
  ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes'].includes(option)) {
661
- if (currentFilterValue === null || currentFilterValue === void 0 ? void 0 : currentFilterValue.length) {
661
+ if (currentFilterValue instanceof String ||
662
+ (currentFilterValue === null || currentFilterValue === void 0 ? void 0 : currentFilterValue.length)) {
662
663
  column.setFilterValue([]);
663
664
  setFilterValue === null || setFilterValue === void 0 ? void 0 : setFilterValue([]);
664
665
  }
665
666
  }
666
667
  else if ((columnDef === null || columnDef === void 0 ? void 0 : columnDef.filterVariant) === 'range' ||
667
668
  ['between', 'betweenInclusive', 'inNumberRange'].includes(option)) {
668
- column.setFilterValue(['', '']);
669
- setFilterValue === null || setFilterValue === void 0 ? void 0 : setFilterValue('');
669
+ if (!(currentFilterValue === null || currentFilterValue === void 0 ? void 0 : currentFilterValue.every((v) => v === ''))) {
670
+ column.setFilterValue(['', '']);
671
+ setFilterValue === null || setFilterValue === void 0 ? void 0 : setFilterValue('');
672
+ }
670
673
  }
671
674
  else {
672
675
  if (!['', undefined].includes(currentFilterValue)) {
@@ -1124,7 +1127,7 @@ const MRT_ToggleRowActionMenuButton = ({ cell, row, table, }) => {
1124
1127
  setEditingRow(Object.assign({}, row));
1125
1128
  setAnchorEl(null);
1126
1129
  };
1127
- return (React__default["default"].createElement(React__default["default"].Fragment, null, renderRowActions ? (React__default["default"].createElement(React__default["default"].Fragment, null, renderRowActions({ cell, row, table }))) : row.id === (editingRow === null || editingRow === void 0 ? void 0 : editingRow.id) && editingMode === 'row' ? (React__default["default"].createElement(MRT_EditActionButtons, { row: row, table: table })) : !renderRowActionMenuItems &&
1130
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, renderRowActions ? (renderRowActions({ cell, row, table })) : row.id === (editingRow === null || editingRow === void 0 ? void 0 : editingRow.id) && editingMode === 'row' ? (React__default["default"].createElement(MRT_EditActionButtons, { row: row, table: table })) : !renderRowActionMenuItems &&
1128
1131
  (enableEditing instanceof Function
1129
1132
  ? enableEditing(row)
1130
1133
  : enableEditing) ? (React__default["default"].createElement(Tooltip__default["default"], { placement: "right", arrow: true, title: localization.edit },
@@ -1564,7 +1567,7 @@ const MRT_TableHeadCellColumnActionsButton = ({ header, table, }) => {
1564
1567
  };
1565
1568
 
1566
1569
  const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1567
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1570
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
1568
1571
  const { options: { enableColumnFilterModes, columnFilterModeOptions, icons: { FilterListIcon, CloseIcon }, localization, manualFiltering, muiTableHeadCellFilterTextFieldProps, }, refs: { filterInputRefs }, setColumnFilterFns, } = table;
1569
1572
  const { column } = header;
1570
1573
  const { columnDef } = column;
@@ -1749,28 +1752,27 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1749
1752
  ? textFieldProps.sx(theme)
1750
1753
  : textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.sx))) }),
1751
1754
  (isSelectFilter || isMultiSelectFilter) && (React__default["default"].createElement(MenuItem__default["default"], { divider: true, disabled: true, hidden: true, value: "" },
1752
- React__default["default"].createElement(Box__default["default"], { sx: { opacity: 0.5 } }, filterPlaceholder))), (_k = columnDef === null || columnDef === void 0 ? void 0 : columnDef.filterSelectOptions) === null || _k === void 0 ? void 0 :
1753
- _k.map((option) => {
1754
- var _a;
1755
- let value;
1756
- let text;
1757
- if (typeof option !== 'object') {
1758
- value = option;
1759
- text = option;
1760
- }
1761
- else {
1762
- value = option.value;
1763
- text = option.text;
1764
- }
1765
- return (React__default["default"].createElement(MenuItem__default["default"], { key: value, sx: {
1766
- display: 'flex',
1767
- m: 0,
1768
- alignItems: 'center',
1769
- gap: '0.5rem',
1770
- }, value: value },
1771
- isMultiSelectFilter && (React__default["default"].createElement(Checkbox__default["default"], { checked: ((_a = column.getFilterValue()) !== null && _a !== void 0 ? _a : []).includes(value), sx: { mr: '0.5rem' } })),
1772
- text));
1773
- })),
1755
+ React__default["default"].createElement(Box__default["default"], { sx: { opacity: 0.5 } }, filterPlaceholder))), (_k = textFieldProps.children) !== null && _k !== void 0 ? _k : (_l = columnDef === null || columnDef === void 0 ? void 0 : columnDef.filterSelectOptions) === null || _l === void 0 ? void 0 : _l.map((option) => {
1756
+ var _a;
1757
+ let value;
1758
+ let text;
1759
+ if (typeof option !== 'object') {
1760
+ value = option;
1761
+ text = option;
1762
+ }
1763
+ else {
1764
+ value = option.value;
1765
+ text = option.text;
1766
+ }
1767
+ return (React__default["default"].createElement(MenuItem__default["default"], { key: value, sx: {
1768
+ display: 'flex',
1769
+ m: 0,
1770
+ alignItems: 'center',
1771
+ gap: '0.5rem',
1772
+ }, value: value },
1773
+ isMultiSelectFilter && (React__default["default"].createElement(Checkbox__default["default"], { checked: ((_a = column.getFilterValue()) !== null && _a !== void 0 ? _a : []).includes(value), sx: { mr: '0.5rem' } })),
1774
+ text));
1775
+ })),
1774
1776
  React__default["default"].createElement(MRT_FilterOptionMenu, { anchorEl: anchorEl, header: header, setAnchorEl: setAnchorEl, table: table, setFilterValue: setFilterValue })));
1775
1777
  };
1776
1778
 
@@ -2126,7 +2128,7 @@ const MRT_TableHead = ({ table, virtualColumns, virtualPaddingLeft, virtualPaddi
2126
2128
  };
2127
2129
 
2128
2130
  const MRT_EditCellTextField = ({ cell, showLabel, table, }) => {
2129
- var _a, _b;
2131
+ var _a, _b, _c;
2130
2132
  const { getState, options: { muiTableBodyCellEditTextFieldProps }, refs: { editInputRefs }, setEditingCell, setEditingRow, } = table;
2131
2133
  const { column, row } = cell;
2132
2134
  const { columnDef } = column;
@@ -2187,7 +2189,7 @@ const MRT_EditCellTextField = ({ cell, showLabel, table, }) => {
2187
2189
  var _a;
2188
2190
  e.stopPropagation();
2189
2191
  (_a = textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.onClick) === null || _a === void 0 ? void 0 : _a.call(textFieldProps, e);
2190
- }, onBlur: handleBlur, onChange: handleChange, onKeyDown: handleEnterKeyDown }), (_b = columnDef === null || columnDef === void 0 ? void 0 : columnDef.editSelectOptions) === null || _b === void 0 ? void 0 : _b.map((option) => {
2192
+ }, onBlur: handleBlur, onChange: handleChange, onKeyDown: handleEnterKeyDown }), (_b = textFieldProps.children) !== null && _b !== void 0 ? _b : (_c = columnDef === null || columnDef === void 0 ? void 0 : columnDef.editSelectOptions) === null || _c === void 0 ? void 0 : _c.map((option) => {
2191
2193
  let value;
2192
2194
  let text;
2193
2195
  if (typeof option !== 'object') {
@@ -2751,7 +2753,7 @@ const MRT_Table = ({ table }) => {
2751
2753
  colSizes[`--col-${parseCSSVarId(header.column.id)}-size`] = colSize;
2752
2754
  }
2753
2755
  return colSizes;
2754
- }, [columns, columnSizing, columnSizingInfo]);
2756
+ }, [columns, columnSizing, columnSizingInfo, columnVisibility]);
2755
2757
  //get first 16 column widths and average them
2756
2758
  const averageColumnWidth = React.useMemo(() => {
2757
2759
  var _a, _b, _c, _d;
@@ -3033,6 +3035,11 @@ const MRT_TableRoot = (props) => {
3033
3035
  tablePaperRef,
3034
3036
  topToolbarRef,
3035
3037
  }, setColumnFilterFns: (_0 = props.onColumnFilterFnsChange) !== null && _0 !== void 0 ? _0 : setColumnFilterFns, setDensity: (_1 = props.onDensityChange) !== null && _1 !== void 0 ? _1 : setDensity, setDraggingColumn: (_2 = props.onDraggingColumnChange) !== null && _2 !== void 0 ? _2 : setDraggingColumn, setDraggingRow: (_3 = props.onDraggingRowChange) !== null && _3 !== void 0 ? _3 : setDraggingRow, setEditingCell: (_4 = props.onEditingCellChange) !== null && _4 !== void 0 ? _4 : setEditingCell, setEditingRow: (_5 = props.onEditingRowChange) !== null && _5 !== void 0 ? _5 : setEditingRow, setGlobalFilterFn: (_6 = props.onGlobalFilterFnChange) !== null && _6 !== void 0 ? _6 : setGlobalFilterFn, setHoveredColumn: (_7 = props.onHoveredColumnChange) !== null && _7 !== void 0 ? _7 : setHoveredColumn, setHoveredRow: (_8 = props.onHoveredRowChange) !== null && _8 !== void 0 ? _8 : setHoveredRow, setIsFullScreen: (_9 = props.onIsFullScreenChange) !== null && _9 !== void 0 ? _9 : setIsFullScreen, setShowAlertBanner: (_10 = props.onShowAlertBannerChange) !== null && _10 !== void 0 ? _10 : setShowAlertBanner, setShowFilters: (_11 = props.onShowFiltersChange) !== null && _11 !== void 0 ? _11 : setShowFilters, setShowGlobalFilter: (_12 = props.onShowGlobalFilterChange) !== null && _12 !== void 0 ? _12 : setShowGlobalFilter, setShowToolbarDropZone: (_13 = props.onShowToolbarDropZoneChange) !== null && _13 !== void 0 ? _13 : setShowToolbarDropZone });
3038
+ if (props.tableFeatures) {
3039
+ props.tableFeatures.forEach((feature) => {
3040
+ Object.assign(table, feature(table));
3041
+ });
3042
+ }
3036
3043
  if (props.tableInstanceRef) {
3037
3044
  props.tableInstanceRef.current = table;
3038
3045
  }