material-react-table 0.7.3 → 0.7.4

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.
@@ -169,6 +169,7 @@ export declare type MaterialReactTableProps<D extends Record<string, any> = {}>
169
169
  enableExpandAll?: boolean;
170
170
  enableFullScreenToggle?: boolean;
171
171
  enablePagination?: boolean;
172
+ enablePersistentState?: boolean;
172
173
  enableRowActions?: boolean;
173
174
  enableRowNumbers?: boolean;
174
175
  enableSelectAll?: boolean;
@@ -355,6 +356,7 @@ export declare type MaterialReactTableProps<D extends Record<string, any> = {}>
355
356
  showGlobalFilter: boolean;
356
357
  tableInstance: MRT_TableInstance<D>;
357
358
  }) => void;
359
+ persistentStateMode?: 'localStorage' | 'sessionStorage';
358
360
  positionActionsColumn?: 'first' | 'last';
359
361
  positionPagination?: 'bottom' | 'top' | 'both';
360
362
  positionToolbarActions?: 'bottom' | 'top';
@@ -394,5 +396,5 @@ export declare type MaterialReactTableProps<D extends Record<string, any> = {}>
394
396
  }>;
395
397
  }) => ReactNode;
396
398
  };
397
- declare const _default: <D extends Record<string, any> = {}>({ autoResetExpanded, columnResizeMode, editingMode, enableColumnActions, enableColumnFilters, enableColumnResizing, enableDensePaddingToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableHiding, enableMultiRowSelection, enablePagination, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarBottom, enableToolbarInternalActions, enableToolbarTop, icons, localization, positionActionsColumn, positionPagination, positionToolbarActions, positionToolbarAlertBanner, ...rest }: MaterialReactTableProps<D>) => JSX.Element;
399
+ declare const _default: <D extends Record<string, any> = {}>({ autoResetExpanded, columnResizeMode, editingMode, enableColumnActions, enableColumnFilters, enableColumnResizing, enableDensePaddingToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableHiding, enableMultiRowSelection, enablePagination, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarBottom, enableToolbarInternalActions, enableToolbarTop, icons, localization, persistentStateMode, positionActionsColumn, positionPagination, positionToolbarActions, positionToolbarAlertBanner, ...rest }: MaterialReactTableProps<D>) => JSX.Element;
398
400
  export default _default;
@@ -2879,7 +2879,7 @@ var createDisplayColumn = function createDisplayColumn(table, column) {
2879
2879
  };
2880
2880
 
2881
2881
  var MRT_TableRoot = function MRT_TableRoot(props) {
2882
- var _props$initialState$c, _props$initialState, _props$initialState$c2, _props$initialState2, _props$initialState$i, _props$initialState3, _props$initialState$i2, _props$initialState4, _props$initialState$s, _props$initialState5, _props$initialState$s2, _props$initialState6, _props$initialState$p, _props$initialState7, _props$initialState7$, _props$initialState$p2, _props$initialState8, _props$initialState8$, _props$initialState$p3, _props$initialState9, _props$initialState9$, _props$globalFilterTy;
2882
+ var _initialState$current, _initialState$current2, _initialState$isDense, _initialState$isFullS, _initialState$showFil, _initialState$showGlo, _initialState$paginat, _initialState$paginat2, _initialState$paginat3, _initialState$paginat4, _initialState$paginat5, _initialState$paginat6, _props$globalFilterTy;
2883
2883
 
2884
2884
  var _useState = React.useState(props.idPrefix),
2885
2885
  idPrefix = _useState[0],
@@ -2890,46 +2890,69 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
2890
2890
 
2891
2891
  return setIdPrefix((_props$idPrefix = props.idPrefix) != null ? _props$idPrefix : Math.random().toString(36).substring(2, 9));
2892
2892
  }, [props.idPrefix]);
2893
+ var initialState = React.useMemo(function () {
2894
+ if (!props.enablePersistentState || !props.idPrefix) {
2895
+ return props.initialState;
2896
+ }
2897
+
2898
+ if (typeof window === 'undefined') {
2899
+ {
2900
+ console.error('The MRT Persistent Table State feature is not supported if using SSR, but you can wrap your <MaterialReactTable /> in a MUI <NoSsr> tags to let it work');
2901
+ }
2902
+
2903
+ return props.initialState;
2904
+ }
2905
+
2906
+ var storedState = props.persistentStateMode === 'localStorage' ? localStorage.getItem("mrt-" + idPrefix + "-table-state") : props.persistentStateMode === 'sessionStorage' ? sessionStorage.getItem("mrt-" + idPrefix + "-table-state") : '{}';
2907
+
2908
+ if (storedState) {
2909
+ var parsedState = JSON.parse(storedState);
2910
+
2911
+ if (parsedState) {
2912
+ return _extends({}, props.initialState, parsedState);
2913
+ }
2914
+ }
2915
+
2916
+ return props.initialState;
2917
+ }, []);
2893
2918
 
2894
- var _useState2 = React.useState((_props$initialState$c = (_props$initialState = props.initialState) == null ? void 0 : _props$initialState.currentEditingCell) != null ? _props$initialState$c : null),
2919
+ var _useState2 = React.useState((_initialState$current = initialState == null ? void 0 : initialState.currentEditingCell) != null ? _initialState$current : null),
2895
2920
  currentEditingCell = _useState2[0],
2896
2921
  setCurrentEditingCell = _useState2[1];
2897
2922
 
2898
- var _useState3 = React.useState((_props$initialState$c2 = (_props$initialState2 = props.initialState) == null ? void 0 : _props$initialState2.currentEditingRow) != null ? _props$initialState$c2 : null),
2923
+ var _useState3 = React.useState((_initialState$current2 = initialState == null ? void 0 : initialState.currentEditingRow) != null ? _initialState$current2 : null),
2899
2924
  currentEditingRow = _useState3[0],
2900
2925
  setCurrentEditingRow = _useState3[1];
2901
2926
 
2902
- var _useState4 = React.useState((_props$initialState$i = (_props$initialState3 = props.initialState) == null ? void 0 : _props$initialState3.isDensePadding) != null ? _props$initialState$i : false),
2927
+ var _useState4 = React.useState((_initialState$isDense = initialState == null ? void 0 : initialState.isDensePadding) != null ? _initialState$isDense : false),
2903
2928
  isDensePadding = _useState4[0],
2904
2929
  setIsDensePadding = _useState4[1];
2905
2930
 
2906
- var _useState5 = React.useState((_props$initialState$i2 = (_props$initialState4 = props.initialState) == null ? void 0 : _props$initialState4.isFullScreen) != null ? _props$initialState$i2 : false),
2931
+ var _useState5 = React.useState((_initialState$isFullS = initialState == null ? void 0 : initialState.isFullScreen) != null ? _initialState$isFullS : false),
2907
2932
  isFullScreen = _useState5[0],
2908
2933
  setIsFullScreen = _useState5[1];
2909
2934
 
2910
- var _useState6 = React.useState((_props$initialState$s = (_props$initialState5 = props.initialState) == null ? void 0 : _props$initialState5.showFilters) != null ? _props$initialState$s : false),
2935
+ var _useState6 = React.useState((_initialState$showFil = initialState == null ? void 0 : initialState.showFilters) != null ? _initialState$showFil : false),
2911
2936
  showFilters = _useState6[0],
2912
2937
  setShowFilters = _useState6[1];
2913
2938
 
2914
- var _useState7 = React.useState((_props$initialState$s2 = (_props$initialState6 = props.initialState) == null ? void 0 : _props$initialState6.showGlobalFilter) != null ? _props$initialState$s2 : false),
2939
+ var _useState7 = React.useState((_initialState$showGlo = initialState == null ? void 0 : initialState.showGlobalFilter) != null ? _initialState$showGlo : false),
2915
2940
  showGlobalFilter = _useState7[0],
2916
2941
  setShowGlobalFilter = _useState7[1];
2917
2942
 
2918
2943
  var _useState8 = React.useState({
2919
- pageIndex: (_props$initialState$p = (_props$initialState7 = props.initialState) == null ? void 0 : (_props$initialState7$ = _props$initialState7.pagination) == null ? void 0 : _props$initialState7$.pageIndex) != null ? _props$initialState$p : 0,
2920
- pageSize: (_props$initialState$p2 = (_props$initialState8 = props.initialState) == null ? void 0 : (_props$initialState8$ = _props$initialState8.pagination) == null ? void 0 : _props$initialState8$.pageSize) != null ? _props$initialState$p2 : 10,
2921
- pageCount: (_props$initialState$p3 = (_props$initialState9 = props.initialState) == null ? void 0 : (_props$initialState9$ = _props$initialState9.pagination) == null ? void 0 : _props$initialState9$.pageCount) != null ? _props$initialState$p3 : -1
2944
+ pageIndex: (_initialState$paginat = initialState == null ? void 0 : (_initialState$paginat2 = initialState.pagination) == null ? void 0 : _initialState$paginat2.pageIndex) != null ? _initialState$paginat : 0,
2945
+ pageSize: (_initialState$paginat3 = initialState == null ? void 0 : (_initialState$paginat4 = initialState.pagination) == null ? void 0 : _initialState$paginat4.pageSize) != null ? _initialState$paginat3 : 10,
2946
+ pageCount: (_initialState$paginat5 = initialState == null ? void 0 : (_initialState$paginat6 = initialState.pagination) == null ? void 0 : _initialState$paginat6.pageCount) != null ? _initialState$paginat5 : -1
2922
2947
  }),
2923
2948
  pagination = _useState8[0],
2924
2949
  setPagination = _useState8[1];
2925
2950
 
2926
2951
  var _useState9 = React.useState(function () {
2927
2952
  return Object.assign.apply(Object, [{}].concat(getAllLeafColumnDefs(props.columns).map(function (c) {
2928
- var _ref, _c$filter, _props$initialState10, _props$initialState11, _c$filterSelectOption, _ref2;
2953
+ var _ref, _c$filter, _initialState$current3, _c$filterSelectOption, _ref2;
2929
2954
 
2930
- return _ref2 = {}, _ref2[c.id] = (_ref = (_c$filter = c.filter) != null ? _c$filter : props == null ? void 0 : (_props$initialState10 = props.initialState) == null ? void 0 : (_props$initialState11 = _props$initialState10.columnFilters) == null ? void 0 : _props$initialState11.find(function (cf) {
2931
- return cf.id === c.id;
2932
- })) != null ? _ref : !!((_c$filterSelectOption = c.filterSelectOptions) != null && _c$filterSelectOption.length) ? MRT_FILTER_TYPE.EQUALS : MRT_FILTER_TYPE.BEST_MATCH, _ref2;
2955
+ return _ref2 = {}, _ref2[c.id] = (_ref = (_c$filter = c.filter) != null ? _c$filter : initialState == null ? void 0 : (_initialState$current3 = initialState.currentFilterTypes) == null ? void 0 : _initialState$current3[c.id]) != null ? _ref : !!((_c$filterSelectOption = c.filterSelectOptions) != null && _c$filterSelectOption.length) ? MRT_FILTER_TYPE.EQUALS : MRT_FILTER_TYPE.BEST_MATCH, _ref2;
2933
2956
  })));
2934
2957
  }),
2935
2958
  currentFilterTypes = _useState9[0],
@@ -3038,7 +3061,6 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3038
3061
  return originalRow.subRows;
3039
3062
  },
3040
3063
  globalFilterType: currentGlobalFilterType,
3041
- idPrefix: idPrefix,
3042
3064
  onPaginationChange: function onPaginationChange(updater) {
3043
3065
  return setPagination(function (old) {
3044
3066
  return reactTable.functionalUpdate(updater, old);
@@ -3047,6 +3069,9 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3047
3069
  }, props, {
3048
3070
  columns: columns,
3049
3071
  data: data,
3072
+ idPrefix: idPrefix,
3073
+ //@ts-ignore
3074
+ initialState: initialState,
3050
3075
  state: _extends({
3051
3076
  currentEditingCell: currentEditingCell,
3052
3077
  currentEditingRow: currentEditingRow,
@@ -3072,6 +3097,28 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3072
3097
  setShowGlobalFilter: setShowGlobalFilter
3073
3098
  });
3074
3099
 
3100
+ React.useEffect(function () {
3101
+ if (typeof window === 'undefined' || !props.enablePersistentState) {
3102
+ return;
3103
+ }
3104
+
3105
+ if (!props.idPrefix && "development" !== 'production') {
3106
+ console.warn('a unique idPrefix prop is required for persistent table state to work');
3107
+ return;
3108
+ }
3109
+
3110
+ var itemArgs = ["mrt-" + idPrefix + "-table-state", JSON.stringify(tableInstance.getState())];
3111
+
3112
+ if (props.persistentStateMode === 'localStorage') {
3113
+ var _localStorage;
3114
+
3115
+ (_localStorage = localStorage).setItem.apply(_localStorage, itemArgs);
3116
+ } else if (props.persistentStateMode === 'sessionStorage') {
3117
+ var _sessionStorage;
3118
+
3119
+ (_sessionStorage = sessionStorage).setItem.apply(_sessionStorage, itemArgs);
3120
+ }
3121
+ }, [props.enablePersistentState, props.idPrefix, props.persistentStateMode, tableInstance]);
3075
3122
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.Dialog, {
3076
3123
  TransitionComponent: material.Grow,
3077
3124
  PaperComponent: material.Box,
@@ -3090,7 +3137,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3090
3137
  }));
3091
3138
  };
3092
3139
 
3093
- var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "editingMode", "enableColumnActions", "enableColumnFilters", "enableColumnResizing", "enableDensePaddingToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableHiding", "enableMultiRowSelection", "enablePagination", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
3140
+ var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "editingMode", "enableColumnActions", "enableColumnFilters", "enableColumnResizing", "enableDensePaddingToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableHiding", "enableMultiRowSelection", "enablePagination", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "persistentStateMode", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
3094
3141
  var MaterialReactTable = (function (_ref) {
3095
3142
  var _ref$autoResetExpande = _ref.autoResetExpanded,
3096
3143
  autoResetExpanded = _ref$autoResetExpande === void 0 ? false : _ref$autoResetExpande,
@@ -3138,6 +3185,8 @@ var MaterialReactTable = (function (_ref) {
3138
3185
  enableToolbarTop = _ref$enableToolbarTop === void 0 ? true : _ref$enableToolbarTop,
3139
3186
  icons = _ref.icons,
3140
3187
  localization = _ref.localization,
3188
+ _ref$persistentStateM = _ref.persistentStateMode,
3189
+ persistentStateMode = _ref$persistentStateM === void 0 ? 'sessionStorage' : _ref$persistentStateM,
3141
3190
  _ref$positionActionsC = _ref.positionActionsColumn,
3142
3191
  positionActionsColumn = _ref$positionActionsC === void 0 ? 'first' : _ref$positionActionsC,
3143
3192
  _ref$positionPaginati = _ref.positionPagination,
@@ -3173,6 +3222,7 @@ var MaterialReactTable = (function (_ref) {
3173
3222
  enableToolbarTop: enableToolbarTop,
3174
3223
  icons: _extends({}, MRT_Default_Icons, icons),
3175
3224
  localization: _extends({}, MRT_DefaultLocalization_EN, localization),
3225
+ persistentStateMode: persistentStateMode,
3176
3226
  positionActionsColumn: positionActionsColumn,
3177
3227
  positionPagination: positionPagination,
3178
3228
  positionToolbarActions: positionToolbarActions,