material-react-table 1.4.0 → 1.4.2
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/dist/cjs/index.js +24 -596
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/MaterialReactTable.d.ts +3 -2
- package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +4 -1
- package/dist/cjs/types/index.d.ts +3 -1
- package/dist/cjs/types/table/MRT_TableRoot.d.ts +3 -2
- package/dist/cjs/types/toolbar/MRT_ToolbarAlertBanner.d.ts +4 -4
- package/dist/cjs/types/toolbar/MRT_ToolbarDropZone.d.ts +4 -4
- package/dist/esm/material-react-table.esm.js +326 -882
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/types/MaterialReactTable.d.ts +3 -2
- package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +4 -1
- package/dist/esm/types/index.d.ts +3 -1
- package/dist/esm/types/table/MRT_TableRoot.d.ts +3 -2
- package/dist/esm/types/toolbar/MRT_ToolbarAlertBanner.d.ts +4 -4
- package/dist/esm/types/toolbar/MRT_ToolbarDropZone.d.ts +4 -4
- package/dist/index.d.ts +30 -18
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +4 -2
- package/src/body/MRT_TableBody.tsx +53 -51
- package/src/body/MRT_TableBodyRow.tsx +6 -1
- package/src/body/MRT_TableDetailPanel.tsx +32 -5
- package/src/index.tsx +4 -0
- package/src/toolbar/MRT_ToolbarAlertBanner.tsx +5 -5
- package/src/toolbar/MRT_ToolbarDropZone.tsx +6 -4
@@ -541,9 +541,10 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> = Om
|
|
541
541
|
table: MRT_TableInstance<TData>;
|
542
542
|
row: MRT_Row<TData>;
|
543
543
|
}) => IconButtonProps);
|
544
|
-
muiTableBodyRowProps?: TableRowProps | (({
|
545
|
-
|
544
|
+
muiTableBodyRowProps?: TableRowProps | (({ isDetailPanel, row, table, }: {
|
545
|
+
isDetailPanel?: boolean;
|
546
546
|
row: MRT_Row<TData>;
|
547
|
+
table: MRT_TableInstance<TData>;
|
547
548
|
}) => TableRowProps);
|
548
549
|
muiTableContainerProps?: TableContainerProps | (({ table, }: {
|
549
550
|
table: MRT_TableInstance<TData>;
|
@@ -1,8 +1,11 @@
|
|
1
|
-
import { FC } from 'react';
|
1
|
+
import React, { FC } from 'react';
|
2
|
+
import type { VirtualItem } from '@tanstack/react-virtual';
|
2
3
|
import type { MRT_Row, MRT_TableInstance } from '..';
|
3
4
|
interface Props {
|
5
|
+
parentRowRef: React.RefObject<HTMLTableRowElement>;
|
4
6
|
row: MRT_Row;
|
5
7
|
table: MRT_TableInstance;
|
8
|
+
virtualRow?: VirtualItem;
|
6
9
|
}
|
7
10
|
export declare const MRT_TableDetailPanel: FC<Props>;
|
8
11
|
export {};
|
@@ -12,5 +12,7 @@ import { MRT_TablePagination } from './toolbar/MRT_TablePagination';
|
|
12
12
|
import { MRT_ToggleDensePaddingButton } from './buttons/MRT_ToggleDensePaddingButton';
|
13
13
|
import { MRT_ToggleFiltersButton } from './buttons/MRT_ToggleFiltersButton';
|
14
14
|
import { MRT_ToggleGlobalFilterButton } from './buttons/MRT_ToggleGlobalFilterButton';
|
15
|
+
import { MRT_ToolbarAlertBanner } from './toolbar/MRT_ToolbarAlertBanner';
|
16
|
+
import { MRT_ToolbarDropZone } from './toolbar/MRT_ToolbarDropZone';
|
15
17
|
import { MRT_ToolbarInternalButtons } from './toolbar/MRT_ToolbarInternalButtons';
|
16
|
-
export { MRT_CopyButton, MRT_FilterOptionMenu, MRT_FullScreenToggleButton, MRT_GlobalFilterTextField, MRT_ShowHideColumnsButton, MRT_TablePagination, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MRT_ToolbarInternalButtons, };
|
18
|
+
export { MRT_CopyButton, MRT_FilterOptionMenu, MRT_FullScreenToggleButton, MRT_GlobalFilterTextField, MRT_ShowHideColumnsButton, MRT_TablePagination, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MRT_ToolbarAlertBanner, MRT_ToolbarDropZone, MRT_ToolbarInternalButtons, };
|
@@ -104,9 +104,10 @@ export declare const MRT_TableRoot: <TData extends Record<string, any> = {}>(pro
|
|
104
104
|
table: MRT_TableInstance<TData>;
|
105
105
|
row: MRT_Row<TData>;
|
106
106
|
}) => import("@mui/material").IconButtonProps<"button", {}>) | undefined;
|
107
|
-
muiTableBodyRowProps?: import("@mui/material").TableRowProps<"tr", {}> | (({
|
108
|
-
|
107
|
+
muiTableBodyRowProps?: import("@mui/material").TableRowProps<"tr", {}> | (({ isDetailPanel, row, table, }: {
|
108
|
+
isDetailPanel?: boolean | undefined;
|
109
109
|
row: MRT_Row<TData>;
|
110
|
+
table: MRT_TableInstance<TData>;
|
110
111
|
}) => import("@mui/material").TableRowProps<"tr", {}>) | undefined;
|
111
112
|
muiTableContainerProps?: import("@mui/material").TableContainerProps<"div", {}> | (({ table, }: {
|
112
113
|
table: MRT_TableInstance<TData>;
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
/// <reference types="react" />
|
2
2
|
import { MRT_TableInstance } from '..';
|
3
|
-
interface Props {
|
3
|
+
interface Props<TData extends Record<string, any> = {}> {
|
4
4
|
stackAlertBanner: boolean;
|
5
|
-
table: MRT_TableInstance
|
5
|
+
table: MRT_TableInstance<TData>;
|
6
6
|
}
|
7
|
-
export declare const MRT_ToolbarAlertBanner:
|
7
|
+
export declare const MRT_ToolbarAlertBanner: <TData extends Record<string, any> = {}>({ stackAlertBanner, table, }: Props<TData>) => JSX.Element;
|
8
8
|
export {};
|
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
/// <reference types="react" />
|
2
2
|
import { MRT_TableInstance } from '..';
|
3
|
-
interface Props {
|
4
|
-
table: MRT_TableInstance
|
3
|
+
interface Props<TData extends Record<string, any> = {}> {
|
4
|
+
table: MRT_TableInstance<TData>;
|
5
5
|
}
|
6
|
-
export declare const MRT_ToolbarDropZone:
|
6
|
+
export declare const MRT_ToolbarDropZone: <TData extends Record<string, any> = {}>({ table, }: Props<TData>) => JSX.Element;
|
7
7
|
export {};
|
package/dist/index.d.ts
CHANGED
@@ -664,9 +664,10 @@ type MaterialReactTableProps<TData extends Record<string, any> = {}> = Omit<Part
|
|
664
664
|
table: MRT_TableInstance<TData>;
|
665
665
|
row: MRT_Row<TData>;
|
666
666
|
}) => IconButtonProps);
|
667
|
-
muiTableBodyRowProps?: TableRowProps | (({
|
668
|
-
|
667
|
+
muiTableBodyRowProps?: TableRowProps | (({ isDetailPanel, row, table, }: {
|
668
|
+
isDetailPanel?: boolean;
|
669
669
|
row: MRT_Row<TData>;
|
670
|
+
table: MRT_TableInstance<TData>;
|
670
671
|
}) => TableRowProps);
|
671
672
|
muiTableContainerProps?: TableContainerProps | (({ table, }: {
|
672
673
|
table: MRT_TableInstance<TData>;
|
@@ -820,14 +821,14 @@ type MaterialReactTableProps<TData extends Record<string, any> = {}> = Omit<Part
|
|
820
821
|
};
|
821
822
|
declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
|
822
823
|
|
823
|
-
interface Props$
|
824
|
+
interface Props$b<TData extends Record<string, any> = {}> {
|
824
825
|
cell: MRT_Cell<TData>;
|
825
826
|
children: ReactNode;
|
826
827
|
table: MRT_TableInstance<TData>;
|
827
828
|
}
|
828
|
-
declare const MRT_CopyButton: <TData extends Record<string, any> = {}>({ cell, children, table, }: Props$
|
829
|
+
declare const MRT_CopyButton: <TData extends Record<string, any> = {}>({ cell, children, table, }: Props$b<TData>) => JSX.Element;
|
829
830
|
|
830
|
-
interface Props$
|
831
|
+
interface Props$a<TData extends Record<string, any> = {}> {
|
831
832
|
anchorEl: HTMLElement | null;
|
832
833
|
header?: MRT_Header<TData>;
|
833
834
|
onSelect?: () => void;
|
@@ -835,47 +836,58 @@ interface Props$8<TData extends Record<string, any> = {}> {
|
|
835
836
|
setFilterValue?: (filterValue: any) => void;
|
836
837
|
table: MRT_TableInstance<TData>;
|
837
838
|
}
|
838
|
-
declare const MRT_FilterOptionMenu: <TData extends Record<string, any> = {}>({ anchorEl, header, onSelect, setAnchorEl, setFilterValue, table, }: Props$
|
839
|
+
declare const MRT_FilterOptionMenu: <TData extends Record<string, any> = {}>({ anchorEl, header, onSelect, setAnchorEl, setFilterValue, table, }: Props$a<TData>) => JSX.Element;
|
840
|
+
|
841
|
+
interface Props$9<TData extends Record<string, any> = {}> extends IconButtonProps {
|
842
|
+
table: MRT_TableInstance<TData>;
|
843
|
+
}
|
844
|
+
declare const MRT_FullScreenToggleButton: <TData extends Record<string, any> = {}>({ table, ...rest }: Props$9<TData>) => JSX.Element;
|
845
|
+
|
846
|
+
interface Props$8<TData extends Record<string, any> = {}> {
|
847
|
+
table: MRT_TableInstance<TData>;
|
848
|
+
}
|
849
|
+
declare const MRT_GlobalFilterTextField: <TData extends Record<string, any> = {}>({ table, }: Props$8<TData>) => JSX.Element;
|
839
850
|
|
840
851
|
interface Props$7<TData extends Record<string, any> = {}> extends IconButtonProps {
|
841
852
|
table: MRT_TableInstance<TData>;
|
842
853
|
}
|
843
|
-
declare const
|
854
|
+
declare const MRT_ShowHideColumnsButton: <TData extends Record<string, any> = {}>({ table, ...rest }: Props$7<TData>) => JSX.Element;
|
844
855
|
|
845
856
|
interface Props$6<TData extends Record<string, any> = {}> {
|
857
|
+
position: 'top' | 'bottom';
|
846
858
|
table: MRT_TableInstance<TData>;
|
847
859
|
}
|
848
|
-
declare const
|
860
|
+
declare const MRT_TablePagination: <TData extends Record<string, any> = {}>({ table, position, }: Props$6<TData>) => JSX.Element;
|
849
861
|
|
850
862
|
interface Props$5<TData extends Record<string, any> = {}> extends IconButtonProps {
|
851
863
|
table: MRT_TableInstance<TData>;
|
852
864
|
}
|
853
|
-
declare const
|
865
|
+
declare const MRT_ToggleDensePaddingButton: <TData extends Record<string, any> = {}>({ table, ...rest }: Props$5<TData>) => JSX.Element;
|
854
866
|
|
855
|
-
interface Props$4<TData extends Record<string, any> = {}> {
|
856
|
-
position: 'top' | 'bottom';
|
867
|
+
interface Props$4<TData extends Record<string, any> = {}> extends IconButtonProps {
|
857
868
|
table: MRT_TableInstance<TData>;
|
858
869
|
}
|
859
|
-
declare const
|
870
|
+
declare const MRT_ToggleFiltersButton: <TData extends Record<string, any> = {}>({ table, ...rest }: Props$4<TData>) => JSX.Element;
|
860
871
|
|
861
872
|
interface Props$3<TData extends Record<string, any> = {}> extends IconButtonProps {
|
862
873
|
table: MRT_TableInstance<TData>;
|
863
874
|
}
|
864
|
-
declare const
|
875
|
+
declare const MRT_ToggleGlobalFilterButton: <TData extends Record<string, any> = {}>({ table, ...rest }: Props$3<TData>) => JSX.Element;
|
865
876
|
|
866
|
-
interface Props$2<TData extends Record<string, any> = {}>
|
877
|
+
interface Props$2<TData extends Record<string, any> = {}> {
|
878
|
+
stackAlertBanner: boolean;
|
867
879
|
table: MRT_TableInstance<TData>;
|
868
880
|
}
|
869
|
-
declare const
|
881
|
+
declare const MRT_ToolbarAlertBanner: <TData extends Record<string, any> = {}>({ stackAlertBanner, table, }: Props$2<TData>) => JSX.Element;
|
870
882
|
|
871
|
-
interface Props$1<TData extends Record<string, any> = {}>
|
883
|
+
interface Props$1<TData extends Record<string, any> = {}> {
|
872
884
|
table: MRT_TableInstance<TData>;
|
873
885
|
}
|
874
|
-
declare const
|
886
|
+
declare const MRT_ToolbarDropZone: <TData extends Record<string, any> = {}>({ table, }: Props$1<TData>) => JSX.Element;
|
875
887
|
|
876
888
|
interface Props<TData extends Record<string, any> = {}> {
|
877
889
|
table: MRT_TableInstance<TData>;
|
878
890
|
}
|
879
891
|
declare const MRT_ToolbarInternalButtons: <TData extends Record<string, any> = {}>({ table, }: Props<TData>) => JSX.Element;
|
880
892
|
|
881
|
-
export { DensityState, MRT_AggregationFn, MRT_AggregationOption, MRT_Cell, MRT_Column, MRT_ColumnDef, MRT_CopyButton, MRT_DefinedColumnDef, MRT_DisplayColumnIds, MRT_FilterFn, MRT_FilterOption, MRT_FilterOptionMenu, MRT_FullScreenToggleButton, MRT_GlobalFilterTextField, MRT_Header, MRT_HeaderGroup, MRT_Icons, MRT_InternalFilterOption, MRT_Localization, MRT_Row, MRT_RowModel, MRT_ShowHideColumnsButton, MRT_SortingFn, MRT_SortingOption, MRT_TableInstance, MRT_TablePagination, MRT_TableState, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MRT_ToolbarInternalButtons, MaterialReactTableProps, MaterialReactTable as default };
|
893
|
+
export { DensityState, MRT_AggregationFn, MRT_AggregationOption, MRT_Cell, MRT_Column, MRT_ColumnDef, MRT_CopyButton, MRT_DefinedColumnDef, MRT_DisplayColumnIds, MRT_FilterFn, MRT_FilterOption, MRT_FilterOptionMenu, MRT_FullScreenToggleButton, MRT_GlobalFilterTextField, MRT_Header, MRT_HeaderGroup, MRT_Icons, MRT_InternalFilterOption, MRT_Localization, MRT_Row, MRT_RowModel, MRT_ShowHideColumnsButton, MRT_SortingFn, MRT_SortingOption, MRT_TableInstance, MRT_TablePagination, MRT_TableState, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MRT_ToolbarAlertBanner, MRT_ToolbarDropZone, MRT_ToolbarInternalButtons, MaterialReactTableProps, MaterialReactTable as default };
|
package/package.json
CHANGED
@@ -813,11 +813,13 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
|
|
813
813
|
muiTableBodyRowProps?:
|
814
814
|
| TableRowProps
|
815
815
|
| (({
|
816
|
-
|
816
|
+
isDetailPanel = false,
|
817
817
|
row,
|
818
|
+
table,
|
818
819
|
}: {
|
819
|
-
|
820
|
+
isDetailPanel?: boolean;
|
820
821
|
row: MRT_Row<TData>;
|
822
|
+
table: MRT_TableInstance<TData>;
|
821
823
|
}) => TableRowProps);
|
822
824
|
muiTableContainerProps?:
|
823
825
|
| TableContainerProps
|
@@ -87,7 +87,7 @@ export const MRT_TableBody: FC<Props> = ({ table }) => {
|
|
87
87
|
density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73,
|
88
88
|
getScrollElement: () => tableContainerRef.current,
|
89
89
|
measureElement: (element) => element?.getBoundingClientRect().height,
|
90
|
-
overscan:
|
90
|
+
overscan: 4,
|
91
91
|
...vProps,
|
92
92
|
})
|
93
93
|
: undefined;
|
@@ -104,63 +104,65 @@ export const MRT_TableBody: FC<Props> = ({ table }) => {
|
|
104
104
|
sx={(theme) => ({
|
105
105
|
display: layoutMode === 'grid' ? 'grid' : 'table-row-group',
|
106
106
|
height: virtualizer ? `${virtualizer.getTotalSize()}px` : 'inherit',
|
107
|
+
minHeight: !rows.length ? '100px' : undefined,
|
107
108
|
position: 'relative',
|
108
109
|
...(tableBodyProps?.sx instanceof Function
|
109
110
|
? tableBodyProps?.sx(theme)
|
110
111
|
: (tableBodyProps?.sx as any)),
|
111
112
|
})}
|
112
113
|
>
|
113
|
-
{tableBodyProps?.children ??
|
114
|
-
|
115
|
-
<
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
<Typography
|
120
|
-
sx={{
|
121
|
-
color: 'text.secondary',
|
122
|
-
fontStyle: 'italic',
|
123
|
-
maxWidth: `min(100vw, ${
|
124
|
-
tablePaperRef.current?.clientWidth ?? 360
|
125
|
-
}px)`,
|
126
|
-
py: '2rem',
|
127
|
-
textAlign: 'center',
|
128
|
-
width: '100%',
|
129
|
-
}}
|
114
|
+
{tableBodyProps?.children ??
|
115
|
+
(!rows.length ? (
|
116
|
+
<tr style={{ display: layoutMode === 'grid' ? 'grid' : 'table-row' }}>
|
117
|
+
<td
|
118
|
+
colSpan={table.getVisibleLeafColumns().length}
|
119
|
+
style={{ display: layoutMode === 'grid' ? 'grid' : 'table-cell' }}
|
130
120
|
>
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
?
|
154
|
-
:
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
121
|
+
<Typography
|
122
|
+
sx={{
|
123
|
+
color: 'text.secondary',
|
124
|
+
fontStyle: 'italic',
|
125
|
+
maxWidth: `min(100vw, ${
|
126
|
+
tablePaperRef.current?.clientWidth ?? 360
|
127
|
+
}px)`,
|
128
|
+
py: '2rem',
|
129
|
+
textAlign: 'center',
|
130
|
+
width: '100%',
|
131
|
+
}}
|
132
|
+
>
|
133
|
+
{globalFilter || columnFilters.length
|
134
|
+
? localization.noResultsFound
|
135
|
+
: localization.noRecordsToDisplay}
|
136
|
+
</Typography>
|
137
|
+
</td>
|
138
|
+
</tr>
|
139
|
+
) : (
|
140
|
+
<>
|
141
|
+
{(virtualRows ?? rows).map((rowOrVirtualRow, rowIndex) => {
|
142
|
+
const row = virtualizer
|
143
|
+
? rows[rowOrVirtualRow.index]
|
144
|
+
: (rowOrVirtualRow as MRT_Row);
|
145
|
+
const props = {
|
146
|
+
key: row.id,
|
147
|
+
measureElement: virtualizer
|
148
|
+
? virtualizer.measureElement
|
149
|
+
: undefined,
|
150
|
+
numRows: rows.length,
|
151
|
+
row,
|
152
|
+
rowIndex: virtualizer ? rowOrVirtualRow.index : rowIndex,
|
153
|
+
table,
|
154
|
+
virtualRow: virtualizer
|
155
|
+
? (rowOrVirtualRow as VirtualItem)
|
156
|
+
: undefined,
|
157
|
+
};
|
158
|
+
return memoMode === 'rows' ? (
|
159
|
+
<Memo_MRT_TableBodyRow {...props} />
|
160
|
+
) : (
|
161
|
+
<MRT_TableBodyRow {...props} />
|
162
|
+
);
|
163
|
+
})}
|
164
|
+
</>
|
165
|
+
))}
|
164
166
|
</TableBody>
|
165
167
|
);
|
166
168
|
};
|
@@ -131,7 +131,12 @@ export const MRT_TableBodyRow: FC<Props> = ({
|
|
131
131
|
})}
|
132
132
|
</TableRow>
|
133
133
|
{renderDetailPanel && !row.getIsGrouped() && (
|
134
|
-
<MRT_TableDetailPanel
|
134
|
+
<MRT_TableDetailPanel
|
135
|
+
parentRowRef={rowRef}
|
136
|
+
row={row}
|
137
|
+
table={table}
|
138
|
+
virtualRow={virtualRow}
|
139
|
+
/>
|
135
140
|
)}
|
136
141
|
</>
|
137
142
|
);
|
@@ -2,14 +2,23 @@ import React, { FC } from 'react';
|
|
2
2
|
import Collapse from '@mui/material/Collapse';
|
3
3
|
import TableCell from '@mui/material/TableCell';
|
4
4
|
import TableRow from '@mui/material/TableRow';
|
5
|
+
import { lighten } from '@mui/material/styles';
|
6
|
+
import type { VirtualItem } from '@tanstack/react-virtual';
|
5
7
|
import type { MRT_Row, MRT_TableInstance } from '..';
|
6
8
|
|
7
9
|
interface Props {
|
10
|
+
parentRowRef: React.RefObject<HTMLTableRowElement>;
|
8
11
|
row: MRT_Row;
|
9
12
|
table: MRT_TableInstance;
|
13
|
+
virtualRow?: VirtualItem;
|
10
14
|
}
|
11
15
|
|
12
|
-
export const MRT_TableDetailPanel: FC<Props> = ({
|
16
|
+
export const MRT_TableDetailPanel: FC<Props> = ({
|
17
|
+
parentRowRef,
|
18
|
+
row,
|
19
|
+
table,
|
20
|
+
virtualRow,
|
21
|
+
}) => {
|
13
22
|
const {
|
14
23
|
getVisibleLeafColumns,
|
15
24
|
getState,
|
@@ -24,7 +33,7 @@ export const MRT_TableDetailPanel: FC<Props> = ({ row, table }) => {
|
|
24
33
|
|
25
34
|
const tableRowProps =
|
26
35
|
muiTableBodyRowProps instanceof Function
|
27
|
-
? muiTableBodyRowProps({ row, table })
|
36
|
+
? muiTableBodyRowProps({ isDetailPanel: true, row, table })
|
28
37
|
: muiTableBodyRowProps;
|
29
38
|
|
30
39
|
const tableCellProps =
|
@@ -34,16 +43,34 @@ export const MRT_TableDetailPanel: FC<Props> = ({ row, table }) => {
|
|
34
43
|
|
35
44
|
return (
|
36
45
|
<TableRow
|
37
|
-
|
38
|
-
display: layoutMode === 'grid' ? 'flex' : 'table-row',
|
39
|
-
}}
|
46
|
+
className="Mui-TableBodyCell-DetailPanel"
|
40
47
|
{...tableRowProps}
|
48
|
+
sx={(theme) => ({
|
49
|
+
display: layoutMode === 'grid' ? 'flex' : 'table-row',
|
50
|
+
position: virtualRow ? 'absolute' : undefined,
|
51
|
+
top: virtualRow
|
52
|
+
? `${parentRowRef.current?.getBoundingClientRect()?.height}px`
|
53
|
+
: undefined,
|
54
|
+
transform: virtualRow
|
55
|
+
? `translateY(${virtualRow?.start}px)`
|
56
|
+
: undefined,
|
57
|
+
width: '100%',
|
58
|
+
zIndex: virtualRow ? 2 : undefined,
|
59
|
+
...(tableRowProps?.sx instanceof Function
|
60
|
+
? tableRowProps.sx(theme)
|
61
|
+
: (tableRowProps?.sx as any)),
|
62
|
+
})}
|
41
63
|
>
|
42
64
|
<TableCell
|
65
|
+
className="Mui-TableBodyCell-DetailPanel"
|
43
66
|
colSpan={getVisibleLeafColumns().length}
|
44
67
|
{...tableCellProps}
|
45
68
|
sx={(theme) => ({
|
69
|
+
backgroundColor: virtualRow
|
70
|
+
? lighten(theme.palette.background.default, 0.06)
|
71
|
+
: undefined,
|
46
72
|
borderBottom: !row.getIsExpanded() ? 'none' : undefined,
|
73
|
+
display: layoutMode === 'grid' ? 'flex' : 'table-cell',
|
47
74
|
pb: row.getIsExpanded() ? '1rem' : 0,
|
48
75
|
pt: row.getIsExpanded() ? '1rem' : 0,
|
49
76
|
transition: 'all 150ms ease-in-out',
|
package/src/index.tsx
CHANGED
@@ -14,6 +14,8 @@ import { MRT_TablePagination } from './toolbar/MRT_TablePagination';
|
|
14
14
|
import { MRT_ToggleDensePaddingButton } from './buttons/MRT_ToggleDensePaddingButton';
|
15
15
|
import { MRT_ToggleFiltersButton } from './buttons/MRT_ToggleFiltersButton';
|
16
16
|
import { MRT_ToggleGlobalFilterButton } from './buttons/MRT_ToggleGlobalFilterButton';
|
17
|
+
import { MRT_ToolbarAlertBanner } from './toolbar/MRT_ToolbarAlertBanner';
|
18
|
+
import { MRT_ToolbarDropZone } from './toolbar/MRT_ToolbarDropZone';
|
17
19
|
import { MRT_ToolbarInternalButtons } from './toolbar/MRT_ToolbarInternalButtons';
|
18
20
|
|
19
21
|
export {
|
@@ -26,5 +28,7 @@ export {
|
|
26
28
|
MRT_ToggleDensePaddingButton,
|
27
29
|
MRT_ToggleFiltersButton,
|
28
30
|
MRT_ToggleGlobalFilterButton,
|
31
|
+
MRT_ToolbarAlertBanner,
|
32
|
+
MRT_ToolbarDropZone,
|
29
33
|
MRT_ToolbarInternalButtons,
|
30
34
|
};
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, {
|
1
|
+
import React, { Fragment } from 'react';
|
2
2
|
import Alert from '@mui/material/Alert';
|
3
3
|
import AlertTitle from '@mui/material/AlertTitle';
|
4
4
|
import Box from '@mui/material/Box';
|
@@ -6,15 +6,15 @@ import Chip from '@mui/material/Chip';
|
|
6
6
|
import Collapse from '@mui/material/Collapse';
|
7
7
|
import { MRT_TableInstance } from '..';
|
8
8
|
|
9
|
-
interface Props {
|
9
|
+
interface Props<TData extends Record<string, any> = {}> {
|
10
10
|
stackAlertBanner: boolean;
|
11
|
-
table: MRT_TableInstance
|
11
|
+
table: MRT_TableInstance<TData>;
|
12
12
|
}
|
13
13
|
|
14
|
-
export const MRT_ToolbarAlertBanner
|
14
|
+
export const MRT_ToolbarAlertBanner = <TData extends Record<string, any> = {}>({
|
15
15
|
stackAlertBanner,
|
16
16
|
table,
|
17
|
-
}) => {
|
17
|
+
}: Props<TData>) => {
|
18
18
|
const {
|
19
19
|
getPrePaginationRowModel,
|
20
20
|
getSelectedRowModel,
|
@@ -1,15 +1,17 @@
|
|
1
|
-
import React, { DragEvent
|
1
|
+
import React, { DragEvent } from 'react';
|
2
2
|
import { alpha } from '@mui/material/styles';
|
3
3
|
import Box from '@mui/material/Box';
|
4
4
|
import Fade from '@mui/material/Fade';
|
5
5
|
import Typography from '@mui/material/Typography';
|
6
6
|
import { MRT_TableInstance } from '..';
|
7
7
|
|
8
|
-
interface Props {
|
9
|
-
table: MRT_TableInstance
|
8
|
+
interface Props<TData extends Record<string, any> = {}> {
|
9
|
+
table: MRT_TableInstance<TData>;
|
10
10
|
}
|
11
11
|
|
12
|
-
export const MRT_ToolbarDropZone
|
12
|
+
export const MRT_ToolbarDropZone = <TData extends Record<string, any> = {}>({
|
13
|
+
table,
|
14
|
+
}: Props<TData>) => {
|
13
15
|
const {
|
14
16
|
getState,
|
15
17
|
options: { enableGrouping, localization },
|