diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Cell_Actions.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Cell_Actions.png index 3d2d9ddbd79..3d009c8956e 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Cell_Actions.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Cell_Actions.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Cell_Expansion_Popover.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Cell_Expansion_Popover.png index 26a5532c33f..708615cc615 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Cell_Expansion_Popover.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Cell_Expansion_Popover.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Column_Actions.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Column_Actions.png index f46ffa432a8..4952fd9b5a4 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Column_Actions.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Column_Actions.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Custom_Header_Content.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Custom_Header_Content.png index 5d32f262af1..c65defa64bb 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Custom_Header_Content.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Custom_Header_Content.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Playground.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Playground.png index bf559e38f18..8037495d02e 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Playground.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Playground.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Virtualization.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Virtualization.png index b66ac1bbf0a..d4cf7fc11c5 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Virtualization.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_Virtualization.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Compact.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Compact.png index 22b153c35da..6f18325f1e4 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Compact.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Compact.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Expanded.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Expanded.png index 0288dc080df..6a252e0e65a 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Expanded.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Expanded.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Horizontal_Lines.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Horizontal_Lines.png index 8027b468a2f..313d1b05b95 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Horizontal_Lines.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Horizontal_Lines.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Minimal.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Minimal.png index 4351c1241b7..c4d0cb02417 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Minimal.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Minimal.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Playground.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Playground.png index d4ee1037805..f962c6ac2bd 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Playground.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_gridStyle_prop_Playground.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Auto.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Auto.png index 253b80b9dc6..628f4b03350 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Auto.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Auto.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height.png index f864e1833c9..a1298f5183b 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height_Control_Column.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height_Control_Column.png new file mode 100644 index 00000000000..5c3a8414c7b Binary files /dev/null and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height_Control_Column.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Row_Heights.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Row_Heights.png index b66d31ed352..f2c3edcaa56 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Row_Heights.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Row_Heights.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count.png index 4d4934226d4..729e1e7b9f5 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count_1.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count_1.png new file mode 100644 index 00000000000..ad18e10918c Binary files /dev/null and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count_1.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Static_Height.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Static_Height.png index e68818083ae..9c1250bf122 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Static_Height.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Static_Height.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_No_Toolbar.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_No_Toolbar.png index c3579f050b9..a665d83a29f 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_No_Toolbar.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_No_Toolbar.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Render_Custom_Toolbar.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Render_Custom_Toolbar.png index 161691678a4..a5e204c13de 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Render_Custom_Toolbar.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Render_Custom_Toolbar.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Toolbar_Visibility_Options.png b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Toolbar_Visibility_Options.png index 1c21d47b978..d2ee5b5cf93 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Toolbar_Visibility_Options.png and b/packages/eui/.loki/reference/chrome_desktop_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Toolbar_Visibility_Options.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Cell_Actions.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Cell_Actions.png index 6093d2348ea..49a222cd160 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Cell_Actions.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Cell_Actions.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Cell_Expansion_Popover.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Cell_Expansion_Popover.png index d4254b541dc..b381de221c2 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Cell_Expansion_Popover.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Cell_Expansion_Popover.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Column_Actions.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Column_Actions.png index 05f3381944d..c986dc99409 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Column_Actions.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Column_Actions.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Custom_Header_Content.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Custom_Header_Content.png index 518df5ae9b0..08fa249f8b8 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Custom_Header_Content.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Custom_Header_Content.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Playground.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Playground.png index 3e4d7ad724a..4fc1dd76c87 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Playground.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Playground.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Virtualization.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Virtualization.png index c9131c140d6..3f3ff2ad7df 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Virtualization.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_Virtualization.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Compact.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Compact.png index 24fb3fc5edf..88e12e3f057 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Compact.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Compact.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Expanded.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Expanded.png index 60f8d691952..ca5c3ede185 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Expanded.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Expanded.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Horizontal_Lines.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Horizontal_Lines.png index 9548cf694e3..b5c6edc5d97 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Horizontal_Lines.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Horizontal_Lines.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Minimal.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Minimal.png index fb999cb9cc2..626db81947e 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Minimal.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Minimal.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Playground.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Playground.png index 5058b0eefb6..3c87f7385a4 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Playground.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_gridStyle_prop_Playground.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Auto.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Auto.png index fc30b4d1935..a9104c81318 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Auto.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Auto.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height.png index 897d9acac4e..7de3923ab07 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height_Control_Column.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height_Control_Column.png new file mode 100644 index 00000000000..c5fdbabe856 Binary files /dev/null and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Line_Height_Control_Column.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Row_Heights.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Row_Heights.png index be44c79b2f9..a78f4f33702 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Row_Heights.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Custom_Row_Heights.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count.png index c114eb435da..5cdf1548b04 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count_1.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count_1.png new file mode 100644 index 00000000000..7863cd55429 Binary files /dev/null and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Line_Count_1.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Static_Height.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Static_Height.png index 211b81490ed..ef691fbcec9 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Static_Height.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_rowHeightsOptions_prop_Static_Height.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_No_Toolbar.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_No_Toolbar.png index f9ee3ca682a..6889ce53404 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_No_Toolbar.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_No_Toolbar.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Render_Custom_Toolbar.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Render_Custom_Toolbar.png index 654bcea2691..ed45c4a6137 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Render_Custom_Toolbar.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Render_Custom_Toolbar.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Toolbar_Visibility_Options.png b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Toolbar_Visibility_Options.png index f7a5a17659b..89e7edba399 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Toolbar_Visibility_Options.png and b/packages/eui/.loki/reference/chrome_mobile_Tabular_Content_EuiDataGrid_toolbarVisibility_prop_Toolbar_Visibility_Options.png differ diff --git a/packages/eui/changelogs/upcoming/8025.md b/packages/eui/changelogs/upcoming/8025.md new file mode 100644 index 00000000000..9de03d70aea --- /dev/null +++ b/packages/eui/changelogs/upcoming/8025.md @@ -0,0 +1,6 @@ +**Bug fixes** + +- Fixed several `EuiDataGrid` row height bugs: + - Fixed row heights not recalculating when `rowHeightOptions.lineHeight`, `gridStyles.fontSize`, or `gridStyles.cellPadding` changed + - Fixed incorrect height calculations for `rowHeightOptions.rowHeights` with `lineCount`s + - Fixed control column content to align better with multi-line row heights, as well as custom line-heights diff --git a/packages/eui/src/components/datagrid/__snapshots__/data_grid.test.tsx.snap b/packages/eui/src/components/datagrid/__snapshots__/data_grid.test.tsx.snap index 84fd9d9b42c..2a9baa3cc10 100644 --- a/packages/eui/src/components/datagrid/__snapshots__/data_grid.test.tsx.snap +++ b/packages/eui/src/components/datagrid/__snapshots__/data_grid.test.tsx.snap @@ -611,7 +611,7 @@ exports[`EuiDataGrid rendering renders additional toolbar controls 1`] = ` data-test-subj="dataGridColumnResizer" />
A @@ -653,7 +653,7 @@ exports[`EuiDataGrid rendering renders additional toolbar controls 1`] = ` data-test-subj="dataGridColumnResizer" />
B @@ -989,7 +989,7 @@ exports[`EuiDataGrid rendering renders control columns 1`] = ` data-test-subj="dataGridColumnResizer" />
A @@ -1031,7 +1031,7 @@ exports[`EuiDataGrid rendering renders control columns 1`] = ` data-test-subj="dataGridColumnResizer" />
B @@ -1085,7 +1085,7 @@ exports[`EuiDataGrid rendering renders control columns 1`] = ` tabindex="-1" >
0 @@ -1142,7 +1142,7 @@ exports[`EuiDataGrid rendering renders control columns 1`] = ` tabindex="-1" >
0 @@ -1161,7 +1161,7 @@ exports[`EuiDataGrid rendering renders control columns 1`] = ` tabindex="-1" >
1 @@ -1218,7 +1218,7 @@ exports[`EuiDataGrid rendering renders control columns 1`] = ` tabindex="-1" >
1 @@ -1237,7 +1237,7 @@ exports[`EuiDataGrid rendering renders control columns 1`] = ` tabindex="-1" >
2 @@ -1294,7 +1294,7 @@ exports[`EuiDataGrid rendering renders control columns 1`] = ` tabindex="-1" >
2 @@ -1478,7 +1478,7 @@ exports[`EuiDataGrid rendering renders custom column headers 1`] = ` data-test-subj="dataGridColumnResizer" />
Column A @@ -1520,7 +1520,7 @@ exports[`EuiDataGrid rendering renders custom column headers 1`] = ` data-test-subj="dataGridColumnResizer" />
@@ -1840,7 +1840,7 @@ exports[`EuiDataGrid rendering renders with common and div attributes 1`] = ` data-test-subj="dataGridColumnResizer" />
A @@ -1882,7 +1882,7 @@ exports[`EuiDataGrid rendering renders with common and div attributes 1`] = ` data-test-subj="dataGridColumnResizer" />
B diff --git a/packages/eui/src/components/datagrid/body/__snapshots__/data_grid_body_custom.test.tsx.snap b/packages/eui/src/components/datagrid/body/__snapshots__/data_grid_body_custom.test.tsx.snap index 79b0a64b860..2328e3d5f8d 100644 --- a/packages/eui/src/components/datagrid/body/__snapshots__/data_grid_body_custom.test.tsx.snap +++ b/packages/eui/src/components/datagrid/body/__snapshots__/data_grid_body_custom.test.tsx.snap @@ -26,7 +26,7 @@ exports[`EuiDataGridBodyCustomRender treats \`renderCustomGridBody\` as a render data-test-subj="dataGridColumnResizer" />
columnA @@ -68,7 +68,7 @@ exports[`EuiDataGridBodyCustomRender treats \`renderCustomGridBody\` as a render data-test-subj="dataGridColumnResizer" />
columnB diff --git a/packages/eui/src/components/datagrid/body/__snapshots__/data_grid_body_virtualized.test.tsx.snap b/packages/eui/src/components/datagrid/body/__snapshots__/data_grid_body_virtualized.test.tsx.snap index e1a09ff8136..c30c1f40231 100644 --- a/packages/eui/src/components/datagrid/body/__snapshots__/data_grid_body_virtualized.test.tsx.snap +++ b/packages/eui/src/components/datagrid/body/__snapshots__/data_grid_body_virtualized.test.tsx.snap @@ -30,7 +30,7 @@ exports[`EuiDataGridBodyVirtualized renders 1`] = ` data-test-subj="dataGridColumnResizer" />
columnA @@ -72,7 +72,7 @@ exports[`EuiDataGridBodyVirtualized renders 1`] = ` data-test-subj="dataGridColumnResizer" />
columnB diff --git a/packages/eui/src/components/datagrid/body/cell/data_grid_cell.styles.ts b/packages/eui/src/components/datagrid/body/cell/data_grid_cell.styles.ts index 36c45a74da3..c0b63e1b082 100644 --- a/packages/eui/src/components/datagrid/body/cell/data_grid_cell.styles.ts +++ b/packages/eui/src/components/datagrid/body/cell/data_grid_cell.styles.ts @@ -101,6 +101,7 @@ export const euiDataGridCellOutlineSelectors = (parentSelector = '&') => { }; export const euiDataGridRowCellStyles = (euiThemeContext: UseEuiTheme) => { + const { euiTheme } = euiThemeContext; const cellOutline = euiDataGridCellOutlineStyles(euiThemeContext); const { outline: outlineSelectors } = euiDataGridCellOutlineSelectors(); @@ -146,17 +147,45 @@ export const euiDataGridRowCellStyles = (euiThemeContext: UseEuiTheme) => { euiDataGridRowCell__content: css` overflow: hidden; `, - controlColumn: css` - ${logicalCSS('max-height', '100%')} - display: flex; - align-items: center; - `, autoHeight: css` ${logicalCSS('height', 'auto')} `, defaultHeight: css` ${logicalCSS('height', '100%')} `, + // Control columns should be vertically centered with the *first line* of text + // for both single and multi-line heights (see https://github.com/elastic/eui/issues/7897) + controlColumn: css` + display: inline-flex; + align-items: start; + gap: ${euiTheme.size.xxs}; /* EuiButtonIcons */ + + /* FF and webkit browsers have more centered vertical alignment behind undocumented browser prefixes */ + vertical-align: -webkit-baseline-middle; + vertical-align: -moz-middle-with-baseline; + + /* Compact sizing affordance for EuiButtonIcons */ + .euiDataGrid--fontSizeSmall + &:where(.euiDataGridRowCell__content--defaultHeight) { + ${logicalCSS('height', '100%')} + align-items: center; + } + + /* Line up single EuiCheckboxes a bit better (insert Peter Griffin blinds gif) */ + .euiCheckbox:not(:has(label)) { + display: inline; + + .euiCheckbox__square { + display: inline-flex; + vertical-align: text-bottom; + + /* sub alignment looks better on Firefox, text-bottom looks better on webkit 💀 */ + @supports (vertical-align: -moz-middle-with-baseline) { + vertical-align: sub; + } + } + } + `, }, }; }; diff --git a/packages/eui/src/components/datagrid/body/cell/data_grid_cell.test.tsx b/packages/eui/src/components/datagrid/body/cell/data_grid_cell.test.tsx index b8fcfe6d774..b12992b8494 100644 --- a/packages/eui/src/components/datagrid/body/cell/data_grid_cell.test.tsx +++ b/packages/eui/src/components/datagrid/body/cell/data_grid_cell.test.tsx @@ -45,6 +45,7 @@ describe('EuiDataGridCell', () => { ), popoverContext: mockPopoverContext, rowHeightUtils: mockRowHeightUtils, + gridStyles: {}, }; beforeEach(() => jest.clearAllMocks()); @@ -202,6 +203,12 @@ describe('EuiDataGridCell', () => { it('rowHeightsOptions', () => { component.setProps({ rowHeightsOptions: { defaultHeight: 'auto' } }); }); + it('gridStyles.fontSize', () => { + component.setProps({ gridStyles: { fontSize: 's' } }); + }); + it('gridStyles.cellPadding', () => { + component.setProps({ gridStyles: { cellPadding: 'l' } }); + }); it('renderCellValue', () => { component.setProps({ renderCellValue: () =>
test
}); }); @@ -254,7 +261,10 @@ describe('EuiDataGridCell', () => { }); it('should not update for prop/state changes not specified above', () => { - component.setProps({ className: 'test' }); + component.setProps({ + className: 'test', + gridStyles: { header: 'underline' }, + }); expect(shouldComponentUpdate).toHaveReturnedWith(false); }); }); @@ -625,7 +635,7 @@ describe('EuiDataGridCell', () => { callMethod(component); expect( mockRowHeightUtils.calculateHeightForLineCount - ).toHaveBeenCalledWith(expect.any(HTMLElement), 3, false); + ).toHaveBeenCalledWith(expect.any(HTMLElement), 3); expect(setRowHeight).toHaveBeenCalled(); }); }); @@ -647,25 +657,76 @@ describe('EuiDataGridCell', () => { callMethod(component); expect( mockRowHeightUtils.calculateHeightForLineCount - ).toHaveBeenCalledWith(expect.any(HTMLElement), 10, true); + ).toHaveBeenCalledWith(expect.any(HTMLElement), 10); expect(mockRowHeightUtils.setRowHeight).toHaveBeenCalled(); expect(setRowHeight).not.toHaveBeenCalled(); }); + + it('recalculates when the override for the row changes', () => { + const component = mount( + + ); + + component.setProps({ + rowHeightsOptions: { + rowHeights: { + 0: { lineCount: 2 }, + }, + }, + }); + expect(mockRowHeightUtils.setRowHeight).toHaveBeenCalledTimes(1); + + // Handle row index changes as well + component.setProps({ + rowHeightsOptions: { + rowHeights: { + 0: { lineCount: 2 }, + 2: { lineCount: 4 }, + }, + }, + rowIndex: 2, + }); + expect(mockRowHeightUtils.setRowHeight).toHaveBeenCalledTimes(2); + + expect(setRowHeight).not.toHaveBeenCalled(); + }); }); - it('recalculates when rowHeightsOptions.defaultHeight.lineCount changes', () => { + it('recalculates when props that affect row/line height change', () => { const component = mount( ); + component.setProps({ + rowHeightsOptions: { defaultHeight: { lineCount: 2 } }, + }); + expect(setRowHeight).toHaveBeenCalledTimes(1); + + // Other props that can affect row heights + const rowHeightsOptionsWithLineHeight = { + defaultHeight: { lineCount: 2 }, + lineHeight: '3', + }; component.setProps({ - rowHeightsOptions: { defaultHeight: { lineCount: 6 } }, + rowHeightsOptions: rowHeightsOptionsWithLineHeight, }); - expect(setRowHeight).toHaveBeenCalled(); + expect(setRowHeight).toHaveBeenCalledTimes(2); + + component.setProps({ + rowHeightsOptions: rowHeightsOptionsWithLineHeight, + gridStyles: { cellPadding: 'l' }, + }); + expect(setRowHeight).toHaveBeenCalledTimes(3); + + component.setProps({ + rowHeightsOptions: rowHeightsOptionsWithLineHeight, + gridStyles: { cellPadding: 'l', fontSize: 'l' }, + }); + expect(setRowHeight).toHaveBeenCalledTimes(4); }); it('calculates undefined heights as single rows with a lineCount of 1', () => { @@ -680,7 +741,7 @@ describe('EuiDataGridCell', () => { callMethod(component); expect( mockRowHeightUtils.calculateHeightForLineCount - ).toHaveBeenCalledWith(expect.any(HTMLElement), 1, false); + ).toHaveBeenCalledWith(expect.any(HTMLElement), 1); expect(setRowHeight).toHaveBeenCalled(); }); diff --git a/packages/eui/src/components/datagrid/body/cell/data_grid_cell.tsx b/packages/eui/src/components/datagrid/body/cell/data_grid_cell.tsx index 7aee6c986a7..d69d652225e 100644 --- a/packages/eui/src/components/datagrid/body/cell/data_grid_cell.tsx +++ b/packages/eui/src/components/datagrid/body/cell/data_grid_cell.tsx @@ -96,14 +96,7 @@ const EuiDataGridCellContent: FunctionComponent< const cssStyles = [ styles.content.euiDataGridRowCell__content, ...(isControlColumn - ? [ - // Control column cells should not be vertically centered (defaultHeight) except - // on single rows. They should be top-aligned for auto and lineCount heights - styles.content.controlColumn, - cellHeightType === 'default' - ? styles.content.defaultHeight - : styles.content.autoHeight, - ] + ? [styles.content.controlColumn, styles.content.autoHeight] : [ // Regular data cells should always inherit height from the row wrapper, // except for auto height @@ -217,8 +210,7 @@ export class EuiDataGridCell extends Component< const height = rowHeightUtils!.calculateHeightForLineCount( this.cellContentsRef, - lineCount, - shouldUseHeightsCache + lineCount ); if (shouldUseHeightsCache) { @@ -291,7 +283,13 @@ export class EuiDataGridCell extends Component< if ( this.props.rowHeightsOptions?.defaultHeight !== - prevProps.rowHeightsOptions?.defaultHeight + prevProps.rowHeightsOptions?.defaultHeight || + this.props.rowHeightsOptions?.rowHeights?.[this.props.rowIndex] !== + prevProps.rowHeightsOptions?.rowHeights?.[prevProps.rowIndex] || + this.props.rowHeightsOptions?.lineHeight !== + prevProps.rowHeightsOptions?.lineHeight || + this.props.gridStyles?.fontSize !== prevProps.gridStyles?.fontSize || + this.props.gridStyles?.cellPadding !== prevProps.gridStyles?.cellPadding ) { this.recalculateLineHeight(); } @@ -346,6 +344,12 @@ export class EuiDataGridCell extends Component< if (nextProps.width !== this.props.width) return true; if (nextProps.rowHeightsOptions !== this.props.rowHeightsOptions) return true; + if (nextProps.gridStyles?.fontSize !== this.props.gridStyles?.fontSize) + return true; + if ( + nextProps.gridStyles?.cellPadding !== this.props.gridStyles?.cellPadding + ) + return true; if (nextProps.renderCellValue !== this.props.renderCellValue) return true; if (nextProps.renderCellPopover !== this.props.renderCellPopover) return true; diff --git a/packages/eui/src/components/datagrid/body/cell/data_grid_cell_wrapper.test.tsx b/packages/eui/src/components/datagrid/body/cell/data_grid_cell_wrapper.test.tsx index 2311456987c..96ac4eaf443 100644 --- a/packages/eui/src/components/datagrid/body/cell/data_grid_cell_wrapper.test.tsx +++ b/packages/eui/src/components/datagrid/body/cell/data_grid_cell_wrapper.test.tsx @@ -22,6 +22,7 @@ describe('Cell', () => { renderCellValue: () => null, interactiveCellId: '', rowHeightUtils: new RowHeightUtils(), + gridStyles: {}, schema: {}, schemaDetectors, columns: [{ id: 'C' }], diff --git a/packages/eui/src/components/datagrid/body/cell/data_grid_cell_wrapper.tsx b/packages/eui/src/components/datagrid/body/cell/data_grid_cell_wrapper.tsx index a95f327a73e..6ad00714702 100644 --- a/packages/eui/src/components/datagrid/body/cell/data_grid_cell_wrapper.tsx +++ b/packages/eui/src/components/datagrid/body/cell/data_grid_cell_wrapper.tsx @@ -29,6 +29,7 @@ export type CellProps = Pick< | 'cellContext' | 'renderCellPopover' | 'interactiveCellId' + | 'gridStyles' | 'rowHeightsOptions' | 'rowHeightUtils' | 'rowManager' diff --git a/packages/eui/src/components/datagrid/body/data_grid_body_custom.tsx b/packages/eui/src/components/datagrid/body/data_grid_body_custom.tsx index 6937f064173..6612bc07c56 100644 --- a/packages/eui/src/components/datagrid/body/data_grid_body_custom.tsx +++ b/packages/eui/src/components/datagrid/body/data_grid_body_custom.tsx @@ -143,6 +143,7 @@ export const EuiDataGridBodyCustomRender: FunctionComponent< setRowHeight, rowHeightsOptions, rowHeightUtils, + gridStyles, }; }, [ schema, @@ -161,6 +162,7 @@ export const EuiDataGridBodyCustomRender: FunctionComponent< setRowHeight, rowHeightsOptions, rowHeightUtils, + gridStyles, ]); const Cell = useCallback( diff --git a/packages/eui/src/components/datagrid/body/data_grid_body_virtualized.tsx b/packages/eui/src/components/datagrid/body/data_grid_body_virtualized.tsx index 4030afb2250..48b0bad2c23 100644 --- a/packages/eui/src/components/datagrid/body/data_grid_body_virtualized.tsx +++ b/packages/eui/src/components/datagrid/body/data_grid_body_virtualized.tsx @@ -337,6 +337,7 @@ export const EuiDataGridBodyVirtualized: FunctionComponent rowManager, pagination, headerRowHeight, + gridStyles, }; }, [ schemaDetectors, @@ -357,6 +358,7 @@ export const EuiDataGridBodyVirtualized: FunctionComponent rowManager, pagination, headerRowHeight, + gridStyles, ]); const rowWrapperContextValue = useMemo(() => { diff --git a/packages/eui/src/components/datagrid/body/footer/data_grid_footer_row.tsx b/packages/eui/src/components/datagrid/body/footer/data_grid_footer_row.tsx index 30b01cfcf02..f68006d961e 100644 --- a/packages/eui/src/components/datagrid/body/footer/data_grid_footer_row.tsx +++ b/packages/eui/src/components/datagrid/body/footer/data_grid_footer_row.tsx @@ -61,6 +61,7 @@ const EuiDataGridFooterRow = memo( visibleRowIndex, interactiveCellId, popoverContext, + gridStyles, }; return ( diff --git a/packages/eui/src/components/datagrid/body/header/data_grid_header_cell.styles.ts b/packages/eui/src/components/datagrid/body/header/data_grid_header_cell.styles.ts index b3efb1a7614..3b68cd3cbce 100644 --- a/packages/eui/src/components/datagrid/body/header/data_grid_header_cell.styles.ts +++ b/packages/eui/src/components/datagrid/body/header/data_grid_header_cell.styles.ts @@ -29,10 +29,6 @@ export const euiDataGridHeaderCellStyles = (euiThemeContext: UseEuiTheme) => { flex-grow: 1; /* ensures content stretches and allows for manual layout styles to apply */ ${euiTextTruncate()} `, - // Overwrite inherited 'center' styles from