@grafana/ui
Version:
Grafana Components Library
25 lines (24 loc) • 1.09 kB
TypeScript
import { type JSX } from 'react';
import * as React from 'react';
/**
* Anything we can resolve into a viewport `{ x, y }` position for the context menu:
* - A React or native pointer event → use `pageX`/`pageY` (legacy, click-driven path)
* - A DOM/SVG element → use the element's bounding-rect center
* (keyboard-driven path: trigger.focus()+Enter)
* - An explicit `{ x, y }` literal → use it directly
*/
export type OpenMenuTrigger = React.MouseEvent | Element | {
x: number;
y: number;
};
export interface WithContextMenuProps {
/** Menu item trigger that accepts openMenu prop */
children: (props: {
openMenu: (trigger: OpenMenuTrigger) => void;
}) => JSX.Element;
/** A function that returns an array of menu items */
renderMenuItems: () => React.ReactNode;
/** On menu open focus the first element */
focusOnOpen?: boolean;
}
export declare const WithContextMenu: ({ children, renderMenuItems, focusOnOpen }: WithContextMenuProps) => import("react/jsx-runtime").JSX.Element;