material-react-table 0.40.4 → 0.40.5
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 +12 -2
- package/dist/cjs/index.js +45 -40
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/MaterialReactTable.d.ts +12 -2
- package/dist/esm/material-react-table.esm.js +45 -40
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/index.d.ts +12 -2
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +20 -2
- package/src/body/MRT_TableBody.tsx +9 -7
- package/src/menus/MRT_ColumnActionMenu.tsx +63 -50
- package/src/table/MRT_TableRoot.tsx +4 -6
|
@@ -216,12 +216,17 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
|
|
|
216
216
|
table: MRT_TableInstance<TData>;
|
|
217
217
|
column: MRT_Column<TData>;
|
|
218
218
|
}) => TableCellProps);
|
|
219
|
+
renderColumnActionsMenuItems?: ({ closeMenu, column, table, }: {
|
|
220
|
+
closeMenu: () => void;
|
|
221
|
+
column: MRT_Column<TData>;
|
|
222
|
+
table: MRT_TableInstance<TData>;
|
|
223
|
+
}) => ReactNode[];
|
|
219
224
|
renderColumnFilterModeMenuItems?: ({ column, internalFilterOptions, onSelectFilterMode, table, }: {
|
|
220
225
|
column: MRT_Column<TData>;
|
|
221
226
|
internalFilterOptions: MRT_InternalFilterOption[];
|
|
222
227
|
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
223
228
|
table: MRT_TableInstance<TData>;
|
|
224
|
-
}) => ReactNode;
|
|
229
|
+
}) => ReactNode[];
|
|
225
230
|
sortingFn?: MRT_SortingFn;
|
|
226
231
|
};
|
|
227
232
|
export declare type MRT_DefinedColumnDef<TData extends Record<string, any> = {}> = Omit<MRT_ColumnDef<TData>, 'id'> & {
|
|
@@ -472,12 +477,17 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
472
477
|
renderBottomToolbarCustomActions?: ({ table, }: {
|
|
473
478
|
table: MRT_TableInstance<TData>;
|
|
474
479
|
}) => ReactNode;
|
|
480
|
+
renderColumnActionsMenuItems?: ({ column, closeMenu, table, }: {
|
|
481
|
+
column: MRT_Column<TData>;
|
|
482
|
+
closeMenu: () => void;
|
|
483
|
+
table: MRT_TableInstance<TData>;
|
|
484
|
+
}) => ReactNode[];
|
|
475
485
|
renderColumnFilterModeMenuItems?: ({ column, internalFilterOptions, onSelectFilterMode, table, }: {
|
|
476
486
|
column: MRT_Column<TData>;
|
|
477
487
|
internalFilterOptions: MRT_InternalFilterOption[];
|
|
478
488
|
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
479
489
|
table: MRT_TableInstance<TData>;
|
|
480
|
-
}) => ReactNode;
|
|
490
|
+
}) => ReactNode[];
|
|
481
491
|
renderDetailPanel?: ({ row, table, }: {
|
|
482
492
|
row: MRT_Row<TData>;
|
|
483
493
|
table: MRT_TableInstance<TData>;
|
package/dist/cjs/index.js
CHANGED
|
@@ -736,8 +736,8 @@ const commonListItemStyles = {
|
|
|
736
736
|
alignItems: 'center',
|
|
737
737
|
};
|
|
738
738
|
const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
739
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
740
|
-
const { getState, toggleAllColumnsVisible, setColumnOrder, options: { enableColumnFilterModes, enableColumnFilters, enableColumnResizing, enableGrouping, enableHiding, enablePinning, enableSorting,
|
|
739
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
740
|
+
const { getState, toggleAllColumnsVisible, setColumnOrder, options: { columnFilterModeOptions, enableColumnFilterModes, enableColumnFilters, enableColumnResizing, enableGrouping, enableHiding, enablePinning, enableSorting, icons: { ArrowRightIcon, ClearAllIcon, ViewColumnIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, SortIcon, RestartAltIcon, VisibilityOffIcon, }, localization, renderColumnActionsMenuItems, }, refs: { filterInputRefs }, setShowFilters, } = table;
|
|
741
741
|
const { column } = header;
|
|
742
742
|
const { columnDef } = column;
|
|
743
743
|
const { columnSizing, columnVisibility, density } = getState();
|
|
@@ -802,25 +802,32 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
|
802
802
|
!!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length));
|
|
803
803
|
return (React__default["default"].createElement(material.Menu, { anchorEl: anchorEl, open: !!anchorEl, onClose: () => setAnchorEl(null), MenuListProps: {
|
|
804
804
|
dense: density === 'compact',
|
|
805
|
-
} },
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
805
|
+
} }, (_d = (_c = (_b = columnDef.renderColumnActionsMenuItems) === null || _b === void 0 ? void 0 : _b.call(columnDef, {
|
|
806
|
+
closeMenu: () => setAnchorEl(null),
|
|
807
|
+
column,
|
|
808
|
+
table,
|
|
809
|
+
})) !== null && _c !== void 0 ? _c : renderColumnActionsMenuItems === null || renderColumnActionsMenuItems === void 0 ? void 0 : renderColumnActionsMenuItems({
|
|
810
|
+
closeMenu: () => setAnchorEl(null),
|
|
811
|
+
column,
|
|
812
|
+
table,
|
|
813
|
+
})) !== null && _d !== void 0 ? _d : (enableSorting &&
|
|
814
|
+
column.getCanSort() && [
|
|
815
|
+
React__default["default"].createElement(material.MenuItem, { disabled: !column.getIsSorted(), key: 0, onClick: handleClearSort, sx: commonMenuItemStyles },
|
|
816
|
+
React__default["default"].createElement(material.Box, { sx: commonListItemStyles },
|
|
817
|
+
React__default["default"].createElement(material.ListItemIcon, null,
|
|
818
|
+
React__default["default"].createElement(ClearAllIcon, null)),
|
|
819
|
+
localization.clearSort)),
|
|
820
|
+
React__default["default"].createElement(material.MenuItem, { disabled: column.getIsSorted() === 'asc', key: 1, onClick: handleSortAsc, sx: commonMenuItemStyles },
|
|
821
|
+
React__default["default"].createElement(material.Box, { sx: commonListItemStyles },
|
|
822
|
+
React__default["default"].createElement(material.ListItemIcon, null,
|
|
823
|
+
React__default["default"].createElement(SortIcon, { style: { transform: 'rotate(180deg) scaleX(-1)' } })), (_e = localization.sortByColumnAsc) === null || _e === void 0 ? void 0 :
|
|
824
|
+
_e.replace('{column}', String(columnDef.header)))),
|
|
825
|
+
React__default["default"].createElement(material.MenuItem, { divider: enableColumnFilters || enableGrouping || enableHiding, key: 2, disabled: column.getIsSorted() === 'desc', onClick: handleSortDesc, sx: commonMenuItemStyles },
|
|
826
|
+
React__default["default"].createElement(material.Box, { sx: commonListItemStyles },
|
|
827
|
+
React__default["default"].createElement(material.ListItemIcon, null,
|
|
828
|
+
React__default["default"].createElement(SortIcon, null)), (_f = localization.sortByColumnDesc) === null || _f === void 0 ? void 0 :
|
|
829
|
+
_f.replace('{column}', String(columnDef.header)))),
|
|
830
|
+
]),
|
|
824
831
|
enableColumnFilters &&
|
|
825
832
|
column.getCanFilter() &&
|
|
826
833
|
[
|
|
@@ -832,8 +839,8 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
|
832
839
|
React__default["default"].createElement(material.MenuItem, { divider: enableGrouping || enableHiding, key: 1, onClick: handleFilterByColumn, sx: commonMenuItemStyles },
|
|
833
840
|
React__default["default"].createElement(material.Box, { sx: commonListItemStyles },
|
|
834
841
|
React__default["default"].createElement(material.ListItemIcon, null,
|
|
835
|
-
React__default["default"].createElement(FilterListIcon, null)), (
|
|
836
|
-
|
|
842
|
+
React__default["default"].createElement(FilterListIcon, null)), (_g = localization.filterByColumn) === null || _g === void 0 ? void 0 :
|
|
843
|
+
_g.replace('{column}', String(columnDef.header))),
|
|
837
844
|
showFilterModeSubMenu && (React__default["default"].createElement(material.IconButton, { onClick: handleOpenFilterModeMenu, onMouseEnter: handleOpenFilterModeMenu, size: "small", sx: { p: 0 } },
|
|
838
845
|
React__default["default"].createElement(ArrowRightIcon, null)))),
|
|
839
846
|
showFilterModeSubMenu && (React__default["default"].createElement(MRT_FilterOptionMenu, { anchorEl: filterMenuAnchorEl, header: header, key: 2, onSelect: handleFilterByColumn, setAnchorEl: setFilterMenuAnchorEl, table: table })),
|
|
@@ -843,8 +850,8 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
|
843
850
|
React__default["default"].createElement(material.MenuItem, { divider: enablePinning, key: 0, onClick: handleGroupByColumn, sx: commonMenuItemStyles },
|
|
844
851
|
React__default["default"].createElement(material.Box, { sx: commonListItemStyles },
|
|
845
852
|
React__default["default"].createElement(material.ListItemIcon, null,
|
|
846
|
-
React__default["default"].createElement(DynamicFeedIcon, null)), (
|
|
847
|
-
|
|
853
|
+
React__default["default"].createElement(DynamicFeedIcon, null)), (_h = localization[column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn']) === null || _h === void 0 ? void 0 :
|
|
854
|
+
_h.replace('{column}', String(columnDef.header)))),
|
|
848
855
|
],
|
|
849
856
|
enablePinning &&
|
|
850
857
|
column.getCanPin() && [
|
|
@@ -876,14 +883,14 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
|
876
883
|
React__default["default"].createElement(material.MenuItem, { disabled: columnDef.enableHiding === false, key: 0, onClick: handleHideColumn, sx: commonMenuItemStyles },
|
|
877
884
|
React__default["default"].createElement(material.Box, { sx: commonListItemStyles },
|
|
878
885
|
React__default["default"].createElement(material.ListItemIcon, null,
|
|
879
|
-
React__default["default"].createElement(VisibilityOffIcon, null)), (
|
|
880
|
-
|
|
886
|
+
React__default["default"].createElement(VisibilityOffIcon, null)), (_j = localization.hideColumn) === null || _j === void 0 ? void 0 :
|
|
887
|
+
_j.replace('{column}', String(columnDef.header)))),
|
|
881
888
|
React__default["default"].createElement(material.MenuItem, { disabled: !Object.values(columnVisibility).filter((visible) => !visible)
|
|
882
889
|
.length, key: 1, onClick: handleShowAllColumns, sx: commonMenuItemStyles },
|
|
883
890
|
React__default["default"].createElement(material.Box, { sx: commonListItemStyles },
|
|
884
891
|
React__default["default"].createElement(material.ListItemIcon, null,
|
|
885
|
-
React__default["default"].createElement(ViewColumnIcon, null)), (
|
|
886
|
-
|
|
892
|
+
React__default["default"].createElement(ViewColumnIcon, null)), (_k = localization.showAllColumns) === null || _k === void 0 ? void 0 :
|
|
893
|
+
_k.replace('{column}', String(columnDef.header))),
|
|
887
894
|
React__default["default"].createElement(material.IconButton, { onClick: handleOpenShowHideColumnsMenu, onMouseEnter: handleOpenShowHideColumnsMenu, size: "small", sx: { p: 0 } },
|
|
888
895
|
React__default["default"].createElement(ArrowRightIcon, null))),
|
|
889
896
|
React__default["default"].createElement(MRT_ShowHideColumnsMenu, { anchorEl: showHideColumnsMenuAnchorEl, isSubMenu: true, key: 2, setAnchorEl: setShowHideColumnsMenuAnchorEl, table: table }),
|
|
@@ -2135,7 +2142,7 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2135
2142
|
};
|
|
2136
2143
|
|
|
2137
2144
|
const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
2138
|
-
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization,
|
|
2145
|
+
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, manualFiltering, manualSorting, muiTableBodyProps, virtualizerInstanceRef, virtualizerProps, }, } = table;
|
|
2139
2146
|
const { globalFilter, pagination, sorting } = getState();
|
|
2140
2147
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
|
2141
2148
|
? muiTableBodyProps({ table })
|
|
@@ -2146,6 +2153,8 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2146
2153
|
const rows = React.useMemo(() => {
|
|
2147
2154
|
if (enableGlobalFilterRankedResults &&
|
|
2148
2155
|
globalFilter &&
|
|
2156
|
+
!manualFiltering &&
|
|
2157
|
+
!manualSorting &&
|
|
2149
2158
|
!Object.values(sorting).some(Boolean)) {
|
|
2150
2159
|
const rankedRows = getPrePaginationRowModel().rows.sort((a, b) => rankGlobalFuzzy(a, b));
|
|
2151
2160
|
if (enablePagination) {
|
|
@@ -2166,11 +2175,9 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2166
2175
|
const virtualizer = enableRowVirtualization
|
|
2167
2176
|
? reactVirtual.useVirtual(Object.assign({ size: rows.length, parentRef: tableContainerRef, overscan: 15 }, vProps))
|
|
2168
2177
|
: {};
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
}
|
|
2173
|
-
}, [virtualizer]);
|
|
2178
|
+
if (virtualizerInstanceRef) {
|
|
2179
|
+
virtualizerInstanceRef.current = virtualizer;
|
|
2180
|
+
}
|
|
2174
2181
|
// const virtualizer: Virtualizer = enableRowVirtualization
|
|
2175
2182
|
// ? useVirtualizer({
|
|
2176
2183
|
// count: rows.length,
|
|
@@ -2477,11 +2484,9 @@ const MRT_TableRoot = (props) => {
|
|
|
2477
2484
|
tableContainerRef,
|
|
2478
2485
|
topToolbarRef,
|
|
2479
2486
|
}, setColumnFilterFns: (_w = props.onFilterFnsChange) !== null && _w !== void 0 ? _w : setColumnFilterFns, setDensity: (_x = props.onDensityChange) !== null && _x !== void 0 ? _x : setDensity, setDraggingColumn: (_y = props.onDraggingColumnChange) !== null && _y !== void 0 ? _y : setDraggingColumn, setDraggingRow: (_z = props.onDraggingRowChange) !== null && _z !== void 0 ? _z : setDraggingRow, setEditingCell: (_0 = props.onEditingCellChange) !== null && _0 !== void 0 ? _0 : setEditingCell, setEditingRow: (_1 = props.onEditingRowChange) !== null && _1 !== void 0 ? _1 : setEditingRow, setGlobalFilterFn: (_2 = props.onGlobalFilterFnChange) !== null && _2 !== void 0 ? _2 : setGlobalFilterFn, setHoveredColumn: (_3 = props.onHoveredColumnChange) !== null && _3 !== void 0 ? _3 : setHoveredColumn, setHoveredRow: (_4 = props.onHoveredRowChange) !== null && _4 !== void 0 ? _4 : setHoveredRow, setIsFullScreen: (_5 = props.onIsFullScreenChange) !== null && _5 !== void 0 ? _5 : setIsFullScreen, setShowAlertBanner: (_6 = props.onShowAlertBannerChange) !== null && _6 !== void 0 ? _6 : setShowAlertBanner, setShowFilters: (_7 = props.onShowFiltersChange) !== null && _7 !== void 0 ? _7 : setShowFilters, setShowGlobalFilter: (_8 = props.onShowGlobalFilterChange) !== null && _8 !== void 0 ? _8 : setShowGlobalFilter });
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
}
|
|
2484
|
-
}, [table]);
|
|
2487
|
+
if (props.tableInstanceRef) {
|
|
2488
|
+
props.tableInstanceRef.current = table;
|
|
2489
|
+
}
|
|
2485
2490
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
2486
2491
|
React__default["default"].createElement(material.Dialog, { PaperComponent: material.Box, TransitionComponent: material.Grow, disablePortal: true, fullScreen: true, keepMounted: false, onClose: () => setIsFullScreen(false), open: isFullScreen, transitionDuration: 400 },
|
|
2487
2492
|
React__default["default"].createElement(MRT_TablePaper, { table: table })),
|