material-react-table 0.6.8 → 0.7.0-alpha.1

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 (107) hide show
  1. package/dist/MaterialReactTable.d.ts +147 -82
  2. package/dist/body/MRT_TableBody.d.ts +3 -0
  3. package/dist/body/MRT_TableBodyCell.d.ts +2 -11
  4. package/dist/body/MRT_TableBodyRow.d.ts +3 -1
  5. package/dist/body/MRT_TableDetailPanel.d.ts +2 -1
  6. package/dist/buttons/MRT_CopyButton.d.ts +4 -2
  7. package/dist/buttons/MRT_EditActionButtons.d.ts +2 -1
  8. package/dist/buttons/MRT_ExpandAllButton.d.ts +2 -0
  9. package/dist/buttons/MRT_ExpandButton.d.ts +2 -1
  10. package/dist/buttons/MRT_FullScreenToggleButton.d.ts +2 -0
  11. package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +2 -0
  12. package/dist/buttons/MRT_ToggleColumnActionMenuButton.d.ts +3 -2
  13. package/dist/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -0
  14. package/dist/buttons/MRT_ToggleFiltersButton.d.ts +2 -0
  15. package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -1
  16. package/dist/buttons/MRT_ToggleSearchButton.d.ts +2 -0
  17. package/dist/enums.d.ts +2 -1
  18. package/dist/filtersFNs.d.ts +13 -5
  19. package/dist/footer/MRT_TableFooter.d.ts +3 -0
  20. package/dist/footer/MRT_TableFooterCell.d.ts +3 -2
  21. package/dist/footer/MRT_TableFooterRow.d.ts +2 -1
  22. package/dist/head/MRT_TableHead.d.ts +3 -0
  23. package/dist/head/MRT_TableHeadCell.d.ts +4 -18
  24. package/dist/head/MRT_TableHeadRow.d.ts +2 -1
  25. package/dist/icons.d.ts +1 -1
  26. package/dist/inputs/MRT_EditCellTextField.d.ts +2 -1
  27. package/dist/inputs/MRT_FilterTextField.d.ts +3 -2
  28. package/dist/inputs/MRT_SearchTextField.d.ts +2 -0
  29. package/dist/inputs/MRT_SelectCheckbox.d.ts +2 -1
  30. package/dist/localization.d.ts +9 -2
  31. package/dist/material-react-table.cjs.development.js +2183 -1686
  32. package/dist/material-react-table.cjs.development.js.map +1 -1
  33. package/dist/material-react-table.cjs.production.min.js +1 -1
  34. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  35. package/dist/material-react-table.esm.js +2191 -1694
  36. package/dist/material-react-table.esm.js.map +1 -1
  37. package/dist/menus/MRT_ColumnActionMenu.d.ts +3 -2
  38. package/dist/menus/MRT_FilterTypeMenu.d.ts +4 -3
  39. package/dist/menus/MRT_RowActionMenu.d.ts +3 -2
  40. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +2 -0
  41. package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -1
  42. package/dist/table/MRT_Table.d.ts +3 -0
  43. package/dist/table/MRT_TableContainer.d.ts +2 -0
  44. package/dist/table/MRT_TablePaper.d.ts +7 -0
  45. package/dist/table/MRT_TableRoot.d.ts +3 -0
  46. package/dist/toolbar/MRT_LinearProgressBar.d.ts +2 -0
  47. package/dist/toolbar/MRT_TablePagination.d.ts +2 -0
  48. package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -0
  49. package/dist/toolbar/MRT_ToolbarBottom.d.ts +2 -0
  50. package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -0
  51. package/dist/toolbar/MRT_ToolbarTop.d.ts +4 -2
  52. package/dist/utils.d.ts +12 -2
  53. package/package.json +27 -28
  54. package/src/MaterialReactTable.tsx +314 -241
  55. package/src/body/MRT_TableBody.tsx +25 -21
  56. package/src/body/MRT_TableBodyCell.tsx +74 -53
  57. package/src/body/MRT_TableBodyRow.tsx +35 -51
  58. package/src/body/MRT_TableDetailPanel.tsx +16 -14
  59. package/src/buttons/MRT_CopyButton.tsx +36 -11
  60. package/src/buttons/MRT_EditActionButtons.tsx +13 -12
  61. package/src/buttons/MRT_ExpandAllButton.tsx +36 -28
  62. package/src/buttons/MRT_ExpandButton.tsx +34 -40
  63. package/src/buttons/MRT_FullScreenToggleButton.tsx +18 -11
  64. package/src/buttons/MRT_ShowHideColumnsButton.tsx +18 -7
  65. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +17 -9
  66. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +18 -11
  67. package/src/buttons/MRT_ToggleFiltersButton.tsx +16 -9
  68. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +26 -21
  69. package/src/buttons/MRT_ToggleSearchButton.tsx +18 -11
  70. package/src/enums.ts +2 -1
  71. package/src/filtersFNs.ts +17 -3
  72. package/src/footer/MRT_TableFooter.tsx +23 -7
  73. package/src/footer/MRT_TableFooterCell.tsx +32 -24
  74. package/src/footer/MRT_TableFooterRow.tsx +20 -38
  75. package/src/head/MRT_TableHead.tsx +23 -7
  76. package/src/head/MRT_TableHeadCell.tsx +201 -151
  77. package/src/head/MRT_TableHeadRow.tsx +15 -81
  78. package/src/icons.ts +3 -3
  79. package/src/inputs/MRT_EditCellTextField.tsx +23 -24
  80. package/src/inputs/MRT_FilterTextField.tsx +51 -37
  81. package/src/inputs/MRT_SearchTextField.tsx +63 -22
  82. package/src/inputs/MRT_SelectCheckbox.tsx +75 -42
  83. package/src/localization.ts +19 -4
  84. package/src/menus/MRT_ColumnActionMenu.tsx +129 -69
  85. package/src/menus/MRT_FilterTypeMenu.tsx +55 -23
  86. package/src/menus/MRT_RowActionMenu.tsx +16 -11
  87. package/src/menus/MRT_ShowHideColumnsMenu.tsx +52 -20
  88. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +28 -17
  89. package/src/table/MRT_Table.tsx +24 -14
  90. package/src/table/MRT_TableContainer.tsx +109 -44
  91. package/src/table/MRT_TablePaper.tsx +61 -0
  92. package/src/table/MRT_TableRoot.tsx +236 -0
  93. package/src/toolbar/MRT_LinearProgressBar.tsx +9 -6
  94. package/src/toolbar/MRT_TablePagination.tsx +28 -18
  95. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +31 -19
  96. package/src/toolbar/MRT_ToolbarBottom.tsx +31 -20
  97. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +29 -16
  98. package/src/toolbar/MRT_ToolbarTop.tsx +34 -27
  99. package/src/utils.ts +37 -8
  100. package/dist/head/MRT_TableHeadCellActions.d.ts +0 -5
  101. package/dist/table/MRT_TableSpacerCell.d.ts +0 -6
  102. package/dist/useMRT.d.ts +0 -27
  103. package/src/@types/faker.d.ts +0 -4
  104. package/src/@types/react-table-config.d.ts +0 -53
  105. package/src/head/MRT_TableHeadCellActions.tsx +0 -29
  106. package/src/table/MRT_TableSpacerCell.tsx +0 -20
  107. package/src/useMRT.tsx +0 -215
package/src/useMRT.tsx DELETED
@@ -1,215 +0,0 @@
1
- import React, {
2
- Context,
3
- Dispatch,
4
- PropsWithChildren,
5
- SetStateAction,
6
- createContext,
7
- useCallback,
8
- useContext,
9
- useMemo,
10
- useState,
11
- } from 'react';
12
- import {
13
- PluginHook,
14
- useExpanded,
15
- useFilters,
16
- useFlexLayout,
17
- useGlobalFilter,
18
- useGroupBy,
19
- usePagination,
20
- useResizeColumns,
21
- useRowSelect,
22
- useSortBy,
23
- useTable,
24
- } from 'react-table';
25
- import type {
26
- MRT_ColumnInterface,
27
- MRT_FilterType,
28
- MRT_Row,
29
- MRT_TableInstance,
30
- } from '.';
31
- import { MRT_FILTER_TYPE } from './enums';
32
- import { MRT_Icons } from './icons';
33
- import { MRT_Localization } from './localization';
34
- import { MaterialReactTableProps } from './MaterialReactTable';
35
- import { findLowestLevelCols } from './utils';
36
-
37
- export type UseMRT<D extends {} = {}> = MaterialReactTableProps<D> & {
38
- anyRowsCanExpand: boolean;
39
- anyRowsExpanded: boolean;
40
- icons: MRT_Icons;
41
- idPrefix: string;
42
- filterTypes: { [key in MRT_FILTER_TYPE]: any };
43
- localization: MRT_Localization;
44
- setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row<D> | null>>;
45
- setCurrentFilterTypes: Dispatch<
46
- SetStateAction<{
47
- [key: string]: MRT_FilterType;
48
- }>
49
- >;
50
- setDensePadding: Dispatch<SetStateAction<boolean>>;
51
- setFullScreen: Dispatch<SetStateAction<boolean>>;
52
- setShowFilters: Dispatch<SetStateAction<boolean>>;
53
- setShowSearch: Dispatch<SetStateAction<boolean>>;
54
- tableInstance: MRT_TableInstance<D>;
55
- };
56
-
57
- const MaterialReactTableContext = (<D extends {} = {}>() =>
58
- createContext<UseMRT<D>>({} as UseMRT<D>) as Context<UseMRT<D>>)();
59
-
60
- export const MaterialReactTableProvider = <D extends {} = {}>(
61
- props: PropsWithChildren<MaterialReactTableProps<D>>,
62
- ) => {
63
- const hooks: PluginHook<D>[] = [
64
- useFilters,
65
- useGlobalFilter,
66
- useGroupBy,
67
- useSortBy,
68
- useExpanded,
69
- usePagination,
70
- useRowSelect,
71
- ];
72
-
73
- if (props.enableColumnResizing)
74
- hooks.unshift(useResizeColumns, useFlexLayout);
75
-
76
- const [currentEditingRow, setCurrentEditingRow] = useState<MRT_Row<D> | null>(
77
- null,
78
- );
79
- const [densePadding, setDensePadding] = useState(
80
- props.initialState?.densePadding ?? false,
81
- );
82
- const [fullScreen, setFullScreen] = useState(
83
- props.initialState?.fullScreen ?? false,
84
- );
85
- const [showFilters, setShowFilters] = useState(
86
- props.initialState?.showFilters ?? false,
87
- );
88
- const [showSearch, setShowSearch] = useState(
89
- props.initialState?.showSearch ?? false,
90
- );
91
-
92
- const [currentFilterTypes, setCurrentFilterTypes] = useState<{
93
- [key: string]: MRT_FilterType;
94
- }>(() =>
95
- Object.assign(
96
- {},
97
- ...findLowestLevelCols(props.columns).map((c) => ({
98
- [c.accessor as string]:
99
- c.filter ??
100
- props?.initialState?.filters?.[c.accessor as any] ??
101
- (!!c.filterSelectOptions ? 'equals' : 'fuzzy'),
102
- })),
103
- ),
104
- );
105
-
106
- const applyFiltersToColumns = useCallback(
107
- (cols: MRT_ColumnInterface[]) =>
108
- cols.map((column) => {
109
- if (column.columns) {
110
- applyFiltersToColumns(column.columns);
111
- } else {
112
- column.filter =
113
- props?.filterTypes?.[
114
- currentFilterTypes[column.accessor as string] as MRT_FILTER_TYPE
115
- ];
116
- }
117
- return column;
118
- }),
119
- [currentFilterTypes, props.filterTypes],
120
- );
121
-
122
- const columns = useMemo(
123
- () => applyFiltersToColumns(props.columns),
124
- [props.columns, applyFiltersToColumns],
125
- );
126
-
127
- const data = useMemo(
128
- () =>
129
- !props.isLoading || !!props.data.length
130
- ? props.data
131
- : [...Array(10).fill(null)].map((_) =>
132
- Object.assign(
133
- {},
134
- ...findLowestLevelCols(props.columns).map((c) => ({
135
- [c.accessor as string]: null,
136
- })),
137
- ),
138
- ),
139
- [props.data, props.isLoading],
140
- );
141
-
142
- const tableInstance = useTable(
143
- // @ts-ignore
144
- {
145
- ...props,
146
- // @ts-ignore
147
- columns,
148
- data,
149
- useControlledState: (state) =>
150
- useMemo(
151
- () => ({
152
- ...state,
153
- currentEditingRow,
154
- currentFilterTypes,
155
- densePadding,
156
- fullScreen,
157
- showFilters,
158
- showSearch,
159
- //@ts-ignore
160
- ...props?.useControlledState?.(state),
161
- }),
162
- [
163
- currentEditingRow,
164
- currentFilterTypes,
165
- densePadding,
166
- fullScreen,
167
- showFilters,
168
- showSearch,
169
- state,
170
- ],
171
- ),
172
- },
173
- ...hooks,
174
- ) as unknown as MRT_TableInstance<D>;
175
-
176
- const idPrefix = useMemo(
177
- () => props.idPrefix ?? Math.random().toString(36).substring(2, 9),
178
- [props.idPrefix],
179
- );
180
- const anyRowsCanExpand = useMemo(
181
- () => tableInstance.rows.some((row) => row.canExpand),
182
- [tableInstance.rows],
183
- );
184
- const anyRowsExpanded = useMemo(
185
- () => tableInstance.rows.some((row) => row.isExpanded),
186
- [tableInstance.rows],
187
- );
188
-
189
- return (
190
- <MaterialReactTableContext.Provider
191
- value={{
192
- ...props,
193
- anyRowsCanExpand,
194
- anyRowsExpanded,
195
- idPrefix,
196
- //@ts-ignore
197
- setCurrentEditingRow,
198
- setCurrentFilterTypes,
199
- setDensePadding,
200
- setFullScreen,
201
- setShowFilters,
202
- setShowSearch,
203
- //@ts-ignore
204
- tableInstance,
205
- }}
206
- >
207
- {props.children}
208
- </MaterialReactTableContext.Provider>
209
- );
210
- };
211
-
212
- export const useMRT = <D extends {} = {}>(): UseMRT<D> =>
213
- useContext<UseMRT<D>>(
214
- MaterialReactTableContext as unknown as Context<UseMRT<D>>,
215
- );