material-react-table-narender 2.13.25 → 2.13.29
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/index.d.ts +3 -0
- package/dist/index.esm.js +58 -29
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +57 -28
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/MaterialReactTable.tsx +1 -1
- package/src/components/body/MRT_TableBodyCell.tsx +1 -1
- package/src/components/head/MRT_TableHeadCell.tsx +3 -0
- package/src/components/head/MRT_TableHeadCellToolBar.tsx +68 -0
- package/src/components/inputs/MRT_FilterTextField.tsx +2 -0
- package/src/components/menus/MRT_ColumnActionMenu.tsx +14 -1
- package/src/hooks/useMRT_TableInstance.ts +8 -0
- package/src/types.ts +3 -0
- package/src/utils/cell.utils.ts +3 -3
package/package.json
CHANGED
@@ -231,7 +231,7 @@ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
|
|
231
231
|
|
232
232
|
const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {
|
233
233
|
tableCellProps?.onKeyDown?.(event);
|
234
|
-
debugger;
|
234
|
+
//debugger;
|
235
235
|
cellKeyboardShortcuts({
|
236
236
|
cell,
|
237
237
|
cellValue: cell.getValue<string>(),
|
@@ -18,6 +18,7 @@ import {
|
|
18
18
|
import { getCommonMRTCellStyles } from '../../utils/style.utils';
|
19
19
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
20
20
|
import { cellKeyboardShortcuts } from '../../utils/cell.utils';
|
21
|
+
import { MRT_TableHeadCellToolBar } from './MRT_TableHeadCellToolBar';
|
21
22
|
|
22
23
|
export interface MRT_TableHeadCellProps<TData extends MRT_RowData>
|
23
24
|
extends TableCellProps {
|
@@ -63,6 +64,7 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
|
|
63
64
|
grouping,
|
64
65
|
hoveredColumn,
|
65
66
|
showColumnFilters,
|
67
|
+
showToolBar,
|
66
68
|
} = getState();
|
67
69
|
const { column } = header;
|
68
70
|
const { columnDef } = column;
|
@@ -307,6 +309,7 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
|
|
307
309
|
{column.getCanSort() && (
|
308
310
|
<MRT_TableHeadCellSortLabel header={header} table={table} />
|
309
311
|
)}
|
312
|
+
<MRT_TableHeadCellToolBar header={header} table={table} />
|
310
313
|
</Box>
|
311
314
|
{columnDefType !== 'group' && (
|
312
315
|
<Box
|
@@ -0,0 +1,68 @@
|
|
1
|
+
import Badge from '@mui/material/Badge';
|
2
|
+
import TableSortLabel, {
|
3
|
+
type TableSortLabelProps,
|
4
|
+
} from '@mui/material/TableSortLabel';
|
5
|
+
import Tooltip from '@mui/material/Tooltip';
|
6
|
+
import {
|
7
|
+
type MRT_Header,
|
8
|
+
type MRT_RowData,
|
9
|
+
type MRT_TableInstance,
|
10
|
+
} from '../../types';
|
11
|
+
import { parseFromValuesOrFunc } from '../../utils/utils';
|
12
|
+
import { IconButton } from '@mui/material';
|
13
|
+
|
14
|
+
export interface MRT_TableHeadCellToolBarLabelProps<TData extends MRT_RowData>
|
15
|
+
extends TableSortLabelProps {
|
16
|
+
header: MRT_Header<TData>;
|
17
|
+
table: MRT_TableInstance<TData>;
|
18
|
+
}
|
19
|
+
|
20
|
+
export const MRT_TableHeadCellToolBar = <TData extends MRT_RowData>({
|
21
|
+
header,
|
22
|
+
table,
|
23
|
+
...rest
|
24
|
+
}: MRT_TableHeadCellToolBarLabelProps<TData>) => {
|
25
|
+
const {
|
26
|
+
getState,
|
27
|
+
options: {
|
28
|
+
icons: { ArrowDownwardIcon, SyncAltIcon },
|
29
|
+
localization,
|
30
|
+
},
|
31
|
+
} = table;
|
32
|
+
const { isLoading, showSkeletons, showToolBar } = getState();
|
33
|
+
|
34
|
+
|
35
|
+
const showToolBarTooltip = isLoading || showSkeletons
|
36
|
+
? ''
|
37
|
+
: showToolBar
|
38
|
+
? "Hide ToolBar"
|
39
|
+
: "Show ToolBar";
|
40
|
+
|
41
|
+
|
42
|
+
return (
|
43
|
+
<Tooltip placement="top" title={showToolBarTooltip}>
|
44
|
+
|
45
|
+
<IconButton
|
46
|
+
aria-label={showToolBarTooltip}
|
47
|
+
size="small"
|
48
|
+
sx={(theme) => ({
|
49
|
+
'&:hover': {
|
50
|
+
backgroundColor: 'transparent',
|
51
|
+
opacity: 1,
|
52
|
+
},
|
53
|
+
cursor: 'pointer',
|
54
|
+
opacity: 1,
|
55
|
+
p: '2px',
|
56
|
+
transition: 'all 150ms ease-in-out',
|
57
|
+
...(parseFromValuesOrFunc(rest?.sx, theme) as any),
|
58
|
+
})}
|
59
|
+
onClick={(e) => {
|
60
|
+
e.stopPropagation();
|
61
|
+
table.setShowToolBar(!showToolBar);
|
62
|
+
}}
|
63
|
+
>
|
64
|
+
<SyncAltIcon />
|
65
|
+
</IconButton>
|
66
|
+
</Tooltip>
|
67
|
+
);
|
68
|
+
};
|
@@ -205,6 +205,8 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
|
|
205
205
|
setFilterValue('');
|
206
206
|
column.setFilterValue(undefined);
|
207
207
|
}
|
208
|
+
// focus on the input after clearing the filter
|
209
|
+
// filterInputRefs.current[`${column.id}-${rangeFilterIndex ?? 0}`]?.focus();
|
208
210
|
};
|
209
211
|
|
210
212
|
const handleClearEmptyFilterChip = () => {
|
@@ -7,6 +7,7 @@ import {
|
|
7
7
|
type MRT_RowData,
|
8
8
|
type MRT_TableInstance,
|
9
9
|
} from '../../types';
|
10
|
+
import { MRT_TableHeadCellToolBar } from '../head/MRT_TableHeadCellToolBar';
|
10
11
|
|
11
12
|
export interface MRT_ColumnActionMenuProps<TData extends MRT_RowData>
|
12
13
|
extends Partial<MenuProps> {
|
@@ -60,7 +61,7 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
|
|
60
61
|
} = table;
|
61
62
|
const { column } = header;
|
62
63
|
const { columnDef } = column;
|
63
|
-
const { columnSizing, columnVisibility, density, showColumnFilters } =
|
64
|
+
const { columnSizing, columnVisibility, density, showColumnFilters,showToolBar } =
|
64
65
|
getState();
|
65
66
|
const columnFilterValue = column.getFilterValue();
|
66
67
|
|
@@ -315,6 +316,18 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
|
|
315
316
|
/>,
|
316
317
|
]
|
317
318
|
: []),
|
319
|
+
|
320
|
+
// **Newly Added Menu Item for Toolbar Visibility**
|
321
|
+
<MRT_ActionMenuItem
|
322
|
+
icon={<ViewColumnIcon />}
|
323
|
+
key={13}
|
324
|
+
label={showToolBar ? "Hide ToolBar" : "Show ToolBar"}
|
325
|
+
onClick={(e) => {
|
326
|
+
e.stopPropagation();
|
327
|
+
table.setShowToolBar(!showToolBar);
|
328
|
+
}}
|
329
|
+
table={table}
|
330
|
+
/>,
|
318
331
|
].filter(Boolean);
|
319
332
|
|
320
333
|
return (
|
@@ -158,7 +158,12 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
|
|
158
158
|
);
|
159
159
|
const [showColumnFilters, setShowColumnFilters] = useState<boolean>(
|
160
160
|
initialState?.showColumnFilters ?? false,
|
161
|
+
);
|
162
|
+
const [showToolBar, setShowToolBar] = useState<boolean>(
|
163
|
+
initialState?.showToolBar ?? false,
|
161
164
|
);
|
165
|
+
|
166
|
+
|
162
167
|
const [showGlobalFilter, setShowGlobalFilter] = useState<boolean>(
|
163
168
|
initialState?.showGlobalFilter ?? false,
|
164
169
|
);
|
@@ -186,6 +191,7 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
|
|
186
191
|
pagination,
|
187
192
|
showAlertBanner,
|
188
193
|
showColumnFilters,
|
194
|
+
showToolBar,
|
189
195
|
showGlobalFilter,
|
190
196
|
showToolbarDropZone,
|
191
197
|
...definedTableOptions.state,
|
@@ -317,6 +323,8 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
|
|
317
323
|
statefulTableOptions.onShowAlertBannerChange ?? setShowAlertBanner;
|
318
324
|
table.setShowColumnFilters =
|
319
325
|
statefulTableOptions.onShowColumnFiltersChange ?? setShowColumnFilters;
|
326
|
+
table.setShowToolBar =
|
327
|
+
statefulTableOptions.onShowToolBarChange ?? setShowToolBar;
|
320
328
|
table.setShowGlobalFilter =
|
321
329
|
statefulTableOptions.onShowGlobalFilterChange ?? setShowGlobalFilter;
|
322
330
|
table.setShowToolbarDropZone =
|
package/src/types.ts
CHANGED
@@ -344,6 +344,7 @@ export type MRT_TableInstance<TData extends MRT_RowData> = Omit<
|
|
344
344
|
setIsFullScreen: Dispatch<SetStateAction<boolean>>;
|
345
345
|
setShowAlertBanner: Dispatch<SetStateAction<boolean>>;
|
346
346
|
setShowColumnFilters: Dispatch<SetStateAction<boolean>>;
|
347
|
+
setShowToolBar: Dispatch<SetStateAction<boolean>>;
|
347
348
|
setShowGlobalFilter: Dispatch<SetStateAction<boolean>>;
|
348
349
|
setShowToolbarDropZone: Dispatch<SetStateAction<boolean>>;
|
349
350
|
setEnableKeyboardShortcuts : Dispatch<SetStateAction<boolean>>;
|
@@ -402,6 +403,7 @@ export interface MRT_TableState<TData extends MRT_RowData> extends TableState {
|
|
402
403
|
isSaving: boolean;
|
403
404
|
showAlertBanner: boolean;
|
404
405
|
showColumnFilters: boolean;
|
406
|
+
showToolBar: boolean;
|
405
407
|
showGlobalFilter: boolean;
|
406
408
|
showLoadingOverlay: boolean;
|
407
409
|
showProgressBars: boolean;
|
@@ -1190,6 +1192,7 @@ export interface MRT_TableOptions<TData extends MRT_RowData>
|
|
1190
1192
|
onEnableKeyboardShortcutsChange?: OnChangeFn<boolean>;
|
1191
1193
|
onShowAlertBannerChange?: OnChangeFn<boolean>;
|
1192
1194
|
onShowColumnFiltersChange?: OnChangeFn<boolean>;
|
1195
|
+
onShowToolBarChange?: OnChangeFn<boolean>;
|
1193
1196
|
onShowGlobalFilterChange?: OnChangeFn<boolean>;
|
1194
1197
|
onShowToolbarDropZoneChange?: OnChangeFn<boolean>;
|
1195
1198
|
paginationDisplayMode?: 'custom' | 'default' | 'pages';
|
package/src/utils/cell.utils.ts
CHANGED
@@ -80,7 +80,7 @@ export const cellKeyboardShortcuts = <TData extends MRT_RowData = MRT_RowData>({
|
|
80
80
|
table: MRT_TableInstance<TData>;
|
81
81
|
}) => {
|
82
82
|
|
83
|
-
debugger;
|
83
|
+
//debugger;
|
84
84
|
const {
|
85
85
|
getState,
|
86
86
|
setEnableKeyboardShortcuts,
|
@@ -194,7 +194,7 @@ if (event.altKey && event.key.toLocaleLowerCase() === 'n') {
|
|
194
194
|
}
|
195
195
|
else if ("Enter" === event.key) {
|
196
196
|
|
197
|
-
debugger;
|
197
|
+
//debugger;
|
198
198
|
event.preventDefault();
|
199
199
|
const input = currentCell.querySelector('input') as HTMLInputElement;
|
200
200
|
const select = currentCell.querySelector('select') as HTMLSelectElement;
|
@@ -234,7 +234,7 @@ else if (input) {
|
|
234
234
|
) {
|
235
235
|
event.preventDefault();
|
236
236
|
// if (['ArrowDown'].includes(event.key)) {
|
237
|
-
// debugger; // This will pause execution for debugging purposes
|
237
|
+
// //debugger; // This will pause execution for debugging purposes
|
238
238
|
|
239
239
|
// // Select the input element within the MUI Autocomplete component
|
240
240
|
// const autocomplete = currentCell.querySelector('.MuiAutocomplete-root input[type="text"]');
|