material-react-table 0.8.0-alpha.1 → 0.8.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.
- package/README.md +1 -1
- package/dist/MaterialReactTable.d.ts +8 -2
- package/dist/head/MRT_DraggableTableHeadCell.d.ts +8 -0
- package/dist/head/MRT_TableHeadCell.d.ts +5 -1
- package/dist/head/MRT_TableHeadCellFilterContainer.d.ts +8 -0
- package/dist/head/MRT_TableHeadCellFilterLabel.d.ts +8 -0
- package/dist/head/MRT_TableHeadCellGrabHandle.d.ts +9 -0
- package/dist/head/MRT_TableHeadCellResizeHandle.d.ts +8 -0
- package/dist/head/MRT_TableHeadCellSortLabel.d.ts +8 -0
- package/dist/icons.d.ts +1 -0
- package/dist/inputs/MRT_FilterRangeFields.d.ts +2 -2
- package/dist/localization.d.ts +1 -0
- package/dist/material-react-table.cjs.development.js +514 -313
- package/dist/material-react-table.cjs.development.js.map +1 -1
- package/dist/material-react-table.cjs.production.min.js +1 -1
- package/dist/material-react-table.cjs.production.min.js.map +1 -1
- package/dist/material-react-table.esm.js +516 -315
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +1 -0
- package/dist/toolbar/MRT_ToolbarTop.d.ts +2 -0
- package/dist/utils.d.ts +1 -1
- package/package.json +13 -13
- package/src/MaterialReactTable.tsx +13 -0
- package/src/body/MRT_TableBodyCell.tsx +10 -7
- package/src/buttons/MRT_CopyButton.tsx +3 -2
- package/src/buttons/MRT_ExpandAllButton.tsx +26 -18
- package/src/buttons/MRT_ExpandButton.tsx +27 -21
- package/src/footer/MRT_TableFooterCell.tsx +11 -8
- package/src/footer/MRT_TableFooterRow.tsx +3 -2
- package/src/head/MRT_DraggableTableHeadCell.tsx +52 -0
- package/src/head/MRT_TableHeadCell.tsx +75 -156
- package/src/head/MRT_TableHeadCellFilterContainer.tsx +32 -0
- package/src/head/MRT_TableHeadCellFilterLabel.tsx +82 -0
- package/src/head/MRT_TableHeadCellGrabHandle.tsx +52 -0
- package/src/head/MRT_TableHeadCellResizeHandle.tsx +52 -0
- package/src/head/MRT_TableHeadCellSortLabel.tsx +45 -0
- package/src/head/MRT_TableHeadRow.tsx +17 -8
- package/src/icons.ts +3 -0
- package/src/inputs/MRT_EditCellTextField.tsx +1 -1
- package/src/inputs/MRT_FilterRangeFields.tsx +1 -3
- package/src/inputs/MRT_FilterTextField.tsx +4 -1
- package/src/inputs/MRT_SelectCheckbox.tsx +1 -2
- package/src/localization.ts +2 -0
- package/src/menus/MRT_ColumnActionMenu.tsx +6 -6
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +1 -1
- package/src/table/MRT_TablePaper.tsx +26 -22
- package/src/table/MRT_TableRoot.tsx +9 -9
- package/src/toolbar/MRT_ToolbarAlertBanner.tsx +11 -27
- package/src/toolbar/MRT_ToolbarBottom.tsx +23 -5
- package/src/toolbar/MRT_ToolbarInternalButtons.tsx +30 -29
- package/src/toolbar/MRT_ToolbarTop.tsx +21 -20
package/dist/utils.d.ts
CHANGED
|
@@ -7,6 +7,6 @@ export declare const createGroup: <D extends Record<string, any> = {}>(table: Ta
|
|
|
7
7
|
export declare const createDataColumn: <D extends Record<string, any> = {}>(table: Table<D>, column: MRT_ColumnDef<D>, currentFilterFns: {
|
|
8
8
|
[key: string]: MRT_FilterFn<{}>;
|
|
9
9
|
}) => ColumnDef<D>;
|
|
10
|
-
export declare const createDisplayColumn: <D extends Record<string, any> = {}>(table: Table<D>, column: Pick<MRT_ColumnDef<D>, "footer" | "columns" | "filterFn" | "id" | "accessorKey" | "accessorFn" | "cell" | "meta" | "enableHiding" | "enablePinning" | "enableColumnFilter" | "enableGlobalFilter" | "sortingFn" | "sortDescFirst" | "enableSorting" | "enableMultiSort" | "invertSorting" | "sortUndefined" | "aggregationFn" | "aggregatedCell" | "enableGrouping" | "enableResizing" | "size" | "minSize" | "maxSize" | "Edit" | "Filter" | "Footer" | "Header" | "Cell" | "enableClickToCopy" | "enableColumnActions" | "enableEditing" | "enabledColumnFilterOptions" | "filterSelectOptions" | "muiTableBodyCellCopyButtonProps" | "muiTableBodyCellEditTextFieldProps" | "muiTableBodyCellProps" | "muiTableFooterCellProps" | "muiTableHeadCellColumnActionsButtonProps" | "muiTableHeadCellFilterTextFieldProps" | "muiTableHeadCellProps" | "onCellEditBlur" | "onCellEditChange" | "onColumnFilterValueChange"> & {
|
|
10
|
+
export declare const createDisplayColumn: <D extends Record<string, any> = {}>(table: Table<D>, column: Pick<MRT_ColumnDef<D>, "footer" | "columns" | "filterFn" | "id" | "accessorKey" | "accessorFn" | "cell" | "meta" | "enableHiding" | "enablePinning" | "enableColumnFilter" | "enableGlobalFilter" | "sortingFn" | "sortDescFirst" | "enableSorting" | "enableMultiSort" | "invertSorting" | "sortUndefined" | "aggregationFn" | "aggregatedCell" | "enableGrouping" | "enableResizing" | "size" | "minSize" | "maxSize" | "Edit" | "Filter" | "Footer" | "Header" | "Cell" | "enableClickToCopy" | "enableColumnActions" | "enableColumnOrdering" | "enableEditing" | "enabledColumnFilterOptions" | "filterSelectOptions" | "muiTableBodyCellCopyButtonProps" | "muiTableBodyCellEditTextFieldProps" | "muiTableBodyCellProps" | "muiTableFooterCellProps" | "muiTableHeadCellColumnActionsButtonProps" | "muiTableHeadCellFilterTextFieldProps" | "muiTableHeadCellProps" | "onCellEditBlur" | "onCellEditChange" | "onColumnFilterValueChange"> & {
|
|
11
11
|
header?: string | undefined;
|
|
12
12
|
}) => ColumnDef<D>;
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.1",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"name": "material-react-table",
|
|
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.",
|
|
5
|
+
"description": "A fully featured Material UI implementation of Tanstack react-table, inspired by material-table and the MUI X DataGrid, written from the ground up in TypeScript.",
|
|
6
6
|
"author": "Kevin Vandy",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"react-table",
|
|
9
9
|
"material-ui",
|
|
10
|
-
"material-table"
|
|
10
|
+
"material-table",
|
|
11
|
+
"tanstack table"
|
|
11
12
|
],
|
|
12
13
|
"repository": {
|
|
13
14
|
"type": "git",
|
|
@@ -47,29 +48,26 @@
|
|
|
47
48
|
"size-limit": [
|
|
48
49
|
{
|
|
49
50
|
"path": "dist/material-react-table.cjs.production.min.js",
|
|
50
|
-
"limit": "
|
|
51
|
+
"limit": "50 KB"
|
|
51
52
|
},
|
|
52
53
|
{
|
|
53
54
|
"path": "dist/material-react-table.esm.js",
|
|
54
|
-
"limit": "
|
|
55
|
+
"limit": "50 KB"
|
|
55
56
|
}
|
|
56
57
|
],
|
|
57
58
|
"devDependencies": {
|
|
58
59
|
"@babel/core": "^7.18.2",
|
|
59
60
|
"@emotion/react": "^11.9.0",
|
|
60
61
|
"@emotion/styled": "^11.8.1",
|
|
61
|
-
"@
|
|
62
|
-
"@faker-js/faker": "^7.1.0",
|
|
62
|
+
"@faker-js/faker": "^6.3.1",
|
|
63
63
|
"@mui/icons-material": "^5.8.0",
|
|
64
64
|
"@mui/material": "^5.8.1",
|
|
65
65
|
"@size-limit/preset-small-lib": "^7.0.8",
|
|
66
66
|
"@storybook/addon-a11y": "^6.5.5",
|
|
67
67
|
"@storybook/addon-actions": "^6.5.5",
|
|
68
|
-
"@storybook/addon-console": "^1.2.3",
|
|
69
68
|
"@storybook/addon-essentials": "^6.5.5",
|
|
70
69
|
"@storybook/addon-info": "^5.3.21",
|
|
71
70
|
"@storybook/addon-links": "^6.5.5",
|
|
72
|
-
"@storybook/addon-storysource": "^6.5.5",
|
|
73
71
|
"@storybook/addons": "^6.5.5",
|
|
74
72
|
"@storybook/react": "^6.5.5",
|
|
75
73
|
"@types/react": "^18.0.9",
|
|
@@ -79,11 +77,10 @@
|
|
|
79
77
|
"eslint-plugin-react-hooks": "^4.5.0",
|
|
80
78
|
"husky": "^8.0.1",
|
|
81
79
|
"prettier": "^2.6.2",
|
|
82
|
-
"react": "^
|
|
83
|
-
"react-dom": "^
|
|
80
|
+
"react": "^17.0.2",
|
|
81
|
+
"react-dom": "^17.0.2",
|
|
84
82
|
"react-is": "^18.1.0",
|
|
85
83
|
"size-limit": "^7.0.8",
|
|
86
|
-
"storybook-addon-paddings": "^4.3.0",
|
|
87
84
|
"storybook-dark-mode": "^1.1.0",
|
|
88
85
|
"tsdx": "^0.14.1",
|
|
89
86
|
"tslib": "^2.4.0",
|
|
@@ -98,6 +95,9 @@
|
|
|
98
95
|
},
|
|
99
96
|
"dependencies": {
|
|
100
97
|
"@tanstack/match-sorter-utils": "^8.0.0-alpha.83",
|
|
101
|
-
"@tanstack/react-table": "^8.0.0-alpha.
|
|
98
|
+
"@tanstack/react-table": "^8.0.0-alpha.89",
|
|
99
|
+
"react-dnd": "^16.0.1",
|
|
100
|
+
"react-dnd-html5-backend": "^16.0.1",
|
|
101
|
+
"react-dnd-scrolling": "^1.2.4"
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -80,6 +80,7 @@ export type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<
|
|
|
80
80
|
>,
|
|
81
81
|
| 'getAllColumns'
|
|
82
82
|
| 'getAllLeafColumns'
|
|
83
|
+
| 'getColumn'
|
|
83
84
|
| 'getExpandedRowModel'
|
|
84
85
|
| 'getPaginationRowModel'
|
|
85
86
|
| 'getPrePaginationRowModel'
|
|
@@ -90,6 +91,7 @@ export type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<
|
|
|
90
91
|
> & {
|
|
91
92
|
getAllColumns: () => MRT_Column<D>[];
|
|
92
93
|
getAllLeafColumns: () => MRT_Column<D>[];
|
|
94
|
+
getColumn: (columnId: string) => MRT_Column<D>;
|
|
93
95
|
getExpandedRowModel: () => MRT_RowModel<D>;
|
|
94
96
|
getPaginationRowModel: () => MRT_RowModel<D>;
|
|
95
97
|
getPrePaginationRowModel: () => MRT_RowModel<D>;
|
|
@@ -176,6 +178,7 @@ export type MRT_ColumnDef<D extends Record<string, any> = {}> = Omit<
|
|
|
176
178
|
columns?: MRT_ColumnDef<D>[];
|
|
177
179
|
enableClickToCopy?: boolean;
|
|
178
180
|
enableColumnActions?: boolean;
|
|
181
|
+
enableColumnOrdering?: boolean;
|
|
179
182
|
enableEditing?: boolean;
|
|
180
183
|
enabledColumnFilterOptions?: (MRT_FILTER_OPTION | string)[];
|
|
181
184
|
filterFn?: MRT_FilterFn;
|
|
@@ -280,6 +283,9 @@ export type MRT_Column<D extends Record<string, any> = {}> = Omit<
|
|
|
280
283
|
> &
|
|
281
284
|
MRT_ColumnDef<D> & {
|
|
282
285
|
columns?: MRT_Column<D>[];
|
|
286
|
+
columnDef: MRT_ColumnDef<D>;
|
|
287
|
+
header: string;
|
|
288
|
+
footer: string;
|
|
283
289
|
};
|
|
284
290
|
|
|
285
291
|
export type MRT_Header<D extends Record<string, any> = {}> = Omit<
|
|
@@ -327,6 +333,7 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
|
|
|
327
333
|
editingMode?: 'table' | 'row' | 'cell';
|
|
328
334
|
enableClickToCopy?: boolean;
|
|
329
335
|
enableColumnActions?: boolean;
|
|
336
|
+
enableColumnOrdering?: boolean;
|
|
330
337
|
enableDensePaddingToggle?: boolean;
|
|
331
338
|
enableEditing?: boolean;
|
|
332
339
|
enableExpandAll?: boolean;
|
|
@@ -754,15 +761,18 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
|
|
|
754
761
|
export default <D extends Record<string, any> = {}>({
|
|
755
762
|
autoResetExpanded = false,
|
|
756
763
|
columnResizeMode = 'onEnd',
|
|
764
|
+
defaultColumn = { minSize: 50, maxSize: 1000, size: 150 },
|
|
757
765
|
editingMode = 'row',
|
|
758
766
|
enableColumnActions = true,
|
|
759
767
|
enableColumnFilters = true,
|
|
768
|
+
enableColumnOrdering = false,
|
|
760
769
|
enableColumnResizing = false,
|
|
761
770
|
enableDensePaddingToggle = true,
|
|
762
771
|
enableExpandAll = true,
|
|
763
772
|
enableFilters = true,
|
|
764
773
|
enableFullScreenToggle = true,
|
|
765
774
|
enableGlobalFilter = true,
|
|
775
|
+
enableGrouping = false,
|
|
766
776
|
enableHiding = true,
|
|
767
777
|
enableMultiRowSelection = true,
|
|
768
778
|
enablePagination = true,
|
|
@@ -787,15 +797,18 @@ export default <D extends Record<string, any> = {}>({
|
|
|
787
797
|
<MRT_TableRoot
|
|
788
798
|
autoResetExpanded={autoResetExpanded}
|
|
789
799
|
columnResizeMode={columnResizeMode}
|
|
800
|
+
defaultColumn={defaultColumn}
|
|
790
801
|
editingMode={editingMode}
|
|
791
802
|
enableColumnActions={enableColumnActions}
|
|
792
803
|
enableColumnFilters={enableColumnFilters}
|
|
804
|
+
enableColumnOrdering={enableColumnOrdering}
|
|
793
805
|
enableColumnResizing={enableColumnResizing}
|
|
794
806
|
enableDensePaddingToggle={enableDensePaddingToggle}
|
|
795
807
|
enableExpandAll={enableExpandAll}
|
|
796
808
|
enableFilters={enableFilters}
|
|
797
809
|
enableFullScreenToggle={enableFullScreenToggle}
|
|
798
810
|
enableGlobalFilter={enableGlobalFilter}
|
|
811
|
+
enableGrouping={enableGrouping}
|
|
799
812
|
enableHiding={enableHiding}
|
|
800
813
|
enableMultiRowSelection={enableMultiRowSelection}
|
|
801
814
|
enablePagination={enablePagination}
|
|
@@ -132,8 +132,6 @@ export const MRT_TableBodyCell: FC<Props> = ({
|
|
|
132
132
|
column.getIsPinned() === 'left'
|
|
133
133
|
? `${column.getStart('left')}px`
|
|
134
134
|
: undefined,
|
|
135
|
-
maxWidth: `min(${column.getSize()}px, fit-content)`,
|
|
136
|
-
minWidth: `max${column.getSize()}px, ${column.minSize}px`,
|
|
137
135
|
p: isDensePadding
|
|
138
136
|
? column.columnDefType === 'display'
|
|
139
137
|
? '0 0.5rem'
|
|
@@ -150,7 +148,6 @@ export const MRT_TableBodyCell: FC<Props> = ({
|
|
|
150
148
|
column.getIsPinned() === 'right' ? `${getTotalRight()}px` : undefined,
|
|
151
149
|
transition: 'all 0.2s ease-in-out',
|
|
152
150
|
whiteSpace: isDensePadding ? 'nowrap' : 'normal',
|
|
153
|
-
width: column.getSize(),
|
|
154
151
|
zIndex: column.getIsPinned() ? 1 : undefined,
|
|
155
152
|
'&:hover': {
|
|
156
153
|
backgroundColor: enableHover
|
|
@@ -161,6 +158,11 @@ export const MRT_TableBodyCell: FC<Props> = ({
|
|
|
161
158
|
},
|
|
162
159
|
...(tableCellProps?.sx as any),
|
|
163
160
|
})}
|
|
161
|
+
style={{
|
|
162
|
+
maxWidth: `min(${column.getSize()}px, fit-content)`,
|
|
163
|
+
minWidth: `max(${column.getSize()}px, ${column.minSize ?? 30}px)`,
|
|
164
|
+
width: column.getSize(),
|
|
165
|
+
}}
|
|
164
166
|
>
|
|
165
167
|
<>
|
|
166
168
|
{isLoading || showSkeletons ? (
|
|
@@ -171,7 +173,7 @@ export const MRT_TableBodyCell: FC<Props> = ({
|
|
|
171
173
|
{...muiTableBodyCellSkeletonProps}
|
|
172
174
|
/>
|
|
173
175
|
) : column.columnDefType === 'display' ? (
|
|
174
|
-
column.Cell?.({ cell, tableInstance })
|
|
176
|
+
column.columnDef.Cell?.({ cell, tableInstance })
|
|
175
177
|
) : cell.getIsPlaceholder() ||
|
|
176
178
|
(row.getIsGrouped() &&
|
|
177
179
|
column.id !==
|
|
@@ -184,7 +186,7 @@ export const MRT_TableBodyCell: FC<Props> = ({
|
|
|
184
186
|
<>
|
|
185
187
|
<MRT_CopyButton cell={cell} tableInstance={tableInstance}>
|
|
186
188
|
<>
|
|
187
|
-
{cell.column?.Cell?.({ cell, tableInstance }) ??
|
|
189
|
+
{cell.column.columnDef?.Cell?.({ cell, tableInstance }) ??
|
|
188
190
|
cell.renderCell()}
|
|
189
191
|
</>
|
|
190
192
|
</MRT_CopyButton>
|
|
@@ -192,8 +194,9 @@ export const MRT_TableBodyCell: FC<Props> = ({
|
|
|
192
194
|
</>
|
|
193
195
|
) : (
|
|
194
196
|
<>
|
|
195
|
-
{cell.column?.Cell?.({ cell, tableInstance }) ??
|
|
196
|
-
|
|
197
|
+
{cell.column.columnDef?.Cell?.({ cell, tableInstance }) ??
|
|
198
|
+
cell.renderCell()}
|
|
199
|
+
{row.getIsGrouped() && <> ({row.subRows?.length ?? ''})</>}
|
|
197
200
|
</>
|
|
198
201
|
)}
|
|
199
202
|
</>
|
|
@@ -4,7 +4,7 @@ import { MRT_Cell, MRT_TableInstance } from '..';
|
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
cell: MRT_Cell;
|
|
7
|
-
children: ReactNode
|
|
7
|
+
children: ReactNode;
|
|
8
8
|
tableInstance: MRT_TableInstance;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -52,6 +52,8 @@ export const MRT_CopyButton: FC<Props> = ({
|
|
|
52
52
|
aria-label={localization.clickToCopy}
|
|
53
53
|
onClick={() => handleCopy(cell.getValue())}
|
|
54
54
|
size="small"
|
|
55
|
+
type="button"
|
|
56
|
+
variant="text"
|
|
55
57
|
{...buttonProps}
|
|
56
58
|
sx={{
|
|
57
59
|
backgroundColor: 'transparent',
|
|
@@ -67,7 +69,6 @@ export const MRT_CopyButton: FC<Props> = ({
|
|
|
67
69
|
textTransform: 'inherit',
|
|
68
70
|
...buttonProps?.sx,
|
|
69
71
|
}}
|
|
70
|
-
variant="text"
|
|
71
72
|
>
|
|
72
73
|
{children}
|
|
73
74
|
</Button>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { FC } from 'react';
|
|
2
|
-
import { IconButton } from '@mui/material';
|
|
2
|
+
import { IconButton, Tooltip } from '@mui/material';
|
|
3
3
|
import { MRT_TableInstance } from '..';
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
@@ -10,35 +10,43 @@ export const MRT_ExpandAllButton: FC<Props> = ({ tableInstance }) => {
|
|
|
10
10
|
const {
|
|
11
11
|
getIsAllRowsExpanded,
|
|
12
12
|
getIsSomeRowsExpanded,
|
|
13
|
+
getCanSomeRowsExpand,
|
|
13
14
|
getState,
|
|
14
15
|
options: {
|
|
15
16
|
icons: { DoubleArrowDownIcon },
|
|
16
17
|
localization,
|
|
18
|
+
renderDetailPanel,
|
|
17
19
|
},
|
|
18
20
|
toggleAllRowsExpanded,
|
|
19
21
|
} = tableInstance;
|
|
20
22
|
|
|
21
|
-
const { isDensePadding
|
|
23
|
+
const { isDensePadding } = getState();
|
|
22
24
|
|
|
23
25
|
return (
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
<Tooltip
|
|
27
|
+
arrow
|
|
28
|
+
enterDelay={1000}
|
|
29
|
+
enterNextDelay={1000}
|
|
27
30
|
title={localization.expandAll}
|
|
28
|
-
onClick={() => toggleAllRowsExpanded(!getIsAllRowsExpanded())}
|
|
29
|
-
sx={{
|
|
30
|
-
height: isDensePadding ? '1.75rem' : '2.25rem',
|
|
31
|
-
width: isDensePadding ? '1.75rem' : '2.25rem',
|
|
32
|
-
}}
|
|
33
31
|
>
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
<IconButton
|
|
33
|
+
aria-label={localization.expandAll}
|
|
34
|
+
disabled={!getCanSomeRowsExpand() && !renderDetailPanel}
|
|
35
|
+
onClick={() => toggleAllRowsExpanded(!getIsAllRowsExpanded())}
|
|
36
|
+
sx={{
|
|
37
|
+
height: isDensePadding ? '1.75rem' : '2.25rem',
|
|
38
|
+
width: isDensePadding ? '1.75rem' : '2.25rem',
|
|
40
39
|
}}
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
>
|
|
41
|
+
<DoubleArrowDownIcon
|
|
42
|
+
style={{
|
|
43
|
+
transform: `rotate(${
|
|
44
|
+
getIsAllRowsExpanded() ? -180 : getIsSomeRowsExpanded() ? -90 : 0
|
|
45
|
+
}deg)`,
|
|
46
|
+
transition: 'transform 0.2s',
|
|
47
|
+
}}
|
|
48
|
+
/>
|
|
49
|
+
</IconButton>
|
|
50
|
+
</Tooltip>
|
|
43
51
|
);
|
|
44
52
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { FC, MouseEvent } from 'react';
|
|
2
|
-
import { IconButton } from '@mui/material';
|
|
2
|
+
import { IconButton, Tooltip } from '@mui/material';
|
|
3
3
|
import type { MRT_Row, MRT_TableInstance } from '..';
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
@@ -26,28 +26,34 @@ export const MRT_ExpandButton: FC<Props> = ({ row, tableInstance }) => {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
return (
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
<Tooltip
|
|
30
|
+
arrow
|
|
31
|
+
enterDelay={1000}
|
|
32
|
+
enterNextDelay={1000}
|
|
32
33
|
title={localization.expand}
|
|
33
|
-
onClick={handleToggleExpand}
|
|
34
|
-
sx={{
|
|
35
|
-
height: isDensePadding ? '1.75rem' : '2.25rem',
|
|
36
|
-
width: isDensePadding ? '1.75rem' : '2.25rem',
|
|
37
|
-
}}
|
|
38
34
|
>
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
: 0
|
|
47
|
-
}deg)`,
|
|
48
|
-
transition: 'transform 0.2s',
|
|
35
|
+
<IconButton
|
|
36
|
+
aria-label={localization.expand}
|
|
37
|
+
disabled={!row.getCanExpand() && !renderDetailPanel}
|
|
38
|
+
onClick={handleToggleExpand}
|
|
39
|
+
sx={{
|
|
40
|
+
height: isDensePadding ? '1.75rem' : '2.25rem',
|
|
41
|
+
width: isDensePadding ? '1.75rem' : '2.25rem',
|
|
49
42
|
}}
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
>
|
|
44
|
+
<ExpandMoreIcon
|
|
45
|
+
style={{
|
|
46
|
+
transform: `rotate(${
|
|
47
|
+
!row.getCanExpand() && !renderDetailPanel
|
|
48
|
+
? -90
|
|
49
|
+
: row.getIsExpanded()
|
|
50
|
+
? -180
|
|
51
|
+
: 0
|
|
52
|
+
}deg)`,
|
|
53
|
+
transition: 'transform 0.2s',
|
|
54
|
+
}}
|
|
55
|
+
/>
|
|
56
|
+
</IconButton>
|
|
57
|
+
</Tooltip>
|
|
52
58
|
);
|
|
53
59
|
};
|
|
@@ -54,14 +54,17 @@ export const MRT_TableFooterCell: FC<Props> = ({ footer, tableInstance }) => {
|
|
|
54
54
|
...(tableCellProps?.sx as any),
|
|
55
55
|
})}
|
|
56
56
|
>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
<>
|
|
58
|
+
{footer.isPlaceholder
|
|
59
|
+
? null
|
|
60
|
+
: column.columnDef.Footer?.({
|
|
61
|
+
footer,
|
|
62
|
+
tableInstance,
|
|
63
|
+
}) ??
|
|
64
|
+
column.columnDef.footer ??
|
|
65
|
+
footer.renderFooter() ??
|
|
66
|
+
null}
|
|
67
|
+
</>
|
|
65
68
|
</TableCell>
|
|
66
69
|
);
|
|
67
70
|
};
|
|
@@ -20,8 +20,9 @@ export const MRT_TableFooterRow: FC<Props> = ({
|
|
|
20
20
|
if (
|
|
21
21
|
!footerGroup.headers?.some(
|
|
22
22
|
(h) =>
|
|
23
|
-
(typeof h.column.footer === 'string' &&
|
|
24
|
-
|
|
23
|
+
(typeof h.column.columnDef.footer === 'string' &&
|
|
24
|
+
!!h.column.columnDef.footer) ||
|
|
25
|
+
h.column.columnDef.Footer,
|
|
25
26
|
)
|
|
26
27
|
)
|
|
27
28
|
return null;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import React, { FC } from 'react';
|
|
2
|
+
import { useDrag, useDrop } from 'react-dnd';
|
|
3
|
+
import { MRT_TableHeadCell } from './MRT_TableHeadCell';
|
|
4
|
+
import type { MRT_Header, MRT_TableInstance } from '..';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
header: MRT_Header;
|
|
8
|
+
tableInstance: MRT_TableInstance;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const MRT_DraggableTableHeadCell: FC<Props> = ({
|
|
12
|
+
header,
|
|
13
|
+
tableInstance,
|
|
14
|
+
}) => {
|
|
15
|
+
const {
|
|
16
|
+
getState,
|
|
17
|
+
options: {},
|
|
18
|
+
setColumnOrder,
|
|
19
|
+
} = tableInstance;
|
|
20
|
+
|
|
21
|
+
const { columnOrder } = getState();
|
|
22
|
+
|
|
23
|
+
const reorder = (item: MRT_Header, newIndex: number) => {
|
|
24
|
+
const { index: currentIndex } = item;
|
|
25
|
+
columnOrder.splice(newIndex, 0, columnOrder.splice(currentIndex, 1)[0]);
|
|
26
|
+
setColumnOrder([...columnOrder]);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const [, drop] = useDrop({
|
|
30
|
+
accept: 'header',
|
|
31
|
+
drop: (item: MRT_Header) => reorder(item, header.index),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const [{ isDragging }, drag, preview] = useDrag({
|
|
35
|
+
collect: (monitor) => ({
|
|
36
|
+
isDragging: monitor.isDragging(),
|
|
37
|
+
}),
|
|
38
|
+
item: () => header,
|
|
39
|
+
type: 'header',
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<MRT_TableHeadCell
|
|
44
|
+
dragRef={drag}
|
|
45
|
+
dropRef={drop}
|
|
46
|
+
header={header}
|
|
47
|
+
isDragging={isDragging}
|
|
48
|
+
previewRef={preview}
|
|
49
|
+
tableInstance={tableInstance}
|
|
50
|
+
/>
|
|
51
|
+
);
|
|
52
|
+
};
|