diff --git a/packages/material-react-table/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx b/packages/material-react-table/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx index 89716a4b8..95cd8850c 100644 --- a/packages/material-react-table/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +++ b/packages/material-react-table/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx @@ -109,6 +109,17 @@ export const MRT_ShowHideColumnsMenuItems = ({ return null; } + const isColumnVisibilityToggleDisabled = () => { + const cols = column.columns; + + const isNonHidable = (c: MRT_Column) => + c.columnDef.enableHiding === false; + + if (!cols?.length || !cols.some(isNonHidable)) return !column.getCanHide(); + + return cols.every((c) => isNonHidable(c) || !c.getIsVisible()); + }; + return ( <> ({ } - disabled={!column.getCanHide()} + disabled={isColumnVisibilityToggleDisabled()} label={columnDef.header} onChange={() => handleToggleColumnHidden(column)} />