material-react-table 0.7.0-alpha.11 → 0.7.0-alpha.12

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.7.0-alpha.11",
2
+ "version": "0.7.0-alpha.12",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI implementation of react-table, inspired by material-table and the MUI X DataGrid, written from the ground up in TypeScript.",
@@ -114,7 +114,7 @@ export type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<
114
114
  setIsDensePadding: Dispatch<SetStateAction<boolean>>;
115
115
  setIsFullScreen: Dispatch<SetStateAction<boolean>>;
116
116
  setShowFilters: Dispatch<SetStateAction<boolean>>;
117
- setShowSearch: Dispatch<SetStateAction<boolean>>;
117
+ setShowGlobalFilter: Dispatch<SetStateAction<boolean>>;
118
118
  };
119
119
 
120
120
  export type MRT_TableState<D extends Record<string, any> = {}> = Omit<
@@ -127,7 +127,7 @@ export type MRT_TableState<D extends Record<string, any> = {}> = Omit<
127
127
  isDensePadding: boolean;
128
128
  isFullScreen: boolean;
129
129
  showFilters: boolean;
130
- showSearch: boolean;
130
+ showGlobalFilter: boolean;
131
131
  pagination: Partial<PaginationState>;
132
132
  };
133
133
 
@@ -562,15 +562,6 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
562
562
  tableInstance: MRT_TableInstance<D>;
563
563
  event: MouseEvent<HTMLTableCellElement>;
564
564
  }) => void;
565
- onColumnHide?: ({
566
- column,
567
- columnVisibility,
568
- tableInstance,
569
- }: {
570
- column: MRT_ColumnInstance<D>;
571
- columnVisibility: VisibilityState;
572
- tableInstance: MRT_TableInstance<D>;
573
- }) => void;
574
565
  onDetailPanelClick?: ({
575
566
  event,
576
567
  row,
@@ -631,6 +622,51 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
631
622
  selectedRows: MRT_Row<D>[];
632
623
  tableInstance: MRT_TableInstance<D>;
633
624
  }) => void;
625
+ onToggleColumnVisibility?: ({
626
+ column,
627
+ columnVisibility,
628
+ tableInstance,
629
+ }: {
630
+ column: MRT_ColumnInstance<D>;
631
+ columnVisibility: VisibilityState;
632
+ tableInstance: MRT_TableInstance<D>;
633
+ }) => void;
634
+ onToggleDensePadding?: ({
635
+ event,
636
+ isDensePadding,
637
+ tableInstance,
638
+ }: {
639
+ event: MouseEvent<HTMLButtonElement>;
640
+ isDensePadding: boolean;
641
+ tableInstance: MRT_TableInstance<D>;
642
+ }) => void;
643
+ onToggleFullScreen?: ({
644
+ event,
645
+ isFullScreen,
646
+ tableInstance,
647
+ }: {
648
+ event: MouseEvent<HTMLButtonElement>;
649
+ isFullScreen: boolean;
650
+ tableInstance: MRT_TableInstance<D>;
651
+ }) => void;
652
+ onToggleShowFilters?: ({
653
+ event,
654
+ showFilters,
655
+ tableInstance,
656
+ }: {
657
+ event: MouseEvent<HTMLButtonElement>;
658
+ showFilters: boolean;
659
+ tableInstance: MRT_TableInstance<D>;
660
+ }) => void;
661
+ onToggleShowGlobalFilter?: ({
662
+ event,
663
+ showGlobalFilter,
664
+ tableInstance,
665
+ }: {
666
+ event: MouseEvent<HTMLButtonElement>;
667
+ showGlobalFilter: boolean;
668
+ tableInstance: MRT_TableInstance<D>;
669
+ }) => void;
634
670
  positionActionsColumn?: 'first' | 'last';
635
671
  positionPagination?: 'bottom' | 'top' | 'both';
636
672
  positionToolbarActions?: 'bottom' | 'top';
@@ -665,14 +701,14 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
665
701
  }) => ReactNode;
666
702
  renderToolbarInternalActions?: ({
667
703
  tableInstance,
668
- MRT_ToggleSearchButton,
704
+ MRT_ToggleGlobalFilterButton,
669
705
  MRT_ToggleFiltersButton,
670
706
  MRT_ShowHideColumnsButton,
671
707
  MRT_ToggleDensePaddingButton,
672
708
  MRT_FullScreenToggleButton,
673
709
  }: {
674
710
  tableInstance: MRT_TableInstance<D>;
675
- MRT_ToggleSearchButton: FC<
711
+ MRT_ToggleGlobalFilterButton: FC<
676
712
  IconButtonProps & { tableInstance: MRT_TableInstance<D> }
677
713
  >;
678
714
  MRT_ToggleFiltersButton: FC<
@@ -1,4 +1,4 @@
1
- import React, { FC } from 'react';
1
+ import React, { FC, MouseEvent } from 'react';
2
2
  import { IconButton, IconButtonProps, Tooltip } from '@mui/material';
3
3
  import { MRT_TableInstance } from '..';
4
4
 
@@ -15,17 +15,27 @@ export const MRT_FullScreenToggleButton: FC<Props> = ({
15
15
  options: {
16
16
  icons: { FullscreenExitIcon, FullscreenIcon },
17
17
  localization,
18
+ onToggleFullScreen,
18
19
  },
19
20
  setIsFullScreen,
20
21
  } = tableInstance;
21
22
 
22
23
  const { isFullScreen } = getState();
23
24
 
25
+ const handleToggleFullScreen = (event: MouseEvent<HTMLButtonElement>) => {
26
+ onToggleFullScreen?.({
27
+ event,
28
+ isFullScreen: !isFullScreen,
29
+ tableInstance,
30
+ });
31
+ setIsFullScreen(!isFullScreen);
32
+ };
33
+
24
34
  return (
25
35
  <Tooltip arrow title={localization.toggleFullScreen}>
26
36
  <IconButton
27
37
  aria-label={localization.showHideFilters}
28
- onClick={() => setIsFullScreen(!isFullScreen)}
38
+ onClick={handleToggleFullScreen}
29
39
  size="small"
30
40
  {...rest}
31
41
  >
@@ -1,4 +1,4 @@
1
- import React, { FC } from 'react';
1
+ import React, { FC, MouseEvent } from 'react';
2
2
  import { IconButton, IconButtonProps, Tooltip } from '@mui/material';
3
3
  import { MRT_TableInstance } from '..';
4
4
 
@@ -15,17 +15,27 @@ export const MRT_ToggleDensePaddingButton: FC<Props> = ({
15
15
  options: {
16
16
  icons: { DensityMediumIcon, DensitySmallIcon },
17
17
  localization,
18
+ onToggleDensePadding,
18
19
  },
19
20
  setIsDensePadding,
20
21
  } = tableInstance;
21
22
 
22
23
  const { isDensePadding } = getState();
23
24
 
25
+ const handleToggleDensePadding = (event: MouseEvent<HTMLButtonElement>) => {
26
+ onToggleDensePadding?.({
27
+ event,
28
+ isDensePadding: !isDensePadding,
29
+ tableInstance,
30
+ });
31
+ setIsDensePadding(!isDensePadding);
32
+ };
33
+
24
34
  return (
25
35
  <Tooltip arrow title={localization.toggleDensePadding}>
26
36
  <IconButton
27
37
  aria-label={localization.toggleDensePadding}
28
- onClick={() => setIsDensePadding(!isDensePadding)}
38
+ onClick={handleToggleDensePadding}
29
39
  size="small"
30
40
  {...rest}
31
41
  >
@@ -1,4 +1,4 @@
1
- import React, { FC } from 'react';
1
+ import React, { FC, MouseEvent } from 'react';
2
2
  import { IconButton, IconButtonProps, Tooltip } from '@mui/material';
3
3
  import { MRT_TableInstance } from '..';
4
4
 
@@ -15,17 +15,27 @@ export const MRT_ToggleFiltersButton: FC<Props> = ({
15
15
  options: {
16
16
  icons: { FilterListIcon, FilterListOffIcon },
17
17
  localization,
18
+ onToggleShowFilters,
18
19
  },
19
20
  setShowFilters,
20
21
  } = tableInstance;
21
22
 
22
23
  const { showFilters } = getState();
23
24
 
25
+ const handleToggleShowFilters = (event: MouseEvent<HTMLButtonElement>) => {
26
+ onToggleShowFilters?.({
27
+ event,
28
+ showFilters: !showFilters,
29
+ tableInstance,
30
+ });
31
+ setShowFilters(!showFilters);
32
+ };
33
+
24
34
  return (
25
35
  <Tooltip arrow title={localization.showHideFilters}>
26
36
  <IconButton
27
37
  aria-label={localization.showHideFilters}
28
- onClick={() => setShowFilters(!showFilters)}
38
+ onClick={handleToggleShowFilters}
29
39
  size="small"
30
40
  {...rest}
31
41
  >
@@ -1,4 +1,4 @@
1
- import React, { FC } from 'react';
1
+ import React, { FC, MouseEvent } from 'react';
2
2
  import { IconButton, IconButtonProps, Tooltip } from '@mui/material';
3
3
  import { MRT_TableInstance } from '..';
4
4
 
@@ -6,7 +6,7 @@ interface Props extends IconButtonProps {
6
6
  tableInstance: MRT_TableInstance;
7
7
  }
8
8
 
9
- export const MRT_ToggleSearchButton: FC<Props> = ({
9
+ export const MRT_ToggleGlobalFilterButton: FC<Props> = ({
10
10
  tableInstance,
11
11
  ...rest
12
12
  }) => {
@@ -17,19 +17,25 @@ export const MRT_ToggleSearchButton: FC<Props> = ({
17
17
  idPrefix,
18
18
  localization,
19
19
  muiSearchTextFieldProps,
20
+ onToggleShowGlobalFilter,
20
21
  },
21
- setShowSearch,
22
+ setShowGlobalFilter,
22
23
  } = tableInstance;
23
24
 
24
- const { showSearch } = getState();
25
+ const { showGlobalFilter } = getState();
25
26
 
26
27
  const textFieldProps =
27
28
  muiSearchTextFieldProps instanceof Function
28
29
  ? muiSearchTextFieldProps({ tableInstance })
29
30
  : muiSearchTextFieldProps;
30
31
 
31
- const handleToggleSearch = () => {
32
- setShowSearch(!showSearch);
32
+ const handleToggleSearch = (event: MouseEvent<HTMLButtonElement>) => {
33
+ onToggleShowGlobalFilter?.({
34
+ event,
35
+ showGlobalFilter: !showGlobalFilter,
36
+ tableInstance,
37
+ });
38
+ setShowGlobalFilter(!showGlobalFilter);
33
39
  setTimeout(
34
40
  () =>
35
41
  document
@@ -44,7 +50,7 @@ export const MRT_ToggleSearchButton: FC<Props> = ({
44
50
  return (
45
51
  <Tooltip arrow title={localization.showHideSearch}>
46
52
  <IconButton size="small" onClick={handleToggleSearch} {...rest}>
47
- {showSearch ? <SearchOffIcon /> : <SearchIcon />}
53
+ {showGlobalFilter ? <SearchOffIcon /> : <SearchIcon />}
48
54
  </IconButton>
49
55
  </Tooltip>
50
56
  );
@@ -33,7 +33,7 @@ export const MRT_SearchTextField: FC<Props> = ({ tableInstance }) => {
33
33
  },
34
34
  } = tableInstance;
35
35
 
36
- const { globalFilter, showSearch } = getState();
36
+ const { globalFilter, showGlobalFilter } = getState();
37
37
 
38
38
  const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
39
39
  const [searchValue, setSearchValue] = useState(globalFilter ?? '');
@@ -61,7 +61,7 @@ export const MRT_SearchTextField: FC<Props> = ({ tableInstance }) => {
61
61
  : muiSearchTextFieldProps;
62
62
 
63
63
  return (
64
- <Collapse in={showSearch} orientation="horizontal">
64
+ <Collapse in={showGlobalFilter} orientation="horizontal">
65
65
  <TextField
66
66
  id={`mrt-${idPrefix}-search-text-field`}
67
67
  placeholder={localization.search}
@@ -16,7 +16,7 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
16
16
  }) => {
17
17
  const {
18
18
  getState,
19
- options: { onColumnHide },
19
+ options: { onToggleColumnVisibility },
20
20
  } = tableInstance;
21
21
 
22
22
  const { columnVisibility } = getState();
@@ -34,7 +34,7 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
34
34
  } else {
35
35
  column.toggleVisibility();
36
36
  }
37
- onColumnHide?.({
37
+ onToggleColumnVisibility?.({
38
38
  column,
39
39
  columnVisibility,
40
40
  tableInstance,
@@ -52,8 +52,8 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
52
52
  const [showFilters, setShowFilters] = useState(
53
53
  props.initialState?.showFilters ?? false,
54
54
  );
55
- const [showSearch, setShowSearch] = useState(
56
- props.initialState?.showSearch ?? false,
55
+ const [showGlobalFilter, setShowGlobalFilter] = useState(
56
+ props.initialState?.showGlobalFilter ?? false,
57
57
  );
58
58
  const [pagination, setPagination] = useState<PaginationState>({
59
59
  pageIndex: props.initialState?.pagination?.pageIndex ?? 0,
@@ -223,7 +223,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
223
223
  //@ts-ignore
224
224
  pagination,
225
225
  showFilters,
226
- showSearch,
226
+ showGlobalFilter,
227
227
  ...props.state,
228
228
  },
229
229
  }),
@@ -233,7 +233,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
233
233
  setIsDensePadding,
234
234
  setIsFullScreen,
235
235
  setShowFilters,
236
- setShowSearch,
236
+ setShowGlobalFilter,
237
237
  };
238
238
 
239
239
  return <MRT_TablePaper tableInstance={tableInstance} />;
@@ -4,7 +4,7 @@ import { MRT_FullScreenToggleButton } from '../buttons/MRT_FullScreenToggleButto
4
4
  import { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';
5
5
  import { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';
6
6
  import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
7
- import { MRT_ToggleSearchButton } from '../buttons/MRT_ToggleSearchButton';
7
+ import { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';
8
8
  import { MRT_TableInstance } from '..';
9
9
 
10
10
  interface Props {
@@ -32,7 +32,7 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
32
32
  MRT_ShowHideColumnsButton,
33
33
  MRT_ToggleDensePaddingButton,
34
34
  MRT_ToggleFiltersButton,
35
- MRT_ToggleSearchButton,
35
+ MRT_ToggleGlobalFilterButton,
36
36
  tableInstance,
37
37
  })}
38
38
  </>
@@ -49,7 +49,7 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
49
49
  }}
50
50
  >
51
51
  {enableFilters && enableGlobalFilter && (
52
- <MRT_ToggleSearchButton tableInstance={tableInstance} />
52
+ <MRT_ToggleGlobalFilterButton tableInstance={tableInstance} />
53
53
  )}
54
54
  {enableFilters && enableColumnFilters && (
55
55
  <MRT_ToggleFiltersButton tableInstance={tableInstance} />