/* * (c) Copyright 2026 Palantir Technologies Inc. All rights reserved. */ import type { Meta, StoryObj } from "@storybook/react-vite"; import { storybookLayoutDecorator } from "@storybook-common"; import { useArgs, useCallback } from "storybook/preview-api"; import { expect, screen, waitFor } from "storybook/test"; import { Button } from "../button/buttons"; import { Menu } from "../menu/menu"; import { MenuDivider } from "../menu/menuDivider"; import { MenuItem } from "../menu/menuItem"; import { ContextMenuPopover, type ContextMenuPopoverProps } from "./contextMenuPopover"; const SAMPLE_MENU = ( ); const meta: Meta = { title: "Core/Context Menu/ContextMenuPopover", component: ContextMenuPopover, decorators: [storybookLayoutDecorator], args: { content: SAMPLE_MENU, isOpen: false, transitionDuration: 0, isDarkTheme: false, }, argTypes: { content: { control: false }, isOpen: { control: "boolean" }, isDarkTheme: { control: "boolean" }, targetOffset: { table: { disable: true } }, onClose: { action: "closed" }, onOpening: { table: { disable: true } }, onOpened: { table: { disable: true } }, onClosing: { table: { disable: true } }, onClosed: { table: { disable: true } }, popoverClassName: { table: { disable: true } }, popoverRef: { table: { disable: true } }, rootBoundary: { table: { disable: true } }, transitionDuration: { table: { disable: true } }, }, } satisfies Meta; export default meta; type Story = StoryObj; function ContextMenuPopoverStoryRender(args: ContextMenuPopoverProps) { const [, updateArgs] = useArgs(); const handleOpen = useCallback( (event: React.MouseEvent) => updateArgs({ isOpen: true, targetOffset: { left: event.clientX, top: event.clientY }, }), [updateArgs], ); const handleClose = useCallback(() => updateArgs({ isOpen: false }), [updateArgs]); return ( <>