diff --git a/ui/src/Components/Grid/AlertGrid/Grid.tsx b/ui/src/Components/Grid/AlertGrid/Grid.tsx index 682fe870d..3825f4143 100644 --- a/ui/src/Components/Grid/AlertGrid/Grid.tsx +++ b/ui/src/Components/Grid/AlertGrid/Grid.tsx @@ -39,6 +39,7 @@ const Grid: FC<{ groupWidth: number; grid: APIGridT; outerPadding: number; + paddingTop: number; }> = ({ alertStore, settingsStore, @@ -47,6 +48,7 @@ const Grid: FC<{ groupWidth, grid, outerPadding, + paddingTop, }) => { const context = React.useContext(ThemeContext); const { ref, repack } = useGrid(gridSizesConfig); @@ -123,6 +125,7 @@ const Grid: FC<{ grid={grid} isExpanded={isExpanded} onToggle={onCollapseClick} + paddingTop={paddingTop} />
void; -}> = ({ alertStore, settingsStore, grid, isExpanded, onToggle }) => { + paddingTop: number; +}> = ({ + alertStore, + settingsStore, + grid, + isExpanded, + onToggle, + paddingTop, +}) => { return ( -
+
diff --git a/ui/src/Components/Grid/AlertGrid/index.test.tsx b/ui/src/Components/Grid/AlertGrid/index.test.tsx index 02a35e699..75bdf0edf 100644 --- a/ui/src/Components/Grid/AlertGrid/index.test.tsx +++ b/ui/src/Components/Grid/AlertGrid/index.test.tsx @@ -114,6 +114,7 @@ const ShallowGrid = () => { groupWidth={420} grid={MockGrid()} outerPadding={0} + paddingTop={0} /> ); }; @@ -128,6 +129,7 @@ const MountedGrid = (theme?: ThemeCtx) => { groupWidth={420} grid={MockGrid()} outerPadding={0} + paddingTop={0} />, { wrappingComponent: ThemeContext.Provider, @@ -234,6 +236,7 @@ describe("", () => { groupWidth={420} grid={alertStore.data.grids[0]} outerPadding={0} + paddingTop={0} />, { wrappingComponent: ThemeContext.Provider, @@ -269,6 +272,7 @@ describe("", () => { groupWidth={420} grid={alertStore.data.grids[0]} outerPadding={0} + paddingTop={0} />, { wrappingComponent: ThemeContext.Provider, diff --git a/ui/src/Components/Grid/AlertGrid/index.tsx b/ui/src/Components/Grid/AlertGrid/index.tsx index 264b1c6e1..1cbe90332 100644 --- a/ui/src/Components/Grid/AlertGrid/index.tsx +++ b/ui/src/Components/Grid/AlertGrid/index.tsx @@ -1,4 +1,4 @@ -import { FC, useEffect, useState, useRef } from "react"; +import { FC, useEffect, useState, useRef, useCallback } from "react"; import { autorun } from "mobx"; import { observer } from "mobx-react-lite"; @@ -57,6 +57,17 @@ const AlertGrid: FC<{ useHotkeys("alt+space", alertStore.status.togglePause); + const [paddingTop, setPaddingTop] = useState(0); + const onNavbarResize = useCallback((event) => { + setPaddingTop(event.detail); + }, []); + useEffect(() => { + window.addEventListener("navbarResize", onNavbarResize); + return () => { + window.removeEventListener("navbarResize", onNavbarResize); + }; + }, [onNavbarResize]); + return ( <>
{alertStore.data.grids.map((grid) => ( - +
+ +
))} ); diff --git a/ui/src/Components/NavBar/index.tsx b/ui/src/Components/NavBar/index.tsx index 166e0827c..7c2c7269b 100644 --- a/ui/src/Components/NavBar/index.tsx +++ b/ui/src/Components/NavBar/index.tsx @@ -40,6 +40,11 @@ const NavBar: FC<{ const paddingTop = idle ? 0 : height + 8; document.body.style.paddingTop = `${paddingTop}px`; setContainerClass(idle ? "invisible" : "visible"); + + const toggleEvent = new CustomEvent("navbarResize", { + detail: paddingTop, + }); + window.dispatchEvent(toggleEvent); }, [height] ); diff --git a/ui/src/Styles/Components/_AlertGrid.scss b/ui/src/Styles/Components/_AlertGrid.scss index 203ab0c0c..5cc3a2857 100644 --- a/ui/src/Styles/Components/_AlertGrid.scss +++ b/ui/src/Styles/Components/_AlertGrid.scss @@ -3,4 +3,7 @@ background-color: $grid-swimlane-bg; margin-left: 0.3rem; margin-right: 0.3rem; + + position: sticky; + z-index: 101; }