material-react-table 0.5.7 → 0.5.8
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 +17 -2
- package/dist/filtersFNs.d.ts +4 -0
- package/dist/localization.d.ts +1 -0
- package/dist/material-react-table.cjs.development.js +264 -189
- 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 +267 -190
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/menus/MRT_ColumnActionMenu.d.ts +8 -1
- package/package.json +2 -2
- package/src/MaterialReactTable.tsx +15 -9
- package/src/buttons/MRT_ShowHideColumnsButton.tsx +0 -3
- package/src/filtersFNs.ts +12 -0
- package/src/head/MRT_TableHeadCell.tsx +6 -15
- package/src/inputs/MRT_FilterTextField.tsx +70 -16
- package/src/localization.ts +2 -0
- package/src/menus/MRT_ColumnActionMenu.tsx +51 -43
- package/src/menus/MRT_FilterTypeMenu.tsx +20 -17
- package/src/menus/MRT_RowActionMenu.tsx +3 -9
- package/src/menus/MRT_ShowHideColumnsMenu.tsx +5 -1
- package/src/useMRT.tsx +14 -9
|
@@ -1,7 +1,7 @@
|
|
|
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
3
|
import { matchSorter } from 'match-sorter';
|
|
4
|
-
import { Menu, MenuItem,
|
|
4
|
+
import { Menu, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, Box, TableCell, TableSortLabel, Divider, Collapse, Skeleton, Checkbox, TableRow, TableHead, alpha, TableBody, TableFooter, Table, FormControlLabel, Switch, Button, TablePagination, useMediaQuery, Alert, Toolbar, TableContainer, Paper, LinearProgress } from '@mui/material';
|
|
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';
|
|
@@ -227,13 +227,9 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
227
227
|
|
|
228
228
|
var _useState6 = useState(function () {
|
|
229
229
|
return Object.assign.apply(Object, [{}].concat(props.columns.map(function (c) {
|
|
230
|
-
var _c$
|
|
230
|
+
var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
|
|
231
231
|
|
|
232
|
-
return (_c$
|
|
233
|
-
}).map(function (accessor) {
|
|
234
|
-
var _props$initialState$f2, _props$initialState5, _props$initialState5$, _ref;
|
|
235
|
-
|
|
236
|
-
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;
|
|
232
|
+
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;
|
|
237
233
|
})));
|
|
238
234
|
}),
|
|
239
235
|
currentFilterTypes = _useState6[0],
|
|
@@ -249,6 +245,7 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
|
|
|
249
245
|
columns: columns,
|
|
250
246
|
// @ts-ignore
|
|
251
247
|
filterTypes: filterTypes,
|
|
248
|
+
globalFilterValue: 'fuzzy',
|
|
252
249
|
useControlledState: function useControlledState(state) {
|
|
253
250
|
return useMemo(function () {
|
|
254
251
|
return _extends({}, state, {
|
|
@@ -299,150 +296,10 @@ var useMRT = function useMRT() {
|
|
|
299
296
|
};
|
|
300
297
|
|
|
301
298
|
var commonMenuItemStyles = {
|
|
302
|
-
py: '
|
|
303
|
-
my:
|
|
299
|
+
py: '6px',
|
|
300
|
+
my: 0,
|
|
301
|
+
alignItems: 'center'
|
|
304
302
|
};
|
|
305
|
-
var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
|
|
306
|
-
var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
|
|
307
|
-
|
|
308
|
-
var anchorEl = _ref.anchorEl,
|
|
309
|
-
column = _ref.column,
|
|
310
|
-
setAnchorEl = _ref.setAnchorEl;
|
|
311
|
-
|
|
312
|
-
var _useMRT = useMRT(),
|
|
313
|
-
disableColumnHiding = _useMRT.disableColumnHiding,
|
|
314
|
-
disableFilters = _useMRT.disableFilters,
|
|
315
|
-
disableSortBy = _useMRT.disableSortBy,
|
|
316
|
-
enableColumnGrouping = _useMRT.enableColumnGrouping,
|
|
317
|
-
_useMRT$icons = _useMRT.icons,
|
|
318
|
-
ArrowRightIcon = _useMRT$icons.ArrowRightIcon,
|
|
319
|
-
ClearAllIcon = _useMRT$icons.ClearAllIcon,
|
|
320
|
-
DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
|
|
321
|
-
FilterListIcon = _useMRT$icons.FilterListIcon,
|
|
322
|
-
SortIcon = _useMRT$icons.SortIcon,
|
|
323
|
-
VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
|
|
324
|
-
idPrefix = _useMRT.idPrefix,
|
|
325
|
-
localization = _useMRT.localization,
|
|
326
|
-
setShowFilters = _useMRT.setShowFilters,
|
|
327
|
-
tableInstance = _useMRT.tableInstance;
|
|
328
|
-
|
|
329
|
-
var _useState = useState(null),
|
|
330
|
-
filterMenuAnchorEl = _useState[0],
|
|
331
|
-
setFilterMenuAnchorEl = _useState[1];
|
|
332
|
-
|
|
333
|
-
var handleClearSort = function handleClearSort() {
|
|
334
|
-
column.clearSortBy();
|
|
335
|
-
setAnchorEl(null);
|
|
336
|
-
};
|
|
337
|
-
|
|
338
|
-
var handleSortAsc = function handleSortAsc() {
|
|
339
|
-
column.toggleSortBy(false);
|
|
340
|
-
setAnchorEl(null);
|
|
341
|
-
};
|
|
342
|
-
|
|
343
|
-
var handleSortDesc = function handleSortDesc() {
|
|
344
|
-
column.toggleSortBy(true);
|
|
345
|
-
setAnchorEl(null);
|
|
346
|
-
};
|
|
347
|
-
|
|
348
|
-
var handleHideColumn = function handleHideColumn() {
|
|
349
|
-
column.toggleHidden();
|
|
350
|
-
setAnchorEl(null);
|
|
351
|
-
};
|
|
352
|
-
|
|
353
|
-
var handleGroupByColumn = function handleGroupByColumn() {
|
|
354
|
-
column.toggleGroupBy();
|
|
355
|
-
setAnchorEl(null);
|
|
356
|
-
};
|
|
357
|
-
|
|
358
|
-
var handleFilterByColumn = function handleFilterByColumn() {
|
|
359
|
-
setShowFilters(true);
|
|
360
|
-
setTimeout(function () {
|
|
361
|
-
var _document$getElementB, _column$muiTableHeadC, _column$muiTableHeadC2;
|
|
362
|
-
|
|
363
|
-
return (_document$getElementB = document.getElementById( // @ts-ignore
|
|
364
|
-
(_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();
|
|
365
|
-
}, 200);
|
|
366
|
-
setAnchorEl(null);
|
|
367
|
-
};
|
|
368
|
-
|
|
369
|
-
var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
|
|
370
|
-
event.stopPropagation();
|
|
371
|
-
setFilterMenuAnchorEl(event.currentTarget);
|
|
372
|
-
};
|
|
373
|
-
|
|
374
|
-
return React.createElement(Menu, {
|
|
375
|
-
anchorEl: anchorEl,
|
|
376
|
-
open: !!anchorEl,
|
|
377
|
-
onClose: function onClose() {
|
|
378
|
-
return setAnchorEl(null);
|
|
379
|
-
},
|
|
380
|
-
MenuListProps: {
|
|
381
|
-
dense: tableInstance.state.densePadding,
|
|
382
|
-
disablePadding: true
|
|
383
|
-
}
|
|
384
|
-
}, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
|
|
385
|
-
key: 1,
|
|
386
|
-
disabled: !column.isSorted,
|
|
387
|
-
onClick: handleClearSort,
|
|
388
|
-
sx: commonMenuItemStyles
|
|
389
|
-
}, React.createElement(ListItemIcon, null, React.createElement(ClearAllIcon, null)), React.createElement(ListItemText, {
|
|
390
|
-
sx: commonMenuItemStyles
|
|
391
|
-
}, localization.columnActionMenuItemClearSort)), React.createElement(MenuItem, {
|
|
392
|
-
disabled: column.isSorted && !column.isSortedDesc,
|
|
393
|
-
key: 2,
|
|
394
|
-
onClick: handleSortAsc,
|
|
395
|
-
sx: commonMenuItemStyles
|
|
396
|
-
}, React.createElement(ListItemIcon, null, React.createElement(SortIcon, null)), React.createElement(ListItemText, {
|
|
397
|
-
sx: commonMenuItemStyles
|
|
398
|
-
}, (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
|
|
399
|
-
divider: !disableFilters || enableColumnGrouping || !disableColumnHiding,
|
|
400
|
-
key: 3,
|
|
401
|
-
disabled: column.isSorted && column.isSortedDesc,
|
|
402
|
-
onClick: handleSortDesc,
|
|
403
|
-
sx: commonMenuItemStyles
|
|
404
|
-
}, React.createElement(ListItemIcon, null, React.createElement(SortIcon, {
|
|
405
|
-
style: {
|
|
406
|
-
transform: 'rotate(180deg) scaleX(-1)'
|
|
407
|
-
}
|
|
408
|
-
})), React.createElement(ListItemText, {
|
|
409
|
-
sx: commonMenuItemStyles
|
|
410
|
-
}, (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(MenuItem, {
|
|
411
|
-
divider: enableColumnGrouping || !disableColumnHiding,
|
|
412
|
-
key: 1,
|
|
413
|
-
onClick: handleFilterByColumn,
|
|
414
|
-
sx: commonMenuItemStyles
|
|
415
|
-
}, React.createElement(ListItemIcon, null, React.createElement(FilterListIcon, null)), React.createElement(ListItemText, {
|
|
416
|
-
sx: commonMenuItemStyles
|
|
417
|
-
}, (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), React.createElement(IconButton, {
|
|
418
|
-
onClick: handleOpenFilterModeMenu,
|
|
419
|
-
onMouseEnter: handleOpenFilterModeMenu,
|
|
420
|
-
size: "small",
|
|
421
|
-
sx: {
|
|
422
|
-
p: 0
|
|
423
|
-
}
|
|
424
|
-
}, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_FilterTypeMenu, {
|
|
425
|
-
anchorEl: filterMenuAnchorEl,
|
|
426
|
-
column: column,
|
|
427
|
-
key: 2,
|
|
428
|
-
setAnchorEl: setFilterMenuAnchorEl,
|
|
429
|
-
onSelect: handleFilterByColumn
|
|
430
|
-
})], enableColumnGrouping && column.canGroupBy && [React.createElement(MenuItem, {
|
|
431
|
-
divider: !disableColumnHiding,
|
|
432
|
-
key: 2,
|
|
433
|
-
onClick: handleGroupByColumn,
|
|
434
|
-
sx: commonMenuItemStyles
|
|
435
|
-
}, React.createElement(ListItemIcon, null, React.createElement(DynamicFeedIcon, null)), React.createElement(ListItemText, {
|
|
436
|
-
sx: commonMenuItemStyles
|
|
437
|
-
}, (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(MenuItem, {
|
|
438
|
-
key: 1,
|
|
439
|
-
onClick: handleHideColumn,
|
|
440
|
-
sx: commonMenuItemStyles
|
|
441
|
-
}, React.createElement(ListItemIcon, null, React.createElement(VisibilityOffIcon, null)), React.createElement(ListItemText, {
|
|
442
|
-
sx: commonMenuItemStyles
|
|
443
|
-
}, (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]);
|
|
444
|
-
};
|
|
445
|
-
|
|
446
303
|
var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
|
|
447
304
|
var anchorEl = _ref.anchorEl,
|
|
448
305
|
column = _ref.column,
|
|
@@ -456,35 +313,35 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
|
|
|
456
313
|
|
|
457
314
|
var filterTypes = useMemo(function () {
|
|
458
315
|
return [{
|
|
459
|
-
type:
|
|
316
|
+
type: MRT_FILTER_TYPE.FUZZY,
|
|
460
317
|
label: localization.filterMenuItemFuzzy,
|
|
461
318
|
divider: false
|
|
462
319
|
}, {
|
|
463
|
-
type:
|
|
320
|
+
type: MRT_FILTER_TYPE.CONTAINS,
|
|
464
321
|
label: localization.filterMenuItemContains,
|
|
465
322
|
divider: true
|
|
466
323
|
}, {
|
|
467
|
-
type:
|
|
324
|
+
type: MRT_FILTER_TYPE.STARTS_WITH,
|
|
468
325
|
label: localization.filterMenuItemStartsWith,
|
|
469
326
|
divider: false
|
|
470
327
|
}, {
|
|
471
|
-
type:
|
|
328
|
+
type: MRT_FILTER_TYPE.ENDS_WITH,
|
|
472
329
|
label: localization.filterMenuItemEndsWith,
|
|
473
330
|
divider: true
|
|
474
331
|
}, {
|
|
475
|
-
type:
|
|
332
|
+
type: MRT_FILTER_TYPE.EQUALS,
|
|
476
333
|
label: localization.filterMenuItemEquals,
|
|
477
334
|
divider: false
|
|
478
335
|
}, {
|
|
479
|
-
type:
|
|
336
|
+
type: MRT_FILTER_TYPE.NOT_EQUALS,
|
|
480
337
|
label: localization.filterMenuItemNotEquals,
|
|
481
338
|
divider: true
|
|
482
339
|
}, {
|
|
483
|
-
type:
|
|
340
|
+
type: MRT_FILTER_TYPE.EMPTY,
|
|
484
341
|
label: localization.filterMenuItemEmpty,
|
|
485
342
|
divider: false
|
|
486
343
|
}, {
|
|
487
|
-
type:
|
|
344
|
+
type: MRT_FILTER_TYPE.NOT_EMPTY,
|
|
488
345
|
label: localization.filterMenuItemNotEmpty,
|
|
489
346
|
divider: false
|
|
490
347
|
}];
|
|
@@ -498,7 +355,7 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
|
|
|
498
355
|
return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
|
|
499
356
|
});
|
|
500
357
|
|
|
501
|
-
if ([
|
|
358
|
+
if ([MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(value)) {
|
|
502
359
|
column.setFilter(' ');
|
|
503
360
|
}
|
|
504
361
|
|
|
@@ -517,28 +374,27 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
|
|
|
517
374
|
},
|
|
518
375
|
open: !!anchorEl,
|
|
519
376
|
MenuListProps: {
|
|
520
|
-
dense: tableInstance.state.densePadding
|
|
521
|
-
disablePadding: true
|
|
377
|
+
dense: tableInstance.state.densePadding
|
|
522
378
|
}
|
|
523
|
-
}, filterTypes.map(function (_ref2) {
|
|
379
|
+
}, filterTypes.map(function (_ref2, index) {
|
|
524
380
|
var type = _ref2.type,
|
|
525
381
|
label = _ref2.label,
|
|
526
382
|
divider = _ref2.divider;
|
|
527
383
|
return React.createElement(MenuItem, {
|
|
528
384
|
divider: divider,
|
|
529
|
-
key:
|
|
385
|
+
key: index,
|
|
530
386
|
onClick: function onClick() {
|
|
531
387
|
return handleSelectFilterType(type);
|
|
532
388
|
},
|
|
533
389
|
selected: type === filterType,
|
|
534
|
-
|
|
535
|
-
|
|
390
|
+
sx: commonMenuItemStyles,
|
|
391
|
+
value: type
|
|
536
392
|
}, label);
|
|
537
393
|
}));
|
|
538
394
|
};
|
|
539
395
|
|
|
540
396
|
var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
541
|
-
var _localization$filterT, _localization$filterT2;
|
|
397
|
+
var _localization$filterT, _localization$filterT2, _column$filterSelectO;
|
|
542
398
|
|
|
543
399
|
var column = _ref.column;
|
|
544
400
|
|
|
@@ -586,7 +442,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
586
442
|
setCurrentFilterTypes(function (prev) {
|
|
587
443
|
var _extends2;
|
|
588
444
|
|
|
589
|
-
return _extends({}, prev, (_extends2 = {}, _extends2[column.id] =
|
|
445
|
+
return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = MRT_FILTER_TYPE.FUZZY, _extends2));
|
|
590
446
|
});
|
|
591
447
|
};
|
|
592
448
|
|
|
@@ -597,7 +453,9 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
597
453
|
}
|
|
598
454
|
|
|
599
455
|
var filterType = tableInstance.state.currentFilterTypes[column.id];
|
|
600
|
-
var
|
|
456
|
+
var isCustomFilterType = filterType instanceof Function;
|
|
457
|
+
var isSelectFilter = !!column.filterSelectOptions;
|
|
458
|
+
var filterChipLabel = !isCustomFilterType && [MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(filterType);
|
|
601
459
|
var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
|
|
602
460
|
return React.createElement(React.Fragment, null, React.createElement(TextField, Object.assign({
|
|
603
461
|
fullWidth: true,
|
|
@@ -610,8 +468,16 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
610
468
|
},
|
|
611
469
|
title: filterPlaceholder
|
|
612
470
|
},
|
|
471
|
+
label: isSelectFilter && !filterValue ? filterPlaceholder : undefined,
|
|
472
|
+
InputLabelProps: {
|
|
473
|
+
shrink: false,
|
|
474
|
+
sx: {
|
|
475
|
+
maxWidth: 'calc(100% - 2.5rem)'
|
|
476
|
+
},
|
|
477
|
+
title: filterPlaceholder
|
|
478
|
+
},
|
|
613
479
|
margin: "none",
|
|
614
|
-
placeholder: filterChipLabel ?
|
|
480
|
+
placeholder: filterChipLabel || isSelectFilter ? undefined : filterPlaceholder,
|
|
615
481
|
onChange: function onChange(e) {
|
|
616
482
|
setFilterValue(e.target.value);
|
|
617
483
|
handleChange(e.target.value);
|
|
@@ -619,22 +485,24 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
619
485
|
onClick: function onClick(e) {
|
|
620
486
|
return e.stopPropagation();
|
|
621
487
|
},
|
|
488
|
+
select: isSelectFilter,
|
|
622
489
|
value: filterValue != null ? filterValue : '',
|
|
623
490
|
variant: "standard",
|
|
624
491
|
InputProps: {
|
|
625
|
-
startAdornment: React.createElement(InputAdornment, {
|
|
492
|
+
startAdornment: !isSelectFilter && React.createElement(InputAdornment, {
|
|
626
493
|
position: "start"
|
|
627
494
|
}, React.createElement(Tooltip, {
|
|
628
495
|
arrow: true,
|
|
629
|
-
title:
|
|
630
|
-
}, React.createElement(IconButton, {
|
|
496
|
+
title: localization.changeFilterMode
|
|
497
|
+
}, React.createElement("span", null, React.createElement(IconButton, {
|
|
498
|
+
disabled: isCustomFilterType,
|
|
631
499
|
onClick: handleFilterMenuOpen,
|
|
632
500
|
size: "small",
|
|
633
501
|
sx: {
|
|
634
502
|
height: '1.75rem',
|
|
635
503
|
width: '1.75rem'
|
|
636
504
|
}
|
|
637
|
-
}, React.createElement(FilterListIcon, null))), filterChipLabel && React.createElement(Chip, {
|
|
505
|
+
}, React.createElement(FilterListIcon, null)))), filterChipLabel && React.createElement(Chip, {
|
|
638
506
|
onDelete: handleClearFilterChip,
|
|
639
507
|
label: filterType
|
|
640
508
|
})),
|
|
@@ -642,11 +510,12 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
642
510
|
position: "end"
|
|
643
511
|
}, React.createElement(Tooltip, {
|
|
644
512
|
arrow: true,
|
|
513
|
+
disableHoverListener: isSelectFilter,
|
|
645
514
|
placement: "right",
|
|
646
515
|
title: (_localization$filterT2 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT2 : ''
|
|
647
516
|
}, React.createElement("span", null, React.createElement(IconButton, {
|
|
648
517
|
"aria-label": localization.filterTextFieldClearButtonTitle,
|
|
649
|
-
disabled: (filterValue
|
|
518
|
+
disabled: !(filterValue != null && filterValue.length),
|
|
650
519
|
onClick: handleClear,
|
|
651
520
|
size: "small",
|
|
652
521
|
sx: {
|
|
@@ -661,8 +530,32 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
661
530
|
sx: _extends({
|
|
662
531
|
m: '0 -0.25rem',
|
|
663
532
|
minWidth: !filterChipLabel ? '5rem' : 'auto',
|
|
664
|
-
width: 'calc(100% + 0.5rem)'
|
|
533
|
+
width: 'calc(100% + 0.5rem)',
|
|
534
|
+
mt: isSelectFilter && !filterValue ? '-1rem' : undefined,
|
|
535
|
+
'& .MuiSelect-icon': {
|
|
536
|
+
mr: '1.5rem'
|
|
537
|
+
}
|
|
665
538
|
}, textFieldProps == null ? void 0 : textFieldProps.sx)
|
|
539
|
+
}), isSelectFilter && React.createElement(MenuItem, {
|
|
540
|
+
divider: true,
|
|
541
|
+
disabled: !filterValue,
|
|
542
|
+
value: ""
|
|
543
|
+
}, localization.filterTextFieldClearButtonTitle), column == null ? void 0 : (_column$filterSelectO = column.filterSelectOptions) == null ? void 0 : _column$filterSelectO.map(function (option) {
|
|
544
|
+
var value;
|
|
545
|
+
var text;
|
|
546
|
+
|
|
547
|
+
if (typeof option === 'string') {
|
|
548
|
+
value = option;
|
|
549
|
+
text = option;
|
|
550
|
+
} else if (typeof option === 'object') {
|
|
551
|
+
value = option.value;
|
|
552
|
+
text = option.text;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
return React.createElement(MenuItem, {
|
|
556
|
+
key: value,
|
|
557
|
+
value: value
|
|
558
|
+
}, text);
|
|
666
559
|
})), React.createElement(MRT_FilterTypeMenu, {
|
|
667
560
|
anchorEl: anchorEl,
|
|
668
561
|
column: column,
|
|
@@ -670,6 +563,170 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
670
563
|
}));
|
|
671
564
|
};
|
|
672
565
|
|
|
566
|
+
var commonMenuItemStyles$1 = {
|
|
567
|
+
py: '6px',
|
|
568
|
+
my: 0,
|
|
569
|
+
justifyContent: 'space-between',
|
|
570
|
+
alignItems: 'center'
|
|
571
|
+
};
|
|
572
|
+
var commonListItemStyles = {
|
|
573
|
+
display: 'flex',
|
|
574
|
+
gap: '0.75rem',
|
|
575
|
+
alignItems: 'center'
|
|
576
|
+
};
|
|
577
|
+
var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
|
|
578
|
+
var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
|
|
579
|
+
|
|
580
|
+
var anchorEl = _ref.anchorEl,
|
|
581
|
+
column = _ref.column,
|
|
582
|
+
setAnchorEl = _ref.setAnchorEl;
|
|
583
|
+
|
|
584
|
+
var _useMRT = useMRT(),
|
|
585
|
+
disableColumnHiding = _useMRT.disableColumnHiding,
|
|
586
|
+
disableFilters = _useMRT.disableFilters,
|
|
587
|
+
disableSortBy = _useMRT.disableSortBy,
|
|
588
|
+
enableColumnGrouping = _useMRT.enableColumnGrouping,
|
|
589
|
+
_useMRT$icons = _useMRT.icons,
|
|
590
|
+
ArrowRightIcon = _useMRT$icons.ArrowRightIcon,
|
|
591
|
+
ClearAllIcon = _useMRT$icons.ClearAllIcon,
|
|
592
|
+
DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
|
|
593
|
+
FilterListIcon = _useMRT$icons.FilterListIcon,
|
|
594
|
+
FilterListOffIcon = _useMRT$icons.FilterListOffIcon,
|
|
595
|
+
SortIcon = _useMRT$icons.SortIcon,
|
|
596
|
+
VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
|
|
597
|
+
idPrefix = _useMRT.idPrefix,
|
|
598
|
+
localization = _useMRT.localization,
|
|
599
|
+
setShowFilters = _useMRT.setShowFilters,
|
|
600
|
+
tableInstance = _useMRT.tableInstance;
|
|
601
|
+
|
|
602
|
+
var _useState = useState(null),
|
|
603
|
+
filterMenuAnchorEl = _useState[0],
|
|
604
|
+
setFilterMenuAnchorEl = _useState[1];
|
|
605
|
+
|
|
606
|
+
var handleClearSort = function handleClearSort() {
|
|
607
|
+
column.clearSortBy();
|
|
608
|
+
setAnchorEl(null);
|
|
609
|
+
};
|
|
610
|
+
|
|
611
|
+
var handleSortAsc = function handleSortAsc() {
|
|
612
|
+
column.toggleSortBy(false);
|
|
613
|
+
setAnchorEl(null);
|
|
614
|
+
};
|
|
615
|
+
|
|
616
|
+
var handleSortDesc = function handleSortDesc() {
|
|
617
|
+
column.toggleSortBy(true);
|
|
618
|
+
setAnchorEl(null);
|
|
619
|
+
};
|
|
620
|
+
|
|
621
|
+
var handleHideColumn = function handleHideColumn() {
|
|
622
|
+
column.toggleHidden();
|
|
623
|
+
setAnchorEl(null);
|
|
624
|
+
};
|
|
625
|
+
|
|
626
|
+
var handleGroupByColumn = function handleGroupByColumn() {
|
|
627
|
+
column.toggleGroupBy();
|
|
628
|
+
setAnchorEl(null);
|
|
629
|
+
};
|
|
630
|
+
|
|
631
|
+
var handleClearFilter = function handleClearFilter() {
|
|
632
|
+
column.setFilter('');
|
|
633
|
+
setAnchorEl(null);
|
|
634
|
+
};
|
|
635
|
+
|
|
636
|
+
var handleFilterByColumn = function handleFilterByColumn() {
|
|
637
|
+
setShowFilters(true);
|
|
638
|
+
setTimeout(function () {
|
|
639
|
+
var _document$getElementB, _column$muiTableHeadC, _column$muiTableHeadC2;
|
|
640
|
+
|
|
641
|
+
return (_document$getElementB = document.getElementById( // @ts-ignore
|
|
642
|
+
(_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();
|
|
643
|
+
}, 200);
|
|
644
|
+
setAnchorEl(null);
|
|
645
|
+
};
|
|
646
|
+
|
|
647
|
+
var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
|
|
648
|
+
event.stopPropagation();
|
|
649
|
+
setFilterMenuAnchorEl(event.currentTarget);
|
|
650
|
+
};
|
|
651
|
+
|
|
652
|
+
return React.createElement(Menu, {
|
|
653
|
+
anchorEl: anchorEl,
|
|
654
|
+
open: !!anchorEl,
|
|
655
|
+
onClose: function onClose() {
|
|
656
|
+
return setAnchorEl(null);
|
|
657
|
+
},
|
|
658
|
+
MenuListProps: {
|
|
659
|
+
dense: tableInstance.state.densePadding
|
|
660
|
+
}
|
|
661
|
+
}, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
|
|
662
|
+
disabled: !column.isSorted,
|
|
663
|
+
key: 1,
|
|
664
|
+
onClick: handleClearSort,
|
|
665
|
+
sx: commonMenuItemStyles$1
|
|
666
|
+
}, React.createElement(Box, {
|
|
667
|
+
sx: commonListItemStyles
|
|
668
|
+
}, React.createElement(ClearAllIcon, null), localization.columnActionMenuItemClearSort)), React.createElement(MenuItem, {
|
|
669
|
+
disabled: column.isSorted && !column.isSortedDesc,
|
|
670
|
+
key: 2,
|
|
671
|
+
onClick: handleSortAsc,
|
|
672
|
+
sx: commonMenuItemStyles$1
|
|
673
|
+
}, React.createElement(Box, {
|
|
674
|
+
sx: commonListItemStyles
|
|
675
|
+
}, React.createElement(SortIcon, null), (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
|
|
676
|
+
divider: !disableFilters || enableColumnGrouping || !disableColumnHiding,
|
|
677
|
+
key: 3,
|
|
678
|
+
disabled: column.isSorted && column.isSortedDesc,
|
|
679
|
+
onClick: handleSortDesc,
|
|
680
|
+
sx: commonMenuItemStyles$1
|
|
681
|
+
}, React.createElement(Box, {
|
|
682
|
+
sx: commonListItemStyles
|
|
683
|
+
}, React.createElement(SortIcon, {
|
|
684
|
+
style: {
|
|
685
|
+
transform: 'rotate(180deg) scaleX(-1)'
|
|
686
|
+
}
|
|
687
|
+
}), (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(MenuItem, {
|
|
688
|
+
disabled: !column.filterValue,
|
|
689
|
+
key: 0,
|
|
690
|
+
onClick: handleClearFilter,
|
|
691
|
+
sx: commonMenuItemStyles$1
|
|
692
|
+
}, React.createElement(Box, {
|
|
693
|
+
sx: commonListItemStyles
|
|
694
|
+
}, React.createElement(FilterListOffIcon, null), localization.filterTextFieldClearButtonTitle)), React.createElement(MenuItem, {
|
|
695
|
+
divider: enableColumnGrouping || !disableColumnHiding,
|
|
696
|
+
key: 1,
|
|
697
|
+
onClick: handleFilterByColumn,
|
|
698
|
+
sx: commonMenuItemStyles$1
|
|
699
|
+
}, React.createElement(Box, {
|
|
700
|
+
sx: commonListItemStyles
|
|
701
|
+
}, React.createElement(FilterListIcon, null), (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), !column.filterSelectOptions && React.createElement(IconButton, {
|
|
702
|
+
onClick: handleOpenFilterModeMenu,
|
|
703
|
+
onMouseEnter: handleOpenFilterModeMenu,
|
|
704
|
+
size: "small",
|
|
705
|
+
sx: {
|
|
706
|
+
p: 0
|
|
707
|
+
}
|
|
708
|
+
}, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_FilterTypeMenu, {
|
|
709
|
+
anchorEl: filterMenuAnchorEl,
|
|
710
|
+
column: column,
|
|
711
|
+
key: 2,
|
|
712
|
+
setAnchorEl: setFilterMenuAnchorEl,
|
|
713
|
+
onSelect: handleFilterByColumn
|
|
714
|
+
})], enableColumnGrouping && column.canGroupBy && [React.createElement(MenuItem, {
|
|
715
|
+
divider: !disableColumnHiding,
|
|
716
|
+
key: 2,
|
|
717
|
+
onClick: handleGroupByColumn,
|
|
718
|
+
sx: commonMenuItemStyles$1
|
|
719
|
+
}, React.createElement(Box, {
|
|
720
|
+
sx: commonListItemStyles
|
|
721
|
+
}, React.createElement(DynamicFeedIcon, null), (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(MenuItem, {
|
|
722
|
+
key: 1,
|
|
723
|
+
onClick: handleHideColumn,
|
|
724
|
+
sx: commonMenuItemStyles$1
|
|
725
|
+
}, React.createElement(Box, {
|
|
726
|
+
sx: commonListItemStyles
|
|
727
|
+
}, React.createElement(VisibilityOffIcon, null), (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]);
|
|
728
|
+
};
|
|
729
|
+
|
|
673
730
|
var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
|
|
674
731
|
var column = _ref.column;
|
|
675
732
|
|
|
@@ -750,8 +807,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
|
|
|
750
807
|
});
|
|
751
808
|
|
|
752
809
|
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);
|
|
753
|
-
var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}',
|
|
754
|
-
localization["filterMenuItem" + (tableInstance.state.currentFilterTypes[column.id].charAt(0).toUpperCase() + tableInstance.state.currentFilterTypes[column.id].slice(1))]) : localization.toggleFilterButtonTitle;
|
|
810
|
+
var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}', column.filterValue) : localization.toggleFilterButtonTitle;
|
|
755
811
|
var columnHeader = column.render('Header');
|
|
756
812
|
return React.createElement(TableCell, Object.assign({
|
|
757
813
|
align: isParentHeader ? 'center' : 'left'
|
|
@@ -774,6 +830,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
|
|
|
774
830
|
title: undefined
|
|
775
831
|
}), column.render('Header'), !isParentHeader && column.canSort && React.createElement(Tooltip, {
|
|
776
832
|
arrow: true,
|
|
833
|
+
placement: "top",
|
|
777
834
|
title: sortTooltip
|
|
778
835
|
}, React.createElement(TableSortLabel, {
|
|
779
836
|
"aria-label": sortTooltip,
|
|
@@ -781,19 +838,22 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
|
|
|
781
838
|
direction: column.isSortedDesc ? 'desc' : 'asc'
|
|
782
839
|
})), !isParentHeader && !!column.canFilter && React.createElement(Tooltip, {
|
|
783
840
|
arrow: true,
|
|
841
|
+
placement: "top",
|
|
784
842
|
title: filterTooltip
|
|
785
843
|
}, React.createElement(IconButton, {
|
|
844
|
+
disableRipple: true,
|
|
786
845
|
onClick: function onClick(event) {
|
|
787
846
|
event.stopPropagation();
|
|
788
847
|
setShowFilters(!tableInstance.state.showFilters);
|
|
789
848
|
},
|
|
790
849
|
size: "small",
|
|
791
850
|
sx: {
|
|
851
|
+
m: 0,
|
|
792
852
|
opacity: !!column.filterValue ? 0.8 : 0,
|
|
793
853
|
p: '2px',
|
|
794
|
-
m: 0,
|
|
795
854
|
transition: 'all 0.2s ease-in-out',
|
|
796
855
|
'&:hover': {
|
|
856
|
+
backgroundColor: 'transparent',
|
|
797
857
|
opacity: 0.8
|
|
798
858
|
}
|
|
799
859
|
}
|
|
@@ -1154,15 +1214,12 @@ var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
|
|
|
1154
1214
|
return setAnchorEl(null);
|
|
1155
1215
|
},
|
|
1156
1216
|
MenuListProps: {
|
|
1157
|
-
dense: tableInstance.state.densePadding
|
|
1158
|
-
disablePadding: true
|
|
1217
|
+
dense: tableInstance.state.densePadding
|
|
1159
1218
|
}
|
|
1160
1219
|
}, enableRowEditing && React.createElement(MenuItem, {
|
|
1161
1220
|
onClick: handleEdit,
|
|
1162
|
-
sx: commonMenuItemStyles
|
|
1163
|
-
}, React.createElement(
|
|
1164
|
-
sx: commonMenuItemStyles
|
|
1165
|
-
}, localization.rowActionMenuItemEdit)), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
|
|
1221
|
+
sx: commonMenuItemStyles$1
|
|
1222
|
+
}, React.createElement(EditIcon, null), localization.rowActionMenuItemEdit), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
|
|
1166
1223
|
return setAnchorEl(null);
|
|
1167
1224
|
})) != null ? _renderRowActionMenuI : null);
|
|
1168
1225
|
};
|
|
@@ -2346,10 +2403,17 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
|
|
|
2346
2403
|
};
|
|
2347
2404
|
|
|
2348
2405
|
return React.createElement(React.Fragment, null, React.createElement(MenuItem, {
|
|
2349
|
-
sx: {
|
|
2406
|
+
sx: _extends({}, commonMenuItemStyles$1, {
|
|
2350
2407
|
pl: (column.depth + 0.5) * 2 + "rem"
|
|
2351
|
-
}
|
|
2408
|
+
})
|
|
2352
2409
|
}, React.createElement(FormControlLabel, {
|
|
2410
|
+
componentsProps: {
|
|
2411
|
+
typography: {
|
|
2412
|
+
sx: {
|
|
2413
|
+
marginBottom: 0
|
|
2414
|
+
}
|
|
2415
|
+
}
|
|
2416
|
+
},
|
|
2353
2417
|
checked: switchChecked,
|
|
2354
2418
|
control: React.createElement(Switch, null),
|
|
2355
2419
|
label: column.Header,
|
|
@@ -2394,10 +2458,8 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
|
|
|
2394
2458
|
return setAnchorEl(null);
|
|
2395
2459
|
},
|
|
2396
2460
|
MenuListProps: {
|
|
2397
|
-
dense: tableInstance.state.densePadding
|
|
2398
|
-
|
|
2399
|
-
},
|
|
2400
|
-
sx: commonMenuItemStyles
|
|
2461
|
+
dense: tableInstance.state.densePadding
|
|
2462
|
+
}
|
|
2401
2463
|
}, React.createElement(Box, {
|
|
2402
2464
|
sx: {
|
|
2403
2465
|
display: 'flex',
|
|
@@ -2774,6 +2836,7 @@ var MRT_DefaultLocalization_EN = {
|
|
|
2774
2836
|
filterMenuItemEmpty: 'Empty',
|
|
2775
2837
|
filterMenuItemEndsWith: 'Ends With',
|
|
2776
2838
|
filterMenuItemEquals: 'Equals',
|
|
2839
|
+
changeFilterMode: 'Change filter mode',
|
|
2777
2840
|
filterMenuItemFuzzy: 'Fuzzy Match (Default)',
|
|
2778
2841
|
filterMenuItemNotEmpty: 'Not Empty',
|
|
2779
2842
|
filterMenuItemNotEquals: 'Not Equals',
|
|
@@ -2832,6 +2895,19 @@ var MRT_Default_Icons = {
|
|
|
2832
2895
|
};
|
|
2833
2896
|
|
|
2834
2897
|
var _excluded = ["defaultColumn", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
|
|
2898
|
+
var MRT_FILTER_TYPE;
|
|
2899
|
+
|
|
2900
|
+
(function (MRT_FILTER_TYPE) {
|
|
2901
|
+
MRT_FILTER_TYPE["CONTAINS"] = "contains";
|
|
2902
|
+
MRT_FILTER_TYPE["EMPTY"] = "empty";
|
|
2903
|
+
MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
|
|
2904
|
+
MRT_FILTER_TYPE["EQUALS"] = "equals";
|
|
2905
|
+
MRT_FILTER_TYPE["FUZZY"] = "fuzzy";
|
|
2906
|
+
MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
|
|
2907
|
+
MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
|
|
2908
|
+
MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
|
|
2909
|
+
})(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
|
|
2910
|
+
|
|
2835
2911
|
var MaterialReactTable = (function (_ref) {
|
|
2836
2912
|
var _ref$defaultColumn = _ref.defaultColumn,
|
|
2837
2913
|
defaultColumn = _ref$defaultColumn === void 0 ? {
|
|
@@ -2862,4 +2938,5 @@ var MaterialReactTable = (function (_ref) {
|
|
|
2862
2938
|
});
|
|
2863
2939
|
|
|
2864
2940
|
export default MaterialReactTable;
|
|
2941
|
+
export { MRT_FILTER_TYPE };
|
|
2865
2942
|
//# sourceMappingURL=material-react-table.esm.js.map
|