diff --git a/packages/grafana-ui/src/components/ToolbarButton/ToolbarButtonRow.tsx b/packages/grafana-ui/src/components/ToolbarButton/ToolbarButtonRow.tsx index 0fcfce6d7cc..907e6eca67f 100644 --- a/packages/grafana-ui/src/components/ToolbarButton/ToolbarButtonRow.tsx +++ b/packages/grafana-ui/src/components/ToolbarButton/ToolbarButtonRow.tsx @@ -18,9 +18,9 @@ export interface Props extends HTMLAttributes { export const ToolbarButtonRow = forwardRef( ({ alignment = 'left', className, children, ...rest }, ref) => { - // null is a valid react child so we need to filter it out to prevent unnecessary padding - const childrenWithoutNull = React.Children.toArray(children).filter((child) => child !== null); - const [childVisibility, setChildVisibility] = useState(Array(childrenWithoutNull.length).fill(true)); + // null/undefined are valid react children so we need to filter them out to prevent unnecessary padding + const childrenWithoutNull = React.Children.toArray(children).filter((child) => child != null); + const [childVisibility, setChildVisibility] = useState(Array(childrenWithoutNull.length).fill(false)); const containerRef = useRef(null); const [showOverflowItems, setShowOverflowItems] = useState(false); const overflowRef = useRef(null); diff --git a/public/test/jest-setup.ts b/public/test/jest-setup.ts index 393269edcfa..6c3102dd328 100644 --- a/public/test/jest-setup.ts +++ b/public/test/jest-setup.ts @@ -50,12 +50,16 @@ angular.module('grafana.directives', []); angular.module('grafana.filters', []); angular.module('grafana.routes', ['ngRoute']); -// Mock IntersectionObserver -const mockIntersectionObserver = jest.fn().mockReturnValue({ - observe: jest.fn(), - unobserve: jest.fn(), - disconnect: jest.fn(), -}); +// mock the intersection observer and just say everything is in view +const mockIntersectionObserver = jest + .fn() + .mockImplementation((callback: (arg: IntersectionObserverEntry[]) => void) => ({ + observe: jest.fn().mockImplementation((elem: HTMLElement) => { + callback([{ target: elem, isIntersecting: true }] as unknown as IntersectionObserverEntry[]); + }), + unobserve: jest.fn(), + disconnect: jest.fn(), + })); global.IntersectionObserver = mockIntersectionObserver; jest.mock('../app/core/core', () => ({