material-react-table 0.6.2 → 0.6.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.
@@ -5,19 +5,19 @@ import { MRT_Localization } from './localization';
5
5
  import { MRT_Icons } from './icons';
6
6
  import { MRT_FILTER_TYPE } from './enums';
7
7
  export declare type MRT_TableOptions<D extends {} = {}> = TableOptions<D> & UseExpandedOptions<D> & UseFiltersOptions<D> & UseGlobalFiltersOptions<D> & UseGroupByOptions<D> & UsePaginationOptions<D> & UseResizeColumnsOptions<D> & UseRowSelectOptions<D> & UseRowStateOptions<D> & UseSortByOptions<D> & {
8
- columns: (Column<D> & MRT_ColumnInterface)[];
8
+ columns: MRT_ColumnInterface[];
9
9
  data: D[];
10
10
  initialState?: Partial<MRT_TableState>;
11
11
  };
12
12
  export declare type MRT_TableInstance<D extends {} = {}> = TableInstance<D> & UseTableInstanceProps<D> & UseColumnOrderInstanceProps<D> & UseExpandedInstanceProps<D> & UseFiltersInstanceProps<D> & UseGlobalFiltersInstanceProps<D> & UseGroupByInstanceProps<D> & UsePaginationInstanceProps<D> & UseRowSelectInstanceProps<D> & UseRowStateInstanceProps<D> & UseSortByInstanceProps<D> & {
13
13
  columns: (Column<D> & MRT_ColumnInstance<D>)[];
14
- headerGroups: MRT_HeaderGroup<D>[];
15
14
  footerGroups: MRT_HeaderGroup<D>[];
16
- state: MRT_TableState<D>;
17
- rows: MRT_Row<D>[];
15
+ getToggleAllRowsExpandedProps: () => void;
16
+ headerGroups: MRT_HeaderGroup<D>[];
18
17
  page: MRT_Row<D>[];
19
18
  resetResizing: () => void;
20
- getToggleAllRowsExpandedProps: () => void;
19
+ rows: MRT_Row<D>[];
20
+ state: MRT_TableState<D>;
21
21
  };
22
22
  export declare type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D> & UseFiltersColumnOptions<D> & UseGlobalFiltersColumnOptions<D> & UseGroupByColumnOptions<D> & UseResizeColumnsColumnOptions<D> & UseSortByColumnOptions<D> & {
23
23
  Edit?: ({ cell, onChange, }: {
@@ -29,8 +29,8 @@ export declare type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D>
29
29
  }) => ReactNode;
30
30
  Footer?: string;
31
31
  Header?: string;
32
- accessor: string;
33
- columns?: (Column<D> & MRT_ColumnInterface<D>)[];
32
+ accessor?: string;
33
+ columns?: MRT_ColumnInterface<D>[];
34
34
  disableFilters?: boolean;
35
35
  editable?: boolean;
36
36
  filter?: MRT_FilterType | string | FilterType<D>;
@@ -38,7 +38,7 @@ export declare type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D>
38
38
  text: string;
39
39
  value: string;
40
40
  })[];
41
- filterTypes: MRT_FILTER_TYPE[];
41
+ filterTypes?: (MRT_FILTER_TYPE | string)[];
42
42
  muiTableBodyCellEditTextFieldProps?: TextFieldProps | ((cell: MRT_Cell<D>) => TextFieldProps);
43
43
  muiTableBodyCellProps?: TableCellProps | ((cell: MRT_Cell<D>) => TableCellProps);
44
44
  muiTableFooterCellProps?: TableCellProps | ((column: Column<D>) => TableCellProps);
@@ -104,6 +104,35 @@ function _objectWithoutPropertiesLoose(source, excluded) {
104
104
  return target;
105
105
  }
106
106
 
107
+ var findLowestLevelCols = function findLowestLevelCols(columns) {
108
+ var lowestLevelColumns = columns;
109
+ var currentCols = columns;
110
+
111
+ while (!!((_currentCols = currentCols) != null && _currentCols.length) && currentCols.some(function (col) {
112
+ return col.columns;
113
+ })) {
114
+ var _currentCols;
115
+
116
+ var nextCols = currentCols.filter(function (col) {
117
+ return !!col.columns;
118
+ }).map(function (col) {
119
+ return col.columns;
120
+ }).flat();
121
+
122
+ if (nextCols.every(function (col) {
123
+ return !(col != null && col.columns);
124
+ })) {
125
+ lowestLevelColumns = [].concat(lowestLevelColumns, nextCols);
126
+ }
127
+
128
+ currentCols = nextCols;
129
+ }
130
+
131
+ return lowestLevelColumns.filter(function (col) {
132
+ return !col.columns;
133
+ });
134
+ };
135
+
107
136
  var MaterialReactTableContext = /*#__PURE__*/function () {
108
137
  return React.createContext({});
109
138
  }();
@@ -134,35 +163,8 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
134
163
  showSearch = _useState5[0],
135
164
  setShowSearch = _useState5[1];
136
165
 
137
- var findLowestLevelCols = React.useCallback(function () {
138
- var lowestLevelColumns = props.columns;
139
- var currentCols = props.columns;
140
-
141
- while (!!currentCols.length && currentCols.some(function (col) {
142
- return col.columns;
143
- })) {
144
- var nextCols = currentCols.filter(function (col) {
145
- return !!col.columns;
146
- }).map(function (col) {
147
- return col.columns;
148
- }).flat();
149
-
150
- if (nextCols.every(function (col) {
151
- return !col.columns;
152
- })) {
153
- lowestLevelColumns = [].concat(lowestLevelColumns, nextCols);
154
- }
155
-
156
- currentCols = nextCols;
157
- }
158
-
159
- return lowestLevelColumns.filter(function (col) {
160
- return !col.columns;
161
- });
162
- }, [props.columns]);
163
-
164
166
  var _useState6 = React.useState(function () {
165
- return Object.assign.apply(Object, [{}].concat(findLowestLevelCols().map(function (c) {
167
+ return Object.assign.apply(Object, [{}].concat(findLowestLevelCols(props.columns).map(function (c) {
166
168
  var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
167
169
 
168
170
  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;
@@ -187,10 +189,20 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
187
189
  var columns = React.useMemo(function () {
188
190
  return applyFiltersToColumns(props.columns);
189
191
  }, [props.columns, applyFiltersToColumns]);
192
+ var data = React.useMemo(function () {
193
+ return !props.isLoading || !!props.data.length ? props.data : [].concat(Array(10)).map(function (_) {
194
+ return Object.assign.apply(Object, [{}].concat(findLowestLevelCols(props.columns).map(function (c) {
195
+ var _ref3;
196
+
197
+ return _ref3 = {}, _ref3[c.accessor] = null, _ref3;
198
+ })));
199
+ });
200
+ }, [props.data, props.isLoading]);
190
201
  var tableInstance = reactTable.useTable.apply(void 0, [// @ts-ignore
191
202
  _extends({}, props, {
192
203
  // @ts-ignore
193
204
  columns: columns,
205
+ data: data,
194
206
  useControlledState: function useControlledState(state) {
195
207
  return React.useMemo(function () {
196
208
  return _extends({}, state, {
@@ -850,15 +862,16 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
850
862
  setAnchorEl(null);
851
863
  };
852
864
 
865
+ var handleShowAllColumns = function handleShowAllColumns() {
866
+ tableInstance.toggleHideAllColumns(false);
867
+ setAnchorEl(null);
868
+ };
869
+
853
870
  var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
854
871
  event.stopPropagation();
855
872
  setFilterMenuAnchorEl(event.currentTarget);
856
873
  };
857
874
 
858
- var handleShowAllColumns = function handleShowAllColumns() {
859
- tableInstance.toggleHideAllColumns(false);
860
- };
861
-
862
875
  var handleOpenShowHideColumnsMenu = function handleOpenShowHideColumnsMenu(event) {
863
876
  event.stopPropagation();
864
877
  setShowHideColumnsMenuAnchorEl(event.currentTarget);
@@ -2420,9 +2433,7 @@ var MRT_TableBody = function MRT_TableBody() {
2420
2433
  });
2421
2434
 
2422
2435
  return React__default.createElement(material.TableBody, Object.assign({}, tableBodyProps, {
2423
- sx: _extends({
2424
- overflowY: 'hidden'
2425
- }, tableBodyProps == null ? void 0 : tableBodyProps.sx)
2436
+ sx: _extends({}, tableBodyProps == null ? void 0 : tableBodyProps.sx)
2426
2437
  }), rows.map(function (row) {
2427
2438
  tableInstance.prepareRow(row);
2428
2439
  return React__default.createElement(MRT_TableBodyRow, {
@@ -2782,7 +2793,7 @@ var MRT_TablePagination = function MRT_TablePagination() {
2782
2793
  showLastButton: tableInstance.rows.length / tableInstance.state.pageSize > 2
2783
2794
  }, tablePaginationProps, {
2784
2795
  sx: _extends({
2785
- p: 0,
2796
+ m: '0 0.5rem',
2786
2797
  position: 'relative',
2787
2798
  zIndex: 2
2788
2799
  }, tablePaginationProps == null ? void 0 : tablePaginationProps.sx)
@@ -2844,6 +2855,34 @@ var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
2844
2855
  }, selectMessage, groupedByMessage)));
2845
2856
  };
2846
2857
 
2858
+ var MRT_LinearProgressBar = function MRT_LinearProgressBar() {
2859
+ var _useMRT = useMRT(),
2860
+ muiLinearProgressProps = _useMRT.muiLinearProgressProps,
2861
+ isFetching = _useMRT.isFetching,
2862
+ isLoading = _useMRT.isLoading,
2863
+ tableInstance = _useMRT.tableInstance;
2864
+
2865
+ var linearProgressProps = muiLinearProgressProps instanceof Function ? muiLinearProgressProps(tableInstance) : muiLinearProgressProps;
2866
+ return React__default.createElement(material.Collapse, {
2867
+ "in": isFetching || isLoading,
2868
+ unmountOnExit: true
2869
+ }, React__default.createElement(material.LinearProgress, Object.assign({
2870
+ "aria-label": "Loading",
2871
+ "aria-busy": "true"
2872
+ }, linearProgressProps)));
2873
+ };
2874
+
2875
+ var commonToolbarStyles = function commonToolbarStyles(theme, tableInstance) {
2876
+ return {
2877
+ backgroundColor: theme.palette.background["default"],
2878
+ backgroundImage: "linear-gradient(" + material.alpha(theme.palette.common.white, 0.05) + "," + material.alpha(theme.palette.common.white, 0.05) + ")",
2879
+ display: 'grid',
2880
+ opacity: tableInstance.state.fullScreen ? 0.95 : 1,
2881
+ p: '0 !important',
2882
+ width: '100%',
2883
+ zIndex: 1
2884
+ };
2885
+ };
2847
2886
  var MRT_ToolbarTop = function MRT_ToolbarTop() {
2848
2887
  var _renderToolbarCustomA;
2849
2888
 
@@ -2864,15 +2903,9 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
2864
2903
  }, toolbarProps, {
2865
2904
  sx: function sx(theme) {
2866
2905
  return _extends({
2867
- backgroundColor: theme.palette.background["default"],
2868
- backgroundImage: "linear-gradient(" + material.alpha(theme.palette.common.white, 0.05) + "," + material.alpha(theme.palette.common.white, 0.05) + ")",
2869
- display: 'grid',
2870
- p: '0 !important',
2871
2906
  position: tableInstance.state.fullScreen ? 'sticky' : undefined,
2872
- top: tableInstance.state.fullScreen ? '0' : undefined,
2873
- width: '100%',
2874
- zIndex: 1
2875
- }, toolbarProps == null ? void 0 : toolbarProps.sx);
2907
+ top: tableInstance.state.fullScreen ? '0' : undefined
2908
+ }, commonToolbarStyles(theme, tableInstance), toolbarProps == null ? void 0 : toolbarProps.sx);
2876
2909
  }
2877
2910
  }), positionToolbarAlertBanner === 'top' && React__default.createElement(MRT_ToolbarAlertBanner, null), React__default.createElement(material.Box, {
2878
2911
  sx: {
@@ -2887,7 +2920,7 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
2887
2920
  position: 'relative',
2888
2921
  zIndex: 3
2889
2922
  }
2890
- }, !disableGlobalFilter && React__default.createElement(MRT_SearchTextField, null), !hideToolbarInternalActions && positionToolbarActions === 'top' && React__default.createElement(MRT_ToolbarInternalButtons, null))), React__default.createElement("div", null, !manualPagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null)));
2923
+ }, !disableGlobalFilter && React__default.createElement(MRT_SearchTextField, null), !hideToolbarInternalActions && positionToolbarActions === 'top' && React__default.createElement(MRT_ToolbarInternalButtons, null))), React__default.createElement("div", null, !manualPagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null)), React__default.createElement(MRT_LinearProgressBar, null));
2891
2924
  };
2892
2925
 
2893
2926
  var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
@@ -2906,53 +2939,37 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
2906
2939
  }, toolbarProps, {
2907
2940
  sx: function sx(theme) {
2908
2941
  return _extends({
2909
- backgroundColor: theme.palette.background["default"],
2910
- backgroundImage: "linear-gradient(" + material.alpha(theme.palette.common.white, 0.05) + "," + material.alpha(theme.palette.common.white, 0.05) + ")",
2911
2942
  bottom: tableInstance.state.fullScreen ? '0' : undefined,
2912
- display: 'flex',
2913
- justifyContent: 'space-between',
2914
- overflowY: 'hidden',
2915
- p: '0 0.5rem !important',
2916
- position: tableInstance.state.fullScreen ? 'fixed' : undefined,
2917
- width: 'calc(100% - 1rem)',
2918
- zIndex: 1
2919
- }, toolbarProps == null ? void 0 : toolbarProps.sx);
2943
+ position: tableInstance.state.fullScreen ? 'fixed' : undefined
2944
+ }, commonToolbarStyles(theme, tableInstance), toolbarProps == null ? void 0 : toolbarProps.sx);
2945
+ }
2946
+ }), React__default.createElement(MRT_LinearProgressBar, null), React__default.createElement(material.Box, {
2947
+ sx: {
2948
+ display: 'flex',
2949
+ justifyContent: 'space-between',
2950
+ width: '100%'
2920
2951
  }
2921
- }), !hideToolbarInternalActions && positionToolbarActions === 'bottom' ? React__default.createElement(MRT_ToolbarInternalButtons, null) : React__default.createElement("span", null), positionToolbarAlertBanner === 'bottom' && React__default.createElement(MRT_ToolbarAlertBanner, null), !manualPagination && ['bottom', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null));
2952
+ }, !hideToolbarInternalActions && positionToolbarActions === 'bottom' ? React__default.createElement(MRT_ToolbarInternalButtons, null) : React__default.createElement("span", null), positionToolbarAlertBanner === 'bottom' && React__default.createElement(MRT_ToolbarAlertBanner, null), !manualPagination && ['bottom', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null)));
2922
2953
  };
2923
2954
 
2924
2955
  var MRT_TableContainer = function MRT_TableContainer() {
2925
2956
  var _useMRT = useMRT(),
2926
2957
  hideToolbarBottom = _useMRT.hideToolbarBottom,
2927
2958
  hideToolbarTop = _useMRT.hideToolbarTop,
2928
- isFetching = _useMRT.isFetching,
2929
- isLoading = _useMRT.isLoading,
2930
- muiLinearProgressProps = _useMRT.muiLinearProgressProps,
2931
2959
  muiTableContainerProps = _useMRT.muiTableContainerProps,
2932
2960
  tableInstance = _useMRT.tableInstance;
2933
2961
 
2934
2962
  var fullScreen = tableInstance.state.fullScreen;
2935
- var originalBodyOverflowStyle = React.useRef();
2936
- React.useEffect(function () {
2937
- if (typeof window !== 'undefined') {
2938
- var _document, _document$body, _document$body$style;
2939
-
2940
- originalBodyOverflowStyle.current = (_document = document) == null ? void 0 : (_document$body = _document.body) == null ? void 0 : (_document$body$style = _document$body.style) == null ? void 0 : _document$body$style.overflow;
2941
- }
2942
- }, []);
2943
2963
  React.useEffect(function () {
2944
2964
  if (typeof window !== 'undefined') {
2945
2965
  if (fullScreen) {
2946
2966
  document.body.style.overflow = 'hidden';
2947
2967
  } else {
2948
- var _originalBodyOverflow;
2949
-
2950
- document.body.style.overflow = (_originalBodyOverflow = originalBodyOverflowStyle.current) != null ? _originalBodyOverflow : 'auto';
2968
+ document.body.style.overflow = 'auto';
2951
2969
  }
2952
2970
  }
2953
2971
  }, [fullScreen]);
2954
2972
  var tableContainerProps = muiTableContainerProps instanceof Function ? muiTableContainerProps(tableInstance) : muiTableContainerProps;
2955
- var linearProgressProps = muiLinearProgressProps instanceof Function ? muiLinearProgressProps(tableInstance) : muiLinearProgressProps;
2956
2973
  return React__default.createElement(material.TableContainer, Object.assign({
2957
2974
  component: material.Paper
2958
2975
  }, tableContainerProps, {
@@ -2961,6 +2978,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2961
2978
  height: fullScreen ? '100%' : undefined,
2962
2979
  left: fullScreen ? '0' : undefined,
2963
2980
  m: fullScreen ? '0' : undefined,
2981
+ overflowY: 'hidden',
2964
2982
  position: fullScreen ? 'fixed' : undefined,
2965
2983
  right: fullScreen ? '0' : undefined,
2966
2984
  top: fullScreen ? '0' : undefined,
@@ -2968,10 +2986,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2968
2986
  width: fullScreen ? '100vw' : undefined,
2969
2987
  zIndex: fullScreen ? 1200 : 1
2970
2988
  }, tableContainerProps == null ? void 0 : tableContainerProps.sx)
2971
- }), !hideToolbarTop && React__default.createElement(MRT_ToolbarTop, null), React__default.createElement(material.Collapse, {
2972
- "in": isFetching || isLoading,
2973
- unmountOnExit: true
2974
- }, React__default.createElement(material.LinearProgress, Object.assign({}, linearProgressProps))), React__default.createElement(material.Box, {
2989
+ }), !hideToolbarTop && React__default.createElement(MRT_ToolbarTop, null), React__default.createElement(material.Box, {
2975
2990
  sx: {
2976
2991
  maxWidth: '100%',
2977
2992
  overflowX: 'auto'
@@ -3076,10 +3091,13 @@ var MaterialReactTable = (function (_ref) {
3076
3091
  positionToolbarAlertBanner = _ref$positionToolbarA2 === void 0 ? 'top' : _ref$positionToolbarA2,
3077
3092
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
3078
3093
 
3079
- return React__default.createElement(MaterialReactTableProvider, Object.assign({
3094
+ return React__default.createElement(MaterialReactTableProvider //@ts-ignore
3095
+ , Object.assign({
3096
+ //@ts-ignore
3080
3097
  defaultColumn: defaultColumn,
3081
- // @ts-ignore
3098
+ //@ts-ignore
3082
3099
  filterTypes: _extends({}, defaultFilterFNs, filterTypes),
3100
+ //@ts-ignore
3083
3101
  globalFilter: globalFilter,
3084
3102
  icons: _extends({}, MRT_Default_Icons, icons),
3085
3103
  localization: _extends({}, MRT_DefaultLocalization_EN, localization),