From 173369ef30fb2178527da479147c00c8cf895e2e Mon Sep 17 00:00:00 2001 From: Tarun Chauhan Date: Wed, 26 Jun 2024 14:53:47 +0530 Subject: [PATCH] [DataGrid] Fix print export failure when `hideFooter` option is set (#13034) Co-authored-by: Bilal Shafi --- .../features/export/useGridPrintExport.tsx | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx b/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx index 5ba08b587cdc5..3421133554ebb 100644 --- a/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx +++ b/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx @@ -177,15 +177,18 @@ export const useGridPrintExport = ( // The height above does not include grid border width, so we need to exclude it gridClone.style.boxSizing = 'content-box'; - // the footer is always being placed at the bottom of the page as if all rows are exported - // so if getRowsToExport is being used to only export a subset of rows then we need to - // adjust the footer position to be correctly placed at the bottom of the grid - const gridFooterElement: HTMLElement | null = gridClone.querySelector( - `.${gridClasses.footerContainer}`, - ); - gridFooterElement!.style.position = 'absolute'; - gridFooterElement!.style.width = '100%'; - gridFooterElement!.style.top = `${computedTotalHeight - gridFooterElementHeight}px`; + if (!normalizeOptions.hideFooter) { + // the footer is always being placed at the bottom of the page as if all rows are exported + // so if getRowsToExport is being used to only export a subset of rows then we need to + // adjust the footer position to be correctly placed at the bottom of the grid + const gridFooterElement: HTMLElement | null = gridClone.querySelector( + `.${gridClasses.footerContainer}`, + )!; + + gridFooterElement.style.position = 'absolute'; + gridFooterElement.style.width = '100%'; + gridFooterElement.style.top = `${computedTotalHeight - gridFooterElementHeight}px`; + } // printDoc.body.appendChild(gridClone); should be enough but a clone isolation bug in Safari // prevents us to do it