material-react-table 0.6.1 → 0.6.2
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 +13 -5
- package/dist/filtersFNs.d.ts +2 -10
- package/dist/material-react-table.cjs.development.js +145 -146
- 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 +146 -147
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/useMRT.d.ts +4 -0
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +59 -47
- package/src/filtersFNs.ts +4 -15
- package/src/inputs/MRT_FilterTextField.tsx +1 -0
- package/src/useMRT.tsx +27 -24
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React, { useState,
|
|
1
|
+
import React, { useState, useCallback, useMemo, useContext, createContext, Fragment, useRef, useEffect } from 'react';
|
|
2
2
|
import { useTable, useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect, useResizeColumns, useFlexLayout, useAsyncDebounce } from 'react-table';
|
|
3
|
-
import { matchSorter } from 'match-sorter';
|
|
4
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, LinearProgress } from '@mui/material';
|
|
4
|
+
import { matchSorter } from 'match-sorter';
|
|
5
5
|
import ArrowRightIcon from '@mui/icons-material/ArrowRight';
|
|
6
6
|
import CancelIcon from '@mui/icons-material/Cancel';
|
|
7
7
|
import ClearAllIcon from '@mui/icons-material/ClearAll';
|
|
@@ -97,144 +97,12 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
97
97
|
return target;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
var fuzzySearchFN = function fuzzySearchFN(rows, columnIds, filterValue) {
|
|
101
|
-
return matchSorter(rows, filterValue.toString().trim(), {
|
|
102
|
-
keys: columnIds.map(function (c) {
|
|
103
|
-
return "values." + c;
|
|
104
|
-
}),
|
|
105
|
-
sorter: function sorter(rankedItems) {
|
|
106
|
-
return rankedItems;
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
fuzzySearchFN.autoRemove = function (val) {
|
|
112
|
-
return !val;
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
var fuzzyFilterFN = function fuzzyFilterFN(rows, id, filterValue) {
|
|
116
|
-
return matchSorter(rows, filterValue.toString().trim(), {
|
|
117
|
-
keys: ["values." + id],
|
|
118
|
-
sorter: function sorter(rankedItems) {
|
|
119
|
-
return rankedItems;
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
fuzzyFilterFN.autoRemove = function (val) {
|
|
125
|
-
return !val;
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
|
|
129
|
-
return rows.filter(function (row) {
|
|
130
|
-
return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
|
|
131
|
-
});
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
containsFilterFN.autoRemove = function (val) {
|
|
135
|
-
return !val;
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
|
|
139
|
-
return rows.filter(function (row) {
|
|
140
|
-
return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
startsWithFilterFN.autoRemove = function (val) {
|
|
145
|
-
return !val;
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
|
|
149
|
-
return rows.filter(function (row) {
|
|
150
|
-
return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
|
|
151
|
-
});
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
endsWithFilterFN.autoRemove = function (val) {
|
|
155
|
-
return !val;
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
|
|
159
|
-
return rows.filter(function (row) {
|
|
160
|
-
return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
equalsFilterFN.autoRemove = function (val) {
|
|
165
|
-
return !val;
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
|
|
169
|
-
return rows.filter(function (row) {
|
|
170
|
-
return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
|
|
171
|
-
});
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
notEqualsFilterFN.autoRemove = function (val) {
|
|
175
|
-
return !val;
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
var greaterThanFilterFN = function greaterThanFilterFN(rows, id, filterValue) {
|
|
179
|
-
return rows.filter(function (row) {
|
|
180
|
-
return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] > +filterValue : row.values[id].toString().toLowerCase().trim() > filterValue.toString().toLowerCase().trim();
|
|
181
|
-
});
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
greaterThanFilterFN.autoRemove = function (val) {
|
|
185
|
-
return !val;
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
var lessThanFilterFN = function lessThanFilterFN(rows, id, filterValue) {
|
|
189
|
-
return rows.filter(function (row) {
|
|
190
|
-
return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] < +filterValue : row.values[id].toString().toLowerCase().trim() < filterValue.toString().toLowerCase().trim();
|
|
191
|
-
});
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
lessThanFilterFN.autoRemove = function (val) {
|
|
195
|
-
return !val;
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
|
|
199
|
-
return rows.filter(function (row) {
|
|
200
|
-
return !row.values[id].toString().toLowerCase().trim();
|
|
201
|
-
});
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
emptyFilterFN.autoRemove = function (val) {
|
|
205
|
-
return !val;
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
|
|
209
|
-
return rows.filter(function (row) {
|
|
210
|
-
return !!row.values[id].toString().toLowerCase().trim();
|
|
211
|
-
});
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
notEmptyFilterFN.autoRemove = function (val) {
|
|
215
|
-
return !val;
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
var defaultFilterFNs = {
|
|
219
|
-
contains: containsFilterFN,
|
|
220
|
-
empty: emptyFilterFN,
|
|
221
|
-
endsWith: endsWithFilterFN,
|
|
222
|
-
equals: equalsFilterFN,
|
|
223
|
-
fuzzy: fuzzyFilterFN,
|
|
224
|
-
globalFuzzy: fuzzySearchFN,
|
|
225
|
-
greaterThan: greaterThanFilterFN,
|
|
226
|
-
lessThan: lessThanFilterFN,
|
|
227
|
-
notEmpty: notEmptyFilterFN,
|
|
228
|
-
notEquals: notEqualsFilterFN,
|
|
229
|
-
startsWith: startsWithFilterFN
|
|
230
|
-
};
|
|
231
|
-
|
|
232
100
|
var MaterialReactTableContext = /*#__PURE__*/function () {
|
|
233
101
|
return createContext({});
|
|
234
102
|
}();
|
|
235
103
|
|
|
236
104
|
var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
237
|
-
var _props$initialState$d, _props$initialState, _props$initialState$f, _props$initialState2, _props$initialState$s, _props$initialState3, _props$initialState$s2, _props$initialState4
|
|
105
|
+
var _props$initialState$d, _props$initialState, _props$initialState$f, _props$initialState2, _props$initialState$s, _props$initialState3, _props$initialState$s2, _props$initialState4;
|
|
238
106
|
|
|
239
107
|
var hooks = [useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect];
|
|
240
108
|
if (props.enableColumnResizing) hooks.unshift(useResizeColumns, useFlexLayout);
|
|
@@ -259,9 +127,6 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
259
127
|
showSearch = _useState5[0],
|
|
260
128
|
setShowSearch = _useState5[1];
|
|
261
129
|
|
|
262
|
-
var filterTypes = useMemo(function () {
|
|
263
|
-
return _extends({}, defaultFilterFNs, props.filterTypes);
|
|
264
|
-
}, [props.filterTypes]);
|
|
265
130
|
var findLowestLevelCols = useCallback(function () {
|
|
266
131
|
var lowestLevelColumns = props.columns;
|
|
267
132
|
var currentCols = props.columns;
|
|
@@ -299,17 +164,26 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
299
164
|
currentFilterTypes = _useState6[0],
|
|
300
165
|
setCurrentFilterTypes = _useState6[1];
|
|
301
166
|
|
|
302
|
-
var
|
|
303
|
-
return
|
|
304
|
-
column.
|
|
167
|
+
var applyFiltersToColumns = useCallback(function (cols) {
|
|
168
|
+
return cols.map(function (column) {
|
|
169
|
+
if (column.columns) {
|
|
170
|
+
applyFiltersToColumns(column.columns);
|
|
171
|
+
} else {
|
|
172
|
+
var _props$filterTypes;
|
|
173
|
+
|
|
174
|
+
column.filter = props == null ? void 0 : (_props$filterTypes = props.filterTypes) == null ? void 0 : _props$filterTypes[currentFilterTypes[column.accessor]];
|
|
175
|
+
}
|
|
176
|
+
|
|
305
177
|
return column;
|
|
306
178
|
});
|
|
307
|
-
}, [props.
|
|
308
|
-
var
|
|
309
|
-
|
|
179
|
+
}, [currentFilterTypes, props.filterTypes]);
|
|
180
|
+
var columns = useMemo(function () {
|
|
181
|
+
return applyFiltersToColumns(props.columns);
|
|
182
|
+
}, [props.columns, applyFiltersToColumns]);
|
|
183
|
+
var tableInstance = useTable.apply(void 0, [// @ts-ignore
|
|
184
|
+
_extends({}, props, {
|
|
310
185
|
// @ts-ignore
|
|
311
|
-
|
|
312
|
-
globalFilter: (_props$globalFilter = props.globalFilter) != null ? _props$globalFilter : 'globalFuzzy',
|
|
186
|
+
columns: columns,
|
|
313
187
|
useControlledState: function useControlledState(state) {
|
|
314
188
|
return useMemo(function () {
|
|
315
189
|
return _extends({}, state, {
|
|
@@ -374,6 +248,124 @@ var MRT_FILTER_TYPE;
|
|
|
374
248
|
MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
|
|
375
249
|
})(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
|
|
376
250
|
|
|
251
|
+
var fuzzyFilterFN = function fuzzyFilterFN(rows, columnIds, filterValue) {
|
|
252
|
+
return matchSorter(rows, filterValue.toString().trim(), {
|
|
253
|
+
keys: Array.isArray(columnIds) ? columnIds.map(function (c) {
|
|
254
|
+
return "values." + c;
|
|
255
|
+
}) : ["values." + columnIds],
|
|
256
|
+
sorter: function sorter(rankedItems) {
|
|
257
|
+
return rankedItems;
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
fuzzyFilterFN.autoRemove = function (val) {
|
|
263
|
+
return !val;
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
|
|
267
|
+
return rows.filter(function (row) {
|
|
268
|
+
return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
|
|
269
|
+
});
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
containsFilterFN.autoRemove = function (val) {
|
|
273
|
+
return !val;
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
|
|
277
|
+
return rows.filter(function (row) {
|
|
278
|
+
return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
|
|
279
|
+
});
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
startsWithFilterFN.autoRemove = function (val) {
|
|
283
|
+
return !val;
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
|
|
287
|
+
return rows.filter(function (row) {
|
|
288
|
+
return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
|
|
289
|
+
});
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
endsWithFilterFN.autoRemove = function (val) {
|
|
293
|
+
return !val;
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
|
|
297
|
+
return rows.filter(function (row) {
|
|
298
|
+
return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
|
|
299
|
+
});
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
equalsFilterFN.autoRemove = function (val) {
|
|
303
|
+
return !val;
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
|
|
307
|
+
return rows.filter(function (row) {
|
|
308
|
+
return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
|
|
309
|
+
});
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
notEqualsFilterFN.autoRemove = function (val) {
|
|
313
|
+
return !val;
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
var greaterThanFilterFN = function greaterThanFilterFN(rows, id, filterValue) {
|
|
317
|
+
return rows.filter(function (row) {
|
|
318
|
+
return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] > +filterValue : row.values[id].toString().toLowerCase().trim() > filterValue.toString().toLowerCase().trim();
|
|
319
|
+
});
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
greaterThanFilterFN.autoRemove = function (val) {
|
|
323
|
+
return !val;
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
var lessThanFilterFN = function lessThanFilterFN(rows, id, filterValue) {
|
|
327
|
+
return rows.filter(function (row) {
|
|
328
|
+
return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] < +filterValue : row.values[id].toString().toLowerCase().trim() < filterValue.toString().toLowerCase().trim();
|
|
329
|
+
});
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
lessThanFilterFN.autoRemove = function (val) {
|
|
333
|
+
return !val;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
|
|
337
|
+
return rows.filter(function (row) {
|
|
338
|
+
return !row.values[id].toString().toLowerCase().trim();
|
|
339
|
+
});
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
emptyFilterFN.autoRemove = function (val) {
|
|
343
|
+
return !val;
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
|
|
347
|
+
return rows.filter(function (row) {
|
|
348
|
+
return !!row.values[id].toString().toLowerCase().trim();
|
|
349
|
+
});
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
notEmptyFilterFN.autoRemove = function (val) {
|
|
353
|
+
return !val;
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
var defaultFilterFNs = {
|
|
357
|
+
contains: containsFilterFN,
|
|
358
|
+
empty: emptyFilterFN,
|
|
359
|
+
endsWith: endsWithFilterFN,
|
|
360
|
+
equals: equalsFilterFN,
|
|
361
|
+
fuzzy: fuzzyFilterFN,
|
|
362
|
+
greaterThan: greaterThanFilterFN,
|
|
363
|
+
lessThan: lessThanFilterFN,
|
|
364
|
+
notEmpty: notEmptyFilterFN,
|
|
365
|
+
notEquals: notEqualsFilterFN,
|
|
366
|
+
startsWith: startsWithFilterFN
|
|
367
|
+
};
|
|
368
|
+
|
|
377
369
|
var commonMenuItemStyles = {
|
|
378
370
|
py: '6px',
|
|
379
371
|
my: 0,
|
|
@@ -601,6 +593,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
601
593
|
arrow: true,
|
|
602
594
|
title: localization.changeFilterMode
|
|
603
595
|
}, React.createElement("span", null, React.createElement(IconButton, {
|
|
596
|
+
"aria-label": localization.changeFilterMode,
|
|
604
597
|
onClick: handleFilterMenuOpen,
|
|
605
598
|
size: "small",
|
|
606
599
|
sx: {
|
|
@@ -3054,13 +3047,16 @@ var MRT_Default_Icons = {
|
|
|
3054
3047
|
VisibilityOffIcon: VisibilityOffIcon
|
|
3055
3048
|
};
|
|
3056
3049
|
|
|
3057
|
-
var _excluded = ["defaultColumn", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
|
|
3050
|
+
var _excluded = ["defaultColumn", "filterTypes", "globalFilter", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
|
|
3058
3051
|
var MaterialReactTable = (function (_ref) {
|
|
3059
3052
|
var _ref$defaultColumn = _ref.defaultColumn,
|
|
3060
3053
|
defaultColumn = _ref$defaultColumn === void 0 ? {
|
|
3061
3054
|
minWidth: 50,
|
|
3062
3055
|
maxWidth: 1000
|
|
3063
3056
|
} : _ref$defaultColumn,
|
|
3057
|
+
filterTypes = _ref.filterTypes,
|
|
3058
|
+
_ref$globalFilter = _ref.globalFilter,
|
|
3059
|
+
globalFilter = _ref$globalFilter === void 0 ? 'fuzzy' : _ref$globalFilter,
|
|
3064
3060
|
icons = _ref.icons,
|
|
3065
3061
|
localization = _ref.localization,
|
|
3066
3062
|
_ref$positionActionsC = _ref.positionActionsColumn,
|
|
@@ -3075,6 +3071,9 @@ var MaterialReactTable = (function (_ref) {
|
|
|
3075
3071
|
|
|
3076
3072
|
return React.createElement(MaterialReactTableProvider, Object.assign({
|
|
3077
3073
|
defaultColumn: defaultColumn,
|
|
3074
|
+
// @ts-ignore
|
|
3075
|
+
filterTypes: _extends({}, defaultFilterFNs, filterTypes),
|
|
3076
|
+
globalFilter: globalFilter,
|
|
3078
3077
|
icons: _extends({}, MRT_Default_Icons, icons),
|
|
3079
3078
|
localization: _extends({}, MRT_DefaultLocalization_EN, localization),
|
|
3080
3079
|
positionActionsColumn: positionActionsColumn,
|