-
- {items}
-
+ return (
+ <>
+
+
+
+ {isOpen && (
+
+
+ {items}
- )}
- >
- );
- }
-);
+
+ )}
+ >
+ );
+});
SubMenu.displayName = 'SubMenu';
diff --git a/packages/grafana-ui/src/components/Menu/hooks.test.tsx b/packages/grafana-ui/src/components/Menu/hooks.test.tsx
index 254f41c7a8a..4ca9e69045c 100644
--- a/packages/grafana-ui/src/components/Menu/hooks.test.tsx
+++ b/packages/grafana-ui/src/components/Menu/hooks.test.tsx
@@ -141,18 +141,15 @@ describe('useMenuFocus', () => {
expect(onKeyDown).toHaveBeenCalledTimes(2);
});
- it('focuses on first item when menu was opened with arrow', () => {
+ it('focuses on first item', () => {
const ref = createRef
();
render(getMenuElement(ref));
const isMenuOpen = true;
- const openedWithArrow = true;
- const setOpenedWithArrow = jest.fn();
- renderHook(() => useMenuFocus({ localRef: ref, isMenuOpen, openedWithArrow, setOpenedWithArrow }));
+ renderHook(() => useMenuFocus({ localRef: ref, isMenuOpen }));
expect(screen.getByText('Item 1').tabIndex).toBe(0);
- expect(setOpenedWithArrow).toHaveBeenCalledWith(false);
});
it('clicks focused item when Enter key is pressed', () => {
diff --git a/packages/grafana-ui/src/components/Menu/hooks.ts b/packages/grafana-ui/src/components/Menu/hooks.ts
index 6713535827a..b6111f9804f 100644
--- a/packages/grafana-ui/src/components/Menu/hooks.ts
+++ b/packages/grafana-ui/src/components/Menu/hooks.ts
@@ -8,8 +8,6 @@ const UNFOCUSED = -1;
export interface UseMenuFocusProps {
localRef: RefObject;
isMenuOpen?: boolean;
- openedWithArrow?: boolean;
- setOpenedWithArrow?: (openedWithArrow: boolean) => void;
close?: () => void;
onOpen?: (focusOnItem: (itemId: number) => void) => void;
onClose?: () => void;
@@ -23,8 +21,6 @@ export type UseMenuFocusReturn = [(event: React.KeyboardEvent) => void];
export const useMenuFocus = ({
localRef,
isMenuOpen,
- openedWithArrow,
- setOpenedWithArrow,
close,
onOpen,
onClose,
@@ -33,11 +29,10 @@ export const useMenuFocus = ({
const [focusedItem, setFocusedItem] = useState(UNFOCUSED);
useEffect(() => {
- if (isMenuOpen && openedWithArrow) {
+ if (isMenuOpen) {
setFocusedItem(0);
- setOpenedWithArrow?.(false);
}
- }, [isMenuOpen, openedWithArrow, setOpenedWithArrow]);
+ }, [isMenuOpen]);
useEffect(() => {
const menuItems = localRef?.current?.querySelectorAll(
diff --git a/public/app/features/alerting/unified/components/contact-points/ContactPoints.test.tsx b/public/app/features/alerting/unified/components/contact-points/ContactPoints.test.tsx
index c6fd8c71ca7..325867253b8 100644
--- a/public/app/features/alerting/unified/components/contact-points/ContactPoints.test.tsx
+++ b/public/app/features/alerting/unified/components/contact-points/ContactPoints.test.tsx
@@ -126,6 +126,8 @@ describe('contact points', () => {
await userEvent.click(button);
const deleteButton = await screen.queryByRole('menuitem', { name: 'delete' });
expect(deleteButton).toBeDisabled();
+ // click outside the menu to close it otherwise we can't interact with the rest of the page
+ await userEvent.click(document.body);
}
// check buttons in Notification Templates