import { type ComponentType, type MouseEvent, type ReactElement, type ReactNode } from "react"; import { type IInsight, type IInsightWidget } from "@gooddata/sdk-model"; import { type RenderMode } from "../../../types.js"; /** * @beta */ export interface IInsightMenuItemButton { type: "button"; itemId: string; itemName: string; onClick?: (e: MouseEvent) => void; /** * If specified, the value is shown on hover of the item as a tooltip. */ tooltip?: string | ReactNode; disabled?: boolean; icon?: ReactElement | string; /** * Additional class names to be applied to the item. */ className?: string; isFocused?: boolean; } /** * @beta */ export interface IInsightMenuItemSeparator { type: "separator"; itemId: string; } /** * @alpha */ export interface IInsightMenuSubmenuComponentProps { /** * The widget for which the menu is rendered. */ widget: IInsightWidget; /** * Closes the insight menu. */ onClose: () => void; /** * Go back to the root menu. */ onGoBack: () => void; /** * If true, the title configuration is shown in submenu. * default: true */ enableTitleConfig?: boolean; } /** * @beta */ export interface IInsightMenuSubmenu { type: "submenu"; itemId: string; itemName: string; /** @alpha */ /** * Define either the component to render for the submenu or the items to render by default submenu. * If not provided, the default submenu component will be used. */ SubmenuComponent?: ComponentType; /** * The items to render for the submenu. */ items?: IInsightMenuItem[]; /** * Should the submenu component be rendered only? * If so, it won't be wrapped inside the default container * and the default header won't be rendered. * @alpha */ renderSubmenuComponentOnly?: boolean; /** * If specified, the value is shown on hover of the item as a tooltip. */ tooltip?: string | ReactNode; disabled?: boolean; icon?: ReactElement | string; /** * Additional class names to be applied to the item. */ className?: string; onClick?: (e: MouseEvent) => void; } export declare function isIInsightMenuSubmenu(obj: IInsightMenuItem): obj is IInsightMenuSubmenu; /** * @beta */ export type IInsightMenuItem = IInsightMenuItemButton | IInsightMenuItemSeparator | IInsightMenuSubmenu | IInsightMenuGroup; /** * @beta */ export interface IInsightMenuGroup { type: "group"; itemId: string; itemName: string; items: IInsightMenuItem[]; } /** * @alpha */ export interface IDashboardInsightMenuButtonProps { widget: IInsightWidget; insight?: IInsight; isOpen: boolean; onClick: () => void; items: IInsightMenuItem[]; } /** * @alpha */ export interface IDashboardInsightMenuProps { widget: IInsightWidget; insight?: IInsight; isOpen: boolean; onClose: () => void; items: IInsightMenuItem[]; } /** * @internal */ export interface IDashboardInsightMenuTitleProps { widget: IInsightWidget; insight?: IInsight; renderMode: RenderMode; titleId?: string; } /** * @alpha */ export type CustomDashboardInsightMenuButtonComponent = ComponentType; /** * @alpha */ export type CustomDashboardInsightMenuComponent = ComponentType; /** * @internal */ export type CustomDashboardInsightMenuTitleComponent = ComponentType; //# sourceMappingURL=types.d.ts.map