material-react-table 0.3.4 → 0.3.5

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.
Files changed (60) hide show
  1. package/dist/MaterialReactTable.d.ts +8 -3
  2. package/dist/body/MRT_TableBodyCell.d.ts +3 -0
  3. package/dist/buttons/MRT_FullScreenToggleButton.d.ts +4 -0
  4. package/dist/head/MRT_TableHeadCell.d.ts +1 -1
  5. package/dist/head/MRT_TableHeadCellActions.d.ts +5 -0
  6. package/dist/material-react-table.cjs.development.js +416 -277
  7. package/dist/material-react-table.cjs.development.js.map +1 -1
  8. package/dist/material-react-table.cjs.production.min.js +1 -1
  9. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  10. package/dist/material-react-table.esm.js +419 -280
  11. package/dist/material-react-table.esm.js.map +1 -1
  12. package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +5 -0
  13. package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +5 -0
  14. package/dist/{useMaterialReactTable.d.ts → useMRT.d.ts} +6 -3
  15. package/dist/utils/localization.d.ts +6 -0
  16. package/package.json +14 -14
  17. package/src/@types/react-table-config.d.ts +56 -31
  18. package/src/MaterialReactTable.tsx +64 -18
  19. package/src/body/MRT_TableBody.tsx +2 -2
  20. package/src/body/MRT_TableBodyCell.tsx +16 -9
  21. package/src/body/MRT_TableBodyRow.tsx +22 -7
  22. package/src/body/MRT_TableDetailPanel.tsx +14 -5
  23. package/src/buttons/MRT_EditActionButtons.tsx +11 -4
  24. package/src/buttons/MRT_ExpandAllButton.tsx +6 -3
  25. package/src/buttons/MRT_ExpandButton.tsx +9 -3
  26. package/src/buttons/MRT_FullScreenToggleButton.tsx +23 -0
  27. package/src/buttons/MRT_ShowHideColumnsButton.tsx +43 -5
  28. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +7 -3
  29. package/src/buttons/MRT_ToggleFiltersButton.tsx +2 -2
  30. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +7 -3
  31. package/src/buttons/MRT_ToggleSearchButton.tsx +7 -3
  32. package/src/footer/MRT_TableFooter.tsx +6 -3
  33. package/src/footer/MRT_TableFooterCell.tsx +5 -3
  34. package/src/footer/MRT_TableFooterRow.tsx +17 -6
  35. package/src/head/MRT_TableHead.tsx +9 -4
  36. package/src/head/MRT_TableHeadCell.tsx +11 -7
  37. package/src/head/MRT_TableHeadCellActions.tsx +18 -0
  38. package/src/head/MRT_TableHeadRow.tsx +19 -12
  39. package/src/inputs/MRT_DensePaddingSwitch.tsx +2 -2
  40. package/src/inputs/MRT_EditCellTextField.tsx +2 -2
  41. package/src/inputs/MRT_FilterTextField.tsx +6 -3
  42. package/src/inputs/MRT_SearchTextField.tsx +15 -7
  43. package/src/inputs/MRT_SelectAllCheckbox.tsx +3 -2
  44. package/src/inputs/MRT_SelectCheckbox.tsx +3 -2
  45. package/src/menus/MRT_ColumnActionMenu.tsx +40 -13
  46. package/src/menus/MRT_RowActionMenu.tsx +21 -6
  47. package/src/menus/MRT_ShowHideColumnsMenu.tsx +24 -15
  48. package/src/table/MRT_Table.tsx +3 -2
  49. package/src/table/MRT_TableContainer.tsx +30 -6
  50. package/src/table/MRT_TableSpacerCell.tsx +5 -3
  51. package/src/toolbar/MRT_TablePagination.tsx +9 -5
  52. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +102 -0
  53. package/src/toolbar/MRT_ToolbarBottom.tsx +14 -8
  54. package/src/toolbar/{MRT_ToolbarButtons.tsx → MRT_ToolbarInternalButtons.tsx} +11 -4
  55. package/src/toolbar/MRT_ToolbarTop.tsx +19 -11
  56. package/src/{useMaterialReactTable.tsx → useMRT.tsx} +43 -19
  57. package/src/utils/localization.ts +14 -2
  58. package/dist/toolbar/MRT_ToolbarButtons.d.ts +0 -5
  59. package/dist/utils/useMRTCalcs.d.ts +0 -11
  60. package/src/utils/useMRTCalcs.tsx +0 -40
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ interface Props {
3
+ }
4
+ export declare const MRT_ToolbarAlertBanner: FC<Props>;
5
+ export {};
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ interface Props {
3
+ }
4
+ export declare const MRT_ToolbarInternalButtons: FC<Props>;
5
+ export {};
@@ -1,12 +1,15 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
2
  import { Row, TableInstance } from 'react-table';
3
3
  import { MaterialReactTableProps } from './MaterialReactTable';
4
- import { UseMRTCalcs } from './utils/useMRTCalcs';
5
- export interface UseMaterialReactTable<D extends {}> extends MaterialReactTableProps<D>, UseMRTCalcs {
4
+ export interface UseMRT<D extends {} = {}> extends MaterialReactTableProps<D> {
5
+ anyRowsCanExpand: boolean;
6
+ anyRowsExpanded: boolean;
6
7
  currentEditingRow: Row<D> | null;
7
8
  densePadding: boolean;
9
+ fullScreen: boolean;
8
10
  setCurrentEditingRow: (currentRowEditingId: Row<D> | null) => void;
9
11
  setDensePadding: (densePadding: boolean) => void;
12
+ setFullScreen: (fullScreen: boolean) => void;
10
13
  setShowFilters: (showFilters: boolean) => void;
11
14
  setShowSearch: (showSearch: boolean) => void;
12
15
  showFilters: boolean;
@@ -14,4 +17,4 @@ export interface UseMaterialReactTable<D extends {}> extends MaterialReactTableP
14
17
  tableInstance: TableInstance<D>;
15
18
  }
16
19
  export declare const MaterialReactTableProvider: <D extends {}>(props: React.PropsWithChildren<MaterialReactTableProps<D>>) => JSX.Element;
17
- export declare const useMaterialReactTable: <D extends {}>() => UseMaterialReactTable<D>;
20
+ export declare const useMRT: <D extends {}>() => UseMRT<D>;
@@ -7,6 +7,8 @@ export interface MRT_Localization {
7
7
  columnActionMenuItemSortAsc: string;
8
8
  columnActionMenuItemSortDesc: string;
9
9
  columnActionMenuItemUnGroupBy: string;
10
+ columnShowHideMenuHideAll: string;
11
+ columnShowHideMenuShowAll: string;
10
12
  expandAllButtonTitle: string;
11
13
  expandButtonTitle: string;
12
14
  filterTextFieldClearButtonTitle: string;
@@ -23,6 +25,10 @@ export interface MRT_Localization {
23
25
  showHideColumnsButtonTitle: string;
24
26
  toggleDensePaddingSwitchTitle: string;
25
27
  toggleFilterButtonTitle: string;
28
+ toggleFullScreenButtonTitle: string;
26
29
  toggleSearchButtonTitle: string;
30
+ toolbarAlertSelectionMessage: string;
31
+ toolbarAlertGroupedByMessage: string;
32
+ toolbarAlertGroupedThenByMessage: string;
27
33
  }
28
34
  export declare const defaultLocalization: MRT_Localization;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.4",
2
+ "version": "0.3.5",
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 DataGrid, written from the ground up in TypeScript.",
@@ -56,23 +56,23 @@
56
56
  }
57
57
  ],
58
58
  "devDependencies": {
59
- "@babel/core": "^7.17.0",
59
+ "@babel/core": "^7.17.2",
60
60
  "@emotion/react": "^11.7.1",
61
61
  "@emotion/styled": "^11.6.0",
62
62
  "@etchteam/storybook-addon-status": "^4.2.0",
63
- "@faker-js/faker": "^6.0.0-alpha.5",
64
- "@mui/icons-material": "^5.3.1",
65
- "@mui/material": "^5.4.0",
66
- "@size-limit/preset-small-lib": "^7.0.5",
67
- "@storybook/addon-a11y": "^6.4.18",
68
- "@storybook/addon-actions": "^6.4.18",
63
+ "@faker-js/faker": "^6.0.0-alpha.6",
64
+ "@mui/icons-material": "^5.4.1",
65
+ "@mui/material": "^5.4.1",
66
+ "@size-limit/preset-small-lib": "^7.0.8",
67
+ "@storybook/addon-a11y": "^6.4.19",
68
+ "@storybook/addon-actions": "^6.4.19",
69
69
  "@storybook/addon-console": "^1.2.3",
70
- "@storybook/addon-essentials": "^6.4.18",
70
+ "@storybook/addon-essentials": "^6.4.19",
71
71
  "@storybook/addon-info": "^5.3.21",
72
- "@storybook/addon-links": "^6.4.18",
73
- "@storybook/addon-storysource": "^6.4.18",
74
- "@storybook/addons": "^6.4.18",
75
- "@storybook/react": "^6.4.18",
72
+ "@storybook/addon-links": "^6.4.19",
73
+ "@storybook/addon-storysource": "^6.4.19",
74
+ "@storybook/addons": "^6.4.19",
75
+ "@storybook/react": "^6.4.19",
76
76
  "@types/faker": "^6.6.8",
77
77
  "@types/react": "^17.0.39",
78
78
  "@types/react-dom": "^17.0.11",
@@ -84,7 +84,7 @@
84
84
  "react-dom": "^17.0.2",
85
85
  "react-is": "^17.0.2",
86
86
  "react-table": "^7.7.0",
87
- "size-limit": "^7.0.5",
87
+ "size-limit": "^7.0.8",
88
88
  "storybook-addon-paddings": "^4.2.1",
89
89
  "storybook-addon-performance": "^0.16.1",
90
90
  "storybook-dark-mode": "^1.0.8",
@@ -50,23 +50,40 @@ import {
50
50
  UseSortByState,
51
51
  } from 'react-table';
52
52
 
53
- export type MRT_ColumnInterface<D extends {} = {}> = UseFiltersColumnOptions<D> &
54
- UseGlobalFiltersColumnOptions<D> &
55
- UseGroupByColumnOptions<D> &
56
- UseResizeColumnsColumnOptions<D> &
57
- UseSortByColumnOptions<D> & {
58
- disableFilters?: boolean;
59
- Filter?: ({ column }: { column: HeaderGroup<D> }) => ReactNode;
60
- editable?: boolean;
61
- Edit?: ({ cell, onChange }: { cell: Cell<D> }) => ReactNode;
62
- muiTableBodyCellProps?: TableCellProps | ((cell: Cell<D>) => TableCellProps);
63
- muiTableHeadCellProps?: TableCellProps | ((column: Column<D>) => TableCellProps);
64
- muiTableFooterCellProps?: TableCellProps | ((column: Column<D>) => TableCellProps);
65
- muiTableBodyCellEditTextFieldProps?: TextFieldProps | ((cell: Cell<D>) => TextFieldProps);
66
- muiTableHeadCellFilterTextFieldProps?: TextFieldProps | ((column: Column<D>) => TextFieldProps);
67
- onCellEditChange?: (event: ChangeEvent<HTMLInputElement>, cell: Cell<D>) => void;
68
- onFilterChange?: (event: ChangeEvent<HTMLInputElement>, filterValue: any) => void;
69
- };
53
+ export type MRT_ColumnInterface<D extends {} = {}> =
54
+ UseFiltersColumnOptions<D> &
55
+ UseGlobalFiltersColumnOptions<D> &
56
+ UseGroupByColumnOptions<D> &
57
+ UseResizeColumnsColumnOptions<D> &
58
+ UseSortByColumnOptions<D> & {
59
+ disableFilters?: boolean;
60
+ Filter?: ({ column }: { column: HeaderGroup<D> }) => ReactNode;
61
+ editable?: boolean;
62
+ Edit?: ({ cell, onChange }: { cell: Cell<D> }) => ReactNode;
63
+ muiTableBodyCellProps?:
64
+ | TableCellProps
65
+ | ((cell: Cell<D>) => TableCellProps);
66
+ muiTableHeadCellProps?:
67
+ | TableCellProps
68
+ | ((column: Column<D>) => TableCellProps);
69
+ muiTableFooterCellProps?:
70
+ | TableCellProps
71
+ | ((column: Column<D>) => TableCellProps);
72
+ muiTableBodyCellEditTextFieldProps?:
73
+ | TextFieldProps
74
+ | ((cell: Cell<D>) => TextFieldProps);
75
+ muiTableHeadCellFilterTextFieldProps?:
76
+ | TextFieldProps
77
+ | ((column: Column<D>) => TextFieldProps);
78
+ onCellEditChange?: (
79
+ event: ChangeEvent<HTMLInputElement>,
80
+ cell: Cell<D>,
81
+ ) => void;
82
+ onFilterChange?: (
83
+ event: ChangeEvent<HTMLInputElement>,
84
+ filterValue: any,
85
+ ) => void;
86
+ };
70
87
 
71
88
  declare module 'react-table' {
72
89
  export interface TableOptions<D extends Record<string, unknown>>
@@ -81,14 +98,16 @@ declare module 'react-table' {
81
98
  UseSortByOptions<D>,
82
99
  Record<string, any> {}
83
100
 
84
- export interface Hooks<D extends Record<string, unknown> = Record<string, unknown>>
85
- extends UseExpandedHooks<D>,
101
+ export interface Hooks<
102
+ D extends Record<string, unknown> = Record<string, unknown>,
103
+ > extends UseExpandedHooks<D>,
86
104
  UseGroupByHooks<D>,
87
105
  UseRowSelectHooks<D>,
88
106
  UseSortByHooks<D> {}
89
107
 
90
- export interface TableInstance<D extends Record<string, unknown> = Record<string, unknown>>
91
- extends UseColumnOrderInstanceProps<D>,
108
+ export interface TableInstance<
109
+ D extends Record<string, unknown> = Record<string, unknown>,
110
+ > extends UseColumnOrderInstanceProps<D>,
92
111
  UseExpandedInstanceProps<D>,
93
112
  UseFiltersInstanceProps<D>,
94
113
  UseGlobalFiltersInstanceProps<D>,
@@ -98,8 +117,9 @@ declare module 'react-table' {
98
117
  UseRowStateInstanceProps<D>,
99
118
  UseSortByInstanceProps<D> {}
100
119
 
101
- export interface TableState<D extends Record<string, unknown> = Record<string, unknown>>
102
- extends UseColumnOrderState<D>,
120
+ export interface TableState<
121
+ D extends Record<string, unknown> = Record<string, unknown>,
122
+ > extends UseColumnOrderState<D>,
103
123
  UseExpandedState<D>,
104
124
  UseFiltersState<D>,
105
125
  UseGlobalFiltersState<D>,
@@ -110,21 +130,26 @@ declare module 'react-table' {
110
130
  UseRowStateState<D>,
111
131
  UseSortByState<D> {}
112
132
 
113
- export interface ColumnInterface<D extends Record<string, unknown> = Record<string, unknown>>
114
- extends MRT_ColumnInterface {}
133
+ export interface ColumnInterface<
134
+ D extends Record<string, unknown> = Record<string, unknown>,
135
+ > extends MRT_ColumnInterface {}
115
136
 
116
- export interface ColumnInstance<D extends Record<string, unknown> = Record<string, unknown>>
117
- extends UseFiltersColumnProps<D>,
137
+ export interface ColumnInstance<
138
+ D extends Record<string, unknown> = Record<string, unknown>,
139
+ > extends UseFiltersColumnProps<D>,
118
140
  UseGroupByColumnProps<D>,
119
141
  UseResizeColumnsColumnProps<D>,
120
142
  UseSortByColumnProps<D> {}
121
143
 
122
- export interface Cell<D extends Record<string, unknown> = Record<string, unknown>, V = any>
123
- extends UseGroupByCellProps<D>,
144
+ export interface Cell<
145
+ D extends Record<string, unknown> = Record<string, unknown>,
146
+ V = any,
147
+ > extends UseGroupByCellProps<D>,
124
148
  UseRowStateCellProps<D> {}
125
149
 
126
- export interface Row<D extends Record<string, unknown> = Record<string, unknown>>
127
- extends UseExpandedRowProps<D>,
150
+ export interface Row<
151
+ D extends Record<string, unknown> = Record<string, unknown>,
152
+ > extends UseExpandedRowProps<D>,
128
153
  UseGroupByRowProps<D>,
129
154
  UseRowSelectRowProps<D>,
130
155
  UseRowStateRowProps<D> {}
@@ -1,5 +1,6 @@
1
1
  import React, { ChangeEvent, MouseEvent, ReactNode } from 'react';
2
2
  import {
3
+ AlertProps,
3
4
  TableBodyProps,
4
5
  TableCellProps,
5
6
  TableContainerProps,
@@ -29,7 +30,7 @@ import {
29
30
  UseSortByOptions,
30
31
  UseTableOptions,
31
32
  } from 'react-table';
32
- import { MaterialReactTableProvider } from './useMaterialReactTable';
33
+ import { MaterialReactTableProvider } from './useMRT';
33
34
  import { MRT_TableContainer } from './table/MRT_TableContainer';
34
35
  import { defaultLocalization, MRT_Localization } from './utils/localization';
35
36
  import { MRT_ColumnInterface } from './@types/react-table-config';
@@ -47,14 +48,17 @@ export type MaterialReactTableProps<D extends {} = {}> = TableOptions<D> &
47
48
  UseSortByOptions<D> & {
48
49
  columns: (Column<D> & MRT_ColumnInterface)[];
49
50
  defaultDensePadding?: boolean;
51
+ defaultFullScreen?: boolean;
50
52
  defaultShowFilters?: boolean;
51
53
  defaultShowSearchTextField?: boolean;
52
54
  disableColumnActions?: boolean;
53
55
  disableColumnHiding?: boolean;
54
56
  disableDensePaddingToggle?: boolean;
55
57
  disableExpandAll?: boolean;
58
+ disableFullScreenToggle?: boolean;
56
59
  disableSelectAll?: boolean;
57
60
  disableSubRowTree?: boolean;
61
+ enableRowNumbers?: boolean;
58
62
  enableColumnGrouping?: boolean;
59
63
  enableColumnResizing?: boolean;
60
64
  enableRowActions?: boolean;
@@ -69,44 +73,84 @@ export type MaterialReactTableProps<D extends {} = {}> = TableOptions<D> &
69
73
  isLoading?: boolean;
70
74
  localization?: Partial<MRT_Localization>;
71
75
  muiSearchTextFieldProps?: TextFieldProps;
72
- muiTableBodyCellEditTextFieldProps?: TextFieldProps | ((cell?: Cell<D>) => TextFieldProps);
73
- muiTableBodyCellProps?: TableCellProps | ((cell?: Cell<D>) => TableCellProps);
76
+ muiTableBodyCellEditTextFieldProps?:
77
+ | TextFieldProps
78
+ | ((cell?: Cell<D>) => TextFieldProps);
79
+ muiTableBodyCellProps?:
80
+ | TableCellProps
81
+ | ((cell?: Cell<D>) => TableCellProps);
74
82
  muiTableBodyProps?: TableBodyProps;
75
83
  muiTableBodyRowProps?: TableRowProps | ((row: Row<D>) => TableRowProps);
76
84
  muiTableContainerProps?: TableContainerProps;
77
- muiTableDetailPanelProps?: TableCellProps | ((row: Row<D>) => TableCellProps);
78
- muiTableFooterCellProps?: TableCellProps | ((column: Column<D>) => TableCellProps);
85
+ muiTableDetailPanelProps?:
86
+ | TableCellProps
87
+ | ((row: Row<D>) => TableCellProps);
88
+ muiTableFooterCellProps?:
89
+ | TableCellProps
90
+ | ((column: Column<D>) => TableCellProps);
79
91
  muiTableFooterProps?: TableFooterProps;
80
- muiTableFooterRowProps?: TableRowProps | ((footerGroup: HeaderGroup<D>) => TableRowProps);
81
- muiTableHeadCellFilterTextFieldProps?: TextFieldProps | ((column: Column<D>) => TextFieldProps);
82
- muiTableHeadCellProps?: TableCellProps | ((column: Column<D>) => TableCellProps);
92
+ muiTableFooterRowProps?:
93
+ | TableRowProps
94
+ | ((footerGroup: HeaderGroup<D>) => TableRowProps);
95
+ muiTableHeadCellFilterTextFieldProps?:
96
+ | TextFieldProps
97
+ | ((column: Column<D>) => TextFieldProps);
98
+ muiTableHeadCellProps?:
99
+ | TableCellProps
100
+ | ((column: Column<D>) => TableCellProps);
83
101
  muiTableHeadProps?: TableHeadProps;
84
- muiTableHeadRowProps?: TableRowProps | ((row: HeaderGroup<D>) => TableRowProps);
102
+ muiTableHeadRowProps?:
103
+ | TableRowProps
104
+ | ((row: HeaderGroup<D>) => TableRowProps);
85
105
  muiTablePaginationProps?:
86
106
  | Partial<TablePaginationProps>
87
107
  | ((tableInstance: TableInstance<D>) => Partial<TablePaginationProps>);
88
108
  muiTableProps?: TableProps;
89
- muiTableToolbarBottomProps?: ToolbarProps | ((tableInstance: TableInstance<D>) => ToolbarProps);
90
- muiTableToolbarTopProps?: ToolbarProps | ((tableInstance: TableInstance<D>) => ToolbarProps);
91
- onCellClick?: (event: MouseEvent<HTMLTableCellElement>, cell: Cell<D>) => void;
109
+ muiTableToolbarAlertBannerProps?:
110
+ | AlertProps
111
+ | ((tableInstance: TableInstance<D>) => AlertProps);
112
+ muiTableToolbarBottomProps?:
113
+ | ToolbarProps
114
+ | ((tableInstance: TableInstance<D>) => ToolbarProps);
115
+ muiTableToolbarTopProps?:
116
+ | ToolbarProps
117
+ | ((tableInstance: TableInstance<D>) => ToolbarProps);
118
+ onCellClick?: (
119
+ event: MouseEvent<HTMLTableCellElement>,
120
+ cell: Cell<D>,
121
+ ) => void;
92
122
  onColumnHide?: (column: Column<D>, visibleColumns: Column<D>[]) => void;
93
- onDetailPanelClick?: (event: MouseEvent<HTMLTableCellElement>, row: Row<D>) => void;
123
+ onDetailPanelClick?: (
124
+ event: MouseEvent<HTMLTableCellElement>,
125
+ row: Row<D>,
126
+ ) => void;
94
127
  onGlobalFilterChange?: (event: ChangeEvent<HTMLInputElement>) => void;
95
128
  onRowClick?: (event: MouseEvent<HTMLTableRowElement>, row: Row<D>) => void;
96
129
  onRowEditSubmit?: (row: Row<D>) => Promise<void> | void;
97
- onRowExpandChange?: (event: MouseEvent<HTMLButtonElement>, row: Row<D>) => void;
98
- onRowSelectChange?: (event: ChangeEvent, row: Row<D>, selectedRows: Row<D>[]) => void;
130
+ onRowExpandChange?: (
131
+ event: MouseEvent<HTMLButtonElement>,
132
+ row: Row<D>,
133
+ ) => void;
134
+ onRowSelectChange?: (
135
+ event: ChangeEvent,
136
+ row: Row<D>,
137
+ selectedRows: Row<D>[],
138
+ ) => void;
99
139
  positionActionsColumn?: 'first' | 'last';
100
140
  positionPagination?: 'bottom' | 'top' | 'both';
101
141
  positionToolbarActions?: 'bottom' | 'top';
142
+ positionToolbarAlertBanner?: 'bottom' | 'top';
102
143
  renderDetailPanel?: (row: Row<D>) => ReactNode;
103
144
  renderRowActionMenuItems?: (
104
145
  rowData: Row<D>,
105
146
  tableInstance: TableInstance<D>,
106
147
  closeMenu: () => void,
107
148
  ) => ReactNode[];
108
- renderRowActions?: (row: Row<D>, tableInstance: TableInstance<D>) => ReactNode;
109
- renderToolbarActions?: (tableInstance: TableInstance<D>) => ReactNode;
149
+ renderRowActions?: (
150
+ row: Row<D>,
151
+ tableInstance: TableInstance<D>,
152
+ ) => ReactNode;
153
+ renderToolbarCustomActions?: (tableInstance: TableInstance<D>) => ReactNode;
110
154
  };
111
155
 
112
156
  export default <D extends {}>({
@@ -115,14 +159,16 @@ export default <D extends {}>({
115
159
  positionActionsColumn = 'first',
116
160
  positionPagination = 'bottom',
117
161
  positionToolbarActions = 'top',
162
+ positionToolbarAlertBanner = 'top',
118
163
  ...rest
119
164
  }: MaterialReactTableProps<D>) => (
120
165
  <MaterialReactTableProvider
121
166
  defaultColumn={defaultColumn}
122
167
  localization={{ ...defaultLocalization, ...localization }}
123
- positionPagination={positionPagination}
124
168
  positionActionsColumn={positionActionsColumn}
169
+ positionPagination={positionPagination}
125
170
  positionToolbarActions={positionToolbarActions}
171
+ positionToolbarAlertBanner={positionToolbarAlertBanner}
126
172
  {...rest}
127
173
  >
128
174
  <MRT_TableContainer />
@@ -1,7 +1,7 @@
1
1
  import React, { FC } from 'react';
2
2
  import { styled, TableBody as MuiTableBody } from '@mui/material';
3
3
  import { MRT_TableBodyRow } from './MRT_TableBodyRow';
4
- import { useMaterialReactTable } from '../useMaterialReactTable';
4
+ import { useMRT } from '../useMRT';
5
5
 
6
6
  const TableBody = styled(MuiTableBody)({
7
7
  overflowY: 'hidden',
@@ -10,7 +10,7 @@ const TableBody = styled(MuiTableBody)({
10
10
  interface Props {}
11
11
 
12
12
  export const MRT_TableBody: FC<Props> = () => {
13
- const { tableInstance, muiTableBodyProps, manualPagination } = useMaterialReactTable();
13
+ const { tableInstance, muiTableBodyProps, manualPagination } = useMRT();
14
14
 
15
15
  const rows = manualPagination ? tableInstance.rows : tableInstance.page;
16
16
 
@@ -1,10 +1,10 @@
1
1
  import React, { FC, MouseEvent } from 'react';
2
2
  import { styled, TableCell as MuiTableCell } from '@mui/material';
3
3
  import { Cell } from 'react-table';
4
- import { useMaterialReactTable } from '../useMaterialReactTable';
4
+ import { useMRT } from '../useMRT';
5
5
  import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';
6
6
 
7
- const TableCell = styled(MuiTableCell, {
7
+ export const MRT_StyledTableBodyCell = styled(MuiTableCell, {
8
8
  shouldForwardProp: (prop) => prop !== 'densePadding',
9
9
  })<{ densePadding?: boolean }>(({ densePadding }) => ({
10
10
  padding: densePadding ? '0.5rem' : '1rem',
@@ -17,11 +17,17 @@ interface Props {
17
17
  }
18
18
 
19
19
  export const MRT_TableBodyCell: FC<Props> = ({ cell }) => {
20
- const { onCellClick, muiTableBodyCellProps, densePadding, currentEditingRow } =
21
- useMaterialReactTable();
20
+ const {
21
+ onCellClick,
22
+ muiTableBodyCellProps,
23
+ densePadding,
24
+ currentEditingRow,
25
+ } = useMRT();
22
26
 
23
27
  const mTableCellBodyProps =
24
- muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps(cell) : muiTableBodyCellProps;
28
+ muiTableBodyCellProps instanceof Function
29
+ ? muiTableBodyCellProps(cell)
30
+ : muiTableBodyCellProps;
25
31
 
26
32
  const mcTableCellBodyProps =
27
33
  cell.column.muiTableBodyCellProps instanceof Function
@@ -40,9 +46,11 @@ export const MRT_TableBodyCell: FC<Props> = ({ cell }) => {
40
46
  };
41
47
 
42
48
  return (
43
- <TableCell
49
+ <MRT_StyledTableBodyCell
44
50
  densePadding={densePadding}
45
- onClick={(event: MouseEvent<HTMLTableCellElement>) => onCellClick?.(event, cell)}
51
+ onClick={(event: MouseEvent<HTMLTableCellElement>) =>
52
+ onCellClick?.(event, cell)
53
+ }
46
54
  {...tableCellProps}
47
55
  >
48
56
  {currentEditingRow?.id === cell.row.id ? (
@@ -56,7 +64,6 @@ export const MRT_TableBodyCell: FC<Props> = ({ cell }) => {
56
64
  ) : (
57
65
  cell.render('Cell')
58
66
  )}
59
- {}
60
- </TableCell>
67
+ </MRT_StyledTableBodyCell>
61
68
  );
62
69
  };
@@ -1,8 +1,11 @@
1
1
  import React, { FC, MouseEvent } from 'react';
2
2
  import { alpha, styled, TableRow as MuiTableRow } from '@mui/material';
3
3
  import { Row } from 'react-table';
4
- import { MRT_TableBodyCell } from './MRT_TableBodyCell';
5
- import { useMaterialReactTable } from '../useMaterialReactTable';
4
+ import {
5
+ MRT_StyledTableBodyCell,
6
+ MRT_TableBodyCell,
7
+ } from './MRT_TableBodyCell';
8
+ import { useMRT } from '../useMRT';
6
9
  import { MRT_TableDetailPanel } from './MRT_TableDetailPanel';
7
10
  import { MRT_ExpandButton } from '../buttons/MRT_ExpandButton';
8
11
  import { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';
@@ -11,7 +14,9 @@ import { MRT_ToggleRowActionMenuButton } from '../buttons/MRT_ToggleRowActionMen
11
14
  export const TableRow = styled(MuiTableRow, {
12
15
  shouldForwardProp: (prop) => prop !== 'isSelected',
13
16
  })<{ isSelected?: boolean }>(({ isSelected, theme }) => ({
14
- backgroundColor: isSelected ? alpha(theme.palette.primary.light, 0.1) : 'transparent',
17
+ backgroundColor: isSelected
18
+ ? alpha(theme.palette.primary.light, 0.1)
19
+ : 'transparent',
15
20
  }));
16
21
 
17
22
  interface Props {
@@ -22,15 +27,18 @@ export const MRT_TableBodyRow: FC<Props> = ({ row }) => {
22
27
  const {
23
28
  anyRowsCanExpand,
24
29
  enableRowActions,
30
+ enableRowNumbers,
25
31
  enableSelection,
26
32
  muiTableBodyRowProps,
27
33
  onRowClick,
28
34
  positionActionsColumn,
29
35
  renderDetailPanel,
30
- } = useMaterialReactTable();
36
+ } = useMRT();
31
37
 
32
38
  const mTableBodyRowProps =
33
- muiTableBodyRowProps instanceof Function ? muiTableBodyRowProps(row) : muiTableBodyRowProps;
39
+ muiTableBodyRowProps instanceof Function
40
+ ? muiTableBodyRowProps(row)
41
+ : muiTableBodyRowProps;
34
42
 
35
43
  const tableRowProps = {
36
44
  ...mTableBodyRowProps,
@@ -46,13 +54,20 @@ export const MRT_TableBodyRow: FC<Props> = ({ row }) => {
46
54
  <TableRow
47
55
  isSelected={row.isSelected}
48
56
  hover
49
- onClick={(event: MouseEvent<HTMLTableRowElement>) => onRowClick?.(event, row)}
57
+ onClick={(event: MouseEvent<HTMLTableRowElement>) =>
58
+ onRowClick?.(event, row)
59
+ }
50
60
  {...tableRowProps}
51
61
  >
62
+ {enableRowNumbers && (
63
+ <MRT_StyledTableBodyCell>{row.index + 1}</MRT_StyledTableBodyCell>
64
+ )}
52
65
  {enableRowActions && positionActionsColumn === 'first' && (
53
66
  <MRT_ToggleRowActionMenuButton row={row} />
54
67
  )}
55
- {(anyRowsCanExpand || renderDetailPanel) && <MRT_ExpandButton row={row} />}
68
+ {(anyRowsCanExpand || renderDetailPanel) && (
69
+ <MRT_ExpandButton row={row} />
70
+ )}
56
71
  {enableSelection && <MRT_SelectCheckbox row={row} />}
57
72
  {row.cells.map((cell) => (
58
73
  <MRT_TableBodyCell key={cell.getCellProps().key} cell={cell} />
@@ -1,7 +1,12 @@
1
1
  import React, { FC, MouseEvent } from 'react';
2
- import { Collapse, styled, TableCell as MuiTableCell, TableRow } from '@mui/material';
2
+ import {
3
+ Collapse,
4
+ styled,
5
+ TableCell as MuiTableCell,
6
+ TableRow,
7
+ } from '@mui/material';
3
8
  import { Row } from 'react-table';
4
- import { useMaterialReactTable } from '../useMaterialReactTable';
9
+ import { useMRT } from '../useMRT';
5
10
 
6
11
  const TableCell = styled(MuiTableCell, {
7
12
  shouldForwardProp: (prop) => prop !== 'isExpanded',
@@ -23,10 +28,12 @@ export const MRT_TableDetailPanel: FC<Props> = ({ row }) => {
23
28
  muiTableDetailPanelProps,
24
29
  muiTableBodyRowProps,
25
30
  onDetailPanelClick,
26
- } = useMaterialReactTable();
31
+ } = useMRT();
27
32
 
28
33
  const mTableBodyRowProps =
29
- muiTableBodyRowProps instanceof Function ? muiTableBodyRowProps(row) : muiTableBodyRowProps;
34
+ muiTableBodyRowProps instanceof Function
35
+ ? muiTableBodyRowProps(row)
36
+ : muiTableBodyRowProps;
30
37
 
31
38
  const tableRowProps = {
32
39
  ...mTableBodyRowProps,
@@ -54,7 +61,9 @@ export const MRT_TableDetailPanel: FC<Props> = ({ row }) => {
54
61
  <TableCell
55
62
  colSpan={tableInstance.visibleColumns.length + 10}
56
63
  isExpanded={row.isExpanded}
57
- onClick={(event: MouseEvent<HTMLTableCellElement>) => onDetailPanelClick?.(event, row)}
64
+ onClick={(event: MouseEvent<HTMLTableCellElement>) =>
65
+ onDetailPanelClick?.(event, row)
66
+ }
58
67
  {...tableCellProps}
59
68
  >
60
69
  <Collapse in={row.isExpanded}>{renderDetailPanel?.(row)}</Collapse>
@@ -2,7 +2,7 @@ import React, { FC } from 'react';
2
2
  import { IconButton, styled, Tooltip } from '@mui/material';
3
3
  import SaveIcon from '@mui/icons-material/Save';
4
4
  import CancelIcon from '@mui/icons-material/Cancel';
5
- import { useMaterialReactTable } from '../useMaterialReactTable';
5
+ import { useMRT } from '../useMRT';
6
6
  import { Row } from 'react-table';
7
7
 
8
8
  const EditActionButtonWrappers = styled('div')({
@@ -15,8 +15,12 @@ interface Props {
15
15
  }
16
16
 
17
17
  export const MRT_EditActionButtons: FC<Props> = ({ row }) => {
18
- const { localization, setCurrentEditingRow, onRowEditSubmit, currentEditingRow } =
19
- useMaterialReactTable();
18
+ const {
19
+ localization,
20
+ setCurrentEditingRow,
21
+ onRowEditSubmit,
22
+ currentEditingRow,
23
+ } = useMRT();
20
24
 
21
25
  const handleCancel = () => {
22
26
  row.values = row.original;
@@ -31,7 +35,10 @@ export const MRT_EditActionButtons: FC<Props> = ({ row }) => {
31
35
  return (
32
36
  <EditActionButtonWrappers>
33
37
  <Tooltip arrow title={localization?.rowActionButtonCancel ?? ''}>
34
- <IconButton aria-label={localization?.rowActionButtonCancel} onClick={handleCancel}>
38
+ <IconButton
39
+ aria-label={localization?.rowActionButtonCancel}
40
+ onClick={handleCancel}
41
+ >
35
42
  <CancelIcon />
36
43
  </IconButton>
37
44
  </Tooltip>
@@ -1,7 +1,7 @@
1
1
  import React, { FC } from 'react';
2
2
  import { IconButton, styled } from '@mui/material';
3
3
  import MuiArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowDown';
4
- import { useMaterialReactTable } from '../useMaterialReactTable';
4
+ import { useMRT } from '../useMRT';
5
5
  import { MRT_TableButtonCell } from '../table/MRT_TableButtonCell';
6
6
 
7
7
  const ArrowRightIcon = styled(MuiArrowRightIcon, {
@@ -14,7 +14,8 @@ const ArrowRightIcon = styled(MuiArrowRightIcon, {
14
14
  interface Props {}
15
15
 
16
16
  export const MRT_ExpandAllButton: FC<Props> = () => {
17
- const { tableInstance, localization, anyRowsExpanded, densePadding } = useMaterialReactTable();
17
+ const { tableInstance, localization, anyRowsExpanded, densePadding } =
18
+ useMRT();
18
19
 
19
20
  return (
20
21
  <MRT_TableButtonCell
@@ -28,7 +29,9 @@ export const MRT_ExpandAllButton: FC<Props> = () => {
28
29
  >
29
30
  <ArrowRightIcon
30
31
  fontSize="small"
31
- rotation={tableInstance.isAllRowsExpanded ? -180 : anyRowsExpanded ? -90 : 0}
32
+ rotation={
33
+ tableInstance.isAllRowsExpanded ? -180 : anyRowsExpanded ? -90 : 0
34
+ }
32
35
  />
33
36
  </IconButton>
34
37
  </MRT_TableButtonCell>