material-react-table 0.17.1 → 0.19.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.
- package/dist/MaterialReactTable.d.ts +170 -230
- package/dist/body/MRT_TableBody.d.ts +1 -1
- package/dist/body/MRT_TableBodyCell.d.ts +1 -1
- package/dist/body/MRT_TableBodyRow.d.ts +1 -1
- package/dist/body/MRT_TableDetailPanel.d.ts +1 -1
- package/dist/buttons/MRT_ColumnPinningButtons.d.ts +1 -1
- package/dist/buttons/MRT_CopyButton.d.ts +1 -1
- package/dist/buttons/MRT_EditActionButtons.d.ts +1 -1
- package/dist/buttons/MRT_ExpandAllButton.d.ts +1 -1
- package/dist/buttons/MRT_ExpandButton.d.ts +1 -1
- package/dist/buttons/MRT_FullScreenToggleButton.d.ts +1 -1
- package/dist/buttons/MRT_GrabHandleButton.d.ts +1 -1
- package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +1 -1
- package/dist/buttons/MRT_ToggleDensePaddingButton.d.ts +1 -1
- package/dist/buttons/MRT_ToggleFiltersButton.d.ts +1 -1
- package/dist/buttons/MRT_ToggleGlobalFilterButton.d.ts +1 -1
- package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +1 -1
- package/dist/filtersFns.d.ts +31 -23
- package/dist/footer/MRT_TableFooter.d.ts +1 -1
- package/dist/footer/MRT_TableFooterCell.d.ts +1 -1
- package/dist/footer/MRT_TableFooterRow.d.ts +1 -1
- package/dist/head/MRT_DraggableTableHeadCell.d.ts +1 -1
- package/dist/head/MRT_TableHead.d.ts +1 -1
- package/dist/head/MRT_TableHeadCell.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellColumnActionsButton.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellFilterContainer.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellFilterLabel.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellResizeHandle.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
- package/dist/head/MRT_TableHeadRow.d.ts +1 -1
- package/dist/inputs/MRT_EditCellTextField.d.ts +1 -1
- package/dist/inputs/MRT_FilterRangeFields.d.ts +1 -1
- package/dist/inputs/MRT_FilterTextField.d.ts +1 -1
- package/dist/inputs/MRT_GlobalFilterTextField.d.ts +1 -1
- package/dist/inputs/MRT_SelectCheckbox.d.ts +1 -1
- package/dist/material-react-table.cjs.development.js +791 -915
- 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 +793 -917
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/menus/MRT_ColumnActionMenu.d.ts +1 -1
- package/dist/menus/MRT_FilterOptionMenu.d.ts +1 -1
- package/dist/menus/MRT_RowActionMenu.d.ts +1 -1
- package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
- package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
- package/dist/sortingFns.d.ts +10 -3
- package/dist/table/MRT_Table.d.ts +1 -1
- package/dist/table/MRT_TableContainer.d.ts +1 -1
- package/dist/table/MRT_TablePaper.d.ts +1 -1
- package/dist/toolbar/MRT_LinearProgressBar.d.ts +1 -1
- package/dist/toolbar/MRT_TablePagination.d.ts +1 -1
- package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +1 -1
- package/dist/toolbar/MRT_ToolbarBottom.d.ts +1 -1
- package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +1 -1
- package/dist/toolbar/MRT_ToolbarTop.d.ts +1 -1
- package/dist/utils.d.ts +10 -16
- package/package.json +4 -4
- package/src/MaterialReactTable.tsx +168 -334
- package/src/body/MRT_TableBody.tsx +5 -6
- package/src/body/MRT_TableBodyCell.tsx +19 -36
- package/src/body/MRT_TableBodyRow.tsx +9 -12
- package/src/body/MRT_TableDetailPanel.tsx +8 -12
- package/src/buttons/MRT_ColumnPinningButtons.tsx +3 -3
- package/src/buttons/MRT_CopyButton.tsx +5 -7
- package/src/buttons/MRT_EditActionButtons.tsx +4 -5
- package/src/buttons/MRT_ExpandAllButton.tsx +4 -5
- package/src/buttons/MRT_ExpandButton.tsx +6 -9
- package/src/buttons/MRT_FullScreenToggleButton.tsx +5 -15
- package/src/buttons/MRT_GrabHandleButton.tsx +39 -41
- package/src/buttons/MRT_ShowHideColumnsButton.tsx +4 -4
- package/src/buttons/MRT_ToggleDensePaddingButton.tsx +5 -15
- package/src/buttons/MRT_ToggleFiltersButton.tsx +5 -12
- package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +6 -16
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +6 -6
- package/src/filtersFns.ts +24 -23
- package/src/footer/MRT_TableFooter.tsx +5 -6
- package/src/footer/MRT_TableFooterCell.tsx +8 -11
- package/src/footer/MRT_TableFooterRow.tsx +5 -9
- package/src/head/MRT_DraggableTableHeadCell.tsx +4 -6
- package/src/head/MRT_TableHead.tsx +5 -5
- package/src/head/MRT_TableHeadCell.tsx +18 -29
- package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +6 -8
- package/src/head/MRT_TableHeadCellFilterContainer.tsx +5 -7
- package/src/head/MRT_TableHeadCellFilterLabel.tsx +13 -19
- package/src/head/MRT_TableHeadCellResizeHandle.tsx +12 -11
- package/src/head/MRT_TableHeadCellSortLabel.tsx +3 -5
- package/src/head/MRT_TableHeadRow.tsx +6 -6
- package/src/inputs/MRT_EditCellTextField.tsx +13 -15
- package/src/inputs/MRT_FilterRangeFields.tsx +4 -4
- package/src/inputs/MRT_FilterTextField.tsx +27 -64
- package/src/inputs/MRT_GlobalFilterTextField.tsx +5 -10
- package/src/inputs/MRT_SelectCheckbox.tsx +9 -36
- package/src/menus/MRT_ColumnActionMenu.tsx +5 -9
- package/src/menus/MRT_FilterOptionMenu.tsx +16 -48
- package/src/menus/MRT_RowActionMenu.tsx +4 -5
- package/src/menus/MRT_ShowHideColumnsMenu.tsx +8 -9
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +11 -10
- package/src/sortingFns.ts +11 -3
- package/src/table/MRT_Table.tsx +7 -11
- package/src/table/MRT_TableContainer.tsx +5 -6
- package/src/table/MRT_TablePaper.tsx +7 -8
- package/src/table/MRT_TableRoot.tsx +123 -156
- package/src/toolbar/MRT_LinearProgressBar.tsx +4 -5
- package/src/toolbar/MRT_TablePagination.tsx +7 -9
- package/src/toolbar/MRT_ToolbarAlertBanner.tsx +15 -11
- package/src/toolbar/MRT_ToolbarBottom.tsx +8 -9
- package/src/toolbar/MRT_ToolbarInternalButtons.tsx +10 -10
- package/src/toolbar/MRT_ToolbarTop.tsx +11 -11
- package/src/utils.ts +56 -50
|
@@ -4,39 +4,33 @@ import { MRT_Header, MRT_TableInstance } from '..';
|
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
header: MRT_Header;
|
|
7
|
-
|
|
7
|
+
table: MRT_TableInstance;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export const MRT_TableHeadCellFilterLabel: FC<Props> = ({
|
|
11
|
-
header,
|
|
12
|
-
instance,
|
|
13
|
-
}) => {
|
|
10
|
+
export const MRT_TableHeadCellFilterLabel: FC<Props> = ({ header, table }) => {
|
|
14
11
|
const {
|
|
15
12
|
getState,
|
|
16
13
|
options: {
|
|
17
14
|
icons: { FilterAltIcon },
|
|
18
15
|
localization,
|
|
19
16
|
},
|
|
20
|
-
} =
|
|
21
|
-
|
|
17
|
+
} = table;
|
|
22
18
|
const { currentFilterFns } = getState();
|
|
23
|
-
|
|
24
19
|
const { column } = header;
|
|
25
|
-
|
|
26
20
|
const { columnDef } = column;
|
|
27
21
|
|
|
28
|
-
const
|
|
29
|
-
|
|
22
|
+
const currentFilterOption = currentFilterFns?.[header.id];
|
|
30
23
|
const filterTooltip = localization.filteringByColumn
|
|
31
24
|
.replace('{column}', String(columnDef.header))
|
|
32
25
|
.replace(
|
|
33
26
|
'{filterType}',
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
localization[
|
|
29
|
+
`filter${
|
|
30
|
+
currentFilterOption.charAt(0).toUpperCase() +
|
|
31
|
+
currentFilterOption.slice(1)
|
|
32
|
+
}`
|
|
33
|
+
],
|
|
40
34
|
)
|
|
41
35
|
.replace(
|
|
42
36
|
'{filterValue}',
|
|
@@ -54,8 +48,8 @@ export const MRT_TableHeadCellFilterLabel: FC<Props> = ({
|
|
|
54
48
|
<Grow
|
|
55
49
|
unmountOnExit
|
|
56
50
|
in={
|
|
57
|
-
(!!column.getFilterValue() &&
|
|
58
|
-
(
|
|
51
|
+
(!!column.getFilterValue() && currentFilterOption !== 'between') ||
|
|
52
|
+
(currentFilterOption === 'between' && // @ts-ignore
|
|
59
53
|
(!!column.getFilterValue()?.[0] || !!column.getFilterValue()?.[1]))
|
|
60
54
|
}
|
|
61
55
|
>
|
|
@@ -4,20 +4,18 @@ import { MRT_Header, MRT_TableInstance } from '..';
|
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
header: MRT_Header;
|
|
7
|
-
|
|
7
|
+
table: MRT_TableInstance;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export const MRT_TableHeadCellResizeHandle: FC<Props> = ({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
export const MRT_TableHeadCellResizeHandle: FC<Props> = ({ header, table }) => {
|
|
11
|
+
const {
|
|
12
|
+
getState,
|
|
13
|
+
options: { columnResizeMode },
|
|
14
|
+
} = table;
|
|
16
15
|
const { density, showFilters } = getState();
|
|
17
|
-
|
|
18
16
|
const { column } = header;
|
|
19
|
-
|
|
20
|
-
const { columnDefType } =
|
|
17
|
+
const { columnDef } = column;
|
|
18
|
+
const { columnDefType } = columnDef;
|
|
21
19
|
|
|
22
20
|
return (
|
|
23
21
|
<Divider
|
|
@@ -46,7 +44,10 @@ export const MRT_TableHeadCellResizeHandle: FC<Props> = ({
|
|
|
46
44
|
onTouchStart={header.getResizeHandler()}
|
|
47
45
|
style={{
|
|
48
46
|
transform: column.getIsResizing()
|
|
49
|
-
? `translateX(${
|
|
47
|
+
? `translateX(${
|
|
48
|
+
(getState().columnSizingInfo.deltaOffset ?? 0) /
|
|
49
|
+
(columnResizeMode === 'onChange' ? 16 : 1)
|
|
50
|
+
}px)`
|
|
50
51
|
: 'none',
|
|
51
52
|
}}
|
|
52
53
|
/>
|
|
@@ -4,16 +4,14 @@ import { MRT_Header, MRT_TableInstance } from '..';
|
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
header: MRT_Header;
|
|
7
|
-
|
|
7
|
+
table: MRT_TableInstance;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export const MRT_TableHeadCellSortLabel: FC<Props> = ({ header,
|
|
10
|
+
export const MRT_TableHeadCellSortLabel: FC<Props> = ({ header, table }) => {
|
|
11
11
|
const {
|
|
12
12
|
options: { localization },
|
|
13
|
-
} =
|
|
14
|
-
|
|
13
|
+
} = table;
|
|
15
14
|
const { column } = header;
|
|
16
|
-
|
|
17
15
|
const { columnDef } = column;
|
|
18
16
|
|
|
19
17
|
const sortTooltip = !!column.getIsSorted()
|
|
@@ -6,17 +6,17 @@ import type { MRT_Header, MRT_HeaderGroup, MRT_TableInstance } from '..';
|
|
|
6
6
|
|
|
7
7
|
interface Props {
|
|
8
8
|
headerGroup: MRT_HeaderGroup;
|
|
9
|
-
|
|
9
|
+
table: MRT_TableInstance;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
export const MRT_TableHeadRow: FC<Props> = ({ headerGroup,
|
|
12
|
+
export const MRT_TableHeadRow: FC<Props> = ({ headerGroup, table }) => {
|
|
13
13
|
const {
|
|
14
14
|
options: { enableColumnOrdering, enableGrouping, muiTableHeadRowProps },
|
|
15
|
-
} =
|
|
15
|
+
} = table;
|
|
16
16
|
|
|
17
17
|
const tableRowProps =
|
|
18
18
|
muiTableHeadRowProps instanceof Function
|
|
19
|
-
? muiTableHeadRowProps({ headerGroup,
|
|
19
|
+
? muiTableHeadRowProps({ headerGroup, table })
|
|
20
20
|
: muiTableHeadRowProps;
|
|
21
21
|
|
|
22
22
|
return (
|
|
@@ -33,13 +33,13 @@ export const MRT_TableHeadRow: FC<Props> = ({ headerGroup, instance }) => {
|
|
|
33
33
|
<MRT_DraggableTableHeadCell
|
|
34
34
|
header={header}
|
|
35
35
|
key={header.id || index}
|
|
36
|
-
|
|
36
|
+
table={table}
|
|
37
37
|
/>
|
|
38
38
|
) : (
|
|
39
39
|
<MRT_TableHeadCell
|
|
40
40
|
header={header}
|
|
41
41
|
key={header.id || index}
|
|
42
|
-
|
|
42
|
+
table={table}
|
|
43
43
|
/>
|
|
44
44
|
),
|
|
45
45
|
)}
|
|
@@ -10,10 +10,10 @@ import type { MRT_Cell, MRT_Row, MRT_TableInstance } from '..';
|
|
|
10
10
|
|
|
11
11
|
interface Props {
|
|
12
12
|
cell: MRT_Cell;
|
|
13
|
-
|
|
13
|
+
table: MRT_TableInstance;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export const MRT_EditCellTextField: FC<Props> = ({ cell,
|
|
16
|
+
export const MRT_EditCellTextField: FC<Props> = ({ cell, table }) => {
|
|
17
17
|
const {
|
|
18
18
|
getState,
|
|
19
19
|
options: {
|
|
@@ -21,22 +21,20 @@ export const MRT_EditCellTextField: FC<Props> = ({ cell, instance }) => {
|
|
|
21
21
|
enableEditing,
|
|
22
22
|
muiTableBodyCellEditTextFieldProps,
|
|
23
23
|
onCellEditBlur,
|
|
24
|
-
|
|
24
|
+
onCellEditChange,
|
|
25
25
|
},
|
|
26
26
|
setCurrentEditingCell,
|
|
27
27
|
setCurrentEditingRow,
|
|
28
|
-
} =
|
|
29
|
-
|
|
30
|
-
const [value, setValue] = useState(cell.getValue());
|
|
31
|
-
|
|
28
|
+
} = table;
|
|
32
29
|
const { column, row } = cell;
|
|
33
|
-
|
|
34
30
|
const { columnDef } = column;
|
|
35
31
|
|
|
32
|
+
const [value, setValue] = useState(cell.getValue());
|
|
33
|
+
|
|
36
34
|
const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
37
35
|
setValue(event.target.value);
|
|
38
|
-
columnDef.
|
|
39
|
-
|
|
36
|
+
columnDef.onCellEditChange?.({ event, cell, table });
|
|
37
|
+
onCellEditChange?.({ event, cell, table });
|
|
40
38
|
};
|
|
41
39
|
|
|
42
40
|
const handleBlur = (event: FocusEvent<HTMLInputElement>) => {
|
|
@@ -46,20 +44,20 @@ export const MRT_EditCellTextField: FC<Props> = ({ cell, instance }) => {
|
|
|
46
44
|
setCurrentEditingRow({ ...getState().currentEditingRow } as MRT_Row);
|
|
47
45
|
}
|
|
48
46
|
setCurrentEditingCell(null);
|
|
49
|
-
columnDef.onCellEditBlur?.({ event, cell,
|
|
50
|
-
onCellEditBlur?.({ event, cell,
|
|
47
|
+
columnDef.onCellEditBlur?.({ event, cell, table });
|
|
48
|
+
onCellEditBlur?.({ event, cell, table });
|
|
51
49
|
};
|
|
52
50
|
|
|
53
51
|
const mTableBodyCellEditTextFieldProps =
|
|
54
52
|
muiTableBodyCellEditTextFieldProps instanceof Function
|
|
55
|
-
? muiTableBodyCellEditTextFieldProps({ cell,
|
|
53
|
+
? muiTableBodyCellEditTextFieldProps({ cell, table })
|
|
56
54
|
: muiTableBodyCellEditTextFieldProps;
|
|
57
55
|
|
|
58
56
|
const mcTableBodyCellEditTextFieldProps =
|
|
59
57
|
columnDef.muiTableBodyCellEditTextFieldProps instanceof Function
|
|
60
58
|
? columnDef.muiTableBodyCellEditTextFieldProps({
|
|
61
59
|
cell,
|
|
62
|
-
|
|
60
|
+
table,
|
|
63
61
|
})
|
|
64
62
|
: columnDef.muiTableBodyCellEditTextFieldProps;
|
|
65
63
|
|
|
@@ -69,7 +67,7 @@ export const MRT_EditCellTextField: FC<Props> = ({ cell, instance }) => {
|
|
|
69
67
|
};
|
|
70
68
|
|
|
71
69
|
if (enableEditing && columnDef.enableEditing !== false && columnDef.Edit) {
|
|
72
|
-
return <>{columnDef.Edit?.({ cell,
|
|
70
|
+
return <>{columnDef.Edit?.({ cell, table })}</>;
|
|
73
71
|
}
|
|
74
72
|
|
|
75
73
|
return (
|
|
@@ -5,14 +5,14 @@ import { MRT_Header, MRT_TableInstance } from '..';
|
|
|
5
5
|
|
|
6
6
|
interface Props {
|
|
7
7
|
header: MRT_Header;
|
|
8
|
-
|
|
8
|
+
table: MRT_TableInstance;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export const MRT_FilterRangeFields: FC<Props> = ({ header,
|
|
11
|
+
export const MRT_FilterRangeFields: FC<Props> = ({ header, table }) => {
|
|
12
12
|
return (
|
|
13
13
|
<Box sx={{ display: 'grid', gridTemplateColumns: '6fr 6fr', gap: '1rem' }}>
|
|
14
|
-
<MRT_FilterTextField header={header} inputIndex={0}
|
|
15
|
-
<MRT_FilterTextField header={header} inputIndex={1}
|
|
14
|
+
<MRT_FilterTextField header={header} inputIndex={0} table={table} />
|
|
15
|
+
<MRT_FilterTextField header={header} inputIndex={1} table={table} />
|
|
16
16
|
</Box>
|
|
17
17
|
);
|
|
18
18
|
};
|
|
@@ -21,13 +21,13 @@ import type { MRT_Header, MRT_TableInstance } from '..';
|
|
|
21
21
|
interface Props {
|
|
22
22
|
header: MRT_Header;
|
|
23
23
|
inputIndex?: number;
|
|
24
|
-
|
|
24
|
+
table: MRT_TableInstance;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export const MRT_FilterTextField: FC<Props> = ({
|
|
28
28
|
header,
|
|
29
29
|
inputIndex,
|
|
30
|
-
|
|
30
|
+
table,
|
|
31
31
|
}) => {
|
|
32
32
|
const {
|
|
33
33
|
getState,
|
|
@@ -37,31 +37,26 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
37
37
|
icons: { FilterListIcon, CloseIcon },
|
|
38
38
|
localization,
|
|
39
39
|
muiTableHeadCellFilterTextFieldProps,
|
|
40
|
-
onColumnFilterValueChanged,
|
|
41
|
-
onColumnFilterValueChangedDebounced,
|
|
42
40
|
tableId,
|
|
43
41
|
},
|
|
44
42
|
setCurrentFilterFns,
|
|
45
|
-
} =
|
|
46
|
-
|
|
43
|
+
} = table;
|
|
47
44
|
const { column } = header;
|
|
48
|
-
|
|
49
45
|
const { columnDef } = column;
|
|
50
|
-
|
|
51
46
|
const { currentFilterFns } = getState();
|
|
52
47
|
|
|
53
48
|
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
|
|
54
49
|
|
|
55
50
|
const mTableHeadCellFilterTextFieldProps =
|
|
56
51
|
muiTableHeadCellFilterTextFieldProps instanceof Function
|
|
57
|
-
? muiTableHeadCellFilterTextFieldProps({ column,
|
|
52
|
+
? muiTableHeadCellFilterTextFieldProps({ column, table })
|
|
58
53
|
: muiTableHeadCellFilterTextFieldProps;
|
|
59
54
|
|
|
60
55
|
const mcTableHeadCellFilterTextFieldProps =
|
|
61
56
|
columnDef.muiTableHeadCellFilterTextFieldProps instanceof Function
|
|
62
57
|
? columnDef.muiTableHeadCellFilterTextFieldProps({
|
|
63
58
|
column,
|
|
64
|
-
|
|
59
|
+
table,
|
|
65
60
|
})
|
|
66
61
|
: columnDef.muiTableHeadCellFilterTextFieldProps;
|
|
67
62
|
|
|
@@ -87,18 +82,6 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
87
82
|
} else {
|
|
88
83
|
column.setFilterValue(event.target.value ?? undefined);
|
|
89
84
|
}
|
|
90
|
-
onColumnFilterValueChangedDebounced?.({
|
|
91
|
-
column,
|
|
92
|
-
event,
|
|
93
|
-
filterValue: event.target.value,
|
|
94
|
-
instance,
|
|
95
|
-
});
|
|
96
|
-
columnDef.onColumnFilterValueChangedDebounced?.({
|
|
97
|
-
column,
|
|
98
|
-
event,
|
|
99
|
-
filterValue: event.target.value,
|
|
100
|
-
instance,
|
|
101
|
-
});
|
|
102
85
|
}, 200),
|
|
103
86
|
[],
|
|
104
87
|
);
|
|
@@ -106,18 +89,6 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
106
89
|
const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
107
90
|
setFilterValue(event.target.value);
|
|
108
91
|
handleChangeDebounced(event);
|
|
109
|
-
onColumnFilterValueChanged?.({
|
|
110
|
-
column,
|
|
111
|
-
event,
|
|
112
|
-
filterValue: event.target.value,
|
|
113
|
-
instance,
|
|
114
|
-
});
|
|
115
|
-
columnDef.onColumnFilterValueChanged?.({
|
|
116
|
-
column,
|
|
117
|
-
event,
|
|
118
|
-
filterValue: event.target.value,
|
|
119
|
-
instance,
|
|
120
|
-
});
|
|
121
92
|
};
|
|
122
93
|
|
|
123
94
|
const handleFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {
|
|
@@ -147,21 +118,23 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
147
118
|
};
|
|
148
119
|
|
|
149
120
|
if (columnDef.Filter) {
|
|
150
|
-
return <>{columnDef.Filter?.({ header,
|
|
121
|
+
return <>{columnDef.Filter?.({ header, table })}</>;
|
|
151
122
|
}
|
|
152
123
|
|
|
153
124
|
const filterId = `mrt-${tableId}-${header.id}-filter-text-field${
|
|
154
125
|
inputIndex ?? ''
|
|
155
126
|
}`;
|
|
156
|
-
const
|
|
127
|
+
const currentFilterOption = currentFilterFns?.[header.id];
|
|
157
128
|
const isSelectFilter = !!columnDef.filterSelectOptions;
|
|
158
|
-
const filterChipLabel =
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
129
|
+
const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)
|
|
130
|
+
? //@ts-ignore
|
|
131
|
+
localization[
|
|
132
|
+
`filter${
|
|
133
|
+
currentFilterOption.charAt(0).toUpperCase() +
|
|
134
|
+
currentFilterOption.slice(1)
|
|
135
|
+
}`
|
|
136
|
+
]
|
|
137
|
+
: '';
|
|
165
138
|
const filterPlaceholder =
|
|
166
139
|
inputIndex === undefined
|
|
167
140
|
? localization.filterByColumn?.replace(
|
|
@@ -201,26 +174,16 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
201
174
|
helperText={
|
|
202
175
|
showChangeModeButton ? (
|
|
203
176
|
<label htmlFor={filterId}>
|
|
204
|
-
{
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
) ?? ''
|
|
215
|
-
: localization.filterMode.replace(
|
|
216
|
-
'{filterType}',
|
|
217
|
-
// @ts-ignore
|
|
218
|
-
localization[
|
|
219
|
-
`filter${
|
|
220
|
-
filterFn.charAt(0).toUpperCase() + filterFn.slice(1)
|
|
221
|
-
}`
|
|
222
|
-
],
|
|
223
|
-
)}
|
|
177
|
+
{localization.filterMode.replace(
|
|
178
|
+
'{filterType}',
|
|
179
|
+
// @ts-ignore
|
|
180
|
+
localization[
|
|
181
|
+
`filter${
|
|
182
|
+
currentFilterOption.charAt(0).toUpperCase() +
|
|
183
|
+
currentFilterOption.slice(1)
|
|
184
|
+
}`
|
|
185
|
+
],
|
|
186
|
+
)}
|
|
224
187
|
</label>
|
|
225
188
|
) : null
|
|
226
189
|
}
|
|
@@ -329,7 +292,7 @@ export const MRT_FilterTextField: FC<Props> = ({
|
|
|
329
292
|
anchorEl={anchorEl}
|
|
330
293
|
header={header}
|
|
331
294
|
setAnchorEl={setAnchorEl}
|
|
332
|
-
|
|
295
|
+
table={table}
|
|
333
296
|
/>
|
|
334
297
|
</>
|
|
335
298
|
);
|
|
@@ -17,10 +17,10 @@ import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
|
|
|
17
17
|
import { MRT_TableInstance } from '..';
|
|
18
18
|
|
|
19
19
|
interface Props {
|
|
20
|
-
|
|
20
|
+
table: MRT_TableInstance;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export const MRT_GlobalFilterTextField: FC<Props> = ({
|
|
23
|
+
export const MRT_GlobalFilterTextField: FC<Props> = ({ table }) => {
|
|
24
24
|
const {
|
|
25
25
|
getState,
|
|
26
26
|
setGlobalFilter,
|
|
@@ -29,12 +29,9 @@ export const MRT_GlobalFilterTextField: FC<Props> = ({ instance }) => {
|
|
|
29
29
|
icons: { SearchIcon, CloseIcon },
|
|
30
30
|
localization,
|
|
31
31
|
muiSearchTextFieldProps,
|
|
32
|
-
onGlobalFilterValueChanged,
|
|
33
|
-
onGlobalFilterValueChangedDebounced,
|
|
34
32
|
tableId,
|
|
35
33
|
},
|
|
36
|
-
} =
|
|
37
|
-
|
|
34
|
+
} = table;
|
|
38
35
|
const { globalFilter, showGlobalFilter } = getState();
|
|
39
36
|
|
|
40
37
|
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
|
|
@@ -43,7 +40,6 @@ export const MRT_GlobalFilterTextField: FC<Props> = ({ instance }) => {
|
|
|
43
40
|
const handleChangeDebounced = useCallback(
|
|
44
41
|
debounce((event: ChangeEvent<HTMLInputElement>) => {
|
|
45
42
|
setGlobalFilter(event.target.value ?? undefined);
|
|
46
|
-
onGlobalFilterValueChangedDebounced?.({ event, instance });
|
|
47
43
|
}, 250),
|
|
48
44
|
[],
|
|
49
45
|
);
|
|
@@ -51,7 +47,6 @@ export const MRT_GlobalFilterTextField: FC<Props> = ({ instance }) => {
|
|
|
51
47
|
const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
52
48
|
setSearchValue(event.target.value);
|
|
53
49
|
handleChangeDebounced(event);
|
|
54
|
-
onGlobalFilterValueChanged?.({ event, instance });
|
|
55
50
|
};
|
|
56
51
|
|
|
57
52
|
const handleGlobalFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {
|
|
@@ -65,7 +60,7 @@ export const MRT_GlobalFilterTextField: FC<Props> = ({ instance }) => {
|
|
|
65
60
|
|
|
66
61
|
const textFieldProps =
|
|
67
62
|
muiSearchTextFieldProps instanceof Function
|
|
68
|
-
? muiSearchTextFieldProps({
|
|
63
|
+
? muiSearchTextFieldProps({ table })
|
|
69
64
|
: muiSearchTextFieldProps;
|
|
70
65
|
|
|
71
66
|
return (
|
|
@@ -115,7 +110,7 @@ export const MRT_GlobalFilterTextField: FC<Props> = ({ instance }) => {
|
|
|
115
110
|
<MRT_FilterOptionMenu
|
|
116
111
|
anchorEl={anchorEl}
|
|
117
112
|
setAnchorEl={setAnchorEl}
|
|
118
|
-
|
|
113
|
+
table={table}
|
|
119
114
|
/>
|
|
120
115
|
</Collapse>
|
|
121
116
|
);
|
|
@@ -5,64 +5,39 @@ import type { MRT_Row, MRT_TableInstance } from '..';
|
|
|
5
5
|
interface Props {
|
|
6
6
|
row?: MRT_Row;
|
|
7
7
|
selectAll?: boolean;
|
|
8
|
-
|
|
8
|
+
table: MRT_TableInstance;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll,
|
|
11
|
+
export const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll, table }) => {
|
|
12
12
|
const {
|
|
13
|
-
getRowModel,
|
|
14
|
-
getPaginationRowModel,
|
|
15
|
-
getSelectedRowModel,
|
|
16
13
|
getState,
|
|
17
14
|
options: {
|
|
18
15
|
localization,
|
|
19
16
|
muiSelectCheckboxProps,
|
|
20
17
|
muiSelectAllCheckboxProps,
|
|
21
|
-
onRowSelectionChanged,
|
|
22
|
-
onRowSelectAllChanged,
|
|
23
18
|
selectAllMode,
|
|
24
19
|
},
|
|
25
|
-
} =
|
|
26
|
-
|
|
20
|
+
} = table;
|
|
27
21
|
const { density } = getState();
|
|
28
22
|
|
|
29
23
|
const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
30
24
|
if (selectAll) {
|
|
31
25
|
if (selectAllMode === 'all') {
|
|
32
|
-
|
|
26
|
+
table.getToggleAllRowsSelectedHandler()(event as any);
|
|
33
27
|
} else if (selectAllMode === 'page') {
|
|
34
|
-
|
|
28
|
+
table.getToggleAllPageRowsSelectedHandler()(event as any);
|
|
35
29
|
}
|
|
36
|
-
onRowSelectAllChanged?.({
|
|
37
|
-
event,
|
|
38
|
-
selectedRows: event.target.checked
|
|
39
|
-
? selectAllMode === 'all'
|
|
40
|
-
? getRowModel().flatRows
|
|
41
|
-
: getPaginationRowModel().flatRows
|
|
42
|
-
: [],
|
|
43
|
-
instance,
|
|
44
|
-
});
|
|
45
30
|
} else if (row) {
|
|
46
31
|
row?.getToggleSelectedHandler()(event as any);
|
|
47
|
-
onRowSelectionChanged?.({
|
|
48
|
-
event,
|
|
49
|
-
row,
|
|
50
|
-
selectedRows: event.target.checked
|
|
51
|
-
? [...getSelectedRowModel().flatRows, row]
|
|
52
|
-
: getSelectedRowModel().flatRows.filter(
|
|
53
|
-
(selectedRow) => selectedRow.id !== row.id,
|
|
54
|
-
),
|
|
55
|
-
instance,
|
|
56
|
-
});
|
|
57
32
|
}
|
|
58
33
|
};
|
|
59
34
|
|
|
60
35
|
const checkboxProps = selectAll
|
|
61
36
|
? muiSelectAllCheckboxProps instanceof Function
|
|
62
|
-
? muiSelectAllCheckboxProps({
|
|
37
|
+
? muiSelectAllCheckboxProps({ table })
|
|
63
38
|
: muiSelectAllCheckboxProps
|
|
64
39
|
: muiSelectCheckboxProps instanceof Function
|
|
65
|
-
? muiSelectCheckboxProps({ row: row as MRT_Row,
|
|
40
|
+
? muiSelectCheckboxProps({ row: row as MRT_Row, table })
|
|
66
41
|
: muiSelectCheckboxProps;
|
|
67
42
|
|
|
68
43
|
return (
|
|
@@ -76,12 +51,10 @@ export const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll, instance }) => {
|
|
|
76
51
|
>
|
|
77
52
|
<Checkbox
|
|
78
53
|
checked={
|
|
79
|
-
selectAll ?
|
|
54
|
+
selectAll ? table.getIsAllRowsSelected() : row?.getIsSelected()
|
|
80
55
|
}
|
|
81
56
|
indeterminate={
|
|
82
|
-
selectAll
|
|
83
|
-
? instance.getIsSomeRowsSelected()
|
|
84
|
-
: row?.getIsSomeSelected()
|
|
57
|
+
selectAll ? table.getIsSomeRowsSelected() : row?.getIsSomeSelected()
|
|
85
58
|
}
|
|
86
59
|
inputProps={{
|
|
87
60
|
'aria-label': selectAll
|
|
@@ -20,14 +20,14 @@ interface Props {
|
|
|
20
20
|
anchorEl: HTMLElement | null;
|
|
21
21
|
header: MRT_Header;
|
|
22
22
|
setAnchorEl: (anchorEl: HTMLElement | null) => void;
|
|
23
|
-
|
|
23
|
+
table: MRT_TableInstance;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
27
27
|
anchorEl,
|
|
28
28
|
header,
|
|
29
29
|
setAnchorEl,
|
|
30
|
-
|
|
30
|
+
table,
|
|
31
31
|
}) => {
|
|
32
32
|
const {
|
|
33
33
|
getState,
|
|
@@ -58,17 +58,13 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
58
58
|
localization,
|
|
59
59
|
},
|
|
60
60
|
setShowFilters,
|
|
61
|
-
} =
|
|
62
|
-
|
|
61
|
+
} = table;
|
|
63
62
|
const { column } = header;
|
|
64
|
-
|
|
65
63
|
const { columnDef } = column;
|
|
66
|
-
|
|
67
64
|
const { columnSizing, columnVisibility, density } = getState();
|
|
68
65
|
|
|
69
66
|
const [filterMenuAnchorEl, setFilterMenuAnchorEl] =
|
|
70
67
|
useState<null | HTMLElement>(null);
|
|
71
|
-
|
|
72
68
|
const [showHideColumnsMenuAnchorEl, setShowHideColumnsMenuAnchorEl] =
|
|
73
69
|
useState<null | HTMLElement>(null);
|
|
74
70
|
|
|
@@ -265,7 +261,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
265
261
|
key={2}
|
|
266
262
|
onSelect={handleFilterByColumn}
|
|
267
263
|
setAnchorEl={setFilterMenuAnchorEl}
|
|
268
|
-
|
|
264
|
+
table={table}
|
|
269
265
|
/>
|
|
270
266
|
),
|
|
271
267
|
].filter(Boolean)}
|
|
@@ -394,7 +390,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
394
390
|
isSubMenu
|
|
395
391
|
key={2}
|
|
396
392
|
setAnchorEl={setShowHideColumnsMenuAnchorEl}
|
|
397
|
-
|
|
393
|
+
table={table}
|
|
398
394
|
/>,
|
|
399
395
|
]}
|
|
400
396
|
</Menu>
|