material-react-table-narender 2.13.27 → 2.13.30
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 +6 -0
- package/dist/index.esm.js +38 -37
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +39 -37
- package/dist/index.js.map +1 -1
- package/package.json +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 -11
- package/src/components/menus/MRT_ColumnActionMenu.tsx +15 -1
- package/src/hooks/useMRT_TableInstance.ts +8 -0
- package/src/icons.ts +3 -1
- package/src/types.ts +3 -0
package/package.json
CHANGED
@@ -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
|
+
};
|
@@ -161,18 +161,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
|
|
161
161
|
return newFilterValues;
|
162
162
|
});
|
163
163
|
} else {
|
164
|
-
if (textFieldProps.type ==="number") {
|
165
|
-
// column.setFilterValue(newValue === '' ? undefined : newValue);
|
166
|
-
debugger;
|
167
|
-
if (newValue === 0) {
|
168
|
-
column.setFilterValue("0");
|
169
|
-
} else {
|
170
|
-
column.setFilterValue(newValue);
|
171
|
-
}
|
172
|
-
|
173
|
-
} else {
|
174
164
|
column.setFilterValue(newValue ?? undefined);
|
175
|
-
}
|
176
165
|
}
|
177
166
|
},
|
178
167
|
isTextboxFilter ? (manualFiltering ? 400 : 200) : 1,
|
@@ -216,6 +205,8 @@ debugger;
|
|
216
205
|
setFilterValue('');
|
217
206
|
column.setFilterValue(undefined);
|
218
207
|
}
|
208
|
+
// focus on the input after clearing the filter
|
209
|
+
// filterInputRefs.current[`${column.id}-${rangeFilterIndex ?? 0}`]?.focus();
|
219
210
|
};
|
220
211
|
|
221
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> {
|
@@ -47,6 +48,7 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
|
|
47
48
|
SortIcon,
|
48
49
|
ViewColumnIcon,
|
49
50
|
VisibilityOffIcon,
|
51
|
+
SettingsOutlinedIcon
|
50
52
|
},
|
51
53
|
localization,
|
52
54
|
mrtTheme: { menuBackgroundColor },
|
@@ -60,7 +62,7 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
|
|
60
62
|
} = table;
|
61
63
|
const { column } = header;
|
62
64
|
const { columnDef } = column;
|
63
|
-
const { columnSizing, columnVisibility, density, showColumnFilters } =
|
65
|
+
const { columnSizing, columnVisibility, density, showColumnFilters,showToolBar } =
|
64
66
|
getState();
|
65
67
|
const columnFilterValue = column.getFilterValue();
|
66
68
|
|
@@ -315,6 +317,18 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
|
|
315
317
|
/>,
|
316
318
|
]
|
317
319
|
: []),
|
320
|
+
|
321
|
+
// **Newly Added Menu Item for Toolbar Visibility**
|
322
|
+
<MRT_ActionMenuItem
|
323
|
+
icon={<SettingsOutlinedIcon />}
|
324
|
+
key={13}
|
325
|
+
label={showToolBar ? "Hide ToolBar" : "Show ToolBar"}
|
326
|
+
onClick={(e) => {
|
327
|
+
e.stopPropagation();
|
328
|
+
table.setShowToolBar(!showToolBar);
|
329
|
+
}}
|
330
|
+
table={table}
|
331
|
+
/>,
|
318
332
|
].filter(Boolean);
|
319
333
|
|
320
334
|
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/icons.ts
CHANGED
@@ -33,6 +33,7 @@ import SyncAltIcon from '@mui/icons-material/SyncAlt';
|
|
33
33
|
import ViewColumnIcon from '@mui/icons-material/ViewColumn';
|
34
34
|
import VisibilityOffIcon from '@mui/icons-material/VisibilityOff';
|
35
35
|
import SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore';
|
36
|
+
import SettingsOutlinedIcon from '@mui/icons-material/SettingsOutlined';
|
36
37
|
|
37
38
|
export const MRT_Default_Icons = {
|
38
39
|
ArrowDownwardIcon,
|
@@ -69,7 +70,8 @@ export const MRT_Default_Icons = {
|
|
69
70
|
SyncAltIcon,
|
70
71
|
ViewColumnIcon,
|
71
72
|
VisibilityOffIcon,
|
72
|
-
SettingsBackupRestoreIcon
|
73
|
+
SettingsBackupRestoreIcon,
|
74
|
+
SettingsOutlinedIcon
|
73
75
|
} as const;
|
74
76
|
|
75
77
|
export type MRT_Icons = Record<keyof typeof MRT_Default_Icons, any>;
|
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';
|