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.
@@ -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, 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';
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$accessor;
230
+ var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
231
231
 
232
- return (_c$accessor = c.accessor) == null ? void 0 : _c$accessor.toString();
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: '0 !important',
303
- my: '0 !important'
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: 'fuzzy',
316
+ type: MRT_FILTER_TYPE.FUZZY,
460
317
  label: localization.filterMenuItemFuzzy,
461
318
  divider: false
462
319
  }, {
463
- type: 'contains',
320
+ type: MRT_FILTER_TYPE.CONTAINS,
464
321
  label: localization.filterMenuItemContains,
465
322
  divider: true
466
323
  }, {
467
- type: 'startsWith',
324
+ type: MRT_FILTER_TYPE.STARTS_WITH,
468
325
  label: localization.filterMenuItemStartsWith,
469
326
  divider: false
470
327
  }, {
471
- type: 'endsWith',
328
+ type: MRT_FILTER_TYPE.ENDS_WITH,
472
329
  label: localization.filterMenuItemEndsWith,
473
330
  divider: true
474
331
  }, {
475
- type: 'equals',
332
+ type: MRT_FILTER_TYPE.EQUALS,
476
333
  label: localization.filterMenuItemEquals,
477
334
  divider: false
478
335
  }, {
479
- type: 'notEquals',
336
+ type: MRT_FILTER_TYPE.NOT_EQUALS,
480
337
  label: localization.filterMenuItemNotEquals,
481
338
  divider: true
482
339
  }, {
483
- type: 'empty',
340
+ type: MRT_FILTER_TYPE.EMPTY,
484
341
  label: localization.filterMenuItemEmpty,
485
342
  divider: false
486
343
  }, {
487
- type: 'notEmpty',
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 (['empty', 'notEmpty'].includes(value)) {
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: type,
385
+ key: index,
530
386
  onClick: function onClick() {
531
387
  return handleSelectFilterType(type);
532
388
  },
533
389
  selected: type === filterType,
534
- value: type,
535
- sx: commonMenuItemStyles
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] = 'fuzzy', _extends2));
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 filterChipLabel = ['empty', 'notEmpty'].includes(filterType);
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 ? '' : filterPlaceholder,
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: "Change Filter Mode"
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 == null ? void 0 : filterValue.length) === 0,
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}', // @ts-ignore
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(ListItemIcon, null, React.createElement(EditIcon, null)), React.createElement(ListItemText, {
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
- disablePadding: true
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