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.
- package/dist/MaterialReactTable.d.ts +8 -8
- package/dist/material-react-table.cjs.development.js +95 -77
- package/dist/material-react-table.cjs.development.js.map +1 -1
- package/dist/material-react-table.cjs.production.min.js +1 -1
- package/dist/material-react-table.cjs.production.min.js.map +1 -1
- package/dist/material-react-table.esm.js +97 -79
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/toolbar/MRT_LinearProgressBar.d.ts +5 -0
- package/dist/toolbar/MRT_ToolbarTop.d.ts +11 -0
- package/dist/useMRT.d.ts +1 -1
- package/dist/utils.d.ts +2 -0
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +11 -9
- package/src/body/MRT_TableBody.tsx +3 -1
- package/src/menus/MRT_ColumnActionMenu.tsx +5 -4
- package/src/table/MRT_TableContainer.tsx +4 -28
- package/src/toolbar/MRT_LinearProgressBar.tsx +25 -0
- package/src/toolbar/MRT_TablePagination.tsx +1 -1
- package/src/toolbar/MRT_ToolbarBottom.tsx +18 -21
- package/src/toolbar/MRT_ToolbarTop.tsx +21 -10
- package/src/useMRT.tsx +21 -20
- package/src/utils.ts +17 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React, { useState, useCallback, useMemo, useContext, createContext, Fragment,
|
|
1
|
+
import React, { useState, useCallback, useMemo, useContext, createContext, Fragment, useEffect } from 'react';
|
|
2
2
|
import { useTable, useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect, useResizeColumns, useFlexLayout, useAsyncDebounce } from 'react-table';
|
|
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
|
|
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, LinearProgress, Toolbar, TableContainer, Paper } from '@mui/material';
|
|
4
4
|
import { matchSorter } from 'match-sorter';
|
|
5
5
|
import ArrowRightIcon from '@mui/icons-material/ArrowRight';
|
|
6
6
|
import CancelIcon from '@mui/icons-material/Cancel';
|
|
@@ -97,6 +97,35 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
97
97
|
return target;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
var findLowestLevelCols = function findLowestLevelCols(columns) {
|
|
101
|
+
var lowestLevelColumns = columns;
|
|
102
|
+
var currentCols = columns;
|
|
103
|
+
|
|
104
|
+
while (!!((_currentCols = currentCols) != null && _currentCols.length) && currentCols.some(function (col) {
|
|
105
|
+
return col.columns;
|
|
106
|
+
})) {
|
|
107
|
+
var _currentCols;
|
|
108
|
+
|
|
109
|
+
var nextCols = currentCols.filter(function (col) {
|
|
110
|
+
return !!col.columns;
|
|
111
|
+
}).map(function (col) {
|
|
112
|
+
return col.columns;
|
|
113
|
+
}).flat();
|
|
114
|
+
|
|
115
|
+
if (nextCols.every(function (col) {
|
|
116
|
+
return !(col != null && col.columns);
|
|
117
|
+
})) {
|
|
118
|
+
lowestLevelColumns = [].concat(lowestLevelColumns, nextCols);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
currentCols = nextCols;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return lowestLevelColumns.filter(function (col) {
|
|
125
|
+
return !col.columns;
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
|
|
100
129
|
var MaterialReactTableContext = /*#__PURE__*/function () {
|
|
101
130
|
return createContext({});
|
|
102
131
|
}();
|
|
@@ -127,35 +156,8 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
127
156
|
showSearch = _useState5[0],
|
|
128
157
|
setShowSearch = _useState5[1];
|
|
129
158
|
|
|
130
|
-
var findLowestLevelCols = useCallback(function () {
|
|
131
|
-
var lowestLevelColumns = props.columns;
|
|
132
|
-
var currentCols = props.columns;
|
|
133
|
-
|
|
134
|
-
while (!!currentCols.length && currentCols.some(function (col) {
|
|
135
|
-
return col.columns;
|
|
136
|
-
})) {
|
|
137
|
-
var nextCols = currentCols.filter(function (col) {
|
|
138
|
-
return !!col.columns;
|
|
139
|
-
}).map(function (col) {
|
|
140
|
-
return col.columns;
|
|
141
|
-
}).flat();
|
|
142
|
-
|
|
143
|
-
if (nextCols.every(function (col) {
|
|
144
|
-
return !col.columns;
|
|
145
|
-
})) {
|
|
146
|
-
lowestLevelColumns = [].concat(lowestLevelColumns, nextCols);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
currentCols = nextCols;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return lowestLevelColumns.filter(function (col) {
|
|
153
|
-
return !col.columns;
|
|
154
|
-
});
|
|
155
|
-
}, [props.columns]);
|
|
156
|
-
|
|
157
159
|
var _useState6 = useState(function () {
|
|
158
|
-
return Object.assign.apply(Object, [{}].concat(findLowestLevelCols().map(function (c) {
|
|
160
|
+
return Object.assign.apply(Object, [{}].concat(findLowestLevelCols(props.columns).map(function (c) {
|
|
159
161
|
var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
|
|
160
162
|
|
|
161
163
|
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;
|
|
@@ -180,10 +182,20 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
180
182
|
var columns = useMemo(function () {
|
|
181
183
|
return applyFiltersToColumns(props.columns);
|
|
182
184
|
}, [props.columns, applyFiltersToColumns]);
|
|
185
|
+
var data = useMemo(function () {
|
|
186
|
+
return !props.isLoading || !!props.data.length ? props.data : [].concat(Array(10)).map(function (_) {
|
|
187
|
+
return Object.assign.apply(Object, [{}].concat(findLowestLevelCols(props.columns).map(function (c) {
|
|
188
|
+
var _ref3;
|
|
189
|
+
|
|
190
|
+
return _ref3 = {}, _ref3[c.accessor] = null, _ref3;
|
|
191
|
+
})));
|
|
192
|
+
});
|
|
193
|
+
}, [props.data, props.isLoading]);
|
|
183
194
|
var tableInstance = useTable.apply(void 0, [// @ts-ignore
|
|
184
195
|
_extends({}, props, {
|
|
185
196
|
// @ts-ignore
|
|
186
197
|
columns: columns,
|
|
198
|
+
data: data,
|
|
187
199
|
useControlledState: function useControlledState(state) {
|
|
188
200
|
return useMemo(function () {
|
|
189
201
|
return _extends({}, state, {
|
|
@@ -843,15 +855,16 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
|
|
|
843
855
|
setAnchorEl(null);
|
|
844
856
|
};
|
|
845
857
|
|
|
858
|
+
var handleShowAllColumns = function handleShowAllColumns() {
|
|
859
|
+
tableInstance.toggleHideAllColumns(false);
|
|
860
|
+
setAnchorEl(null);
|
|
861
|
+
};
|
|
862
|
+
|
|
846
863
|
var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
|
|
847
864
|
event.stopPropagation();
|
|
848
865
|
setFilterMenuAnchorEl(event.currentTarget);
|
|
849
866
|
};
|
|
850
867
|
|
|
851
|
-
var handleShowAllColumns = function handleShowAllColumns() {
|
|
852
|
-
tableInstance.toggleHideAllColumns(false);
|
|
853
|
-
};
|
|
854
|
-
|
|
855
868
|
var handleOpenShowHideColumnsMenu = function handleOpenShowHideColumnsMenu(event) {
|
|
856
869
|
event.stopPropagation();
|
|
857
870
|
setShowHideColumnsMenuAnchorEl(event.currentTarget);
|
|
@@ -2413,9 +2426,7 @@ var MRT_TableBody = function MRT_TableBody() {
|
|
|
2413
2426
|
});
|
|
2414
2427
|
|
|
2415
2428
|
return React.createElement(TableBody, Object.assign({}, tableBodyProps, {
|
|
2416
|
-
sx: _extends({
|
|
2417
|
-
overflowY: 'hidden'
|
|
2418
|
-
}, tableBodyProps == null ? void 0 : tableBodyProps.sx)
|
|
2429
|
+
sx: _extends({}, tableBodyProps == null ? void 0 : tableBodyProps.sx)
|
|
2419
2430
|
}), rows.map(function (row) {
|
|
2420
2431
|
tableInstance.prepareRow(row);
|
|
2421
2432
|
return React.createElement(MRT_TableBodyRow, {
|
|
@@ -2775,7 +2786,7 @@ var MRT_TablePagination = function MRT_TablePagination() {
|
|
|
2775
2786
|
showLastButton: tableInstance.rows.length / tableInstance.state.pageSize > 2
|
|
2776
2787
|
}, tablePaginationProps, {
|
|
2777
2788
|
sx: _extends({
|
|
2778
|
-
|
|
2789
|
+
m: '0 0.5rem',
|
|
2779
2790
|
position: 'relative',
|
|
2780
2791
|
zIndex: 2
|
|
2781
2792
|
}, tablePaginationProps == null ? void 0 : tablePaginationProps.sx)
|
|
@@ -2837,6 +2848,34 @@ var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
|
|
|
2837
2848
|
}, selectMessage, groupedByMessage)));
|
|
2838
2849
|
};
|
|
2839
2850
|
|
|
2851
|
+
var MRT_LinearProgressBar = function MRT_LinearProgressBar() {
|
|
2852
|
+
var _useMRT = useMRT(),
|
|
2853
|
+
muiLinearProgressProps = _useMRT.muiLinearProgressProps,
|
|
2854
|
+
isFetching = _useMRT.isFetching,
|
|
2855
|
+
isLoading = _useMRT.isLoading,
|
|
2856
|
+
tableInstance = _useMRT.tableInstance;
|
|
2857
|
+
|
|
2858
|
+
var linearProgressProps = muiLinearProgressProps instanceof Function ? muiLinearProgressProps(tableInstance) : muiLinearProgressProps;
|
|
2859
|
+
return React.createElement(Collapse, {
|
|
2860
|
+
"in": isFetching || isLoading,
|
|
2861
|
+
unmountOnExit: true
|
|
2862
|
+
}, React.createElement(LinearProgress, Object.assign({
|
|
2863
|
+
"aria-label": "Loading",
|
|
2864
|
+
"aria-busy": "true"
|
|
2865
|
+
}, linearProgressProps)));
|
|
2866
|
+
};
|
|
2867
|
+
|
|
2868
|
+
var commonToolbarStyles = function commonToolbarStyles(theme, tableInstance) {
|
|
2869
|
+
return {
|
|
2870
|
+
backgroundColor: theme.palette.background["default"],
|
|
2871
|
+
backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
|
|
2872
|
+
display: 'grid',
|
|
2873
|
+
opacity: tableInstance.state.fullScreen ? 0.95 : 1,
|
|
2874
|
+
p: '0 !important',
|
|
2875
|
+
width: '100%',
|
|
2876
|
+
zIndex: 1
|
|
2877
|
+
};
|
|
2878
|
+
};
|
|
2840
2879
|
var MRT_ToolbarTop = function MRT_ToolbarTop() {
|
|
2841
2880
|
var _renderToolbarCustomA;
|
|
2842
2881
|
|
|
@@ -2857,15 +2896,9 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
|
|
|
2857
2896
|
}, toolbarProps, {
|
|
2858
2897
|
sx: function sx(theme) {
|
|
2859
2898
|
return _extends({
|
|
2860
|
-
backgroundColor: theme.palette.background["default"],
|
|
2861
|
-
backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
|
|
2862
|
-
display: 'grid',
|
|
2863
|
-
p: '0 !important',
|
|
2864
2899
|
position: tableInstance.state.fullScreen ? 'sticky' : undefined,
|
|
2865
|
-
top: tableInstance.state.fullScreen ? '0' : undefined
|
|
2866
|
-
|
|
2867
|
-
zIndex: 1
|
|
2868
|
-
}, toolbarProps == null ? void 0 : toolbarProps.sx);
|
|
2900
|
+
top: tableInstance.state.fullScreen ? '0' : undefined
|
|
2901
|
+
}, commonToolbarStyles(theme, tableInstance), toolbarProps == null ? void 0 : toolbarProps.sx);
|
|
2869
2902
|
}
|
|
2870
2903
|
}), positionToolbarAlertBanner === 'top' && React.createElement(MRT_ToolbarAlertBanner, null), React.createElement(Box, {
|
|
2871
2904
|
sx: {
|
|
@@ -2880,7 +2913,7 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
|
|
|
2880
2913
|
position: 'relative',
|
|
2881
2914
|
zIndex: 3
|
|
2882
2915
|
}
|
|
2883
|
-
}, !disableGlobalFilter && React.createElement(MRT_SearchTextField, null), !hideToolbarInternalActions && positionToolbarActions === 'top' && React.createElement(MRT_ToolbarInternalButtons, null))), React.createElement("div", null, !manualPagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React.createElement(MRT_TablePagination, null)));
|
|
2916
|
+
}, !disableGlobalFilter && React.createElement(MRT_SearchTextField, null), !hideToolbarInternalActions && positionToolbarActions === 'top' && React.createElement(MRT_ToolbarInternalButtons, null))), React.createElement("div", null, !manualPagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React.createElement(MRT_TablePagination, null)), React.createElement(MRT_LinearProgressBar, null));
|
|
2884
2917
|
};
|
|
2885
2918
|
|
|
2886
2919
|
var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
|
|
@@ -2899,53 +2932,37 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
|
|
|
2899
2932
|
}, toolbarProps, {
|
|
2900
2933
|
sx: function sx(theme) {
|
|
2901
2934
|
return _extends({
|
|
2902
|
-
backgroundColor: theme.palette.background["default"],
|
|
2903
|
-
backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
|
|
2904
2935
|
bottom: tableInstance.state.fullScreen ? '0' : undefined,
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
overflowY: 'hidden',
|
|
2908
|
-
p: '0 0.5rem !important',
|
|
2909
|
-
position: tableInstance.state.fullScreen ? 'fixed' : undefined,
|
|
2910
|
-
width: 'calc(100% - 1rem)',
|
|
2911
|
-
zIndex: 1
|
|
2912
|
-
}, toolbarProps == null ? void 0 : toolbarProps.sx);
|
|
2936
|
+
position: tableInstance.state.fullScreen ? 'fixed' : undefined
|
|
2937
|
+
}, commonToolbarStyles(theme, tableInstance), toolbarProps == null ? void 0 : toolbarProps.sx);
|
|
2913
2938
|
}
|
|
2914
|
-
}),
|
|
2939
|
+
}), React.createElement(MRT_LinearProgressBar, null), React.createElement(Box, {
|
|
2940
|
+
sx: {
|
|
2941
|
+
display: 'flex',
|
|
2942
|
+
justifyContent: 'space-between',
|
|
2943
|
+
width: '100%'
|
|
2944
|
+
}
|
|
2945
|
+
}, !hideToolbarInternalActions && positionToolbarActions === 'bottom' ? React.createElement(MRT_ToolbarInternalButtons, null) : React.createElement("span", null), positionToolbarAlertBanner === 'bottom' && React.createElement(MRT_ToolbarAlertBanner, null), !manualPagination && ['bottom', 'both'].includes(positionPagination != null ? positionPagination : '') && React.createElement(MRT_TablePagination, null)));
|
|
2915
2946
|
};
|
|
2916
2947
|
|
|
2917
2948
|
var MRT_TableContainer = function MRT_TableContainer() {
|
|
2918
2949
|
var _useMRT = useMRT(),
|
|
2919
2950
|
hideToolbarBottom = _useMRT.hideToolbarBottom,
|
|
2920
2951
|
hideToolbarTop = _useMRT.hideToolbarTop,
|
|
2921
|
-
isFetching = _useMRT.isFetching,
|
|
2922
|
-
isLoading = _useMRT.isLoading,
|
|
2923
|
-
muiLinearProgressProps = _useMRT.muiLinearProgressProps,
|
|
2924
2952
|
muiTableContainerProps = _useMRT.muiTableContainerProps,
|
|
2925
2953
|
tableInstance = _useMRT.tableInstance;
|
|
2926
2954
|
|
|
2927
2955
|
var fullScreen = tableInstance.state.fullScreen;
|
|
2928
|
-
var originalBodyOverflowStyle = useRef();
|
|
2929
|
-
useEffect(function () {
|
|
2930
|
-
if (typeof window !== 'undefined') {
|
|
2931
|
-
var _document, _document$body, _document$body$style;
|
|
2932
|
-
|
|
2933
|
-
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;
|
|
2934
|
-
}
|
|
2935
|
-
}, []);
|
|
2936
2956
|
useEffect(function () {
|
|
2937
2957
|
if (typeof window !== 'undefined') {
|
|
2938
2958
|
if (fullScreen) {
|
|
2939
2959
|
document.body.style.overflow = 'hidden';
|
|
2940
2960
|
} else {
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
document.body.style.overflow = (_originalBodyOverflow = originalBodyOverflowStyle.current) != null ? _originalBodyOverflow : 'auto';
|
|
2961
|
+
document.body.style.overflow = 'auto';
|
|
2944
2962
|
}
|
|
2945
2963
|
}
|
|
2946
2964
|
}, [fullScreen]);
|
|
2947
2965
|
var tableContainerProps = muiTableContainerProps instanceof Function ? muiTableContainerProps(tableInstance) : muiTableContainerProps;
|
|
2948
|
-
var linearProgressProps = muiLinearProgressProps instanceof Function ? muiLinearProgressProps(tableInstance) : muiLinearProgressProps;
|
|
2949
2966
|
return React.createElement(TableContainer, Object.assign({
|
|
2950
2967
|
component: Paper
|
|
2951
2968
|
}, tableContainerProps, {
|
|
@@ -2954,6 +2971,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
|
|
|
2954
2971
|
height: fullScreen ? '100%' : undefined,
|
|
2955
2972
|
left: fullScreen ? '0' : undefined,
|
|
2956
2973
|
m: fullScreen ? '0' : undefined,
|
|
2974
|
+
overflowY: 'hidden',
|
|
2957
2975
|
position: fullScreen ? 'fixed' : undefined,
|
|
2958
2976
|
right: fullScreen ? '0' : undefined,
|
|
2959
2977
|
top: fullScreen ? '0' : undefined,
|
|
@@ -2961,10 +2979,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
|
|
|
2961
2979
|
width: fullScreen ? '100vw' : undefined,
|
|
2962
2980
|
zIndex: fullScreen ? 1200 : 1
|
|
2963
2981
|
}, tableContainerProps == null ? void 0 : tableContainerProps.sx)
|
|
2964
|
-
}), !hideToolbarTop && React.createElement(MRT_ToolbarTop, null), React.createElement(
|
|
2965
|
-
"in": isFetching || isLoading,
|
|
2966
|
-
unmountOnExit: true
|
|
2967
|
-
}, React.createElement(LinearProgress, Object.assign({}, linearProgressProps))), React.createElement(Box, {
|
|
2982
|
+
}), !hideToolbarTop && React.createElement(MRT_ToolbarTop, null), React.createElement(Box, {
|
|
2968
2983
|
sx: {
|
|
2969
2984
|
maxWidth: '100%',
|
|
2970
2985
|
overflowX: 'auto'
|
|
@@ -3069,10 +3084,13 @@ var MaterialReactTable = (function (_ref) {
|
|
|
3069
3084
|
positionToolbarAlertBanner = _ref$positionToolbarA2 === void 0 ? 'top' : _ref$positionToolbarA2,
|
|
3070
3085
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
3071
3086
|
|
|
3072
|
-
return React.createElement(MaterialReactTableProvider
|
|
3087
|
+
return React.createElement(MaterialReactTableProvider //@ts-ignore
|
|
3088
|
+
, Object.assign({
|
|
3089
|
+
//@ts-ignore
|
|
3073
3090
|
defaultColumn: defaultColumn,
|
|
3074
|
-
|
|
3091
|
+
//@ts-ignore
|
|
3075
3092
|
filterTypes: _extends({}, defaultFilterFNs, filterTypes),
|
|
3093
|
+
//@ts-ignore
|
|
3076
3094
|
globalFilter: globalFilter,
|
|
3077
3095
|
icons: _extends({}, MRT_Default_Icons, icons),
|
|
3078
3096
|
localization: _extends({}, MRT_DefaultLocalization_EN, localization),
|