material-react-table 0.5.3 → 0.5.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.
- package/dist/MaterialReactTable.d.ts +5 -0
- package/dist/filtersFNs.d.ts +67 -0
- package/dist/localization.d.ts +10 -1
- package/dist/material-react-table.cjs.development.js +367 -69
- 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 +368 -70
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/menus/MRT_FilterMenu.d.ts +10 -0
- package/dist/useMRT.d.ts +13 -9
- package/package.json +6 -2
- package/src/MaterialReactTable.tsx +15 -1
- package/src/buttons/MRT_EditActionButtons.tsx +3 -1
- package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +4 -3
- package/src/buttons/MRT_ToggleFiltersButton.tsx +3 -1
- package/src/buttons/MRT_ToggleSearchButton.tsx +5 -2
- package/src/filtersFNs.ts +112 -0
- package/src/head/MRT_TableHeadCell.tsx +45 -44
- package/src/index.tsx +0 -2
- package/src/inputs/MRT_FilterTextField.tsx +117 -52
- package/src/inputs/MRT_SearchTextField.tsx +2 -1
- package/src/inputs/MRT_SelectCheckbox.tsx +5 -7
- package/src/localization.ts +20 -2
- package/src/menus/MRT_ColumnActionMenu.tsx +125 -85
- package/src/menus/MRT_FilterMenu.tsx +109 -0
- package/src/useMRT.tsx +67 -13
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React, { useState, 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 {
|
|
3
|
+
import { matchSorter } from 'match-sorter';
|
|
4
|
+
import { Menu, Typography, Divider, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, MenuList, ListItemIcon, ListItemText, TableCell, Box, TableSortLabel, Collapse, Checkbox, TableRow, TableHead, alpha, TableBody, TableFooter, Table, FormControlLabel, Switch, Button, TablePagination, useMediaQuery, Alert, Toolbar, TableContainer, Paper, LinearProgress } from '@mui/material';
|
|
5
|
+
import ArrowRightIcon from '@mui/icons-material/ArrowRight';
|
|
4
6
|
import CancelIcon from '@mui/icons-material/Cancel';
|
|
5
7
|
import ClearAllIcon from '@mui/icons-material/ClearAll';
|
|
6
8
|
import CloseIcon from '@mui/icons-material/Close';
|
|
@@ -93,6 +95,100 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
93
95
|
return target;
|
|
94
96
|
}
|
|
95
97
|
|
|
98
|
+
var fuzzyFilterFN = function fuzzyFilterFN(rows, id, filterValue) {
|
|
99
|
+
return matchSorter(rows, filterValue.toString().trim(), {
|
|
100
|
+
keys: ["values." + id],
|
|
101
|
+
sorter: function sorter(rankedItems) {
|
|
102
|
+
return rankedItems;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
fuzzyFilterFN.autoRemove = function (val) {
|
|
108
|
+
return !val;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
|
|
112
|
+
return rows.filter(function (row) {
|
|
113
|
+
return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
containsFilterFN.autoRemove = function (val) {
|
|
118
|
+
return !val;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
|
|
122
|
+
return rows.filter(function (row) {
|
|
123
|
+
return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
startsWithFilterFN.autoRemove = function (val) {
|
|
128
|
+
return !val;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
|
|
132
|
+
return rows.filter(function (row) {
|
|
133
|
+
return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
endsWithFilterFN.autoRemove = function (val) {
|
|
138
|
+
return !val;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
|
|
142
|
+
return rows.filter(function (row) {
|
|
143
|
+
return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
equalsFilterFN.autoRemove = function (val) {
|
|
148
|
+
return !val;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
|
|
152
|
+
return rows.filter(function (row) {
|
|
153
|
+
return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
notEqualsFilterFN.autoRemove = function (val) {
|
|
158
|
+
return !val;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
|
|
162
|
+
return rows.filter(function (row) {
|
|
163
|
+
return !row.values[id].toString().toLowerCase().trim();
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
emptyFilterFN.autoRemove = function (val) {
|
|
168
|
+
return !val;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
|
|
172
|
+
return rows.filter(function (row) {
|
|
173
|
+
return !!row.values[id].toString().toLowerCase().trim();
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
notEmptyFilterFN.autoRemove = function (val) {
|
|
178
|
+
return !val;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
var defaultFilterFNs = {
|
|
182
|
+
contains: containsFilterFN,
|
|
183
|
+
empty: emptyFilterFN,
|
|
184
|
+
endsWith: endsWithFilterFN,
|
|
185
|
+
equals: equalsFilterFN,
|
|
186
|
+
fuzzy: fuzzyFilterFN,
|
|
187
|
+
notEmpty: notEmptyFilterFN,
|
|
188
|
+
notEquals: notEqualsFilterFN,
|
|
189
|
+
startsWith: startsWithFilterFN
|
|
190
|
+
};
|
|
191
|
+
|
|
96
192
|
var MaterialReactTableContext = /*#__PURE__*/function () {
|
|
97
193
|
return createContext({});
|
|
98
194
|
}();
|
|
@@ -123,19 +219,52 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
123
219
|
showSearch = _useState5[0],
|
|
124
220
|
setShowSearch = _useState5[1];
|
|
125
221
|
|
|
222
|
+
var filterTypes = useMemo(function () {
|
|
223
|
+
return _extends({}, defaultFilterFNs, props.filterTypes);
|
|
224
|
+
}, [props.filterTypes]);
|
|
225
|
+
|
|
226
|
+
var _useState6 = useState(function () {
|
|
227
|
+
return Object.assign.apply(Object, [{}].concat(props.columns.map(function (c) {
|
|
228
|
+
var _c$accessor;
|
|
229
|
+
|
|
230
|
+
return (_c$accessor = c.accessor) == null ? void 0 : _c$accessor.toString();
|
|
231
|
+
}).map(function (accessor) {
|
|
232
|
+
var _props$initialState$f2, _props$initialState5, _props$initialState5$, _ref;
|
|
233
|
+
|
|
234
|
+
return _ref = {}, _ref[accessor] = (_props$initialState$f2 = props == null ? void 0 : (_props$initialState5 = props.initialState) == null ? void 0 : (_props$initialState5$ = _props$initialState5.filters) == null ? void 0 : _props$initialState5$[accessor]) != null ? _props$initialState$f2 : 'fuzzy', _ref;
|
|
235
|
+
})));
|
|
236
|
+
}),
|
|
237
|
+
currentFilterTypes = _useState6[0],
|
|
238
|
+
setCurrentFilterTypes = _useState6[1];
|
|
239
|
+
|
|
240
|
+
var columns = useMemo(function () {
|
|
241
|
+
return props.columns.map(function (column) {
|
|
242
|
+
column.filter = filterTypes[currentFilterTypes[column.accessor]];
|
|
243
|
+
return column;
|
|
244
|
+
});
|
|
245
|
+
}, [props.columns, filterTypes, currentFilterTypes]);
|
|
126
246
|
var tableInstance = useTable.apply(void 0, [_extends({}, props, {
|
|
247
|
+
columns: columns,
|
|
248
|
+
// @ts-ignore
|
|
249
|
+
filterTypes: filterTypes,
|
|
127
250
|
useControlledState: function useControlledState(state) {
|
|
128
251
|
return useMemo(function () {
|
|
129
252
|
return _extends({}, state, {
|
|
130
253
|
currentEditingRow: currentEditingRow,
|
|
254
|
+
currentFilterTypes: currentFilterTypes,
|
|
131
255
|
densePadding: densePadding,
|
|
132
256
|
fullScreen: fullScreen,
|
|
133
257
|
showFilters: showFilters,
|
|
134
258
|
showSearch: showSearch
|
|
135
259
|
}, props == null ? void 0 : props.useControlledState == null ? void 0 : props.useControlledState(state));
|
|
136
|
-
}, [currentEditingRow, densePadding, fullScreen, showFilters, showSearch, state]);
|
|
260
|
+
}, [currentEditingRow, currentFilterTypes, densePadding, fullScreen, showFilters, showSearch, state]);
|
|
137
261
|
}
|
|
138
262
|
})].concat(hooks));
|
|
263
|
+
var idPrefix = useMemo(function () {
|
|
264
|
+
var _props$idPrefix;
|
|
265
|
+
|
|
266
|
+
return (_props$idPrefix = props.idPrefix) != null ? _props$idPrefix : Math.random().toString(36).substring(2, 9);
|
|
267
|
+
}, [props.idPrefix]);
|
|
139
268
|
var anyRowsCanExpand = useMemo(function () {
|
|
140
269
|
return tableInstance.rows.some(function (row) {
|
|
141
270
|
return row.canExpand;
|
|
@@ -150,7 +279,10 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
150
279
|
value: _extends({}, props, {
|
|
151
280
|
anyRowsCanExpand: anyRowsCanExpand,
|
|
152
281
|
anyRowsExpanded: anyRowsExpanded,
|
|
282
|
+
idPrefix: idPrefix,
|
|
283
|
+
//@ts-ignore
|
|
153
284
|
setCurrentEditingRow: setCurrentEditingRow,
|
|
285
|
+
setCurrentFilterTypes: setCurrentFilterTypes,
|
|
154
286
|
setDensePadding: setDensePadding,
|
|
155
287
|
setFullScreen: setFullScreen,
|
|
156
288
|
setShowFilters: setShowFilters,
|
|
@@ -161,13 +293,106 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
161
293
|
}, props.children);
|
|
162
294
|
};
|
|
163
295
|
var useMRT = function useMRT() {
|
|
164
|
-
return (
|
|
165
|
-
|
|
166
|
-
|
|
296
|
+
return useContext(MaterialReactTableContext);
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
var MRT_FilterMenu = function MRT_FilterMenu(_ref) {
|
|
300
|
+
var anchorEl = _ref.anchorEl,
|
|
301
|
+
column = _ref.column,
|
|
302
|
+
onSelect = _ref.onSelect,
|
|
303
|
+
setAnchorEl = _ref.setAnchorEl;
|
|
304
|
+
|
|
305
|
+
var _useMRT = useMRT(),
|
|
306
|
+
localization = _useMRT.localization,
|
|
307
|
+
setCurrentFilterTypes = _useMRT.setCurrentFilterTypes,
|
|
308
|
+
tableInstance = _useMRT.tableInstance;
|
|
309
|
+
|
|
310
|
+
var filterTypes = useMemo(function () {
|
|
311
|
+
return [{
|
|
312
|
+
type: 'fuzzy',
|
|
313
|
+
label: localization.filterMenuItemFuzzy,
|
|
314
|
+
divider: false
|
|
315
|
+
}, {
|
|
316
|
+
type: 'contains',
|
|
317
|
+
label: localization.filterMenuItemContains,
|
|
318
|
+
divider: true
|
|
319
|
+
}, {
|
|
320
|
+
type: 'startsWith',
|
|
321
|
+
label: localization.filterMenuItemStartsWith,
|
|
322
|
+
divider: false
|
|
323
|
+
}, {
|
|
324
|
+
type: 'endsWith',
|
|
325
|
+
label: localization.filterMenuItemEndsWith,
|
|
326
|
+
divider: true
|
|
327
|
+
}, {
|
|
328
|
+
type: 'equals',
|
|
329
|
+
label: localization.filterMenuItemEquals,
|
|
330
|
+
divider: false
|
|
331
|
+
}, {
|
|
332
|
+
type: 'notEquals',
|
|
333
|
+
label: localization.filterMenuItemNotEquals,
|
|
334
|
+
divider: true
|
|
335
|
+
}, {
|
|
336
|
+
type: 'empty',
|
|
337
|
+
label: localization.filterMenuItemEmpty,
|
|
338
|
+
divider: false
|
|
339
|
+
}, {
|
|
340
|
+
type: 'notEmpty',
|
|
341
|
+
label: localization.filterMenuItemNotEmpty,
|
|
342
|
+
divider: false
|
|
343
|
+
}];
|
|
344
|
+
}, []);
|
|
345
|
+
|
|
346
|
+
var handleSelectMenuItem = function handleSelectMenuItem(value) {
|
|
347
|
+
setAnchorEl(null);
|
|
348
|
+
setCurrentFilterTypes(function (prev) {
|
|
349
|
+
var _extends2;
|
|
350
|
+
|
|
351
|
+
return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
if (['empty', 'notEmpty'].includes(value)) {
|
|
355
|
+
column.setFilter(' ');
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
onSelect == null ? void 0 : onSelect();
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
var filterType = tableInstance.state.currentFilterTypes[column.id];
|
|
362
|
+
return React.createElement(Menu, {
|
|
363
|
+
anchorEl: anchorEl,
|
|
364
|
+
open: !!anchorEl,
|
|
365
|
+
anchorOrigin: {
|
|
366
|
+
vertical: 'center',
|
|
367
|
+
horizontal: 'right'
|
|
368
|
+
},
|
|
369
|
+
onClose: function onClose() {
|
|
370
|
+
return setAnchorEl(null);
|
|
371
|
+
}
|
|
372
|
+
}, React.createElement(Typography, {
|
|
373
|
+
sx: {
|
|
374
|
+
fontWeight: 'bold',
|
|
375
|
+
p: '1rem',
|
|
376
|
+
fontSize: '1.1rem'
|
|
377
|
+
}
|
|
378
|
+
}, localization.filterMenuTitle), React.createElement(Divider, null), filterTypes.map(function (_ref2) {
|
|
379
|
+
var type = _ref2.type,
|
|
380
|
+
label = _ref2.label,
|
|
381
|
+
divider = _ref2.divider;
|
|
382
|
+
return React.createElement(MenuItem, {
|
|
383
|
+
divider: divider,
|
|
384
|
+
key: type,
|
|
385
|
+
onClick: function onClick() {
|
|
386
|
+
return handleSelectMenuItem(type);
|
|
387
|
+
},
|
|
388
|
+
selected: type === filterType,
|
|
389
|
+
value: type
|
|
390
|
+
}, label);
|
|
391
|
+
}));
|
|
167
392
|
};
|
|
168
393
|
|
|
169
394
|
var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
170
|
-
var _localization$filterT, _localization$filterT2
|
|
395
|
+
var _localization$filterT, _localization$filterT2;
|
|
171
396
|
|
|
172
397
|
var column = _ref.column;
|
|
173
398
|
|
|
@@ -175,37 +400,70 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
175
400
|
_useMRT$icons = _useMRT.icons,
|
|
176
401
|
FilterListIcon = _useMRT$icons.FilterListIcon,
|
|
177
402
|
CloseIcon = _useMRT$icons.CloseIcon,
|
|
178
|
-
|
|
403
|
+
idPrefix = _useMRT.idPrefix,
|
|
404
|
+
localization = _useMRT.localization,
|
|
405
|
+
muiTableHeadCellFilterTextFieldProps = _useMRT.muiTableHeadCellFilterTextFieldProps,
|
|
406
|
+
setCurrentFilterTypes = _useMRT.setCurrentFilterTypes,
|
|
407
|
+
tableInstance = _useMRT.tableInstance;
|
|
179
408
|
|
|
180
|
-
var _useState = useState(
|
|
181
|
-
|
|
182
|
-
|
|
409
|
+
var _useState = useState(null),
|
|
410
|
+
anchorEl = _useState[0],
|
|
411
|
+
setAnchorEl = _useState[1];
|
|
412
|
+
|
|
413
|
+
var mTableHeadCellFilterTextFieldProps = muiTableHeadCellFilterTextFieldProps instanceof Function ? muiTableHeadCellFilterTextFieldProps(column) : muiTableHeadCellFilterTextFieldProps;
|
|
414
|
+
var mcTableHeadCellFilterTextFieldProps = column.muiTableHeadCellFilterTextFieldProps instanceof Function ? column.muiTableHeadCellFilterTextFieldProps(column) : column.muiTableHeadCellFilterTextFieldProps;
|
|
415
|
+
|
|
416
|
+
var textFieldProps = _extends({}, mTableHeadCellFilterTextFieldProps, mcTableHeadCellFilterTextFieldProps, {
|
|
417
|
+
style: _extends({}, mTableHeadCellFilterTextFieldProps == null ? void 0 : mTableHeadCellFilterTextFieldProps.style, mcTableHeadCellFilterTextFieldProps == null ? void 0 : mcTableHeadCellFilterTextFieldProps.style)
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
var _useState2 = useState(''),
|
|
421
|
+
filterValue = _useState2[0],
|
|
422
|
+
setFilterValue = _useState2[1];
|
|
183
423
|
|
|
184
424
|
var handleChange = useAsyncDebounce(function (value) {
|
|
185
425
|
column.setFilter(value != null ? value : undefined);
|
|
186
426
|
}, 150);
|
|
187
427
|
|
|
428
|
+
var handleFilterMenuOpen = function handleFilterMenuOpen(event) {
|
|
429
|
+
setAnchorEl(event.currentTarget);
|
|
430
|
+
};
|
|
431
|
+
|
|
188
432
|
var handleClear = function handleClear() {
|
|
189
433
|
setFilterValue('');
|
|
190
434
|
column.setFilter(undefined);
|
|
191
435
|
};
|
|
192
436
|
|
|
437
|
+
var handleClearFilterChip = function handleClearFilterChip() {
|
|
438
|
+
setFilterValue('');
|
|
439
|
+
column.setFilter(undefined);
|
|
440
|
+
setCurrentFilterTypes(function (prev) {
|
|
441
|
+
var _extends2;
|
|
442
|
+
|
|
443
|
+
return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = 'fuzzy', _extends2));
|
|
444
|
+
});
|
|
445
|
+
};
|
|
446
|
+
|
|
193
447
|
if (column.Filter) {
|
|
194
448
|
return React.createElement(React.Fragment, null, column.Filter == null ? void 0 : column.Filter({
|
|
195
449
|
column: column
|
|
196
450
|
}));
|
|
197
451
|
}
|
|
198
452
|
|
|
199
|
-
|
|
453
|
+
var filterType = tableInstance.state.currentFilterTypes[column.id];
|
|
454
|
+
var showFilterChip = ['empty', 'notEmpty'].includes(filterType);
|
|
455
|
+
var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
|
|
456
|
+
return React.createElement(React.Fragment, null, React.createElement(TextField, Object.assign({
|
|
200
457
|
fullWidth: true,
|
|
201
|
-
id: "
|
|
458
|
+
id: "mrt-" + idPrefix + "-" + column.id + "-filter-text-field",
|
|
202
459
|
inputProps: {
|
|
203
|
-
|
|
460
|
+
sx: {
|
|
204
461
|
textOverflow: 'ellipsis'
|
|
205
|
-
}
|
|
462
|
+
},
|
|
463
|
+
title: filterPlaceholder
|
|
206
464
|
},
|
|
207
|
-
margin: "
|
|
208
|
-
placeholder:
|
|
465
|
+
margin: "none",
|
|
466
|
+
placeholder: showFilterChip ? '' : filterPlaceholder,
|
|
209
467
|
onChange: function onChange(e) {
|
|
210
468
|
setFilterValue(e.target.value);
|
|
211
469
|
handleChange(e.target.value);
|
|
@@ -216,33 +474,52 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
216
474
|
value: filterValue != null ? filterValue : '',
|
|
217
475
|
variant: "standard",
|
|
218
476
|
InputProps: {
|
|
219
|
-
startAdornment: React.createElement(
|
|
220
|
-
arrow: true,
|
|
221
|
-
title: (_localization$filterT2 = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT2.replace('{column}', String(column.Header))
|
|
222
|
-
}, React.createElement(InputAdornment, {
|
|
477
|
+
startAdornment: React.createElement(InputAdornment, {
|
|
223
478
|
position: "start"
|
|
224
|
-
}, React.createElement(
|
|
225
|
-
|
|
479
|
+
}, React.createElement(Tooltip, {
|
|
480
|
+
arrow: true,
|
|
481
|
+
title: "Change Filter Mode"
|
|
482
|
+
}, React.createElement(IconButton, {
|
|
483
|
+
onClick: handleFilterMenuOpen,
|
|
484
|
+
size: "small",
|
|
485
|
+
sx: {
|
|
486
|
+
height: '1.75rem',
|
|
487
|
+
width: '1.75rem'
|
|
488
|
+
}
|
|
489
|
+
}, React.createElement(FilterListIcon, null))), showFilterChip && React.createElement(Chip, {
|
|
490
|
+
onDelete: handleClearFilterChip,
|
|
491
|
+
label: filterType
|
|
492
|
+
})),
|
|
493
|
+
endAdornment: !showFilterChip && React.createElement(InputAdornment, {
|
|
226
494
|
position: "end"
|
|
227
495
|
}, React.createElement(Tooltip, {
|
|
228
496
|
arrow: true,
|
|
229
|
-
|
|
497
|
+
placement: "right",
|
|
498
|
+
title: (_localization$filterT2 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT2 : ''
|
|
230
499
|
}, React.createElement("span", null, React.createElement(IconButton, {
|
|
231
500
|
"aria-label": localization.filterTextFieldClearButtonTitle,
|
|
232
501
|
disabled: (filterValue == null ? void 0 : filterValue.length) === 0,
|
|
233
502
|
onClick: handleClear,
|
|
234
|
-
size: "small"
|
|
503
|
+
size: "small",
|
|
504
|
+
sx: {
|
|
505
|
+
height: '1.75rem',
|
|
506
|
+
width: '1.75rem'
|
|
507
|
+
}
|
|
235
508
|
}, React.createElement(CloseIcon, {
|
|
236
509
|
fontSize: "small"
|
|
237
510
|
})))))
|
|
238
511
|
}
|
|
239
|
-
}
|
|
512
|
+
}, textFieldProps, {
|
|
513
|
+
sx: _extends({
|
|
514
|
+
minWidth: '6rem'
|
|
515
|
+
}, textFieldProps == null ? void 0 : textFieldProps.sx)
|
|
516
|
+
})), React.createElement(MRT_FilterMenu, {
|
|
517
|
+
anchorEl: anchorEl,
|
|
518
|
+
column: column,
|
|
519
|
+
setAnchorEl: setAnchorEl
|
|
520
|
+
}));
|
|
240
521
|
};
|
|
241
522
|
|
|
242
|
-
var commonMenuItemStyles = {
|
|
243
|
-
display: 'flex',
|
|
244
|
-
gap: '0.75rem'
|
|
245
|
-
};
|
|
246
523
|
var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
|
|
247
524
|
var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
|
|
248
525
|
|
|
@@ -255,14 +532,19 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
|
|
|
255
532
|
disableFilters = _useMRT.disableFilters,
|
|
256
533
|
disableSortBy = _useMRT.disableSortBy,
|
|
257
534
|
enableColumnGrouping = _useMRT.enableColumnGrouping,
|
|
258
|
-
localization = _useMRT.localization,
|
|
259
|
-
setShowFilters = _useMRT.setShowFilters,
|
|
260
535
|
_useMRT$icons = _useMRT.icons,
|
|
261
|
-
FilterListIcon = _useMRT$icons.FilterListIcon,
|
|
262
|
-
SortIcon = _useMRT$icons.SortIcon,
|
|
263
536
|
ClearAllIcon = _useMRT$icons.ClearAllIcon,
|
|
264
537
|
DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
|
|
265
|
-
|
|
538
|
+
FilterListIcon = _useMRT$icons.FilterListIcon,
|
|
539
|
+
SortIcon = _useMRT$icons.SortIcon,
|
|
540
|
+
VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
|
|
541
|
+
idPrefix = _useMRT.idPrefix,
|
|
542
|
+
localization = _useMRT.localization,
|
|
543
|
+
setShowFilters = _useMRT.setShowFilters;
|
|
544
|
+
|
|
545
|
+
var _useState = useState(null),
|
|
546
|
+
filterMenuAnchorEl = _useState[0],
|
|
547
|
+
setFilterMenuAnchorEl = _useState[1];
|
|
266
548
|
|
|
267
549
|
var handleClearSort = function handleClearSort() {
|
|
268
550
|
column.clearSortBy();
|
|
@@ -295,55 +577,63 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
|
|
|
295
577
|
var _document$getElementB, _column$muiTableHeadC, _column$muiTableHeadC2;
|
|
296
578
|
|
|
297
579
|
return (_document$getElementB = document.getElementById( // @ts-ignore
|
|
298
|
-
(_column$muiTableHeadC = (_column$muiTableHeadC2 = column.muiTableHeadCellFilterTextFieldProps) == null ? void 0 : _column$muiTableHeadC2.id) != null ? _column$muiTableHeadC : "
|
|
580
|
+
(_column$muiTableHeadC = (_column$muiTableHeadC2 = column.muiTableHeadCellFilterTextFieldProps) == null ? void 0 : _column$muiTableHeadC2.id) != null ? _column$muiTableHeadC : "mrt-" + idPrefix + "-" + column.id + "-filter-text-field")) == null ? void 0 : _document$getElementB.focus();
|
|
299
581
|
}, 200);
|
|
300
582
|
setAnchorEl(null);
|
|
301
583
|
};
|
|
302
584
|
|
|
585
|
+
var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
|
|
586
|
+
event.stopPropagation();
|
|
587
|
+
setFilterMenuAnchorEl(event.currentTarget);
|
|
588
|
+
};
|
|
589
|
+
|
|
303
590
|
return React.createElement(Menu, {
|
|
304
591
|
anchorEl: anchorEl,
|
|
305
592
|
open: !!anchorEl,
|
|
306
593
|
onClose: function onClose() {
|
|
307
594
|
return setAnchorEl(null);
|
|
308
595
|
}
|
|
309
|
-
}, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
|
|
596
|
+
}, React.createElement(MenuList, null, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
|
|
310
597
|
key: 1,
|
|
311
598
|
disabled: !column.isSorted,
|
|
312
|
-
onClick: handleClearSort
|
|
313
|
-
|
|
314
|
-
}, React.createElement(ClearAllIcon, null), " ", localization.columnActionMenuItemClearSort), React.createElement(MenuItem, {
|
|
599
|
+
onClick: handleClearSort
|
|
600
|
+
}, React.createElement(ListItemIcon, null, React.createElement(ClearAllIcon, null)), React.createElement(ListItemText, null, localization.columnActionMenuItemClearSort)), React.createElement(MenuItem, {
|
|
315
601
|
key: 2,
|
|
316
602
|
disabled: column.isSorted && !column.isSortedDesc,
|
|
317
|
-
onClick: handleSortAsc
|
|
318
|
-
|
|
319
|
-
}, React.createElement(SortIcon, null), ' ', (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header))), React.createElement(MenuItem, {
|
|
603
|
+
onClick: handleSortAsc
|
|
604
|
+
}, React.createElement(ListItemIcon, null, React.createElement(SortIcon, null)), React.createElement(ListItemText, null, (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
|
|
320
605
|
key: 3,
|
|
321
606
|
disabled: column.isSorted && column.isSortedDesc,
|
|
322
|
-
onClick: handleSortDesc
|
|
323
|
-
|
|
324
|
-
}, React.createElement(SortIcon, {
|
|
607
|
+
onClick: handleSortDesc
|
|
608
|
+
}, React.createElement(ListItemIcon, null, React.createElement(SortIcon, {
|
|
325
609
|
style: {
|
|
326
610
|
transform: 'rotate(180deg) scaleX(-1)'
|
|
327
611
|
}
|
|
328
|
-
}),
|
|
612
|
+
})), React.createElement(ListItemText, null, (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(Divider, {
|
|
329
613
|
key: 0
|
|
330
614
|
}), React.createElement(MenuItem, {
|
|
331
615
|
key: 1,
|
|
332
|
-
onClick: handleFilterByColumn
|
|
333
|
-
|
|
334
|
-
|
|
616
|
+
onClick: handleFilterByColumn
|
|
617
|
+
}, React.createElement(ListItemIcon, null, React.createElement(FilterListIcon, null)), React.createElement(ListItemText, null, (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), React.createElement(IconButton, {
|
|
618
|
+
size: "small",
|
|
619
|
+
onMouseEnter: handleOpenFilterModeMenu
|
|
620
|
+
}, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_FilterMenu, {
|
|
621
|
+
anchorEl: filterMenuAnchorEl,
|
|
622
|
+
column: column,
|
|
623
|
+
key: 2,
|
|
624
|
+
setAnchorEl: setFilterMenuAnchorEl,
|
|
625
|
+
onSelect: handleFilterByColumn
|
|
626
|
+
})], enableColumnGrouping && column.canGroupBy && [React.createElement(Divider, {
|
|
335
627
|
key: 1
|
|
336
628
|
}), React.createElement(MenuItem, {
|
|
337
629
|
key: 2,
|
|
338
|
-
onClick: handleGroupByColumn
|
|
339
|
-
|
|
340
|
-
}, React.createElement(DynamicFeedIcon, null), ' ', (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header)))], !disableColumnHiding && [React.createElement(Divider, {
|
|
630
|
+
onClick: handleGroupByColumn
|
|
631
|
+
}, React.createElement(ListItemIcon, null, React.createElement(DynamicFeedIcon, null)), React.createElement(ListItemText, null, (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(Divider, {
|
|
341
632
|
key: 0
|
|
342
633
|
}), React.createElement(MenuItem, {
|
|
343
634
|
key: 1,
|
|
344
|
-
onClick: handleHideColumn
|
|
345
|
-
|
|
346
|
-
}, React.createElement(VisibilityOffIcon, null), ' ', (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header)))]);
|
|
635
|
+
onClick: handleHideColumn
|
|
636
|
+
}, React.createElement(ListItemIcon, null, React.createElement(VisibilityOffIcon, null)), React.createElement(ListItemText, null, (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]));
|
|
347
637
|
};
|
|
348
638
|
|
|
349
639
|
var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
|
|
@@ -373,11 +663,12 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
|
|
|
373
663
|
onClick: handleClick,
|
|
374
664
|
size: "small",
|
|
375
665
|
sx: {
|
|
666
|
+
height: '2rem',
|
|
667
|
+
mr: '2px',
|
|
668
|
+
mt: '-0.2rem',
|
|
376
669
|
opacity: 0.5,
|
|
377
670
|
transition: 'opacity 0.2s',
|
|
378
|
-
|
|
379
|
-
height: '1.6rem',
|
|
380
|
-
width: '1.6rem',
|
|
671
|
+
width: '2rem',
|
|
381
672
|
'&:hover': {
|
|
382
673
|
opacity: 1
|
|
383
674
|
}
|
|
@@ -421,17 +712,12 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
|
|
|
421
712
|
});
|
|
422
713
|
|
|
423
714
|
var sortTooltip = column.isSorted ? column.isSortedDesc ? localization.columnActionMenuItemClearSort : (_localization$columnA = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA.replace('{column}', column.Header) : (_localization$columnA2 = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA2.replace('{column}', column.Header);
|
|
715
|
+
var columnHeader = column.render('Header');
|
|
424
716
|
return React.createElement(TableCell, Object.assign({
|
|
425
717
|
align: isParentHeader ? 'center' : 'left'
|
|
426
718
|
}, tableCellProps, {
|
|
427
719
|
sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding, enableColumnResizing), tableCellProps == null ? void 0 : tableCellProps.sx)
|
|
428
720
|
}), React.createElement(Box, {
|
|
429
|
-
sx: {
|
|
430
|
-
alignContent: 'space-between',
|
|
431
|
-
display: 'grid',
|
|
432
|
-
height: '100%'
|
|
433
|
-
}
|
|
434
|
-
}, React.createElement(Box, {
|
|
435
721
|
sx: {
|
|
436
722
|
alignItems: 'flex-start',
|
|
437
723
|
display: 'flex',
|
|
@@ -442,7 +728,8 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
|
|
|
442
728
|
sx: {
|
|
443
729
|
alignItems: 'center',
|
|
444
730
|
display: 'flex',
|
|
445
|
-
flexWrap: 'nowrap'
|
|
731
|
+
flexWrap: 'nowrap',
|
|
732
|
+
whiteSpace: columnHeader.length < 15 ? 'nowrap' : 'normal'
|
|
446
733
|
},
|
|
447
734
|
title: undefined
|
|
448
735
|
}), column.render('Header'), !isParentHeader && column.canSort && React.createElement(Tooltip, {
|
|
@@ -476,7 +763,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
|
|
|
476
763
|
"in": tableInstance.state.showFilters
|
|
477
764
|
}, React.createElement(MRT_FilterTextField, {
|
|
478
765
|
column: column
|
|
479
|
-
})))
|
|
766
|
+
})));
|
|
480
767
|
};
|
|
481
768
|
|
|
482
769
|
var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
|
|
@@ -1883,6 +2170,7 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
|
|
|
1883
2170
|
_useMRT$icons = _useMRT.icons,
|
|
1884
2171
|
SearchIcon = _useMRT$icons.SearchIcon,
|
|
1885
2172
|
CloseIcon = _useMRT$icons.CloseIcon,
|
|
2173
|
+
idPrefix = _useMRT.idPrefix,
|
|
1886
2174
|
localization = _useMRT.localization,
|
|
1887
2175
|
muiSearchTextFieldProps = _useMRT.muiSearchTextFieldProps,
|
|
1888
2176
|
onGlobalFilterChange = _useMRT.onGlobalFilterChange,
|
|
@@ -1908,7 +2196,7 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
|
|
|
1908
2196
|
"in": tableInstance.state.showSearch,
|
|
1909
2197
|
orientation: "horizontal"
|
|
1910
2198
|
}, React.createElement(TextField, Object.assign({
|
|
1911
|
-
id: "
|
|
2199
|
+
id: "mrt-" + idPrefix + "-search-text-field",
|
|
1912
2200
|
placeholder: localization.searchTextFieldPlaceholder,
|
|
1913
2201
|
onChange: function onChange(event) {
|
|
1914
2202
|
setSearchValue(event.target.value);
|
|
@@ -2111,6 +2399,7 @@ var MRT_ToggleSearchButton = function MRT_ToggleSearchButton(_ref) {
|
|
|
2111
2399
|
_useMRT$icons = _useMRT.icons,
|
|
2112
2400
|
SearchIcon = _useMRT$icons.SearchIcon,
|
|
2113
2401
|
SearchOffIcon = _useMRT$icons.SearchOffIcon,
|
|
2402
|
+
idPrefix = _useMRT.idPrefix,
|
|
2114
2403
|
localization = _useMRT.localization,
|
|
2115
2404
|
muiSearchTextFieldProps = _useMRT.muiSearchTextFieldProps,
|
|
2116
2405
|
setShowSearch = _useMRT.setShowSearch,
|
|
@@ -2121,7 +2410,7 @@ var MRT_ToggleSearchButton = function MRT_ToggleSearchButton(_ref) {
|
|
|
2121
2410
|
setTimeout(function () {
|
|
2122
2411
|
var _document$getElementB, _muiSearchTextFieldPr;
|
|
2123
2412
|
|
|
2124
|
-
return (_document$getElementB = document.getElementById((_muiSearchTextFieldPr = muiSearchTextFieldProps == null ? void 0 : muiSearchTextFieldProps.id) != null ? _muiSearchTextFieldPr : "
|
|
2413
|
+
return (_document$getElementB = document.getElementById((_muiSearchTextFieldPr = muiSearchTextFieldProps == null ? void 0 : muiSearchTextFieldProps.id) != null ? _muiSearchTextFieldPr : "mrt-" + idPrefix + "-search-text-field")) == null ? void 0 : _document$getElementB.focus();
|
|
2125
2414
|
}, 200);
|
|
2126
2415
|
};
|
|
2127
2416
|
|
|
@@ -2402,6 +2691,15 @@ var MRT_DefaultLocalization_EN = {
|
|
|
2402
2691
|
columnShowHideMenuShowAll: 'Show all',
|
|
2403
2692
|
expandAllButtonTitle: 'Expand all',
|
|
2404
2693
|
expandButtonTitle: 'Expand',
|
|
2694
|
+
filterMenuItemContains: 'Contains Exact',
|
|
2695
|
+
filterMenuItemEmpty: 'Empty',
|
|
2696
|
+
filterMenuItemEndsWith: 'Ends With',
|
|
2697
|
+
filterMenuItemEquals: 'Equals',
|
|
2698
|
+
filterMenuItemFuzzy: 'Fuzzy Match',
|
|
2699
|
+
filterMenuItemNotEmpty: 'Not Empty',
|
|
2700
|
+
filterMenuItemNotEquals: 'Not Equals',
|
|
2701
|
+
filterMenuItemStartsWith: 'Starts With',
|
|
2702
|
+
filterMenuTitle: 'Filter Mode',
|
|
2405
2703
|
filterTextFieldClearButtonTitle: 'Clear filter',
|
|
2406
2704
|
filterTextFieldPlaceholder: 'Filter by {column}',
|
|
2407
2705
|
rowActionButtonCancel: 'Cancel',
|
|
@@ -2418,9 +2716,9 @@ var MRT_DefaultLocalization_EN = {
|
|
|
2418
2716
|
toggleFilterButtonTitle: 'Toggle filters',
|
|
2419
2717
|
toggleFullScreenButtonTitle: 'Toggle full screen',
|
|
2420
2718
|
toggleSearchButtonTitle: 'Toggle search',
|
|
2421
|
-
toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected',
|
|
2422
2719
|
toolbarAlertGroupedByMessage: 'Grouped by ',
|
|
2423
|
-
toolbarAlertGroupedThenByMessage: ', then by '
|
|
2720
|
+
toolbarAlertGroupedThenByMessage: ', then by ',
|
|
2721
|
+
toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected'
|
|
2424
2722
|
};
|
|
2425
2723
|
|
|
2426
2724
|
var MRT_Default_Icons = {
|