material-react-table 0.38.2 → 0.39.0
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/MaterialReactTable.d.ts +26 -4
- package/dist/cjs/body/MRT_EditRowModal.d.ts +1 -0
- package/dist/cjs/body/MRT_TableBodyRow.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ColumnPinningButtons.d.ts +1 -0
- package/dist/cjs/buttons/MRT_EditActionButtons.d.ts +1 -0
- package/dist/cjs/buttons/MRT_FullScreenToggleButton.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ShowHideColumnsButton.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ToggleDensePaddingButton.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ToggleFiltersButton.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ToggleGlobalFilterButton.d.ts +1 -0
- package/dist/cjs/column.utils.d.ts +1 -0
- package/dist/cjs/index.js +79 -47
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/inputs/MRT_EditCellTextField.d.ts +1 -0
- package/dist/cjs/inputs/MRT_GlobalFilterTextField.d.ts +1 -0
- package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +3 -7
- package/dist/cjs/menus/MRT_ShowHideColumnsMenu.d.ts +1 -0
- package/dist/cjs/table/MRT_TableRoot.d.ts +1 -0
- package/dist/esm/MaterialReactTable.d.ts +26 -4
- package/dist/esm/body/MRT_EditRowModal.d.ts +1 -0
- package/dist/esm/body/MRT_TableBodyRow.d.ts +1 -0
- package/dist/esm/buttons/MRT_ColumnPinningButtons.d.ts +1 -0
- package/dist/esm/buttons/MRT_EditActionButtons.d.ts +1 -0
- package/dist/esm/buttons/MRT_FullScreenToggleButton.d.ts +1 -0
- package/dist/esm/buttons/MRT_ShowHideColumnsButton.d.ts +1 -0
- package/dist/esm/buttons/MRT_ToggleDensePaddingButton.d.ts +1 -0
- package/dist/esm/buttons/MRT_ToggleFiltersButton.d.ts +1 -0
- package/dist/esm/buttons/MRT_ToggleGlobalFilterButton.d.ts +1 -0
- package/dist/esm/column.utils.d.ts +1 -0
- package/dist/esm/inputs/MRT_EditCellTextField.d.ts +1 -0
- package/dist/esm/inputs/MRT_GlobalFilterTextField.d.ts +1 -0
- package/dist/esm/material-react-table.esm.js +79 -47
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +3 -7
- package/dist/esm/menus/MRT_ShowHideColumnsMenu.d.ts +1 -0
- package/dist/esm/table/MRT_TableRoot.d.ts +1 -0
- package/dist/index.d.ts +28 -5
- package/package.json +2 -2
- package/src/MaterialReactTable.tsx +42 -7
- package/src/body/MRT_TableBody.tsx +1 -0
- package/src/body/MRT_TableBodyCellValue.tsx +10 -11
- package/src/body/MRT_TableBodyRow.tsx +14 -3
- package/src/buttons/MRT_ExpandAllButton.tsx +5 -3
- package/src/buttons/MRT_GrabHandleButton.tsx +5 -3
- package/src/column.utils.ts +1 -1
- package/src/footer/MRT_TableFooter.tsx +22 -2
- package/src/head/MRT_TableHeadCellFilterContainer.tsx +3 -2
- package/src/head/MRT_TableHeadRow.tsx +3 -1
- package/src/inputs/MRT_FilterTextField.tsx +5 -8
- package/src/inputs/MRT_GlobalFilterTextField.tsx +2 -2
- package/src/menus/MRT_ColumnActionMenu.tsx +3 -3
- package/src/menus/MRT_FilterOptionMenu.tsx +50 -33
- package/src/table/MRT_TablePaper.tsx +5 -3
- package/src/table/MRT_TableRoot.tsx +3 -4
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { MRT_Header, MRT_InternalFilterOption, MRT_TableInstance } from '..';
|
|
2
3
|
import { MRT_Localization } from '../localization';
|
|
3
|
-
export declare const
|
|
4
|
-
option: string;
|
|
5
|
-
symbol: string;
|
|
6
|
-
label: string;
|
|
7
|
-
divider: boolean;
|
|
8
|
-
}[];
|
|
4
|
+
export declare const mrtFilterOptions: (localization: MRT_Localization) => MRT_InternalFilterOption[];
|
|
9
5
|
interface Props<TData extends Record<string, any> = {}> {
|
|
10
6
|
anchorEl: HTMLElement | null;
|
|
11
7
|
header?: MRT_Header;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { MutableRefObject, Dispatch, SetStateAction, ReactNode, DragEvent } from 'react';
|
|
2
3
|
import { ButtonProps, TextFieldProps, TableCellProps, IconButtonProps, ToolbarProps, LinearProgressProps, CheckboxProps, SkeletonProps, TableBodyProps, TableRowProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, PaperProps, TableProps, ChipProps, AlertProps } from '@mui/material';
|
|
3
4
|
import { Row, Table, TableState, ColumnDef, DeepKeys, Column, Header, HeaderGroup, Cell, SortingFn, FilterFn, TableOptions, OnChangeFn } from '@tanstack/react-table';
|
|
@@ -345,7 +346,7 @@ declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<Column
|
|
|
345
346
|
enableClickToCopy?: boolean;
|
|
346
347
|
enableColumnActions?: boolean;
|
|
347
348
|
enableColumnDragging?: boolean;
|
|
348
|
-
|
|
349
|
+
enableColumnFilterModes?: boolean;
|
|
349
350
|
enableColumnOrdering?: boolean;
|
|
350
351
|
enableEditing?: boolean;
|
|
351
352
|
filterFn?: MRT_FilterFn<TData>;
|
|
@@ -407,6 +408,10 @@ declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<Column
|
|
|
407
408
|
table: MRT_TableInstance<TData>;
|
|
408
409
|
column: MRT_Column<TData>;
|
|
409
410
|
}) => TableCellProps);
|
|
411
|
+
renderColumnFilterModeMenuItems?: ({ table, column, }: {
|
|
412
|
+
table: MRT_TableInstance<TData>;
|
|
413
|
+
column: MRT_Column<TData>;
|
|
414
|
+
}) => ReactNode[];
|
|
410
415
|
sortingFn?: MRT_SortingFn;
|
|
411
416
|
};
|
|
412
417
|
declare type MRT_DefinedColumnDef<TData extends Record<string, any> = {}> = Omit<MRT_ColumnDef<TData>, 'id'> & {
|
|
@@ -440,6 +445,12 @@ declare type MRT_SortingOption = LiteralUnion<string & keyof typeof MRT_SortingF
|
|
|
440
445
|
declare type MRT_SortingFn<TData extends Record<string, any> = {}> = SortingFn<TData> | MRT_SortingOption;
|
|
441
446
|
declare type MRT_FilterOption = LiteralUnion<string & keyof typeof MRT_FilterFns>;
|
|
442
447
|
declare type MRT_FilterFn<TData extends Record<string, any> = {}> = FilterFn<TData> | MRT_FilterOption;
|
|
448
|
+
declare type MRT_InternalFilterOption = {
|
|
449
|
+
option: string;
|
|
450
|
+
symbol: string;
|
|
451
|
+
label: string;
|
|
452
|
+
divider: boolean;
|
|
453
|
+
};
|
|
443
454
|
declare type MRT_DisplayColumnIds = 'mrt-row-actions' | 'mrt-row-drag' | 'mrt-row-expand' | 'mrt-row-numbers' | 'mrt-row-select';
|
|
444
455
|
/**
|
|
445
456
|
* `columns` and `data` props are the only required props, but there are over 150 other optional props.
|
|
@@ -463,13 +474,13 @@ declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = O
|
|
|
463
474
|
enableClickToCopy?: boolean;
|
|
464
475
|
enableColumnActions?: boolean;
|
|
465
476
|
enableColumnDragging?: boolean;
|
|
466
|
-
|
|
477
|
+
enableColumnFilterModes?: boolean;
|
|
467
478
|
enableColumnOrdering?: boolean;
|
|
468
479
|
enableDensityToggle?: boolean;
|
|
469
480
|
enableEditing?: boolean;
|
|
470
481
|
enableExpandAll?: boolean;
|
|
471
482
|
enableFullScreenToggle?: boolean;
|
|
472
|
-
|
|
483
|
+
enableGlobalFilterModes?: boolean;
|
|
473
484
|
enableGlobalFilterRankedResults?: boolean;
|
|
474
485
|
enablePagination?: boolean;
|
|
475
486
|
enableRowActions?: boolean;
|
|
@@ -479,6 +490,7 @@ declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = O
|
|
|
479
490
|
enableRowSelection?: boolean | ((row: MRT_Row<TData>) => boolean);
|
|
480
491
|
enableRowVirtualization?: boolean;
|
|
481
492
|
enableSelectAll?: boolean;
|
|
493
|
+
enableStickyFooter?: boolean;
|
|
482
494
|
enableStickyHeader?: boolean;
|
|
483
495
|
enableTableFooter?: boolean;
|
|
484
496
|
enableTableHead?: boolean;
|
|
@@ -650,10 +662,21 @@ declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = O
|
|
|
650
662
|
renderBottomToolbarCustomActions?: ({ table, }: {
|
|
651
663
|
table: MRT_TableInstance<TData>;
|
|
652
664
|
}) => ReactNode;
|
|
665
|
+
renderColumnFilterModeMenuItems?: ({ column, internalFilterOptions, onSelectFilterMode, table, }: {
|
|
666
|
+
column: MRT_Column<TData>;
|
|
667
|
+
internalFilterOptions: MRT_InternalFilterOption[];
|
|
668
|
+
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
669
|
+
table: MRT_TableInstance<TData>;
|
|
670
|
+
}) => ReactNode;
|
|
653
671
|
renderDetailPanel?: ({ row, table, }: {
|
|
654
672
|
row: MRT_Row<TData>;
|
|
655
673
|
table: MRT_TableInstance<TData>;
|
|
656
674
|
}) => ReactNode;
|
|
675
|
+
renderGlobalFilterModeMenuItems?: ({ internalFilterOptions, onSelectFilterMode, table, }: {
|
|
676
|
+
internalFilterOptions: MRT_InternalFilterOption[];
|
|
677
|
+
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
678
|
+
table: MRT_TableInstance<TData>;
|
|
679
|
+
}) => ReactNode[];
|
|
657
680
|
renderRowActionMenuItems?: ({ closeMenu, row, table, }: {
|
|
658
681
|
closeMenu: () => void;
|
|
659
682
|
row: MRT_Row<TData>;
|
|
@@ -678,7 +701,7 @@ declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = O
|
|
|
678
701
|
table: MRT_TableInstance<TData>;
|
|
679
702
|
}) => Partial<Options<HTMLDivElement>>);
|
|
680
703
|
};
|
|
681
|
-
declare const _default: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, editingMode, enableBottomToolbar, enableColumnActions,
|
|
704
|
+
declare const _default: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilterModes, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterModes, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
|
|
682
705
|
|
|
683
706
|
interface Props$6<TData extends Record<string, any> = {}> {
|
|
684
707
|
cell: MRT_Cell<TData>;
|
|
@@ -717,4 +740,4 @@ interface Props<TData extends Record<string, any> = {}> extends IconButtonProps
|
|
|
717
740
|
}
|
|
718
741
|
declare const MRT_ToggleGlobalFilterButton: <TData extends Record<string, any> = {}>({ table, ...rest }: Props<TData>) => JSX.Element;
|
|
719
742
|
|
|
720
|
-
export { MRT_Cell, MRT_Column, MRT_ColumnDef, MRT_CopyButton, MRT_DefinedColumnDef, MRT_DisplayColumnIds, MRT_FilterFn, MRT_FilterOption, MRT_FullScreenToggleButton, MRT_GlobalFilterTextField, MRT_Header, MRT_HeaderGroup, MRT_Icons, MRT_Localization, MRT_Row, MRT_RowModel, MRT_ShowHideColumnsButton, MRT_SortingFn, MRT_SortingOption, MRT_TableInstance, MRT_TableState, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MaterialReactTableProps, _default as default };
|
|
743
|
+
export { MRT_Cell, MRT_Column, MRT_ColumnDef, MRT_CopyButton, MRT_DefinedColumnDef, MRT_DisplayColumnIds, MRT_FilterFn, MRT_FilterOption, 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_TableState, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MaterialReactTableProps, _default as default };
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.39.0",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"name": "material-react-table",
|
|
5
5
|
"description": "A fully featured Material UI V5 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"react": "^18.2.0",
|
|
79
79
|
"react-dom": "^18.2.0",
|
|
80
80
|
"react-is": "^18.2.0",
|
|
81
|
-
"rollup": "^2.78.
|
|
81
|
+
"rollup": "^2.78.1",
|
|
82
82
|
"rollup-plugin-dts": "^4.2.2",
|
|
83
83
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
84
84
|
"size-limit": "^8.0.1",
|
|
@@ -260,7 +260,7 @@ export type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<
|
|
|
260
260
|
enableClickToCopy?: boolean;
|
|
261
261
|
enableColumnActions?: boolean;
|
|
262
262
|
enableColumnDragging?: boolean;
|
|
263
|
-
|
|
263
|
+
enableColumnFilterModes?: boolean;
|
|
264
264
|
enableColumnOrdering?: boolean;
|
|
265
265
|
enableEditing?: boolean;
|
|
266
266
|
filterFn?: MRT_FilterFn<TData>;
|
|
@@ -362,6 +362,13 @@ export type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<
|
|
|
362
362
|
table: MRT_TableInstance<TData>;
|
|
363
363
|
column: MRT_Column<TData>;
|
|
364
364
|
}) => TableCellProps);
|
|
365
|
+
renderColumnFilterModeMenuItems?: ({
|
|
366
|
+
table,
|
|
367
|
+
column,
|
|
368
|
+
}: {
|
|
369
|
+
table: MRT_TableInstance<TData>;
|
|
370
|
+
column: MRT_Column<TData>;
|
|
371
|
+
}) => ReactNode[];
|
|
365
372
|
sortingFn?: MRT_SortingFn;
|
|
366
373
|
};
|
|
367
374
|
|
|
@@ -432,6 +439,13 @@ export type MRT_FilterFn<TData extends Record<string, any> = {}> =
|
|
|
432
439
|
| FilterFn<TData>
|
|
433
440
|
| MRT_FilterOption;
|
|
434
441
|
|
|
442
|
+
export type MRT_InternalFilterOption = {
|
|
443
|
+
option: string;
|
|
444
|
+
symbol: string;
|
|
445
|
+
label: string;
|
|
446
|
+
divider: boolean;
|
|
447
|
+
};
|
|
448
|
+
|
|
435
449
|
export type MRT_DisplayColumnIds =
|
|
436
450
|
| 'mrt-row-actions'
|
|
437
451
|
| 'mrt-row-drag'
|
|
@@ -472,13 +486,13 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
|
|
|
472
486
|
enableClickToCopy?: boolean;
|
|
473
487
|
enableColumnActions?: boolean;
|
|
474
488
|
enableColumnDragging?: boolean;
|
|
475
|
-
|
|
489
|
+
enableColumnFilterModes?: boolean;
|
|
476
490
|
enableColumnOrdering?: boolean;
|
|
477
491
|
enableDensityToggle?: boolean;
|
|
478
492
|
enableEditing?: boolean;
|
|
479
493
|
enableExpandAll?: boolean;
|
|
480
494
|
enableFullScreenToggle?: boolean;
|
|
481
|
-
|
|
495
|
+
enableGlobalFilterModes?: boolean;
|
|
482
496
|
enableGlobalFilterRankedResults?: boolean;
|
|
483
497
|
enablePagination?: boolean;
|
|
484
498
|
enableRowActions?: boolean;
|
|
@@ -488,6 +502,7 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
|
|
|
488
502
|
enableRowSelection?: boolean | ((row: MRT_Row<TData>) => boolean);
|
|
489
503
|
enableRowVirtualization?: boolean;
|
|
490
504
|
enableSelectAll?: boolean;
|
|
505
|
+
enableStickyFooter?: boolean;
|
|
491
506
|
enableStickyHeader?: boolean;
|
|
492
507
|
enableTableFooter?: boolean;
|
|
493
508
|
enableTableHead?: boolean;
|
|
@@ -767,6 +782,17 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
|
|
|
767
782
|
}: {
|
|
768
783
|
table: MRT_TableInstance<TData>;
|
|
769
784
|
}) => ReactNode;
|
|
785
|
+
renderColumnFilterModeMenuItems?: ({
|
|
786
|
+
column,
|
|
787
|
+
internalFilterOptions,
|
|
788
|
+
onSelectFilterMode,
|
|
789
|
+
table,
|
|
790
|
+
}: {
|
|
791
|
+
column: MRT_Column<TData>;
|
|
792
|
+
internalFilterOptions: MRT_InternalFilterOption[];
|
|
793
|
+
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
794
|
+
table: MRT_TableInstance<TData>;
|
|
795
|
+
}) => ReactNode;
|
|
770
796
|
renderDetailPanel?: ({
|
|
771
797
|
row,
|
|
772
798
|
table,
|
|
@@ -774,6 +800,15 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
|
|
|
774
800
|
row: MRT_Row<TData>;
|
|
775
801
|
table: MRT_TableInstance<TData>;
|
|
776
802
|
}) => ReactNode;
|
|
803
|
+
renderGlobalFilterModeMenuItems?: ({
|
|
804
|
+
internalFilterOptions,
|
|
805
|
+
onSelectFilterMode,
|
|
806
|
+
table,
|
|
807
|
+
}: {
|
|
808
|
+
internalFilterOptions: MRT_InternalFilterOption[];
|
|
809
|
+
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
810
|
+
table: MRT_TableInstance<TData>;
|
|
811
|
+
}) => ReactNode[];
|
|
777
812
|
renderRowActionMenuItems?: ({
|
|
778
813
|
closeMenu,
|
|
779
814
|
row,
|
|
@@ -830,7 +865,7 @@ export default <TData extends Record<string, any> = {}>({
|
|
|
830
865
|
editingMode = 'modal',
|
|
831
866
|
enableBottomToolbar = true,
|
|
832
867
|
enableColumnActions = true,
|
|
833
|
-
|
|
868
|
+
enableColumnFilterModes = false,
|
|
834
869
|
enableColumnFilters = true,
|
|
835
870
|
enableColumnOrdering = false,
|
|
836
871
|
enableColumnResizing = false,
|
|
@@ -839,7 +874,7 @@ export default <TData extends Record<string, any> = {}>({
|
|
|
839
874
|
enableFilters = true,
|
|
840
875
|
enableFullScreenToggle = true,
|
|
841
876
|
enableGlobalFilter = true,
|
|
842
|
-
|
|
877
|
+
enableGlobalFilterModes = false,
|
|
843
878
|
enableGlobalFilterRankedResults = true,
|
|
844
879
|
enableGrouping = false,
|
|
845
880
|
enableHiding = true,
|
|
@@ -877,7 +912,7 @@ export default <TData extends Record<string, any> = {}>({
|
|
|
877
912
|
editingMode={editingMode}
|
|
878
913
|
enableBottomToolbar={enableBottomToolbar}
|
|
879
914
|
enableColumnActions={enableColumnActions}
|
|
880
|
-
|
|
915
|
+
enableColumnFilterModes={enableColumnFilterModes}
|
|
881
916
|
enableColumnFilters={enableColumnFilters}
|
|
882
917
|
enableColumnOrdering={enableColumnOrdering}
|
|
883
918
|
enableColumnResizing={enableColumnResizing}
|
|
@@ -886,7 +921,7 @@ export default <TData extends Record<string, any> = {}>({
|
|
|
886
921
|
enableFilters={enableFilters}
|
|
887
922
|
enableFullScreenToggle={enableFullScreenToggle}
|
|
888
923
|
enableGlobalFilter={enableGlobalFilter}
|
|
889
|
-
|
|
924
|
+
enableGlobalFilterModes={enableGlobalFilterModes}
|
|
890
925
|
enableGlobalFilterRankedResults={enableGlobalFilterRankedResults}
|
|
891
926
|
enableGrouping={enableGrouping}
|
|
892
927
|
enableHiding={enableHiding}
|
|
@@ -12,8 +12,8 @@ export const MRT_TableBodyCellValue: FC<Props> = ({ cell, table }) => {
|
|
|
12
12
|
|
|
13
13
|
return (
|
|
14
14
|
<>
|
|
15
|
-
{cell.getIsAggregated() &&
|
|
16
|
-
? columnDef.AggregatedCell
|
|
15
|
+
{cell.getIsAggregated() && columnDef.AggregatedCell
|
|
16
|
+
? columnDef.AggregatedCell({
|
|
17
17
|
cell,
|
|
18
18
|
column,
|
|
19
19
|
row,
|
|
@@ -21,15 +21,14 @@ export const MRT_TableBodyCellValue: FC<Props> = ({ cell, table }) => {
|
|
|
21
21
|
})
|
|
22
22
|
: row.getIsGrouped() && !cell.getIsGrouped()
|
|
23
23
|
? null
|
|
24
|
-
:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
cell.renderValue())}
|
|
24
|
+
: cell.getIsGrouped() && columnDef.GroupedCell
|
|
25
|
+
? columnDef.GroupedCell({
|
|
26
|
+
cell,
|
|
27
|
+
column,
|
|
28
|
+
row,
|
|
29
|
+
table,
|
|
30
|
+
})
|
|
31
|
+
: columnDef?.Cell?.({ cell, column, row, table }) ?? cell.renderValue()}
|
|
33
32
|
</>
|
|
34
33
|
);
|
|
35
34
|
};
|
|
@@ -8,9 +8,15 @@ interface Props {
|
|
|
8
8
|
row: MRT_Row;
|
|
9
9
|
rowIndex: number;
|
|
10
10
|
table: MRT_TableInstance;
|
|
11
|
+
virtualRow?: any;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
export const MRT_TableBodyRow: FC<Props> = ({
|
|
14
|
+
export const MRT_TableBodyRow: FC<Props> = ({
|
|
15
|
+
row,
|
|
16
|
+
rowIndex,
|
|
17
|
+
table,
|
|
18
|
+
virtualRow,
|
|
19
|
+
}) => {
|
|
14
20
|
const theme = useTheme();
|
|
15
21
|
const {
|
|
16
22
|
getIsSomeColumnsPinned,
|
|
@@ -31,7 +37,7 @@ export const MRT_TableBodyRow: FC<Props> = ({ row, rowIndex, table }) => {
|
|
|
31
37
|
}
|
|
32
38
|
};
|
|
33
39
|
|
|
34
|
-
const rowRef = useRef<HTMLTableRowElement>(null);
|
|
40
|
+
const rowRef = useRef<HTMLTableRowElement | null>(null);
|
|
35
41
|
|
|
36
42
|
const draggingBorder =
|
|
37
43
|
draggingRow?.id === row.id
|
|
@@ -52,7 +58,12 @@ export const MRT_TableBodyRow: FC<Props> = ({ row, rowIndex, table }) => {
|
|
|
52
58
|
onDragEnter={handleDragEnter}
|
|
53
59
|
hover
|
|
54
60
|
selected={row.getIsSelected()}
|
|
55
|
-
ref={
|
|
61
|
+
ref={(node) => {
|
|
62
|
+
rowRef.current = node;
|
|
63
|
+
if (virtualRow?.measureRef) {
|
|
64
|
+
virtualRow.measureRef = node;
|
|
65
|
+
}
|
|
66
|
+
}}
|
|
56
67
|
{...tableRowProps}
|
|
57
68
|
sx={(theme) => ({
|
|
58
69
|
backgroundColor: lighten(theme.palette.background.default, 0.06),
|
|
@@ -40,12 +40,14 @@ export const MRT_ExpandAllButton: FC<Props> = ({ table }) => {
|
|
|
40
40
|
disabled={!getCanSomeRowsExpand() && !renderDetailPanel}
|
|
41
41
|
onClick={() => toggleAllRowsExpanded(!getIsAllRowsExpanded())}
|
|
42
42
|
{...iconButtonProps}
|
|
43
|
-
sx={{
|
|
43
|
+
sx={(theme) => ({
|
|
44
44
|
height: density === 'compact' ? '1.75rem' : '2.25rem',
|
|
45
45
|
width: density === 'compact' ? '1.75rem' : '2.25rem',
|
|
46
46
|
mt: density !== 'compact' ? '-0.25rem' : undefined,
|
|
47
|
-
...iconButtonProps?.sx
|
|
48
|
-
|
|
47
|
+
...(iconButtonProps?.sx instanceof Function
|
|
48
|
+
? iconButtonProps?.sx(theme)
|
|
49
|
+
: (iconButtonProps?.sx as any)),
|
|
50
|
+
})}
|
|
49
51
|
>
|
|
50
52
|
<KeyboardDoubleArrowDownIcon
|
|
51
53
|
style={{
|
|
@@ -37,7 +37,7 @@ export const MRT_GrabHandleButton = <TData extends Record<string, any> = {}>({
|
|
|
37
37
|
onDragEnd={onDragEnd}
|
|
38
38
|
size="small"
|
|
39
39
|
{...iconButtonProps}
|
|
40
|
-
sx={{
|
|
40
|
+
sx={(theme) => ({
|
|
41
41
|
cursor: 'grab',
|
|
42
42
|
m: 0,
|
|
43
43
|
opacity: 0.5,
|
|
@@ -50,8 +50,10 @@ export const MRT_GrabHandleButton = <TData extends Record<string, any> = {}>({
|
|
|
50
50
|
'&:active': {
|
|
51
51
|
cursor: 'grabbing',
|
|
52
52
|
},
|
|
53
|
-
...iconButtonProps?.sx
|
|
54
|
-
|
|
53
|
+
...(iconButtonProps?.sx instanceof Function
|
|
54
|
+
? iconButtonProps?.sx(theme)
|
|
55
|
+
: (iconButtonProps?.sx as any)),
|
|
56
|
+
})}
|
|
55
57
|
>
|
|
56
58
|
<DragHandleIcon />
|
|
57
59
|
</IconButton>
|
package/src/column.utils.ts
CHANGED
|
@@ -25,7 +25,7 @@ export const defaultDisplayColumnDefOptions = {
|
|
|
25
25
|
enableSorting: false,
|
|
26
26
|
} as Partial<MRT_ColumnDef>;
|
|
27
27
|
|
|
28
|
-
const getColumnId = <TData extends Record<string, any> = {}>(
|
|
28
|
+
export const getColumnId = <TData extends Record<string, any> = {}>(
|
|
29
29
|
columnDef: MRT_ColumnDef<TData>,
|
|
30
30
|
): string =>
|
|
31
31
|
columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header;
|
|
@@ -10,16 +10,36 @@ interface Props {
|
|
|
10
10
|
export const MRT_TableFooter: FC<Props> = ({ table }) => {
|
|
11
11
|
const {
|
|
12
12
|
getFooterGroups,
|
|
13
|
-
|
|
13
|
+
getState,
|
|
14
|
+
options: { enableStickyFooter, muiTableFooterProps },
|
|
14
15
|
} = table;
|
|
16
|
+
const { isFullScreen } = getState();
|
|
15
17
|
|
|
16
18
|
const tableFooterProps =
|
|
17
19
|
muiTableFooterProps instanceof Function
|
|
18
20
|
? muiTableFooterProps({ table })
|
|
19
21
|
: muiTableFooterProps;
|
|
20
22
|
|
|
23
|
+
const stickFooter =
|
|
24
|
+
(isFullScreen || enableStickyFooter) && enableStickyFooter !== false;
|
|
25
|
+
|
|
21
26
|
return (
|
|
22
|
-
<TableFooter
|
|
27
|
+
<TableFooter
|
|
28
|
+
{...tableFooterProps}
|
|
29
|
+
sx={(theme) => ({
|
|
30
|
+
position: stickFooter ? 'sticky' : undefined,
|
|
31
|
+
bottom: stickFooter ? 0 : undefined,
|
|
32
|
+
opacity: stickFooter ? 0.95 : undefined,
|
|
33
|
+
outline: stickFooter
|
|
34
|
+
? theme.palette.mode === 'light'
|
|
35
|
+
? `1px solid ${theme.palette.grey[300]}`
|
|
36
|
+
: `1px solid ${theme.palette.grey[700]}`
|
|
37
|
+
: undefined,
|
|
38
|
+
...(tableFooterProps?.sx instanceof Function
|
|
39
|
+
? tableFooterProps?.sx(theme)
|
|
40
|
+
: (tableFooterProps?.sx as any)),
|
|
41
|
+
})}
|
|
42
|
+
>
|
|
23
43
|
{getFooterGroups().map((footerGroup) => (
|
|
24
44
|
<MRT_TableFooterRow
|
|
25
45
|
footerGroup={footerGroup as any}
|
|
@@ -14,13 +14,14 @@ export const MRT_TableHeadCellFilterContainer: FC<Props> = ({
|
|
|
14
14
|
table,
|
|
15
15
|
}) => {
|
|
16
16
|
const { getState } = table;
|
|
17
|
-
const {
|
|
17
|
+
const { showColumnFilters } = getState();
|
|
18
18
|
const { column } = header;
|
|
19
|
+
const { columnDef } = column;
|
|
19
20
|
|
|
20
21
|
return (
|
|
21
22
|
<Collapse in={showColumnFilters} mountOnEnter unmountOnExit>
|
|
22
23
|
{['between', 'betweenInclusive', 'inNumberRange'].includes(
|
|
23
|
-
|
|
24
|
+
columnDef._filterFn,
|
|
24
25
|
) ? (
|
|
25
26
|
<MRT_FilterRangeFields header={header} table={table} />
|
|
26
27
|
) : (
|
|
@@ -24,7 +24,9 @@ export const MRT_TableHeadRow: FC<Props> = ({ headerGroup, table }) => {
|
|
|
24
24
|
sx={(theme) => ({
|
|
25
25
|
boxShadow: `4px 0 8px ${alpha(theme.palette.common.black, 0.1)}`,
|
|
26
26
|
backgroundColor: lighten(theme.palette.background.default, 0.04),
|
|
27
|
-
...(tableRowProps?.sx
|
|
27
|
+
...(tableRowProps?.sx instanceof Function
|
|
28
|
+
? tableRowProps?.sx(theme)
|
|
29
|
+
: (tableRowProps?.sx as any)),
|
|
28
30
|
})}
|
|
29
31
|
>
|
|
30
32
|
{headerGroup.headers.map((header: MRT_Header, index) => (
|
|
@@ -33,9 +33,8 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
33
33
|
table,
|
|
34
34
|
}) => {
|
|
35
35
|
const {
|
|
36
|
-
getState,
|
|
37
36
|
options: {
|
|
38
|
-
|
|
37
|
+
enableColumnFilterModes,
|
|
39
38
|
columnFilterModeOptions,
|
|
40
39
|
icons: { FilterListIcon, CloseIcon },
|
|
41
40
|
localization,
|
|
@@ -46,7 +45,6 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
46
45
|
} = table;
|
|
47
46
|
const { column } = header;
|
|
48
47
|
const { columnDef } = column;
|
|
49
|
-
const { columnFilterFns } = getState();
|
|
50
48
|
|
|
51
49
|
const mTableHeadCellFilterTextFieldProps =
|
|
52
50
|
muiTableHeadCellFilterTextFieldProps instanceof Function
|
|
@@ -78,8 +76,7 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
78
76
|
const isTextboxFilter =
|
|
79
77
|
columnDef.filterVariant === 'text' ||
|
|
80
78
|
(!isSelectFilter && !isMultiSelectFilter);
|
|
81
|
-
|
|
82
|
-
const currentFilterOption = columnFilterFns?.[header.id];
|
|
79
|
+
const currentFilterOption = columnDef._filterFn;
|
|
83
80
|
const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)
|
|
84
81
|
? //@ts-ignore
|
|
85
82
|
localization[
|
|
@@ -99,8 +96,8 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
99
96
|
const allowedColumnFilterOptions =
|
|
100
97
|
columnDef?.columnFilterModeOptions ?? columnFilterModeOptions;
|
|
101
98
|
const showChangeModeButton =
|
|
102
|
-
|
|
103
|
-
columnDef.
|
|
99
|
+
enableColumnFilterModes &&
|
|
100
|
+
columnDef.enableColumnFilterModes !== false &&
|
|
104
101
|
!rangeFilterIndex &&
|
|
105
102
|
(allowedColumnFilterOptions === undefined ||
|
|
106
103
|
!!allowedColumnFilterOptions?.length);
|
|
@@ -299,7 +296,7 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
299
296
|
}}
|
|
300
297
|
sx={(theme) => ({
|
|
301
298
|
p: 0,
|
|
302
|
-
minWidth: !filterChipLabel ? '
|
|
299
|
+
minWidth: !filterChipLabel ? '120px' : 'auto',
|
|
303
300
|
width: '100%',
|
|
304
301
|
'& .MuiSelect-icon': {
|
|
305
302
|
mr: '1.5rem',
|
|
@@ -23,7 +23,7 @@ export const MRT_GlobalFilterTextField = <
|
|
|
23
23
|
getState,
|
|
24
24
|
setGlobalFilter,
|
|
25
25
|
options: {
|
|
26
|
-
|
|
26
|
+
enableGlobalFilterModes,
|
|
27
27
|
icons: { SearchIcon, CloseIcon },
|
|
28
28
|
localization,
|
|
29
29
|
muiSearchTextFieldProps,
|
|
@@ -69,7 +69,7 @@ export const MRT_GlobalFilterTextField = <
|
|
|
69
69
|
value={searchValue ?? ''}
|
|
70
70
|
variant="standard"
|
|
71
71
|
InputProps={{
|
|
72
|
-
startAdornment:
|
|
72
|
+
startAdornment: enableGlobalFilterModes ? (
|
|
73
73
|
<InputAdornment position="start">
|
|
74
74
|
<Tooltip arrow title={localization.changeSearchMode}>
|
|
75
75
|
<IconButton
|
|
@@ -34,7 +34,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
34
34
|
toggleAllColumnsVisible,
|
|
35
35
|
setColumnOrder,
|
|
36
36
|
options: {
|
|
37
|
-
|
|
37
|
+
enableColumnFilterModes,
|
|
38
38
|
enableColumnFilters,
|
|
39
39
|
enableColumnResizing,
|
|
40
40
|
enableGrouping,
|
|
@@ -138,8 +138,8 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
138
138
|
columnDef?.columnFilterModeOptions ?? columnFilterModeOptions;
|
|
139
139
|
|
|
140
140
|
const showFilterModeSubMenu =
|
|
141
|
-
|
|
142
|
-
columnDef.
|
|
141
|
+
enableColumnFilterModes &&
|
|
142
|
+
columnDef.enableColumnFilterModes !== false &&
|
|
143
143
|
!isSelectFilter &&
|
|
144
144
|
(allowedColumnFilterOptions === undefined ||
|
|
145
145
|
!!allowedColumnFilterOptions?.length);
|