diff --git a/packages/grid/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/grid/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx
index e08ce80f4c08..df77804372b5 100644
--- a/packages/grid/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx
+++ b/packages/grid/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx
@@ -330,7 +330,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => {
}
const columnsToRender = getColumnsToRender(params);
- if (columnsToRender == null) {
+ if (columnsToRender == null || columnsToRender.renderedColumns.length === 0) {
return null;
}
diff --git a/packages/grid/x-data-grid/src/tests/columnsGrouping.DataGrid.test.tsx b/packages/grid/x-data-grid/src/tests/columnsGrouping.DataGrid.test.tsx
index 9c6e896e9fb2..cfbb9217ea7e 100644
--- a/packages/grid/x-data-grid/src/tests/columnsGrouping.DataGrid.test.tsx
+++ b/packages/grid/x-data-grid/src/tests/columnsGrouping.DataGrid.test.tsx
@@ -50,7 +50,7 @@ describe(' - Column grouping', () => {
expect(screen.queryAllByRole('row')).to.have.length(3);
});
- it('should add header rows to match max depth oc column groups', () => {
+ it('should add header rows to match max depth of column groups', () => {
render(
- Column grouping', () => {
Array.from(row2Headers).map((header) => header.getAttribute('aria-colindex')),
).to.deep.equal(['1', '3']);
});
+
+ it('should not throw warning when all columns are hidden', () => {
+ const { setProps } = render(
+ ,
+ );
+
+ setProps({
+ columnVisibilityModel: {
+ col1: false,
+ col2: false,
+ col3: false,
+ },
+ });
+ });
});
// TODO: remove the skip. I failed to test if an error is thrown