material-react-table 0.3.0 → 0.3.4

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 (75) hide show
  1. package/README.md +32 -162
  2. package/dist/MaterialReactTable.d.ts +52 -45
  3. package/dist/body/MRT_TableBodyRow.d.ts +16 -1
  4. package/dist/buttons/MRT_EditActionButtons.d.ts +7 -0
  5. package/dist/buttons/MRT_ToggleFiltersButton.d.ts +4 -0
  6. package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +7 -0
  7. package/dist/buttons/MRT_ToggleSearchButton.d.ts +4 -0
  8. package/dist/head/MRT_TableHeadCell.d.ts +4 -0
  9. package/dist/index.d.ts +2 -2
  10. package/dist/inputs/MRT_DensePaddingSwitch.d.ts +5 -0
  11. package/dist/inputs/MRT_EditCellTextField.d.ts +7 -0
  12. package/dist/inputs/MRT_FilterTextField.d.ts +1 -1
  13. package/dist/material-react-table.cjs.development.js +1732 -466
  14. package/dist/material-react-table.cjs.development.js.map +1 -1
  15. package/dist/material-react-table.cjs.production.min.js +1 -1
  16. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  17. package/dist/material-react-table.esm.js +1743 -477
  18. package/dist/material-react-table.esm.js.map +1 -1
  19. package/dist/menus/MRT_ColumnActionMenu.d.ts +2 -2
  20. package/dist/menus/MRT_RowActionMenu.d.ts +10 -0
  21. package/dist/table/MRT_TableButtonCell.d.ts +3 -0
  22. package/dist/{footer → toolbar}/MRT_TablePagination.d.ts +0 -0
  23. package/dist/toolbar/MRT_ToolbarBottom.d.ts +5 -0
  24. package/dist/toolbar/MRT_ToolbarButtons.d.ts +5 -0
  25. package/dist/toolbar/{MRT_Toolbar.d.ts → MRT_ToolbarTop.d.ts} +1 -1
  26. package/dist/useMaterialReactTable.d.ts +10 -2
  27. package/dist/utils/localization.d.ts +25 -14
  28. package/dist/utils/useMRTCalcs.d.ts +1 -1
  29. package/package.json +26 -21
  30. package/src/@types/faker.d.ts +4 -0
  31. package/src/@types/react-table-config.d.ts +131 -0
  32. package/src/MaterialReactTable.tsx +92 -101
  33. package/src/body/MRT_TableBody.tsx +17 -40
  34. package/src/body/MRT_TableBodyCell.tsx +36 -11
  35. package/src/body/MRT_TableBodyRow.tsx +35 -26
  36. package/src/body/MRT_TableDetailPanel.tsx +41 -15
  37. package/src/buttons/MRT_EditActionButtons.tsx +49 -0
  38. package/src/buttons/MRT_ExpandAllButton.tsx +15 -19
  39. package/src/buttons/MRT_ExpandButton.tsx +23 -21
  40. package/src/buttons/MRT_ShowHideColumnsButton.tsx +14 -21
  41. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +5 -9
  42. package/src/buttons/MRT_ToggleFiltersButton.tsx +23 -0
  43. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +83 -0
  44. package/src/buttons/MRT_ToggleSearchButton.tsx +29 -0
  45. package/src/footer/MRT_TableFooter.tsx +4 -22
  46. package/src/footer/MRT_TableFooterCell.tsx +35 -10
  47. package/src/footer/MRT_TableFooterRow.tsx +24 -16
  48. package/src/head/MRT_TableHead.tsx +6 -23
  49. package/src/head/MRT_TableHeadCell.tsx +65 -28
  50. package/src/head/MRT_TableHeadRow.tsx +44 -17
  51. package/src/index.tsx +2 -5
  52. package/src/inputs/MRT_DensePaddingSwitch.tsx +23 -0
  53. package/src/inputs/MRT_EditCellTextField.tsx +64 -0
  54. package/src/inputs/MRT_FilterTextField.tsx +42 -15
  55. package/src/inputs/MRT_SearchTextField.tsx +40 -43
  56. package/src/inputs/MRT_SelectAllCheckbox.tsx +9 -6
  57. package/src/inputs/MRT_SelectCheckbox.tsx +9 -5
  58. package/src/menus/MRT_ColumnActionMenu.tsx +69 -48
  59. package/src/menus/MRT_RowActionMenu.tsx +33 -0
  60. package/src/menus/MRT_ShowHideColumnsMenu.tsx +2 -2
  61. package/src/table/MRT_Table.tsx +13 -5
  62. package/src/table/MRT_TableButtonCell.tsx +9 -0
  63. package/src/table/MRT_TableContainer.tsx +32 -5
  64. package/src/table/MRT_TableSpacerCell.tsx +15 -1
  65. package/src/toolbar/MRT_TablePagination.tsx +34 -0
  66. package/src/toolbar/MRT_ToolbarBottom.tsx +41 -0
  67. package/src/toolbar/MRT_ToolbarButtons.tsx +29 -0
  68. package/src/toolbar/MRT_ToolbarTop.tsx +59 -0
  69. package/src/useMaterialReactTable.tsx +40 -44
  70. package/src/utils/localization.ts +42 -20
  71. package/src/utils/useMRTCalcs.tsx +1 -3
  72. package/dist/utils/overrideWarnings.d.ts +0 -1
  73. package/src/footer/MRT_TablePagination.tsx +0 -42
  74. package/src/toolbar/MRT_Toolbar.tsx +0 -39
  75. package/src/utils/overrideWarnings.ts +0 -41
@@ -1,8 +1,8 @@
1
1
  import { FC } from 'react';
2
- import { ColumnInstance } from 'react-table';
2
+ import { HeaderGroup } from 'react-table';
3
3
  interface Props {
4
4
  anchorEl: HTMLElement | null;
5
- column: ColumnInstance;
5
+ column: HeaderGroup;
6
6
  setAnchorEl: (anchorEl: HTMLElement | null) => void;
7
7
  }
8
8
  export declare const MRT_ColumnActionMenu: FC<Props>;
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ import { Row } from 'react-table';
3
+ interface Props {
4
+ anchorEl: HTMLElement | null;
5
+ row: Row;
6
+ setAnchorEl: (anchorEl: HTMLElement | null) => void;
7
+ handleEdit: () => void;
8
+ }
9
+ export declare const MRT_RowActionMenu: FC<Props>;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare const MRT_TableButtonCell: import("@emotion/styled").StyledComponent<import("@mui/material").TableCellProps & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & {
2
+ densePadding?: boolean | undefined;
3
+ }, {}, {}>;
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ interface Props {
3
+ }
4
+ export declare const MRT_ToolbarBottom: FC<Props>;
5
+ export {};
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ interface Props {
3
+ }
4
+ export declare const MRT_ToolbarButtons: FC<Props>;
5
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { FC } from 'react';
2
2
  interface Props {
3
3
  }
4
- export declare const MRT_Toolbar: FC<Props>;
4
+ export declare const MRT_ToolbarTop: FC<Props>;
5
5
  export {};
@@ -1,9 +1,17 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import { TableInstance } from 'react-table';
2
+ import { Row, TableInstance } from 'react-table';
3
3
  import { MaterialReactTableProps } from './MaterialReactTable';
4
4
  import { UseMRTCalcs } from './utils/useMRTCalcs';
5
5
  export interface UseMaterialReactTable<D extends {}> extends MaterialReactTableProps<D>, UseMRTCalcs {
6
+ currentEditingRow: Row<D> | null;
7
+ densePadding: boolean;
8
+ setCurrentEditingRow: (currentRowEditingId: Row<D> | null) => void;
9
+ setDensePadding: (densePadding: boolean) => void;
10
+ setShowFilters: (showFilters: boolean) => void;
11
+ setShowSearch: (showSearch: boolean) => void;
12
+ showFilters: boolean;
13
+ showSearch: boolean;
6
14
  tableInstance: TableInstance<D>;
7
15
  }
8
- export declare const MaterialReactTableProvider: <D extends {}>({ children, columns, data, defaultColumn, getRowId, getSubRows, initialState, stateReducer, surpressoverrideWarnings, ...rest }: React.PropsWithChildren<MaterialReactTableProps<D>>) => JSX.Element;
16
+ export declare const MaterialReactTableProvider: <D extends {}>(props: React.PropsWithChildren<MaterialReactTableProps<D>>) => JSX.Element;
9
17
  export declare const useMaterialReactTable: <D extends {}>() => UseMaterialReactTable<D>;
@@ -1,17 +1,28 @@
1
1
  export interface MRT_Localization {
2
- columnActionMenuButtonTitle?: string;
3
- columnActionMenuItemHideColumn?: string;
4
- columnActionMenuItemSortAsc?: string;
5
- columnActionMenuItemClearSort?: string;
6
- columnActionMenuItemSortDesc?: string;
7
- columnActionMenuItemGroupBy?: string;
8
- columnActionMenuItemUnGroupBy?: string;
9
- expandAllButtonTitle?: string;
10
- expandButtonTitle?: string;
11
- filterTextFieldClearButtonTitle?: string;
12
- filterTextFieldPlaceholder?: string;
13
- searchTextFieldClearButtonTitle?: string;
14
- searchTextFieldPlaceholder?: string;
15
- showHideColumnsButtonTitle?: string;
2
+ actionsHeadColumnTitle: string;
3
+ columnActionMenuButtonTitle: string;
4
+ columnActionMenuItemClearSort: string;
5
+ columnActionMenuItemGroupBy: string;
6
+ columnActionMenuItemHideColumn: string;
7
+ columnActionMenuItemSortAsc: string;
8
+ columnActionMenuItemSortDesc: string;
9
+ columnActionMenuItemUnGroupBy: string;
10
+ expandAllButtonTitle: string;
11
+ expandButtonTitle: string;
12
+ filterTextFieldClearButtonTitle: string;
13
+ filterTextFieldPlaceholder: string;
14
+ rowActionButtonCancel: string;
15
+ rowActionButtonSave: string;
16
+ rowActionMenuButtonTitle: string;
17
+ rowActionMenuItemEdit: string;
18
+ rowActionsColumnTitle: string;
19
+ searchTextFieldClearButtonTitle: string;
20
+ searchTextFieldPlaceholder: string;
21
+ selectAllCheckboxTitle: string;
22
+ selectCheckboxTitle: string;
23
+ showHideColumnsButtonTitle: string;
24
+ toggleDensePaddingSwitchTitle: string;
25
+ toggleFilterButtonTitle: string;
26
+ toggleSearchButtonTitle: string;
16
27
  }
17
28
  export declare const defaultLocalization: MRT_Localization;
@@ -7,5 +7,5 @@ export interface UseMRTCalcs {
7
7
  interface Props<D extends {}> {
8
8
  tableInstance: TableInstance<D>;
9
9
  }
10
- export declare const useMRTCalcs: <D extends {}>({ tableInstance, }: Props<D>) => UseMRTCalcs;
10
+ export declare const useMRTCalcs: <D extends {}>({ tableInstance }: Props<D>) => UseMRTCalcs;
11
11
  export {};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.0",
2
+ "version": "0.3.4",
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.",
@@ -13,7 +13,7 @@
13
13
  "type": "git",
14
14
  "url": "https://github.com/KevinVandy/material-react-table"
15
15
  },
16
- "homepage": "https://github.com/KevinVandy/material-react-table#readme",
16
+ "homepage": "https://www.material-react-table.com/",
17
17
  "bugs": {
18
18
  "url": "https://github.com/KevinVandy/material-react-table/issues"
19
19
  },
@@ -24,22 +24,24 @@
24
24
  "src"
25
25
  ],
26
26
  "engines": {
27
- "node": ">=14"
27
+ "node": ">=12"
28
28
  },
29
29
  "scripts": {
30
- "start": "tsdx watch",
30
+ "analyze": "size-limit --why",
31
31
  "build": "tsdx build && size-limit",
32
- "test": "tsdx test --passWithNoTests",
32
+ "build-storybook": "build-storybook",
33
+ "format": "prettier -w .",
33
34
  "lint": "tsdx lint",
34
35
  "prepare": "tsdx build",
35
36
  "size": "size-limit",
36
- "analyze": "size-limit --why",
37
+ "start": "tsdx watch",
37
38
  "storybook": "start-storybook -p 6006",
38
- "build-storybook": "build-storybook"
39
+ "test": "tsdx test --passWithNoTests",
40
+ "upgrade": "ncu -u && npm i"
39
41
  },
40
42
  "husky": {
41
43
  "hooks": {
42
- "pre-commit": "tsdx lint"
44
+ "pre-commit": "tsdx lint && format"
43
45
  }
44
46
  },
45
47
  "module": "dist/material-react-table.esm.js",
@@ -54,24 +56,25 @@
54
56
  }
55
57
  ],
56
58
  "devDependencies": {
57
- "@babel/core": "^7.16.10",
59
+ "@babel/core": "^7.17.0",
58
60
  "@emotion/react": "^11.7.1",
59
61
  "@emotion/styled": "^11.6.0",
60
- "@faker-js/faker": "^6.0.0-alpha.3",
61
- "@mui/icons-material": "^5.3.0",
62
- "@mui/material": "^5.3.0",
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",
63
66
  "@size-limit/preset-small-lib": "^7.0.5",
64
- "@storybook/addon-a11y": "^6.4.13",
65
- "@storybook/addon-actions": "^6.4.13",
67
+ "@storybook/addon-a11y": "^6.4.18",
68
+ "@storybook/addon-actions": "^6.4.18",
66
69
  "@storybook/addon-console": "^1.2.3",
67
- "@storybook/addon-essentials": "^6.4.13",
70
+ "@storybook/addon-essentials": "^6.4.18",
68
71
  "@storybook/addon-info": "^5.3.21",
69
- "@storybook/addon-links": "^6.4.13",
70
- "@storybook/addon-storysource": "^6.4.13",
71
- "@storybook/addons": "^6.4.13",
72
- "@storybook/react": "^6.4.13",
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",
73
76
  "@types/faker": "^6.6.8",
74
- "@types/react": "^17.0.38",
77
+ "@types/react": "^17.0.39",
75
78
  "@types/react-dom": "^17.0.11",
76
79
  "@types/react-table": "^7.7.9",
77
80
  "babel-loader": "^8.2.3",
@@ -82,7 +85,9 @@
82
85
  "react-is": "^17.0.2",
83
86
  "react-table": "^7.7.0",
84
87
  "size-limit": "^7.0.5",
88
+ "storybook-addon-paddings": "^4.2.1",
85
89
  "storybook-addon-performance": "^0.16.1",
90
+ "storybook-dark-mode": "^1.0.8",
86
91
  "tsdx": "^0.14.1",
87
92
  "tslib": "^2.3.1",
88
93
  "typescript": "^4.5.5"
@@ -91,7 +96,7 @@
91
96
  "@emotion/react": ">=11",
92
97
  "@mui/icons-material": ">=5",
93
98
  "@mui/material": ">=5",
94
- "react": ">=17",
99
+ "react": ">=16.8",
95
100
  "react-table": ">=7"
96
101
  }
97
102
  }
@@ -0,0 +1,4 @@
1
+ declare module '@faker-js/faker' {
2
+ import faker from 'faker';
3
+ export default faker;
4
+ }
@@ -0,0 +1,131 @@
1
+ import { ChangeEvent, ReactNode } from 'react';
2
+ import { TableCellProps, TextFieldProps } from '@mui/material';
3
+ import {
4
+ UseColumnOrderInstanceProps,
5
+ UseColumnOrderState,
6
+ UseExpandedHooks,
7
+ UseExpandedInstanceProps,
8
+ UseExpandedOptions,
9
+ UseExpandedRowProps,
10
+ UseExpandedState,
11
+ UseFiltersColumnOptions,
12
+ UseFiltersColumnProps,
13
+ UseFiltersInstanceProps,
14
+ UseFiltersOptions,
15
+ UseFiltersState,
16
+ UseGlobalFiltersColumnOptions,
17
+ UseGlobalFiltersInstanceProps,
18
+ UseGlobalFiltersOptions,
19
+ UseGlobalFiltersState,
20
+ UseGroupByCellProps,
21
+ UseGroupByColumnOptions,
22
+ UseGroupByColumnProps,
23
+ UseGroupByHooks,
24
+ UseGroupByInstanceProps,
25
+ UseGroupByOptions,
26
+ UseGroupByRowProps,
27
+ UseGroupByState,
28
+ UsePaginationInstanceProps,
29
+ UsePaginationOptions,
30
+ UsePaginationState,
31
+ UseResizeColumnsColumnOptions,
32
+ UseResizeColumnsColumnProps,
33
+ UseResizeColumnsOptions,
34
+ UseResizeColumnsState,
35
+ UseRowSelectHooks,
36
+ UseRowSelectInstanceProps,
37
+ UseRowSelectOptions,
38
+ UseRowSelectRowProps,
39
+ UseRowSelectState,
40
+ UseRowStateCellProps,
41
+ UseRowStateInstanceProps,
42
+ UseRowStateOptions,
43
+ UseRowStateRowProps,
44
+ UseRowStateState,
45
+ UseSortByColumnOptions,
46
+ UseSortByColumnProps,
47
+ UseSortByHooks,
48
+ UseSortByInstanceProps,
49
+ UseSortByOptions,
50
+ UseSortByState,
51
+ } from 'react-table';
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
+ };
70
+
71
+ declare module 'react-table' {
72
+ export interface TableOptions<D extends Record<string, unknown>>
73
+ extends UseExpandedOptions<D>,
74
+ UseFiltersOptions<D>,
75
+ UseGlobalFiltersOptions<D>,
76
+ UseGroupByOptions<D>,
77
+ UsePaginationOptions<D>,
78
+ UseResizeColumnsOptions<D>,
79
+ UseRowSelectOptions<D>,
80
+ UseRowStateOptions<D>,
81
+ UseSortByOptions<D>,
82
+ Record<string, any> {}
83
+
84
+ export interface Hooks<D extends Record<string, unknown> = Record<string, unknown>>
85
+ extends UseExpandedHooks<D>,
86
+ UseGroupByHooks<D>,
87
+ UseRowSelectHooks<D>,
88
+ UseSortByHooks<D> {}
89
+
90
+ export interface TableInstance<D extends Record<string, unknown> = Record<string, unknown>>
91
+ extends UseColumnOrderInstanceProps<D>,
92
+ UseExpandedInstanceProps<D>,
93
+ UseFiltersInstanceProps<D>,
94
+ UseGlobalFiltersInstanceProps<D>,
95
+ UseGroupByInstanceProps<D>,
96
+ UsePaginationInstanceProps<D>,
97
+ UseRowSelectInstanceProps<D>,
98
+ UseRowStateInstanceProps<D>,
99
+ UseSortByInstanceProps<D> {}
100
+
101
+ export interface TableState<D extends Record<string, unknown> = Record<string, unknown>>
102
+ extends UseColumnOrderState<D>,
103
+ UseExpandedState<D>,
104
+ UseFiltersState<D>,
105
+ UseGlobalFiltersState<D>,
106
+ UseGroupByState<D>,
107
+ UsePaginationState<D>,
108
+ UseResizeColumnsState<D>,
109
+ UseRowSelectState<D>,
110
+ UseRowStateState<D>,
111
+ UseSortByState<D> {}
112
+
113
+ export interface ColumnInterface<D extends Record<string, unknown> = Record<string, unknown>>
114
+ extends MRT_ColumnInterface {}
115
+
116
+ export interface ColumnInstance<D extends Record<string, unknown> = Record<string, unknown>>
117
+ extends UseFiltersColumnProps<D>,
118
+ UseGroupByColumnProps<D>,
119
+ UseResizeColumnsColumnProps<D>,
120
+ UseSortByColumnProps<D> {}
121
+
122
+ export interface Cell<D extends Record<string, unknown> = Record<string, unknown>, V = any>
123
+ extends UseGroupByCellProps<D>,
124
+ UseRowStateCellProps<D> {}
125
+
126
+ export interface Row<D extends Record<string, unknown> = Record<string, unknown>>
127
+ extends UseExpandedRowProps<D>,
128
+ UseGroupByRowProps<D>,
129
+ UseRowSelectRowProps<D>,
130
+ UseRowStateRowProps<D> {}
131
+ }
@@ -7,131 +7,122 @@ import {
7
7
  TableHeadProps,
8
8
  TablePaginationProps,
9
9
  TableProps,
10
+ TableRowProps,
10
11
  TextFieldProps,
11
12
  ToolbarProps,
12
- TypographyProps,
13
13
  } from '@mui/material';
14
14
  import {
15
15
  Cell,
16
+ Column,
16
17
  HeaderGroup,
17
18
  Row,
18
19
  TableInstance,
19
20
  TableOptions,
21
+ UseExpandedOptions,
22
+ UseFiltersOptions,
23
+ UseGlobalFiltersOptions,
24
+ UseGroupByOptions,
25
+ UsePaginationOptions,
26
+ UseResizeColumnsOptions,
27
+ UseRowSelectOptions,
28
+ UseRowStateOptions,
29
+ UseSortByOptions,
30
+ UseTableOptions,
20
31
  } from 'react-table';
21
32
  import { MaterialReactTableProvider } from './useMaterialReactTable';
22
33
  import { MRT_TableContainer } from './table/MRT_TableContainer';
23
34
  import { defaultLocalization, MRT_Localization } from './utils/localization';
35
+ import { MRT_ColumnInterface } from './@types/react-table-config';
24
36
 
25
- export interface MaterialReactTableProps<D extends {} = {}>
26
- extends TableOptions<D> {
27
- enableColumnActions?: boolean;
28
- enableColumnGrouping?: boolean;
29
- enableColumnHiding?: boolean;
30
- enableColumnReordering?: boolean;
31
- enableColumnResizing?: boolean;
32
- enableExpandAll?: boolean;
33
- enableFiltering?: boolean;
34
- enablePagination?: boolean;
35
- enableSearch?: boolean;
36
- enableSelectAll?: boolean;
37
- enableSelection?: boolean;
38
- enableSorting?: boolean;
39
- enableSubRowTree?: boolean;
40
- isFetching?: boolean;
41
- isLoading?: boolean;
42
- localization?: Partial<MRT_Localization>;
43
- onCellClick?: (
44
- event: MouseEvent<HTMLTableCellElement>,
45
- cell: Cell<D>,
46
- ) => void;
47
- onRowClick?: (event: MouseEvent<HTMLTableRowElement>, row: Row<D>) => void;
48
- onRowExpandChange?: (
49
- event: MouseEvent<HTMLButtonElement>,
50
- row: Row<D>,
51
- ) => void;
52
- onRowSelectChange?: (
53
- event: ChangeEvent,
54
- row: Row<D>,
55
- selectedRows: Row<D>[],
56
- ) => void;
57
- onSearchChange?: (event: ChangeEvent<HTMLInputElement>) => void;
58
- overrideTableBodyCellComponent?(
59
- cell: Cell<D>,
60
- tableInstance: TableInstance<D>,
61
- ): ReactNode;
62
- overrideTableBodyComponent?(tableInstance: TableInstance<D>): ReactNode;
63
- overrideTableBodyRowComponent?(
64
- row: Row<D>,
65
- tableInstance: TableInstance<D>,
66
- ): ReactNode;
67
- overrideTableDetailPanelComponent?(
68
- row: Row<D>,
69
- tableInstance: TableInstance<D>,
70
- ): ReactNode;
71
- overrideTableFooterCellComponent?(
72
- column: HeaderGroup<D>,
73
- tableInstance: TableInstance<D>,
74
- ): ReactNode;
75
- overrideTableFooterComponent?(tableInstance: TableInstance<D>): ReactNode;
76
- overrideTableFooterRowComponent?(
77
- footerGroup: HeaderGroup<D>,
78
- tableInstance: TableInstance<D>,
79
- ): ReactNode;
80
- overrideTableHeadCellComponent?(
81
- column: HeaderGroup<D>,
82
- tableInstance: TableInstance<D>,
83
- ): ReactNode;
84
- overrideTableHeadComponent?(tableInstance: TableInstance<D>): ReactNode;
85
- overrideTableHeadRowComponent?(
86
- headerGroup: HeaderGroup<D>,
87
- tableInstance: TableInstance<D>,
88
- ): ReactNode;
89
- overrideTablePaginationComponent?(tableInstance: TableInstance<D>): ReactNode;
90
- overrideTableToolbarComponent?(tableInstance: TableInstance<D>): ReactNode;
91
- positionPagination?: 'bottom' | 'top' | 'both';
92
- renderDetailPanel?: (rowData: Row<D>) => ReactNode;
93
- showFiltersInColumnHead?: boolean;
94
- showFooter?: boolean;
95
- showHead?: boolean;
96
- showToolbar?: boolean;
97
- surpressoverrideWarnings?: boolean;
98
- tableBodyProps?: TableBodyProps;
99
- tableContainerProps?: TableContainerProps;
100
- tableDetailPanelProps?: TableCellProps;
101
- tableFooterProps?: TableFooterProps;
102
- tableHeadProps?: TableHeadProps;
103
- tablePaginationProps?: TablePaginationProps;
104
- tableProps?: TableProps;
105
- tableSearchTextfieldProps?: TextFieldProps;
106
- tableTitleProps?: TypographyProps;
107
- tableToolbarProps?: ToolbarProps;
108
- title?: string | ReactNode;
109
- }
37
+ export type MaterialReactTableProps<D extends {} = {}> = TableOptions<D> &
38
+ UseTableOptions<D> &
39
+ UseExpandedOptions<D> &
40
+ UseFiltersOptions<D> &
41
+ UseGlobalFiltersOptions<D> &
42
+ UseGroupByOptions<D> &
43
+ UsePaginationOptions<D> &
44
+ UseResizeColumnsOptions<D> &
45
+ UseRowSelectOptions<D> &
46
+ UseRowStateOptions<D> &
47
+ UseSortByOptions<D> & {
48
+ columns: (Column<D> & MRT_ColumnInterface)[];
49
+ defaultDensePadding?: boolean;
50
+ defaultShowFilters?: boolean;
51
+ defaultShowSearchTextField?: boolean;
52
+ disableColumnActions?: boolean;
53
+ disableColumnHiding?: boolean;
54
+ disableDensePaddingToggle?: boolean;
55
+ disableExpandAll?: boolean;
56
+ disableSelectAll?: boolean;
57
+ disableSubRowTree?: boolean;
58
+ enableColumnGrouping?: boolean;
59
+ enableColumnResizing?: boolean;
60
+ enableRowActions?: boolean;
61
+ enableRowEditing?: boolean;
62
+ enableSelection?: boolean;
63
+ hideTableFooter?: boolean;
64
+ hideTableHead?: boolean;
65
+ hideToolbarActions?: boolean;
66
+ hideToolbarBottom?: boolean;
67
+ hideToolbarTop?: boolean;
68
+ isFetching?: boolean;
69
+ isLoading?: boolean;
70
+ localization?: Partial<MRT_Localization>;
71
+ muiSearchTextFieldProps?: TextFieldProps;
72
+ muiTableBodyCellEditTextFieldProps?: TextFieldProps | ((cell?: Cell<D>) => TextFieldProps);
73
+ muiTableBodyCellProps?: TableCellProps | ((cell?: Cell<D>) => TableCellProps);
74
+ muiTableBodyProps?: TableBodyProps;
75
+ muiTableBodyRowProps?: TableRowProps | ((row: Row<D>) => TableRowProps);
76
+ muiTableContainerProps?: TableContainerProps;
77
+ muiTableDetailPanelProps?: TableCellProps | ((row: Row<D>) => TableCellProps);
78
+ muiTableFooterCellProps?: TableCellProps | ((column: Column<D>) => TableCellProps);
79
+ muiTableFooterProps?: TableFooterProps;
80
+ muiTableFooterRowProps?: TableRowProps | ((footerGroup: HeaderGroup<D>) => TableRowProps);
81
+ muiTableHeadCellFilterTextFieldProps?: TextFieldProps | ((column: Column<D>) => TextFieldProps);
82
+ muiTableHeadCellProps?: TableCellProps | ((column: Column<D>) => TableCellProps);
83
+ muiTableHeadProps?: TableHeadProps;
84
+ muiTableHeadRowProps?: TableRowProps | ((row: HeaderGroup<D>) => TableRowProps);
85
+ muiTablePaginationProps?:
86
+ | Partial<TablePaginationProps>
87
+ | ((tableInstance: TableInstance<D>) => Partial<TablePaginationProps>);
88
+ 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;
92
+ onColumnHide?: (column: Column<D>, visibleColumns: Column<D>[]) => void;
93
+ onDetailPanelClick?: (event: MouseEvent<HTMLTableCellElement>, row: Row<D>) => void;
94
+ onGlobalFilterChange?: (event: ChangeEvent<HTMLInputElement>) => void;
95
+ onRowClick?: (event: MouseEvent<HTMLTableRowElement>, row: Row<D>) => void;
96
+ 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;
99
+ positionActionsColumn?: 'first' | 'last';
100
+ positionPagination?: 'bottom' | 'top' | 'both';
101
+ positionToolbarActions?: 'bottom' | 'top';
102
+ renderDetailPanel?: (row: Row<D>) => ReactNode;
103
+ renderRowActionMenuItems?: (
104
+ rowData: Row<D>,
105
+ tableInstance: TableInstance<D>,
106
+ closeMenu: () => void,
107
+ ) => ReactNode[];
108
+ renderRowActions?: (row: Row<D>, tableInstance: TableInstance<D>) => ReactNode;
109
+ renderToolbarActions?: (tableInstance: TableInstance<D>) => ReactNode;
110
+ };
110
111
 
111
- export const MaterialReactTable = <D extends {}>({
112
+ export default <D extends {}>({
112
113
  defaultColumn = { minWidth: 50, maxWidth: 1000 },
113
- enablePagination = true,
114
- enableSorting = true,
115
- enableSubRowTree = true,
116
114
  localization = defaultLocalization,
115
+ positionActionsColumn = 'first',
117
116
  positionPagination = 'bottom',
118
- showFiltersInColumnHead = true,
119
- showFooter = true,
120
- showHead = true,
121
- showToolbar = true,
117
+ positionToolbarActions = 'top',
122
118
  ...rest
123
119
  }: MaterialReactTableProps<D>) => (
124
120
  <MaterialReactTableProvider
125
121
  defaultColumn={defaultColumn}
126
- enablePagination={enablePagination}
127
- enableSorting={enableSorting}
128
- enableSubRowTree={enableSubRowTree}
129
122
  localization={{ ...defaultLocalization, ...localization }}
130
123
  positionPagination={positionPagination}
131
- showFiltersInColumnHead={showFiltersInColumnHead}
132
- showFooter={showFooter}
133
- showHead={showHead}
134
- showToolbar={showToolbar}
124
+ positionActionsColumn={positionActionsColumn}
125
+ positionToolbarActions={positionToolbarActions}
135
126
  {...rest}
136
127
  >
137
128
  <MRT_TableContainer />