material-react-table 0.5.6 → 0.5.7
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/material-react-table.cjs.development.js +154 -137
- 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 +155 -138
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/menus/MRT_ColumnActionMenu.d.ts +4 -0
- package/package.json +3 -4
- package/src/buttons/MRT_ShowHideColumnsButton.tsx +2 -0
- package/src/menus/MRT_ColumnActionMenu.tsx +9 -9
- package/src/menus/MRT_FilterTypeMenu.tsx +3 -0
- package/src/menus/MRT_RowActionMenu.tsx +6 -2
|
@@ -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, ListItemIcon, ListItemText, IconButton, TextField, InputAdornment, Tooltip, Chip, TableCell, Box, 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';
|
|
@@ -298,6 +298,151 @@ var useMRT = function useMRT() {
|
|
|
298
298
|
return useContext(MaterialReactTableContext);
|
|
299
299
|
};
|
|
300
300
|
|
|
301
|
+
var commonMenuItemStyles = {
|
|
302
|
+
py: '0 !important',
|
|
303
|
+
my: '0 !important'
|
|
304
|
+
};
|
|
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
|
+
|
|
301
446
|
var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
|
|
302
447
|
var anchorEl = _ref.anchorEl,
|
|
303
448
|
column = _ref.column,
|
|
@@ -386,7 +531,8 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
|
|
|
386
531
|
return handleSelectFilterType(type);
|
|
387
532
|
},
|
|
388
533
|
selected: type === filterType,
|
|
389
|
-
value: type
|
|
534
|
+
value: type,
|
|
535
|
+
sx: commonMenuItemStyles
|
|
390
536
|
}, label);
|
|
391
537
|
}));
|
|
392
538
|
};
|
|
@@ -524,139 +670,6 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
|
|
|
524
670
|
}));
|
|
525
671
|
};
|
|
526
672
|
|
|
527
|
-
var commonMenuItemStyles = {
|
|
528
|
-
display: 'flex',
|
|
529
|
-
alignItems: 'center'
|
|
530
|
-
};
|
|
531
|
-
var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
|
|
532
|
-
var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
|
|
533
|
-
|
|
534
|
-
var anchorEl = _ref.anchorEl,
|
|
535
|
-
column = _ref.column,
|
|
536
|
-
setAnchorEl = _ref.setAnchorEl;
|
|
537
|
-
|
|
538
|
-
var _useMRT = useMRT(),
|
|
539
|
-
disableColumnHiding = _useMRT.disableColumnHiding,
|
|
540
|
-
disableFilters = _useMRT.disableFilters,
|
|
541
|
-
disableSortBy = _useMRT.disableSortBy,
|
|
542
|
-
enableColumnGrouping = _useMRT.enableColumnGrouping,
|
|
543
|
-
_useMRT$icons = _useMRT.icons,
|
|
544
|
-
ArrowRightIcon = _useMRT$icons.ArrowRightIcon,
|
|
545
|
-
ClearAllIcon = _useMRT$icons.ClearAllIcon,
|
|
546
|
-
DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
|
|
547
|
-
FilterListIcon = _useMRT$icons.FilterListIcon,
|
|
548
|
-
SortIcon = _useMRT$icons.SortIcon,
|
|
549
|
-
VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
|
|
550
|
-
idPrefix = _useMRT.idPrefix,
|
|
551
|
-
localization = _useMRT.localization,
|
|
552
|
-
setShowFilters = _useMRT.setShowFilters,
|
|
553
|
-
tableInstance = _useMRT.tableInstance;
|
|
554
|
-
|
|
555
|
-
var _useState = useState(null),
|
|
556
|
-
filterMenuAnchorEl = _useState[0],
|
|
557
|
-
setFilterMenuAnchorEl = _useState[1];
|
|
558
|
-
|
|
559
|
-
var handleClearSort = function handleClearSort() {
|
|
560
|
-
column.clearSortBy();
|
|
561
|
-
setAnchorEl(null);
|
|
562
|
-
};
|
|
563
|
-
|
|
564
|
-
var handleSortAsc = function handleSortAsc() {
|
|
565
|
-
column.toggleSortBy(false);
|
|
566
|
-
setAnchorEl(null);
|
|
567
|
-
};
|
|
568
|
-
|
|
569
|
-
var handleSortDesc = function handleSortDesc() {
|
|
570
|
-
column.toggleSortBy(true);
|
|
571
|
-
setAnchorEl(null);
|
|
572
|
-
};
|
|
573
|
-
|
|
574
|
-
var handleHideColumn = function handleHideColumn() {
|
|
575
|
-
column.toggleHidden();
|
|
576
|
-
setAnchorEl(null);
|
|
577
|
-
};
|
|
578
|
-
|
|
579
|
-
var handleGroupByColumn = function handleGroupByColumn() {
|
|
580
|
-
column.toggleGroupBy();
|
|
581
|
-
setAnchorEl(null);
|
|
582
|
-
};
|
|
583
|
-
|
|
584
|
-
var handleFilterByColumn = function handleFilterByColumn() {
|
|
585
|
-
setShowFilters(true);
|
|
586
|
-
setTimeout(function () {
|
|
587
|
-
var _document$getElementB, _column$muiTableHeadC, _column$muiTableHeadC2;
|
|
588
|
-
|
|
589
|
-
return (_document$getElementB = document.getElementById( // @ts-ignore
|
|
590
|
-
(_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();
|
|
591
|
-
}, 200);
|
|
592
|
-
setAnchorEl(null);
|
|
593
|
-
};
|
|
594
|
-
|
|
595
|
-
var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
|
|
596
|
-
event.stopPropagation();
|
|
597
|
-
setFilterMenuAnchorEl(event.currentTarget);
|
|
598
|
-
};
|
|
599
|
-
|
|
600
|
-
return React.createElement(Menu, {
|
|
601
|
-
anchorEl: anchorEl,
|
|
602
|
-
open: !!anchorEl,
|
|
603
|
-
onClose: function onClose() {
|
|
604
|
-
return setAnchorEl(null);
|
|
605
|
-
},
|
|
606
|
-
MenuListProps: {
|
|
607
|
-
dense: tableInstance.state.densePadding,
|
|
608
|
-
disablePadding: true
|
|
609
|
-
}
|
|
610
|
-
}, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
|
|
611
|
-
key: 1,
|
|
612
|
-
disabled: !column.isSorted,
|
|
613
|
-
onClick: handleClearSort,
|
|
614
|
-
sx: commonMenuItemStyles
|
|
615
|
-
}, React.createElement(ListItemIcon, null, React.createElement(ClearAllIcon, null)), React.createElement(ListItemText, null, localization.columnActionMenuItemClearSort)), React.createElement(MenuItem, {
|
|
616
|
-
disabled: column.isSorted && !column.isSortedDesc,
|
|
617
|
-
key: 2,
|
|
618
|
-
onClick: handleSortAsc,
|
|
619
|
-
sx: commonMenuItemStyles
|
|
620
|
-
}, 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, {
|
|
621
|
-
divider: !disableFilters || enableColumnGrouping || !disableColumnHiding,
|
|
622
|
-
key: 3,
|
|
623
|
-
disabled: column.isSorted && column.isSortedDesc,
|
|
624
|
-
onClick: handleSortDesc,
|
|
625
|
-
sx: commonMenuItemStyles
|
|
626
|
-
}, React.createElement(ListItemIcon, null, React.createElement(SortIcon, {
|
|
627
|
-
style: {
|
|
628
|
-
transform: 'rotate(180deg) scaleX(-1)'
|
|
629
|
-
}
|
|
630
|
-
})), React.createElement(ListItemText, null, (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(MenuItem, {
|
|
631
|
-
divider: enableColumnGrouping || !disableColumnHiding,
|
|
632
|
-
key: 1,
|
|
633
|
-
onClick: handleFilterByColumn,
|
|
634
|
-
sx: commonMenuItemStyles
|
|
635
|
-
}, 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, {
|
|
636
|
-
onClick: handleOpenFilterModeMenu,
|
|
637
|
-
onMouseEnter: handleOpenFilterModeMenu,
|
|
638
|
-
size: "small",
|
|
639
|
-
sx: {
|
|
640
|
-
p: 0
|
|
641
|
-
}
|
|
642
|
-
}, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_FilterTypeMenu, {
|
|
643
|
-
anchorEl: filterMenuAnchorEl,
|
|
644
|
-
column: column,
|
|
645
|
-
key: 2,
|
|
646
|
-
setAnchorEl: setFilterMenuAnchorEl,
|
|
647
|
-
onSelect: handleFilterByColumn
|
|
648
|
-
})], enableColumnGrouping && column.canGroupBy && [React.createElement(MenuItem, {
|
|
649
|
-
divider: !disableColumnHiding,
|
|
650
|
-
key: 2,
|
|
651
|
-
onClick: handleGroupByColumn,
|
|
652
|
-
sx: commonMenuItemStyles
|
|
653
|
-
}, 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(MenuItem, {
|
|
654
|
-
key: 1,
|
|
655
|
-
onClick: handleHideColumn,
|
|
656
|
-
sx: commonMenuItemStyles
|
|
657
|
-
}, 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))))]);
|
|
658
|
-
};
|
|
659
|
-
|
|
660
673
|
var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
|
|
661
674
|
var column = _ref.column;
|
|
662
675
|
|
|
@@ -1145,8 +1158,11 @@ var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
|
|
|
1145
1158
|
disablePadding: true
|
|
1146
1159
|
}
|
|
1147
1160
|
}, enableRowEditing && React.createElement(MenuItem, {
|
|
1148
|
-
onClick: handleEdit
|
|
1149
|
-
|
|
1161
|
+
onClick: handleEdit,
|
|
1162
|
+
sx: commonMenuItemStyles
|
|
1163
|
+
}, React.createElement(ListItemIcon, null, React.createElement(EditIcon, null)), React.createElement(ListItemText, {
|
|
1164
|
+
sx: commonMenuItemStyles
|
|
1165
|
+
}, localization.rowActionMenuItemEdit)), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
|
|
1150
1166
|
return setAnchorEl(null);
|
|
1151
1167
|
})) != null ? _renderRowActionMenuI : null);
|
|
1152
1168
|
};
|
|
@@ -2380,7 +2396,8 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
|
|
|
2380
2396
|
MenuListProps: {
|
|
2381
2397
|
dense: tableInstance.state.densePadding,
|
|
2382
2398
|
disablePadding: true
|
|
2383
|
-
}
|
|
2399
|
+
},
|
|
2400
|
+
sx: commonMenuItemStyles
|
|
2384
2401
|
}, React.createElement(Box, {
|
|
2385
2402
|
sx: {
|
|
2386
2403
|
display: 'flex',
|