@plasmicpkgs/react-aria 0.0.112 → 0.0.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/react-aria.esm.js +14 -4
- package/dist/react-aria.esm.js.map +1 -1
- package/dist/react-aria.js +13 -3
- package/dist/react-aria.js.map +1 -1
- package/dist/registerDialogTrigger.d.ts +6 -0
- package/package.json +2 -4
- package/skinny/registerDialogTrigger.cjs.js +16 -5
- package/skinny/registerDialogTrigger.cjs.js.map +1 -1
- package/skinny/registerDialogTrigger.d.ts +6 -0
- package/skinny/registerDialogTrigger.esm.js +16 -6
- package/skinny/registerDialogTrigger.esm.js.map +1 -1
- package/skinny/registerDialogTrigger.stories.cjs.js +253 -16
- package/skinny/registerDialogTrigger.stories.cjs.js.map +1 -1
- package/skinny/registerDialogTrigger.stories.esm.js +249 -17
- package/skinny/registerDialogTrigger.stories.esm.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerDialogTrigger.stories.cjs.js","sources":["../src/registerDialogTrigger.stories.tsx"],"sourcesContent":["import { PlasmicCanvasContext } from \"@plasmicapp/host\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, userEvent, waitFor, within } from \"@storybook/test\";\nimport React, { useEffect, useState } from \"react\";\nimport { BaseButton } from \"./registerButton\";\nimport { BaseDialog } from \"./registerDialog\";\nimport { BaseDialogTrigger } from \"./registerDialogTrigger\";\nimport { BaseModal } from \"./registerModal\";\nimport { BasePopover } from \"./registerPopover\";\n\nconst meta: Meta<typeof BaseDialogTrigger> = {\n title: \"Components/BaseDialogTrigger\",\n component: BaseDialogTrigger,\n args: {\n defaultOpen: false,\n onOpenChange: fn(),\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof BaseDialogTrigger>;\n\nconst DefaultContent = () => (\n <div data-testid=\"dialog-content\">\n <h2>Dialog Title</h2>\n <p>Dialog content goes here</p>\n </div>\n);\n\nexport const WithModal: Story = {\n args: {\n trigger: <BaseButton>Open modal</BaseButton>,\n dialog: (\n <BaseModal isDismissable={true} isKeyboardDismissDisabled={false}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BaseModal>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const button = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation, press Escape to dismiss\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\nexport const WithPopover: Story = {\n args: {\n trigger: <BaseButton>Open popover</BaseButton>,\n dialog: (\n <BasePopover isKeyboardDismissDisabled={false}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const button = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation, press Escape to dismiss\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\nexport const WithPopoverNonModal: Story = {\n args: {\n trigger: <BaseButton>Open popover</BaseButton>,\n dialog: (\n <BasePopover isNonModal={true} isKeyboardDismissDisabled={false}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const button = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\nexport const SelectedInCanvas: Story = {\n args: {\n trigger: <BaseButton>Open popover</BaseButton>,\n dialog: (\n <BasePopover isNonModal={true} isKeyboardDismissDisabled={false}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n ),\n },\n render: ({ __plasmic_selection_prop__, ...args }) => {\n const [selected, setSelected] = useState(false);\n const [selectedSlotName, setSelectedSlotName] = useState(\"\");\n useEffect(() => {\n setTimeout(() => {\n setSelected(true);\n setTimeout(() => {\n // Simulate trigger slot selection in Plasmic canvas\n setSelectedSlotName(\"trigger\");\n }, 1000);\n }, 1000);\n }, []);\n\n return (\n // Simulate Plasmic canvas envirnment\n <PlasmicCanvasContext.Provider\n value={{\n componentName: \"test\",\n globalVariants: {},\n }}\n >\n <BaseDialogTrigger\n // Simulate node selection in Plasmic canvas\n __plasmic_selection_prop__={{\n isSelected: selected,\n selectedSlotName,\n }}\n {...args}\n />\n </PlasmicCanvasContext.Provider>\n );\n },\n play: async () => {\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n },\n { timeout: 1100 }\n );\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n },\n { timeout: 1100 }\n ); // the slot selected is trigger, so the popover should close\n },\n};\n"],"names":["BaseDialogTrigger","fn","React","BaseButton","BaseModal","BaseDialog","within","waitFor","expect","userEvent","BasePopover","useState","useEffect","PlasmicCanvasContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registerDialogTrigger.stories.cjs.js","sources":["../src/registerDialogTrigger.stories.tsx"],"sourcesContent":["import { PlasmicCanvasContext } from \"@plasmicapp/host\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, userEvent, waitFor, within } from \"@storybook/test\";\nimport React, { useEffect, useState } from \"react\";\nimport { BaseButton } from \"./registerButton\";\nimport { BaseDialog } from \"./registerDialog\";\nimport { BaseDialogTrigger } from \"./registerDialogTrigger\";\nimport { BaseModal, BaseModalProps } from \"./registerModal\";\nimport { BasePopover, BasePopoverProps } from \"./registerPopover\";\n\nconst meta: Meta<typeof BaseDialogTrigger> = {\n title: \"Components/BaseDialogTrigger\",\n component: BaseDialogTrigger,\n args: {\n defaultOpen: false,\n onOpenChange: fn(),\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof BaseDialogTrigger>;\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst DefaultContent = () => (\n <div data-testid=\"dialog-content\">\n <h2>Dialog Title</h2>\n <p>Dialog content goes here</p>\n </div>\n);\n\nconst DefaultPopoverContent = (props: BasePopoverProps) => (\n <BasePopover {...props}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n);\n\nconst DefaultModalContent = (props: BaseModalProps) => (\n <BaseModal {...props}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BaseModal>\n);\n\nexport const WithModal: Story = {\n args: {\n trigger: <span tabIndex={0}>Open modal</span>, // anything can be used as a trigger\n dialog: (\n <DefaultModalContent\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation\n await userEvent.tab();\n expect(trigger).toHaveFocus();\n\n // Still not open because a click/press is required\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"[Space]\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n // press Escape to dismiss\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\n// Ensures that any custom event handlers on the trigger are called, and any custom props passed to it are passed through.\nexport const TriggerWithCustomEventHandler: Story = {\n args: {\n dialog: (\n <DefaultModalContent\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n parameters: {\n customOnClick: fn(),\n },\n render: (args, { parameters }) => {\n return (\n <BaseDialogTrigger\n {...args}\n trigger={\n <span className=\"custom-class\" onClick={parameters.customOnClick}>\n Open modal\n </span>\n }\n />\n );\n },\n play: async ({ canvasElement, args, parameters }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(trigger).toHaveClass(\"custom-class\");\n\n expect(parameters.customOnClick).toHaveBeenCalledTimes(0);\n await userEvent.click(trigger);\n expect(parameters.customOnClick).toHaveBeenCalledTimes(1);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\n// tests that a trigger that's nested in a div (e.g. a <span>) can trigger open the dialog on click\n// Also tests that either of nested triggers can be made non-triggerable via e.stopPropagation\nexport const WithNestedTrigger: Story = {\n args: {\n dialog: (\n <DefaultModalContent\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n trigger: (\n <div>\n <span tabIndex={0}>Open modal</span>\n <span tabIndex={0} onClick={(e) => e.stopPropagation()}>\n Open modal\n </span>\n <span tabIndex={0}>Open modal</span>\n </div>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const triggers = canvas.getAllByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(triggers[0]);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n // Click again to dismiss\n await userEvent.click(triggers[0]);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n\n await userEvent.click(triggers[1]);\n\n // trigger # 2 stops propagation via e.stopPropagation. So, clicking on trigger # 2 should not open the dialog\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2); // not changed\n\n await userEvent.click(triggers[2]);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n expect(args.onOpenChange).toHaveBeenCalledTimes(3);\n\n await userEvent.keyboard(\"{Escape}\");\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n await userEvent.click(triggers[2]);\n expect(args.onOpenChange).toHaveBeenCalledTimes(5);\n },\n};\n\nexport const WithPopover: Story = {\n args: {\n trigger: <span tabIndex={0}>Open popover</span>, // anything can be used as a trigger\n dialog: <DefaultPopoverContent isKeyboardDismissDisabled={false} />,\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation, press Space to open and Escape to dismiss\n await userEvent.tab();\n await expect(trigger).toHaveFocus();\n await userEvent.keyboard(\"[Space]\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\nexport const WithPopoverNonModal: Story = {\n args: {\n trigger: <span>Open popover</span>, // anything can be used as a trigger\n dialog: (\n <DefaultPopoverContent\n isNonModal={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should NOT close, because the outside can be interacted with without affecting the popover's open state\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\nexport const ControlledDialog: Story = {\n args: {\n trigger: undefined,\n dialog: <DefaultPopoverContent />,\n },\n render: ({ isOpen, dialog }) => {\n const [open, setOpen] = useState(isOpen);\n return (\n <>\n <span onClick={() => setOpen((prev) => !prev)}>Toggle</span>\n <BaseDialogTrigger\n isOpen={open}\n onOpenChange={setOpen}\n dialog={dialog}\n />\n </>\n );\n },\n play: async ({ canvasElement }) => {\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n const canvas = within(canvasElement);\n const trigger = canvas.getByText(\"Toggle\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await trigger.click();\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await trigger.click();\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n },\n};\n\nexport const AriaButtonTrigger: Story = {\n args: {\n dialog: <DefaultModalContent isDismissable={true} />,\n trigger: <BaseButton>Open modal</BaseButton>,\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\nexport const SelectedInCanvas: Story = {\n args: {\n trigger: undefined,\n dialog: <DefaultPopoverContent isKeyboardDismissDisabled={false} />,\n },\n render: ({ __plasmic_selection_prop__, ...args }) => {\n const [selected, setSelected] = useState(false);\n const [selectedSlotName, setSelectedSlotName] = useState(\"\");\n useEffect(() => {\n setTimeout(() => {\n setSelected(true);\n setTimeout(() => {\n // Simulate trigger slot selection in Plasmic canvas\n setSelectedSlotName(\"trigger\");\n }, 1000);\n }, 1000);\n }, []);\n\n return (\n // Simulate Plasmic canvas envirnment\n <PlasmicCanvasContext.Provider\n value={{\n componentName: \"test\",\n globalVariants: {},\n }}\n >\n <BaseDialogTrigger\n // Simulate node selection in Plasmic canvas\n __plasmic_selection_prop__={{\n isSelected: selected,\n selectedSlotName,\n }}\n {...args}\n />\n </PlasmicCanvasContext.Provider>\n );\n },\n play: async () => {\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n },\n { timeout: 1100 }\n );\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n },\n { timeout: 1100 }\n ); // the slot selected is trigger, so the popover should close\n },\n};\n\nexport const PopoverPosition: Story = {\n args: {\n trigger: <span>Open popover</span>, // anything can be used as a trigger\n dialog: <DefaultPopoverContent />,\n },\n render: (args) => {\n const [className, setClassName] = useState<string | undefined>(\"popover\");\n useEffect(() => {\n setTimeout(() => {\n setClassName((prev) => `${prev} popover-right`);\n }, 1000);\n }, []);\n\n return (\n <>\n <style\n dangerouslySetInnerHTML={{\n __html: `\n .popover {\n display: inline-block;\n }\n .popover-right {\n position: absolute;\n right: 0;\n }\n `,\n }}\n />\n <BaseDialogTrigger {...args} className={className} />\n </>\n );\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n let initialPopoverLeftPosition: number;\n\n // Check that tooltip appears\n await waitFor(() => {\n const popover = doc.getByTestId(\"dialog-content\");\n initialPopoverLeftPosition = popover.getBoundingClientRect().left;\n });\n\n await userEvent.click(trigger); // toggle close\n\n await sleep(500);\n await userEvent.click(trigger);\n\n await waitFor(async () => {\n const popover = doc.getByTestId(\"dialog-content\");\n expect(initialPopoverLeftPosition).toEqual(\n popover.getBoundingClientRect().left\n ); // opens again at exactly the same position\n });\n\n await userEvent.click(trigger); // toggle close\n\n await sleep(500);\n await userEvent.click(trigger);\n\n await waitFor(() => {\n const popover = doc.getByTestId(\"dialog-content\");\n expect(initialPopoverLeftPosition).not.toEqual(\n popover.getBoundingClientRect().left\n ); // opens at a different position because the position of the trigger changed\n });\n },\n};\n"],"names":["BaseDialogTrigger","fn","React","BasePopover","BaseDialog","BaseModal","within","waitFor","expect","userEvent","useState","BaseButton","useEffect","PlasmicCanvasContext"],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ import './contexts-5cb81c2f.esm.js';
|
|
|
16
16
|
import '@react-aria/utils';
|
|
17
17
|
|
|
18
18
|
var __defProp = Object.defineProperty;
|
|
19
|
+
var __defProps = Object.defineProperties;
|
|
20
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
19
21
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
20
22
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
21
23
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -31,6 +33,7 @@ var __spreadValues = (a, b) => {
|
|
|
31
33
|
}
|
|
32
34
|
return a;
|
|
33
35
|
};
|
|
36
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
34
37
|
var __objRest = (source, exclude) => {
|
|
35
38
|
var target = {};
|
|
36
39
|
for (var prop in source)
|
|
@@ -51,20 +54,30 @@ const meta = {
|
|
|
51
54
|
onOpenChange: fn()
|
|
52
55
|
}
|
|
53
56
|
};
|
|
57
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
54
58
|
const DefaultContent = () => /* @__PURE__ */ React.createElement("div", { "data-testid": "dialog-content" }, /* @__PURE__ */ React.createElement("h2", null, "Dialog Title"), /* @__PURE__ */ React.createElement("p", null, "Dialog content goes here"));
|
|
59
|
+
const DefaultPopoverContent = (props) => /* @__PURE__ */ React.createElement(BasePopover, __spreadValues({}, props), /* @__PURE__ */ React.createElement(BaseDialog, null, /* @__PURE__ */ React.createElement(DefaultContent, null)));
|
|
60
|
+
const DefaultModalContent = (props) => /* @__PURE__ */ React.createElement(BaseModal, __spreadValues({}, props), /* @__PURE__ */ React.createElement(BaseDialog, null, /* @__PURE__ */ React.createElement(DefaultContent, null)));
|
|
55
61
|
const WithModal = {
|
|
56
62
|
args: {
|
|
57
|
-
trigger: /* @__PURE__ */ React.createElement(
|
|
58
|
-
|
|
63
|
+
trigger: /* @__PURE__ */ React.createElement("span", { tabIndex: 0 }, "Open modal"),
|
|
64
|
+
// anything can be used as a trigger
|
|
65
|
+
dialog: /* @__PURE__ */ React.createElement(
|
|
66
|
+
DefaultModalContent,
|
|
67
|
+
{
|
|
68
|
+
isDismissable: true,
|
|
69
|
+
isKeyboardDismissDisabled: false
|
|
70
|
+
}
|
|
71
|
+
)
|
|
59
72
|
},
|
|
60
73
|
play: async ({ canvasElement, args }) => {
|
|
61
74
|
const canvas = within(canvasElement);
|
|
62
75
|
const doc = within(document.body);
|
|
63
|
-
const
|
|
76
|
+
const trigger = canvas.getByText("Open modal");
|
|
64
77
|
await waitFor(() => {
|
|
65
78
|
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
66
79
|
});
|
|
67
|
-
await userEvent.click(
|
|
80
|
+
await userEvent.click(trigger);
|
|
68
81
|
await waitFor(() => {
|
|
69
82
|
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
70
83
|
});
|
|
@@ -72,7 +85,12 @@ const WithModal = {
|
|
|
72
85
|
await waitFor(() => {
|
|
73
86
|
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
74
87
|
});
|
|
75
|
-
await userEvent.
|
|
88
|
+
await userEvent.tab();
|
|
89
|
+
expect(trigger).toHaveFocus();
|
|
90
|
+
await waitFor(() => {
|
|
91
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
92
|
+
});
|
|
93
|
+
await userEvent.keyboard("[Space]");
|
|
76
94
|
await waitFor(() => {
|
|
77
95
|
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
78
96
|
});
|
|
@@ -83,19 +101,105 @@ const WithModal = {
|
|
|
83
101
|
expect(args.onOpenChange).toHaveBeenCalledTimes(4);
|
|
84
102
|
}
|
|
85
103
|
};
|
|
104
|
+
const TriggerWithCustomEventHandler = {
|
|
105
|
+
args: {
|
|
106
|
+
dialog: /* @__PURE__ */ React.createElement(
|
|
107
|
+
DefaultModalContent,
|
|
108
|
+
{
|
|
109
|
+
isDismissable: true,
|
|
110
|
+
isKeyboardDismissDisabled: false
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
},
|
|
114
|
+
parameters: {
|
|
115
|
+
customOnClick: fn()
|
|
116
|
+
},
|
|
117
|
+
render: (args, { parameters }) => {
|
|
118
|
+
return /* @__PURE__ */ React.createElement(
|
|
119
|
+
BaseDialogTrigger,
|
|
120
|
+
__spreadProps(__spreadValues({}, args), {
|
|
121
|
+
trigger: /* @__PURE__ */ React.createElement("span", { className: "custom-class", onClick: parameters.customOnClick }, "Open modal")
|
|
122
|
+
})
|
|
123
|
+
);
|
|
124
|
+
},
|
|
125
|
+
play: async ({ canvasElement, args, parameters }) => {
|
|
126
|
+
const canvas = within(canvasElement);
|
|
127
|
+
const doc = within(document.body);
|
|
128
|
+
const trigger = canvas.getByText("Open modal");
|
|
129
|
+
await waitFor(() => {
|
|
130
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
131
|
+
});
|
|
132
|
+
expect(trigger).toHaveClass("custom-class");
|
|
133
|
+
expect(parameters.customOnClick).toHaveBeenCalledTimes(0);
|
|
134
|
+
await userEvent.click(trigger);
|
|
135
|
+
expect(parameters.customOnClick).toHaveBeenCalledTimes(1);
|
|
136
|
+
await waitFor(() => {
|
|
137
|
+
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
138
|
+
});
|
|
139
|
+
await userEvent.click(document.body);
|
|
140
|
+
await waitFor(() => {
|
|
141
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
142
|
+
});
|
|
143
|
+
expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
const WithNestedTrigger = {
|
|
147
|
+
args: {
|
|
148
|
+
dialog: /* @__PURE__ */ React.createElement(
|
|
149
|
+
DefaultModalContent,
|
|
150
|
+
{
|
|
151
|
+
isDismissable: true,
|
|
152
|
+
isKeyboardDismissDisabled: false
|
|
153
|
+
}
|
|
154
|
+
),
|
|
155
|
+
trigger: /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("span", { tabIndex: 0 }, "Open modal"), /* @__PURE__ */ React.createElement("span", { tabIndex: 0, onClick: (e) => e.stopPropagation() }, "Open modal"), /* @__PURE__ */ React.createElement("span", { tabIndex: 0 }, "Open modal"))
|
|
156
|
+
},
|
|
157
|
+
play: async ({ canvasElement, args }) => {
|
|
158
|
+
const canvas = within(canvasElement);
|
|
159
|
+
const doc = within(document.body);
|
|
160
|
+
const triggers = canvas.getAllByText("Open modal");
|
|
161
|
+
await waitFor(() => {
|
|
162
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
163
|
+
});
|
|
164
|
+
await userEvent.click(triggers[0]);
|
|
165
|
+
await waitFor(() => {
|
|
166
|
+
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
167
|
+
});
|
|
168
|
+
await userEvent.click(triggers[0]);
|
|
169
|
+
await waitFor(() => {
|
|
170
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
171
|
+
});
|
|
172
|
+
expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
173
|
+
await userEvent.click(triggers[1]);
|
|
174
|
+
await waitFor(() => {
|
|
175
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
176
|
+
});
|
|
177
|
+
expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
178
|
+
await userEvent.click(triggers[2]);
|
|
179
|
+
await waitFor(() => {
|
|
180
|
+
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
181
|
+
});
|
|
182
|
+
expect(args.onOpenChange).toHaveBeenCalledTimes(3);
|
|
183
|
+
await userEvent.keyboard("{Escape}");
|
|
184
|
+
expect(args.onOpenChange).toHaveBeenCalledTimes(4);
|
|
185
|
+
await userEvent.click(triggers[2]);
|
|
186
|
+
expect(args.onOpenChange).toHaveBeenCalledTimes(5);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
86
189
|
const WithPopover = {
|
|
87
190
|
args: {
|
|
88
|
-
trigger: /* @__PURE__ */ React.createElement(
|
|
89
|
-
|
|
191
|
+
trigger: /* @__PURE__ */ React.createElement("span", { tabIndex: 0 }, "Open popover"),
|
|
192
|
+
// anything can be used as a trigger
|
|
193
|
+
dialog: /* @__PURE__ */ React.createElement(DefaultPopoverContent, { isKeyboardDismissDisabled: false })
|
|
90
194
|
},
|
|
91
195
|
play: async ({ canvasElement, args }) => {
|
|
92
196
|
const canvas = within(canvasElement);
|
|
93
197
|
const doc = within(document.body);
|
|
94
|
-
const
|
|
198
|
+
const trigger = canvas.getByText("Open popover");
|
|
95
199
|
await waitFor(() => {
|
|
96
200
|
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
97
201
|
});
|
|
98
|
-
await userEvent.click(
|
|
202
|
+
await userEvent.click(trigger);
|
|
99
203
|
await waitFor(() => {
|
|
100
204
|
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
101
205
|
});
|
|
@@ -103,7 +207,9 @@ const WithPopover = {
|
|
|
103
207
|
await waitFor(() => {
|
|
104
208
|
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
105
209
|
});
|
|
106
|
-
await userEvent.
|
|
210
|
+
await userEvent.tab();
|
|
211
|
+
await expect(trigger).toHaveFocus();
|
|
212
|
+
await userEvent.keyboard("[Space]");
|
|
107
213
|
await waitFor(() => {
|
|
108
214
|
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
109
215
|
});
|
|
@@ -116,17 +222,24 @@ const WithPopover = {
|
|
|
116
222
|
};
|
|
117
223
|
const WithPopoverNonModal = {
|
|
118
224
|
args: {
|
|
119
|
-
trigger: /* @__PURE__ */ React.createElement(
|
|
120
|
-
|
|
225
|
+
trigger: /* @__PURE__ */ React.createElement("span", null, "Open popover"),
|
|
226
|
+
// anything can be used as a trigger
|
|
227
|
+
dialog: /* @__PURE__ */ React.createElement(
|
|
228
|
+
DefaultPopoverContent,
|
|
229
|
+
{
|
|
230
|
+
isNonModal: true,
|
|
231
|
+
isKeyboardDismissDisabled: false
|
|
232
|
+
}
|
|
233
|
+
)
|
|
121
234
|
},
|
|
122
235
|
play: async ({ canvasElement, args }) => {
|
|
123
236
|
const canvas = within(canvasElement);
|
|
124
237
|
const doc = within(document.body);
|
|
125
|
-
const
|
|
238
|
+
const trigger = canvas.getByText("Open popover");
|
|
126
239
|
await waitFor(() => {
|
|
127
240
|
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
128
241
|
});
|
|
129
|
-
await userEvent.click(
|
|
242
|
+
await userEvent.click(trigger);
|
|
130
243
|
await waitFor(() => {
|
|
131
244
|
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
132
245
|
});
|
|
@@ -141,10 +254,66 @@ const WithPopoverNonModal = {
|
|
|
141
254
|
expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
142
255
|
}
|
|
143
256
|
};
|
|
257
|
+
const ControlledDialog = {
|
|
258
|
+
args: {
|
|
259
|
+
trigger: void 0,
|
|
260
|
+
dialog: /* @__PURE__ */ React.createElement(DefaultPopoverContent, null)
|
|
261
|
+
},
|
|
262
|
+
render: ({ isOpen, dialog }) => {
|
|
263
|
+
const [open, setOpen] = useState(isOpen);
|
|
264
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("span", { onClick: () => setOpen((prev) => !prev) }, "Toggle"), /* @__PURE__ */ React.createElement(
|
|
265
|
+
BaseDialogTrigger,
|
|
266
|
+
{
|
|
267
|
+
isOpen: open,
|
|
268
|
+
onOpenChange: setOpen,
|
|
269
|
+
dialog
|
|
270
|
+
}
|
|
271
|
+
));
|
|
272
|
+
},
|
|
273
|
+
play: async ({ canvasElement }) => {
|
|
274
|
+
const doc = within(document.body);
|
|
275
|
+
const canvas = within(canvasElement);
|
|
276
|
+
const trigger = canvas.getByText("Toggle");
|
|
277
|
+
await waitFor(() => {
|
|
278
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
279
|
+
});
|
|
280
|
+
await trigger.click();
|
|
281
|
+
await waitFor(() => {
|
|
282
|
+
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
283
|
+
});
|
|
284
|
+
await trigger.click();
|
|
285
|
+
await waitFor(() => {
|
|
286
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
const AriaButtonTrigger = {
|
|
291
|
+
args: {
|
|
292
|
+
dialog: /* @__PURE__ */ React.createElement(DefaultModalContent, { isDismissable: true }),
|
|
293
|
+
trigger: /* @__PURE__ */ React.createElement(BaseButton, null, "Open modal")
|
|
294
|
+
},
|
|
295
|
+
play: async ({ canvasElement, args }) => {
|
|
296
|
+
const canvas = within(canvasElement);
|
|
297
|
+
const doc = within(document.body);
|
|
298
|
+
const trigger = canvas.getByText("Open modal");
|
|
299
|
+
await waitFor(() => {
|
|
300
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
301
|
+
});
|
|
302
|
+
await userEvent.click(trigger);
|
|
303
|
+
await waitFor(() => {
|
|
304
|
+
expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
305
|
+
});
|
|
306
|
+
await userEvent.click(document.body);
|
|
307
|
+
await waitFor(() => {
|
|
308
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
309
|
+
});
|
|
310
|
+
expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
311
|
+
}
|
|
312
|
+
};
|
|
144
313
|
const SelectedInCanvas = {
|
|
145
314
|
args: {
|
|
146
|
-
trigger:
|
|
147
|
-
dialog: /* @__PURE__ */ React.createElement(
|
|
315
|
+
trigger: void 0,
|
|
316
|
+
dialog: /* @__PURE__ */ React.createElement(DefaultPopoverContent, { isKeyboardDismissDisabled: false })
|
|
148
317
|
},
|
|
149
318
|
render: (_a) => {
|
|
150
319
|
var _b = _a, args = __objRest(_b, ["__plasmic_selection_prop__"]);
|
|
@@ -199,6 +368,69 @@ const SelectedInCanvas = {
|
|
|
199
368
|
);
|
|
200
369
|
}
|
|
201
370
|
};
|
|
371
|
+
const PopoverPosition = {
|
|
372
|
+
args: {
|
|
373
|
+
trigger: /* @__PURE__ */ React.createElement("span", null, "Open popover"),
|
|
374
|
+
// anything can be used as a trigger
|
|
375
|
+
dialog: /* @__PURE__ */ React.createElement(DefaultPopoverContent, null)
|
|
376
|
+
},
|
|
377
|
+
render: (args) => {
|
|
378
|
+
const [className, setClassName] = useState("popover");
|
|
379
|
+
useEffect(() => {
|
|
380
|
+
setTimeout(() => {
|
|
381
|
+
setClassName((prev) => `${prev} popover-right`);
|
|
382
|
+
}, 1e3);
|
|
383
|
+
}, []);
|
|
384
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
385
|
+
"style",
|
|
386
|
+
{
|
|
387
|
+
dangerouslySetInnerHTML: {
|
|
388
|
+
__html: `
|
|
389
|
+
.popover {
|
|
390
|
+
display: inline-block;
|
|
391
|
+
}
|
|
392
|
+
.popover-right {
|
|
393
|
+
position: absolute;
|
|
394
|
+
right: 0;
|
|
395
|
+
}
|
|
396
|
+
`
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
), /* @__PURE__ */ React.createElement(BaseDialogTrigger, __spreadProps(__spreadValues({}, args), { className })));
|
|
400
|
+
},
|
|
401
|
+
play: async ({ canvasElement }) => {
|
|
402
|
+
const canvas = within(canvasElement);
|
|
403
|
+
const doc = within(document.body);
|
|
404
|
+
const trigger = canvas.getByText("Open popover");
|
|
405
|
+
await waitFor(() => {
|
|
406
|
+
expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
407
|
+
});
|
|
408
|
+
await userEvent.click(trigger);
|
|
409
|
+
let initialPopoverLeftPosition;
|
|
410
|
+
await waitFor(() => {
|
|
411
|
+
const popover = doc.getByTestId("dialog-content");
|
|
412
|
+
initialPopoverLeftPosition = popover.getBoundingClientRect().left;
|
|
413
|
+
});
|
|
414
|
+
await userEvent.click(trigger);
|
|
415
|
+
await sleep(500);
|
|
416
|
+
await userEvent.click(trigger);
|
|
417
|
+
await waitFor(async () => {
|
|
418
|
+
const popover = doc.getByTestId("dialog-content");
|
|
419
|
+
expect(initialPopoverLeftPosition).toEqual(
|
|
420
|
+
popover.getBoundingClientRect().left
|
|
421
|
+
);
|
|
422
|
+
});
|
|
423
|
+
await userEvent.click(trigger);
|
|
424
|
+
await sleep(500);
|
|
425
|
+
await userEvent.click(trigger);
|
|
426
|
+
await waitFor(() => {
|
|
427
|
+
const popover = doc.getByTestId("dialog-content");
|
|
428
|
+
expect(initialPopoverLeftPosition).not.toEqual(
|
|
429
|
+
popover.getBoundingClientRect().left
|
|
430
|
+
);
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
};
|
|
202
434
|
|
|
203
|
-
export { SelectedInCanvas, WithModal, WithPopover, WithPopoverNonModal, meta as default };
|
|
435
|
+
export { AriaButtonTrigger, ControlledDialog, PopoverPosition, SelectedInCanvas, TriggerWithCustomEventHandler, WithModal, WithNestedTrigger, WithPopover, WithPopoverNonModal, meta as default };
|
|
204
436
|
//# sourceMappingURL=registerDialogTrigger.stories.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerDialogTrigger.stories.esm.js","sources":["../src/registerDialogTrigger.stories.tsx"],"sourcesContent":["import { PlasmicCanvasContext } from \"@plasmicapp/host\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, userEvent, waitFor, within } from \"@storybook/test\";\nimport React, { useEffect, useState } from \"react\";\nimport { BaseButton } from \"./registerButton\";\nimport { BaseDialog } from \"./registerDialog\";\nimport { BaseDialogTrigger } from \"./registerDialogTrigger\";\nimport { BaseModal } from \"./registerModal\";\nimport { BasePopover } from \"./registerPopover\";\n\nconst meta: Meta<typeof BaseDialogTrigger> = {\n title: \"Components/BaseDialogTrigger\",\n component: BaseDialogTrigger,\n args: {\n defaultOpen: false,\n onOpenChange: fn(),\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof BaseDialogTrigger>;\n\nconst DefaultContent = () => (\n <div data-testid=\"dialog-content\">\n <h2>Dialog Title</h2>\n <p>Dialog content goes here</p>\n </div>\n);\n\nexport const WithModal: Story = {\n args: {\n trigger: <BaseButton>Open modal</BaseButton>,\n dialog: (\n <BaseModal isDismissable={true} isKeyboardDismissDisabled={false}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BaseModal>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const button = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation, press Escape to dismiss\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\nexport const WithPopover: Story = {\n args: {\n trigger: <BaseButton>Open popover</BaseButton>,\n dialog: (\n <BasePopover isKeyboardDismissDisabled={false}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const button = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation, press Escape to dismiss\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\nexport const WithPopoverNonModal: Story = {\n args: {\n trigger: <BaseButton>Open popover</BaseButton>,\n dialog: (\n <BasePopover isNonModal={true} isKeyboardDismissDisabled={false}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const button = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(button);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\nexport const SelectedInCanvas: Story = {\n args: {\n trigger: <BaseButton>Open popover</BaseButton>,\n dialog: (\n <BasePopover isNonModal={true} isKeyboardDismissDisabled={false}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n ),\n },\n render: ({ __plasmic_selection_prop__, ...args }) => {\n const [selected, setSelected] = useState(false);\n const [selectedSlotName, setSelectedSlotName] = useState(\"\");\n useEffect(() => {\n setTimeout(() => {\n setSelected(true);\n setTimeout(() => {\n // Simulate trigger slot selection in Plasmic canvas\n setSelectedSlotName(\"trigger\");\n }, 1000);\n }, 1000);\n }, []);\n\n return (\n // Simulate Plasmic canvas envirnment\n <PlasmicCanvasContext.Provider\n value={{\n componentName: \"test\",\n globalVariants: {},\n }}\n >\n <BaseDialogTrigger\n // Simulate node selection in Plasmic canvas\n __plasmic_selection_prop__={{\n isSelected: selected,\n selectedSlotName,\n }}\n {...args}\n />\n </PlasmicCanvasContext.Provider>\n );\n },\n play: async () => {\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n },\n { timeout: 1100 }\n );\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n },\n { timeout: 1100 }\n ); // the slot selected is trigger, so the popover should close\n },\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAM,IAAuC,GAAA;AAAA,EAC3C,KAAO,EAAA,8BAAA;AAAA,EACP,SAAW,EAAA,iBAAA;AAAA,EACX,IAAM,EAAA;AAAA,IACJ,WAAa,EAAA,KAAA;AAAA,IACb,cAAc,EAAG,EAAA;AAAA,GACnB;AACF,EAAA;AAKA,MAAM,cAAiB,GAAA,sBACpB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,aAAY,EAAA,gBAAA,EAAA,kBACd,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAG,cAAY,CAAA,kBACf,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAE,0BAAwB,CAC7B,CAAA,CAAA;AAGK,MAAM,SAAmB,GAAA;AAAA,EAC9B,IAAM,EAAA;AAAA,IACJ,OAAA,kBAAU,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAW,YAAU,CAAA;AAAA,IAC/B,MACE,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,aAAA,EAAe,IAAM,EAAA,yBAAA,EAA2B,KACzD,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAe,EAAA,IAAA,CAClB,CACF,CAAA;AAAA,GAEJ;AAAA,EACA,IAAM,EAAA,OAAO,EAAE,aAAA,EAAe,MAAW,KAAA;AACvC,IAAM,MAAA,MAAA,GAAS,OAAO,aAAa,CAAA,CAAA;AACnC,IAAM,MAAA,GAAA,GAAM,MAAO,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAChC,IAAM,MAAA,MAAA,GAAS,MAAO,CAAA,SAAA,CAAU,YAAY,CAAA,CAAA;AAE5C,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAE5B,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,GAAI,CAAA,aAAA,CAAc,gBAAgB,CAAC,EAAE,iBAAkB,EAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAGnC,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAGD,IAAM,MAAA,SAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAE5B,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,GAAI,CAAA,aAAA,CAAc,gBAAgB,CAAC,EAAE,iBAAkB,EAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,SAAS,UAAU,CAAA,CAAA;AAEnC,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAA,MAAA,CAAO,IAAK,CAAA,YAAY,CAAE,CAAA,qBAAA,CAAsB,CAAC,CAAA,CAAA;AAAA,GACnD;AACF,EAAA;AAEO,MAAM,WAAqB,GAAA;AAAA,EAChC,IAAM,EAAA;AAAA,IACJ,OAAA,kBAAU,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAW,cAAY,CAAA;AAAA,IACjC,MAAA,kBACG,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,yBAA2B,EAAA,KAAA,EAAA,sCACrC,UACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAe,EAAA,IAAA,CAClB,CACF,CAAA;AAAA,GAEJ;AAAA,EACA,IAAM,EAAA,OAAO,EAAE,aAAA,EAAe,MAAW,KAAA;AACvC,IAAM,MAAA,MAAA,GAAS,OAAO,aAAa,CAAA,CAAA;AACnC,IAAM,MAAA,GAAA,GAAM,MAAO,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAChC,IAAM,MAAA,MAAA,GAAS,MAAO,CAAA,SAAA,CAAU,cAAc,CAAA,CAAA;AAE9C,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAE5B,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,GAAI,CAAA,aAAA,CAAc,gBAAgB,CAAC,EAAE,iBAAkB,EAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAGnC,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAGD,IAAM,MAAA,SAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAE5B,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,GAAI,CAAA,aAAA,CAAc,gBAAgB,CAAC,EAAE,iBAAkB,EAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,SAAS,UAAU,CAAA,CAAA;AAEnC,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAA,MAAA,CAAO,IAAK,CAAA,YAAY,CAAE,CAAA,qBAAA,CAAsB,CAAC,CAAA,CAAA;AAAA,GACnD;AACF,EAAA;AAEO,MAAM,mBAA6B,GAAA;AAAA,EACxC,IAAM,EAAA;AAAA,IACJ,OAAA,kBAAU,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAW,cAAY,CAAA;AAAA,IACjC,MACE,kBAAA,KAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,UAAA,EAAY,IAAM,EAAA,yBAAA,EAA2B,KACxD,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAe,EAAA,IAAA,CAClB,CACF,CAAA;AAAA,GAEJ;AAAA,EACA,IAAM,EAAA,OAAO,EAAE,aAAA,EAAe,MAAW,KAAA;AACvC,IAAM,MAAA,MAAA,GAAS,OAAO,aAAa,CAAA,CAAA;AACnC,IAAM,MAAA,GAAA,GAAM,MAAO,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAChC,IAAM,MAAA,MAAA,GAAS,MAAO,CAAA,SAAA,CAAU,cAAc,CAAA,CAAA;AAE9C,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAE5B,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,GAAI,CAAA,aAAA,CAAc,gBAAgB,CAAC,EAAE,iBAAkB,EAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAGnC,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,GAAI,CAAA,aAAA,CAAc,gBAAgB,CAAC,EAAE,iBAAkB,EAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,CAAU,SAAS,UAAU,CAAA,CAAA;AAEnC,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAA,MAAA,CAAO,IAAK,CAAA,YAAY,CAAE,CAAA,qBAAA,CAAsB,CAAC,CAAA,CAAA;AAAA,GACnD;AACF,EAAA;AAEO,MAAM,gBAA0B,GAAA;AAAA,EACrC,IAAM,EAAA;AAAA,IACJ,OAAA,kBAAU,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAW,cAAY,CAAA;AAAA,IACjC,MACE,kBAAA,KAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,UAAA,EAAY,IAAM,EAAA,yBAAA,EAA2B,KACxD,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAe,EAAA,IAAA,CAClB,CACF,CAAA;AAAA,GAEJ;AAAA,EACA,MAAA,EAAQ,CAAC,EAA4C,KAAA;AAA5C,IAAA,IAAA,EAAA,GAAA,EAAA,CAAA,CAAiC,IAAA,GAAA,SAAA,CAAjC,IAAiC,CAA/B,4BAAA,CAAA,EAAA;AACT,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAC9C,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AAC3D,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAChB,QAAA,UAAA,CAAW,MAAM;AAEf,UAAA,mBAAA,CAAoB,SAAS,CAAA,CAAA;AAAA,WAC5B,GAAI,CAAA,CAAA;AAAA,SACN,GAAI,CAAA,CAAA;AAAA,KACT,EAAG,EAAE,CAAA,CAAA;AAEL,IAAA;AAAA;AAAA,sBAEE,KAAA,CAAA,aAAA;AAAA,QAAC,oBAAqB,CAAA,QAAA;AAAA,QAArB;AAAA,UACC,KAAO,EAAA;AAAA,YACL,aAAe,EAAA,MAAA;AAAA,YACf,gBAAgB,EAAC;AAAA,WACnB;AAAA,SAAA;AAAA,wBAEA,KAAA,CAAA,aAAA;AAAA,UAAC,iBAAA;AAAA,UAAA,cAAA,CAAA;AAAA,YAEC,0BAA4B,EAAA;AAAA,cAC1B,UAAY,EAAA,QAAA;AAAA,cACZ,gBAAA;AAAA,aACF;AAAA,WACI,EAAA,IAAA,CAAA;AAAA,SACN;AAAA,OACF;AAAA,MAAA;AAAA,GAEJ;AAAA,EACA,MAAM,YAAY;AAEhB,IAAM,MAAA,GAAA,GAAM,MAAO,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAEhC,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAM,MAAA,OAAA;AAAA,MACJ,MAAM;AACJ,QAAA,MAAA,CAAO,GAAI,CAAA,aAAA,CAAc,gBAAgB,CAAC,EAAE,iBAAkB,EAAA,CAAA;AAAA,OAChE;AAAA,MACA,EAAE,SAAS,IAAK,EAAA;AAAA,KAClB,CAAA;AAEA,IAAM,MAAA,OAAA;AAAA,MACJ,MAAM;AACJ,QAAA,MAAA,CAAO,IAAI,aAAc,CAAA,gBAAgB,CAAC,CAAA,CAAE,IAAI,iBAAkB,EAAA,CAAA;AAAA,OACpE;AAAA,MACA,EAAE,SAAS,IAAK,EAAA;AAAA,KAClB,CAAA;AAAA,GACF;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"registerDialogTrigger.stories.esm.js","sources":["../src/registerDialogTrigger.stories.tsx"],"sourcesContent":["import { PlasmicCanvasContext } from \"@plasmicapp/host\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, userEvent, waitFor, within } from \"@storybook/test\";\nimport React, { useEffect, useState } from \"react\";\nimport { BaseButton } from \"./registerButton\";\nimport { BaseDialog } from \"./registerDialog\";\nimport { BaseDialogTrigger } from \"./registerDialogTrigger\";\nimport { BaseModal, BaseModalProps } from \"./registerModal\";\nimport { BasePopover, BasePopoverProps } from \"./registerPopover\";\n\nconst meta: Meta<typeof BaseDialogTrigger> = {\n title: \"Components/BaseDialogTrigger\",\n component: BaseDialogTrigger,\n args: {\n defaultOpen: false,\n onOpenChange: fn(),\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof BaseDialogTrigger>;\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst DefaultContent = () => (\n <div data-testid=\"dialog-content\">\n <h2>Dialog Title</h2>\n <p>Dialog content goes here</p>\n </div>\n);\n\nconst DefaultPopoverContent = (props: BasePopoverProps) => (\n <BasePopover {...props}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n);\n\nconst DefaultModalContent = (props: BaseModalProps) => (\n <BaseModal {...props}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BaseModal>\n);\n\nexport const WithModal: Story = {\n args: {\n trigger: <span tabIndex={0}>Open modal</span>, // anything can be used as a trigger\n dialog: (\n <DefaultModalContent\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation\n await userEvent.tab();\n expect(trigger).toHaveFocus();\n\n // Still not open because a click/press is required\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"[Space]\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n // press Escape to dismiss\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\n// Ensures that any custom event handlers on the trigger are called, and any custom props passed to it are passed through.\nexport const TriggerWithCustomEventHandler: Story = {\n args: {\n dialog: (\n <DefaultModalContent\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n parameters: {\n customOnClick: fn(),\n },\n render: (args, { parameters }) => {\n return (\n <BaseDialogTrigger\n {...args}\n trigger={\n <span className=\"custom-class\" onClick={parameters.customOnClick}>\n Open modal\n </span>\n }\n />\n );\n },\n play: async ({ canvasElement, args, parameters }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(trigger).toHaveClass(\"custom-class\");\n\n expect(parameters.customOnClick).toHaveBeenCalledTimes(0);\n await userEvent.click(trigger);\n expect(parameters.customOnClick).toHaveBeenCalledTimes(1);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\n// tests that a trigger that's nested in a div (e.g. a <span>) can trigger open the dialog on click\n// Also tests that either of nested triggers can be made non-triggerable via e.stopPropagation\nexport const WithNestedTrigger: Story = {\n args: {\n dialog: (\n <DefaultModalContent\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n trigger: (\n <div>\n <span tabIndex={0}>Open modal</span>\n <span tabIndex={0} onClick={(e) => e.stopPropagation()}>\n Open modal\n </span>\n <span tabIndex={0}>Open modal</span>\n </div>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const triggers = canvas.getAllByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(triggers[0]);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n // Click again to dismiss\n await userEvent.click(triggers[0]);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n\n await userEvent.click(triggers[1]);\n\n // trigger # 2 stops propagation via e.stopPropagation. So, clicking on trigger # 2 should not open the dialog\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2); // not changed\n\n await userEvent.click(triggers[2]);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n expect(args.onOpenChange).toHaveBeenCalledTimes(3);\n\n await userEvent.keyboard(\"{Escape}\");\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n await userEvent.click(triggers[2]);\n expect(args.onOpenChange).toHaveBeenCalledTimes(5);\n },\n};\n\nexport const WithPopover: Story = {\n args: {\n trigger: <span tabIndex={0}>Open popover</span>, // anything can be used as a trigger\n dialog: <DefaultPopoverContent isKeyboardDismissDisabled={false} />,\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation, press Space to open and Escape to dismiss\n await userEvent.tab();\n await expect(trigger).toHaveFocus();\n await userEvent.keyboard(\"[Space]\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\nexport const WithPopoverNonModal: Story = {\n args: {\n trigger: <span>Open popover</span>, // anything can be used as a trigger\n dialog: (\n <DefaultPopoverContent\n isNonModal={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should NOT close, because the outside can be interacted with without affecting the popover's open state\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\nexport const ControlledDialog: Story = {\n args: {\n trigger: undefined,\n dialog: <DefaultPopoverContent />,\n },\n render: ({ isOpen, dialog }) => {\n const [open, setOpen] = useState(isOpen);\n return (\n <>\n <span onClick={() => setOpen((prev) => !prev)}>Toggle</span>\n <BaseDialogTrigger\n isOpen={open}\n onOpenChange={setOpen}\n dialog={dialog}\n />\n </>\n );\n },\n play: async ({ canvasElement }) => {\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n const canvas = within(canvasElement);\n const trigger = canvas.getByText(\"Toggle\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await trigger.click();\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await trigger.click();\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n },\n};\n\nexport const AriaButtonTrigger: Story = {\n args: {\n dialog: <DefaultModalContent isDismissable={true} />,\n trigger: <BaseButton>Open modal</BaseButton>,\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\nexport const SelectedInCanvas: Story = {\n args: {\n trigger: undefined,\n dialog: <DefaultPopoverContent isKeyboardDismissDisabled={false} />,\n },\n render: ({ __plasmic_selection_prop__, ...args }) => {\n const [selected, setSelected] = useState(false);\n const [selectedSlotName, setSelectedSlotName] = useState(\"\");\n useEffect(() => {\n setTimeout(() => {\n setSelected(true);\n setTimeout(() => {\n // Simulate trigger slot selection in Plasmic canvas\n setSelectedSlotName(\"trigger\");\n }, 1000);\n }, 1000);\n }, []);\n\n return (\n // Simulate Plasmic canvas envirnment\n <PlasmicCanvasContext.Provider\n value={{\n componentName: \"test\",\n globalVariants: {},\n }}\n >\n <BaseDialogTrigger\n // Simulate node selection in Plasmic canvas\n __plasmic_selection_prop__={{\n isSelected: selected,\n selectedSlotName,\n }}\n {...args}\n />\n </PlasmicCanvasContext.Provider>\n );\n },\n play: async () => {\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n },\n { timeout: 1100 }\n );\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n },\n { timeout: 1100 }\n ); // the slot selected is trigger, so the popover should close\n },\n};\n\nexport const PopoverPosition: Story = {\n args: {\n trigger: <span>Open popover</span>, // anything can be used as a trigger\n dialog: <DefaultPopoverContent />,\n },\n render: (args) => {\n const [className, setClassName] = useState<string | undefined>(\"popover\");\n useEffect(() => {\n setTimeout(() => {\n setClassName((prev) => `${prev} popover-right`);\n }, 1000);\n }, []);\n\n return (\n <>\n <style\n dangerouslySetInnerHTML={{\n __html: `\n .popover {\n display: inline-block;\n }\n .popover-right {\n position: absolute;\n right: 0;\n }\n `,\n }}\n />\n <BaseDialogTrigger {...args} className={className} />\n </>\n );\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n let initialPopoverLeftPosition: number;\n\n // Check that tooltip appears\n await waitFor(() => {\n const popover = doc.getByTestId(\"dialog-content\");\n initialPopoverLeftPosition = popover.getBoundingClientRect().left;\n });\n\n await userEvent.click(trigger); // toggle close\n\n await sleep(500);\n await userEvent.click(trigger);\n\n await waitFor(async () => {\n const popover = doc.getByTestId(\"dialog-content\");\n expect(initialPopoverLeftPosition).toEqual(\n popover.getBoundingClientRect().left\n ); // opens again at exactly the same position\n });\n\n await userEvent.click(trigger); // toggle close\n\n await sleep(500);\n await userEvent.click(trigger);\n\n await waitFor(() => {\n const popover = doc.getByTestId(\"dialog-content\");\n expect(initialPopoverLeftPosition).not.toEqual(\n popover.getBoundingClientRect().left\n ); // opens at a different position because the position of the trigger changed\n });\n },\n};\n"],"names":[],"mappings":"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"}
|