@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,9 +1,15 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { DialogTriggerProps } from "react-aria-components";
|
|
3
3
|
import { CodeComponentMetaOverrides, Registerable, WithPlasmicCanvasComponentInfo } from "./utils";
|
|
4
|
+
export interface TriggerWrapperProps {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function TriggerWrapper({ children, className }: TriggerWrapperProps): React.JSX.Element;
|
|
4
9
|
export interface BaseDialogTriggerProps extends Omit<DialogTriggerProps, "children">, WithPlasmicCanvasComponentInfo {
|
|
5
10
|
trigger?: React.ReactNode;
|
|
6
11
|
dialog?: React.ReactNode;
|
|
12
|
+
className?: string;
|
|
7
13
|
}
|
|
8
14
|
export declare function BaseDialogTrigger(props: BaseDialogTriggerProps): React.JSX.Element;
|
|
9
15
|
export declare function registerDialogTrigger(loader?: Registerable, overrides?: CodeComponentMetaOverrides<typeof BaseDialogTrigger>): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plasmicpkgs/react-aria",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.113",
|
|
4
4
|
"description": "Plasmic registration calls for react-aria based components",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -50,7 +50,6 @@
|
|
|
50
50
|
"@react-aria/utils": "^3.24.0",
|
|
51
51
|
"react-aria": "^3.33.0",
|
|
52
52
|
"react-aria-components": "^1.2.0",
|
|
53
|
-
"react-is": "^19.0.0",
|
|
54
53
|
"react-keyed-flatten-children": "^3.0.0",
|
|
55
54
|
"react-stately": "^3.31.0"
|
|
56
55
|
},
|
|
@@ -61,7 +60,6 @@
|
|
|
61
60
|
"@rollup/plugin-node-resolve": "^9.0.0",
|
|
62
61
|
"@types/react": "^18.0.27",
|
|
63
62
|
"@types/react-dom": "^18.0.10",
|
|
64
|
-
"@types/react-is": "^19.0.0",
|
|
65
63
|
"glob": "^8.1.0",
|
|
66
64
|
"react": "^18.2.0",
|
|
67
65
|
"react-dom": "^18.2.0",
|
|
@@ -76,5 +74,5 @@
|
|
|
76
74
|
"publishConfig": {
|
|
77
75
|
"access": "public"
|
|
78
76
|
},
|
|
79
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "426729813db7458ccbaced054ec11ba5ef8ae027"
|
|
80
78
|
}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
var host = require('@plasmicapp/host');
|
|
4
4
|
var React = require('react');
|
|
5
|
+
var reactAria = require('react-aria');
|
|
5
6
|
var reactAriaComponents = require('react-aria-components');
|
|
7
|
+
var common = require('./common-b3b54c72.cjs.js');
|
|
6
8
|
var contexts = require('./contexts-6d0cb2b1.cjs.js');
|
|
7
9
|
var registerButton = require('./registerButton.cjs.js');
|
|
8
10
|
var registerDialog = require('./registerDialog.cjs.js');
|
|
9
11
|
var registerModal = require('./registerModal.cjs.js');
|
|
10
12
|
var utils = require('./utils-7d000fa4.cjs.js');
|
|
11
|
-
require('react-aria');
|
|
12
|
-
require('./common-b3b54c72.cjs.js');
|
|
13
13
|
require('./variant-utils-0ad70db8.cjs.js');
|
|
14
14
|
require('@plasmicapp/host/registerComponent');
|
|
15
15
|
|
|
@@ -48,15 +48,26 @@ var __objRest = (source, exclude) => {
|
|
|
48
48
|
}
|
|
49
49
|
return target;
|
|
50
50
|
};
|
|
51
|
+
function TriggerWrapper({ children, className }) {
|
|
52
|
+
const ref = React__default.default.useRef(null);
|
|
53
|
+
const { buttonProps } = reactAria.useButton({}, ref);
|
|
54
|
+
const mergedProps = reactAria.mergeProps(buttonProps, {
|
|
55
|
+
ref,
|
|
56
|
+
// We expose className to allow user control over the wrapper div's styling.
|
|
57
|
+
className,
|
|
58
|
+
style: common.COMMON_STYLES
|
|
59
|
+
});
|
|
60
|
+
return /* @__PURE__ */ React__default.default.createElement("div", __spreadValues({}, mergedProps), children);
|
|
61
|
+
}
|
|
51
62
|
function BaseDialogTrigger(props) {
|
|
52
63
|
var _b, _c;
|
|
53
|
-
const _a = props, { trigger, dialog, isOpen } = _a, rest = __objRest(_a, ["trigger", "dialog", "isOpen"]);
|
|
64
|
+
const _a = props, { trigger, dialog, isOpen, className } = _a, rest = __objRest(_a, ["trigger", "dialog", "isOpen", "className"]);
|
|
54
65
|
const { isSelected, selectedSlotName } = (_c = (_b = host.usePlasmicCanvasComponentInfo) == null ? void 0 : _b(props)) != null ? _c : {};
|
|
55
66
|
const isAutoOpen = selectedSlotName !== "trigger" && isSelected;
|
|
56
67
|
const mergedProps = __spreadProps(__spreadValues({}, rest), {
|
|
57
68
|
isOpen: isAutoOpen || isOpen
|
|
58
69
|
});
|
|
59
|
-
return /* @__PURE__ */ React__default.default.createElement(contexts.PlasmicDialogTriggerContext.Provider, { value: mergedProps }, /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.DialogTrigger, __spreadValues({}, mergedProps), trigger, dialog));
|
|
70
|
+
return /* @__PURE__ */ React__default.default.createElement(contexts.PlasmicDialogTriggerContext.Provider, { value: mergedProps }, /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.DialogTrigger, __spreadValues({}, mergedProps), trigger && /* @__PURE__ */ React__default.default.createElement(TriggerWrapper, { className }, trigger), dialog));
|
|
60
71
|
}
|
|
61
72
|
function registerDialogTrigger(loader, overrides) {
|
|
62
73
|
utils.registerComponentHelper(
|
|
@@ -67,7 +78,6 @@ function registerDialogTrigger(loader, overrides) {
|
|
|
67
78
|
displayName: "Aria Dialog Trigger",
|
|
68
79
|
importPath: "@plasmicpkgs/react-aria/skinny/registerDialogTrigger",
|
|
69
80
|
importName: "BaseDialogTrigger",
|
|
70
|
-
styleSections: false,
|
|
71
81
|
props: {
|
|
72
82
|
trigger: {
|
|
73
83
|
type: "slot",
|
|
@@ -128,5 +138,6 @@ function registerDialogTrigger(loader, overrides) {
|
|
|
128
138
|
}
|
|
129
139
|
|
|
130
140
|
exports.BaseDialogTrigger = BaseDialogTrigger;
|
|
141
|
+
exports.TriggerWrapper = TriggerWrapper;
|
|
131
142
|
exports.registerDialogTrigger = registerDialogTrigger;
|
|
132
143
|
//# sourceMappingURL=registerDialogTrigger.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerDialogTrigger.cjs.js","sources":["../src/registerDialogTrigger.tsx"],"sourcesContent":["import { usePlasmicCanvasComponentInfo } from \"@plasmicapp/host\";\nimport React from \"react\";\nimport { DialogTrigger, DialogTriggerProps } from \"react-aria-components\";\nimport { PlasmicDialogTriggerContext } from \"./contexts\";\nimport { BUTTON_COMPONENT_NAME } from \"./registerButton\";\nimport { DIALOG_COMPONENT_NAME } from \"./registerDialog\";\nimport {\n MODAL_COMPONENT_NAME,\n MODAL_DEFAULT_SLOT_CONTENT,\n} from \"./registerModal\";\nimport {\n CodeComponentMetaOverrides,\n Registerable,\n WithPlasmicCanvasComponentInfo,\n makeComponentName,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseDialogTriggerProps\n extends Omit<DialogTriggerProps, \"children\">,\n WithPlasmicCanvasComponentInfo {\n trigger?: React.ReactNode;\n dialog?: React.ReactNode;\n}\n\nexport function BaseDialogTrigger(props: BaseDialogTriggerProps) {\n const { trigger, dialog, isOpen, ...rest } = props;\n\n const { isSelected, selectedSlotName } =\n usePlasmicCanvasComponentInfo?.(props) ?? {};\n const isAutoOpen = selectedSlotName !== \"trigger\" && isSelected;\n\n const mergedProps = {\n ...rest,\n isOpen: isAutoOpen || isOpen,\n };\n\n return (\n <PlasmicDialogTriggerContext.Provider value={mergedProps}>\n <DialogTrigger {...mergedProps}>\n {trigger}\n {dialog}\n </DialogTrigger>\n </PlasmicDialogTriggerContext.Provider>\n );\n}\n\nexport function registerDialogTrigger(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseDialogTrigger>\n) {\n registerComponentHelper(\n loader,\n BaseDialogTrigger,\n {\n name: makeComponentName(\"dialogTrigger\"),\n displayName: \"Aria Dialog Trigger\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerDialogTrigger\",\n importName: \"BaseDialogTrigger\",\n
|
|
1
|
+
{"version":3,"file":"registerDialogTrigger.cjs.js","sources":["../src/registerDialogTrigger.tsx"],"sourcesContent":["import { usePlasmicCanvasComponentInfo } from \"@plasmicapp/host\";\nimport React from \"react\";\nimport { mergeProps, useButton } from \"react-aria\";\nimport { DialogTrigger, DialogTriggerProps } from \"react-aria-components\";\nimport { COMMON_STYLES } from \"./common\";\nimport { PlasmicDialogTriggerContext } from \"./contexts\";\nimport { BUTTON_COMPONENT_NAME } from \"./registerButton\";\nimport { DIALOG_COMPONENT_NAME } from \"./registerDialog\";\nimport {\n MODAL_COMPONENT_NAME,\n MODAL_DEFAULT_SLOT_CONTENT,\n} from \"./registerModal\";\nimport {\n CodeComponentMetaOverrides,\n Registerable,\n WithPlasmicCanvasComponentInfo,\n makeComponentName,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface TriggerWrapperProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n/*\n React Aria's DialogTrigger requires a Aria Button as trigger.\n (Aria Button works as a trigger because it uses useButton behind the scenes).\n So we use useButton as well for our custom trigger.\n\n Discussion (React-aria-components DialogTrigger with custom button):\n https://github.com/adobe/react-spectrum/discussions/5119#discussioncomment-7084661\n\n */\nexport function TriggerWrapper({ children, className }: TriggerWrapperProps) {\n const ref = React.useRef<HTMLDivElement | null>(null);\n const { buttonProps } = useButton({}, ref);\n\n const mergedProps = mergeProps(buttonProps, {\n ref,\n // We expose className to allow user control over the wrapper div's styling.\n className,\n style: COMMON_STYLES,\n });\n\n return <div {...mergedProps}>{children}</div>;\n}\n\nexport interface BaseDialogTriggerProps\n extends Omit<DialogTriggerProps, \"children\">,\n WithPlasmicCanvasComponentInfo {\n trigger?: React.ReactNode;\n dialog?: React.ReactNode;\n className?: string;\n}\n\nexport function BaseDialogTrigger(props: BaseDialogTriggerProps) {\n const { trigger, dialog, isOpen, className, ...rest } = props;\n\n const { isSelected, selectedSlotName } =\n usePlasmicCanvasComponentInfo?.(props) ?? {};\n const isAutoOpen = selectedSlotName !== \"trigger\" && isSelected;\n\n const mergedProps = {\n ...rest,\n isOpen: isAutoOpen || isOpen,\n };\n\n return (\n <PlasmicDialogTriggerContext.Provider value={mergedProps}>\n <DialogTrigger {...mergedProps}>\n {trigger && (\n <TriggerWrapper className={className}>{trigger}</TriggerWrapper>\n )}\n {dialog}\n </DialogTrigger>\n </PlasmicDialogTriggerContext.Provider>\n );\n}\n\nexport function registerDialogTrigger(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseDialogTrigger>\n) {\n registerComponentHelper(\n loader,\n BaseDialogTrigger,\n {\n name: makeComponentName(\"dialogTrigger\"),\n displayName: \"Aria Dialog Trigger\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerDialogTrigger\",\n importName: \"BaseDialogTrigger\",\n props: {\n trigger: {\n type: \"slot\",\n mergeWithParent: true,\n defaultValue: {\n type: \"component\",\n name: BUTTON_COMPONENT_NAME,\n props: {\n children: {\n type: \"text\",\n value: \"Open Dialog\",\n },\n },\n },\n },\n dialog: {\n type: \"slot\",\n mergeWithParent: true,\n defaultValue: [\n {\n type: \"component\",\n name: MODAL_COMPONENT_NAME,\n props: {\n children: {\n type: \"component\",\n name: DIALOG_COMPONENT_NAME,\n props: {\n children: MODAL_DEFAULT_SLOT_CONTENT,\n },\n },\n },\n },\n ],\n },\n isOpen: {\n type: \"boolean\",\n defaultValueHint: false,\n editOnly: true,\n uncontrolledProp: \"defaultOpen\",\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n },\n states: {\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["React","useButton","mergeProps","COMMON_STYLES","usePlasmicCanvasComponentInfo","PlasmicDialogTriggerContext","DialogTrigger","registerComponentHelper","makeComponentName","BUTTON_COMPONENT_NAME","MODAL_COMPONENT_NAME","DIALOG_COMPONENT_NAME","MODAL_DEFAULT_SLOT_CONTENT"],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { DialogTriggerProps } from "react-aria-components";
|
|
3
3
|
import { CodeComponentMetaOverrides, Registerable, WithPlasmicCanvasComponentInfo } from "./utils";
|
|
4
|
+
export interface TriggerWrapperProps {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function TriggerWrapper({ children, className }: TriggerWrapperProps): React.JSX.Element;
|
|
4
9
|
export interface BaseDialogTriggerProps extends Omit<DialogTriggerProps, "children">, WithPlasmicCanvasComponentInfo {
|
|
5
10
|
trigger?: React.ReactNode;
|
|
6
11
|
dialog?: React.ReactNode;
|
|
12
|
+
className?: string;
|
|
7
13
|
}
|
|
8
14
|
export declare function BaseDialogTrigger(props: BaseDialogTriggerProps): React.JSX.Element;
|
|
9
15
|
export declare function registerDialogTrigger(loader?: Registerable, overrides?: CodeComponentMetaOverrides<typeof BaseDialogTrigger>): void;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { usePlasmicCanvasComponentInfo } from '@plasmicapp/host';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { useButton, mergeProps } from 'react-aria';
|
|
3
4
|
import { DialogTrigger } from 'react-aria-components';
|
|
5
|
+
import { C as COMMON_STYLES } from './common-ceebbaea.esm.js';
|
|
4
6
|
import { d as PlasmicDialogTriggerContext } from './contexts-5cb81c2f.esm.js';
|
|
5
7
|
import { BUTTON_COMPONENT_NAME } from './registerButton.esm.js';
|
|
6
8
|
import { DIALOG_COMPONENT_NAME } from './registerDialog.esm.js';
|
|
7
9
|
import { MODAL_COMPONENT_NAME, MODAL_DEFAULT_SLOT_CONTENT } from './registerModal.esm.js';
|
|
8
10
|
import { r as registerComponentHelper, m as makeComponentName } from './utils-5d1b4c6b.esm.js';
|
|
9
|
-
import 'react-aria';
|
|
10
|
-
import './common-ceebbaea.esm.js';
|
|
11
11
|
import './variant-utils-4405ebb0.esm.js';
|
|
12
12
|
import '@plasmicapp/host/registerComponent';
|
|
13
13
|
|
|
@@ -42,15 +42,26 @@ var __objRest = (source, exclude) => {
|
|
|
42
42
|
}
|
|
43
43
|
return target;
|
|
44
44
|
};
|
|
45
|
+
function TriggerWrapper({ children, className }) {
|
|
46
|
+
const ref = React.useRef(null);
|
|
47
|
+
const { buttonProps } = useButton({}, ref);
|
|
48
|
+
const mergedProps = mergeProps(buttonProps, {
|
|
49
|
+
ref,
|
|
50
|
+
// We expose className to allow user control over the wrapper div's styling.
|
|
51
|
+
className,
|
|
52
|
+
style: COMMON_STYLES
|
|
53
|
+
});
|
|
54
|
+
return /* @__PURE__ */ React.createElement("div", __spreadValues({}, mergedProps), children);
|
|
55
|
+
}
|
|
45
56
|
function BaseDialogTrigger(props) {
|
|
46
57
|
var _b, _c;
|
|
47
|
-
const _a = props, { trigger, dialog, isOpen } = _a, rest = __objRest(_a, ["trigger", "dialog", "isOpen"]);
|
|
58
|
+
const _a = props, { trigger, dialog, isOpen, className } = _a, rest = __objRest(_a, ["trigger", "dialog", "isOpen", "className"]);
|
|
48
59
|
const { isSelected, selectedSlotName } = (_c = (_b = usePlasmicCanvasComponentInfo) == null ? void 0 : _b(props)) != null ? _c : {};
|
|
49
60
|
const isAutoOpen = selectedSlotName !== "trigger" && isSelected;
|
|
50
61
|
const mergedProps = __spreadProps(__spreadValues({}, rest), {
|
|
51
62
|
isOpen: isAutoOpen || isOpen
|
|
52
63
|
});
|
|
53
|
-
return /* @__PURE__ */ React.createElement(PlasmicDialogTriggerContext.Provider, { value: mergedProps }, /* @__PURE__ */ React.createElement(DialogTrigger, __spreadValues({}, mergedProps), trigger, dialog));
|
|
64
|
+
return /* @__PURE__ */ React.createElement(PlasmicDialogTriggerContext.Provider, { value: mergedProps }, /* @__PURE__ */ React.createElement(DialogTrigger, __spreadValues({}, mergedProps), trigger && /* @__PURE__ */ React.createElement(TriggerWrapper, { className }, trigger), dialog));
|
|
54
65
|
}
|
|
55
66
|
function registerDialogTrigger(loader, overrides) {
|
|
56
67
|
registerComponentHelper(
|
|
@@ -61,7 +72,6 @@ function registerDialogTrigger(loader, overrides) {
|
|
|
61
72
|
displayName: "Aria Dialog Trigger",
|
|
62
73
|
importPath: "@plasmicpkgs/react-aria/skinny/registerDialogTrigger",
|
|
63
74
|
importName: "BaseDialogTrigger",
|
|
64
|
-
styleSections: false,
|
|
65
75
|
props: {
|
|
66
76
|
trigger: {
|
|
67
77
|
type: "slot",
|
|
@@ -121,5 +131,5 @@ function registerDialogTrigger(loader, overrides) {
|
|
|
121
131
|
);
|
|
122
132
|
}
|
|
123
133
|
|
|
124
|
-
export { BaseDialogTrigger, registerDialogTrigger };
|
|
134
|
+
export { BaseDialogTrigger, TriggerWrapper, registerDialogTrigger };
|
|
125
135
|
//# sourceMappingURL=registerDialogTrigger.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerDialogTrigger.esm.js","sources":["../src/registerDialogTrigger.tsx"],"sourcesContent":["import { usePlasmicCanvasComponentInfo } from \"@plasmicapp/host\";\nimport React from \"react\";\nimport { DialogTrigger, DialogTriggerProps } from \"react-aria-components\";\nimport { PlasmicDialogTriggerContext } from \"./contexts\";\nimport { BUTTON_COMPONENT_NAME } from \"./registerButton\";\nimport { DIALOG_COMPONENT_NAME } from \"./registerDialog\";\nimport {\n MODAL_COMPONENT_NAME,\n MODAL_DEFAULT_SLOT_CONTENT,\n} from \"./registerModal\";\nimport {\n CodeComponentMetaOverrides,\n Registerable,\n WithPlasmicCanvasComponentInfo,\n makeComponentName,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseDialogTriggerProps\n extends Omit<DialogTriggerProps, \"children\">,\n WithPlasmicCanvasComponentInfo {\n trigger?: React.ReactNode;\n dialog?: React.ReactNode;\n}\n\nexport function BaseDialogTrigger(props: BaseDialogTriggerProps) {\n const { trigger, dialog, isOpen, ...rest } = props;\n\n const { isSelected, selectedSlotName } =\n usePlasmicCanvasComponentInfo?.(props) ?? {};\n const isAutoOpen = selectedSlotName !== \"trigger\" && isSelected;\n\n const mergedProps = {\n ...rest,\n isOpen: isAutoOpen || isOpen,\n };\n\n return (\n <PlasmicDialogTriggerContext.Provider value={mergedProps}>\n <DialogTrigger {...mergedProps}>\n {trigger}\n {dialog}\n </DialogTrigger>\n </PlasmicDialogTriggerContext.Provider>\n );\n}\n\nexport function registerDialogTrigger(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseDialogTrigger>\n) {\n registerComponentHelper(\n loader,\n BaseDialogTrigger,\n {\n name: makeComponentName(\"dialogTrigger\"),\n displayName: \"Aria Dialog Trigger\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerDialogTrigger\",\n importName: \"BaseDialogTrigger\",\n
|
|
1
|
+
{"version":3,"file":"registerDialogTrigger.esm.js","sources":["../src/registerDialogTrigger.tsx"],"sourcesContent":["import { usePlasmicCanvasComponentInfo } from \"@plasmicapp/host\";\nimport React from \"react\";\nimport { mergeProps, useButton } from \"react-aria\";\nimport { DialogTrigger, DialogTriggerProps } from \"react-aria-components\";\nimport { COMMON_STYLES } from \"./common\";\nimport { PlasmicDialogTriggerContext } from \"./contexts\";\nimport { BUTTON_COMPONENT_NAME } from \"./registerButton\";\nimport { DIALOG_COMPONENT_NAME } from \"./registerDialog\";\nimport {\n MODAL_COMPONENT_NAME,\n MODAL_DEFAULT_SLOT_CONTENT,\n} from \"./registerModal\";\nimport {\n CodeComponentMetaOverrides,\n Registerable,\n WithPlasmicCanvasComponentInfo,\n makeComponentName,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface TriggerWrapperProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n/*\n React Aria's DialogTrigger requires a Aria Button as trigger.\n (Aria Button works as a trigger because it uses useButton behind the scenes).\n So we use useButton as well for our custom trigger.\n\n Discussion (React-aria-components DialogTrigger with custom button):\n https://github.com/adobe/react-spectrum/discussions/5119#discussioncomment-7084661\n\n */\nexport function TriggerWrapper({ children, className }: TriggerWrapperProps) {\n const ref = React.useRef<HTMLDivElement | null>(null);\n const { buttonProps } = useButton({}, ref);\n\n const mergedProps = mergeProps(buttonProps, {\n ref,\n // We expose className to allow user control over the wrapper div's styling.\n className,\n style: COMMON_STYLES,\n });\n\n return <div {...mergedProps}>{children}</div>;\n}\n\nexport interface BaseDialogTriggerProps\n extends Omit<DialogTriggerProps, \"children\">,\n WithPlasmicCanvasComponentInfo {\n trigger?: React.ReactNode;\n dialog?: React.ReactNode;\n className?: string;\n}\n\nexport function BaseDialogTrigger(props: BaseDialogTriggerProps) {\n const { trigger, dialog, isOpen, className, ...rest } = props;\n\n const { isSelected, selectedSlotName } =\n usePlasmicCanvasComponentInfo?.(props) ?? {};\n const isAutoOpen = selectedSlotName !== \"trigger\" && isSelected;\n\n const mergedProps = {\n ...rest,\n isOpen: isAutoOpen || isOpen,\n };\n\n return (\n <PlasmicDialogTriggerContext.Provider value={mergedProps}>\n <DialogTrigger {...mergedProps}>\n {trigger && (\n <TriggerWrapper className={className}>{trigger}</TriggerWrapper>\n )}\n {dialog}\n </DialogTrigger>\n </PlasmicDialogTriggerContext.Provider>\n );\n}\n\nexport function registerDialogTrigger(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseDialogTrigger>\n) {\n registerComponentHelper(\n loader,\n BaseDialogTrigger,\n {\n name: makeComponentName(\"dialogTrigger\"),\n displayName: \"Aria Dialog Trigger\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerDialogTrigger\",\n importName: \"BaseDialogTrigger\",\n props: {\n trigger: {\n type: \"slot\",\n mergeWithParent: true,\n defaultValue: {\n type: \"component\",\n name: BUTTON_COMPONENT_NAME,\n props: {\n children: {\n type: \"text\",\n value: \"Open Dialog\",\n },\n },\n },\n },\n dialog: {\n type: \"slot\",\n mergeWithParent: true,\n defaultValue: [\n {\n type: \"component\",\n name: MODAL_COMPONENT_NAME,\n props: {\n children: {\n type: \"component\",\n name: DIALOG_COMPONENT_NAME,\n props: {\n children: MODAL_DEFAULT_SLOT_CONTENT,\n },\n },\n },\n },\n ],\n },\n isOpen: {\n type: \"boolean\",\n defaultValueHint: false,\n editOnly: true,\n uncontrolledProp: \"defaultOpen\",\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n },\n states: {\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
24
24
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
25
25
|
|
|
26
26
|
var __defProp = Object.defineProperty;
|
|
27
|
+
var __defProps = Object.defineProperties;
|
|
28
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
27
29
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
28
30
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
29
31
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -39,6 +41,7 @@ var __spreadValues = (a, b) => {
|
|
|
39
41
|
}
|
|
40
42
|
return a;
|
|
41
43
|
};
|
|
44
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
42
45
|
var __objRest = (source, exclude) => {
|
|
43
46
|
var target = {};
|
|
44
47
|
for (var prop in source)
|
|
@@ -59,20 +62,30 @@ const meta = {
|
|
|
59
62
|
onOpenChange: test.fn()
|
|
60
63
|
}
|
|
61
64
|
};
|
|
65
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
62
66
|
const DefaultContent = () => /* @__PURE__ */ React__default.default.createElement("div", { "data-testid": "dialog-content" }, /* @__PURE__ */ React__default.default.createElement("h2", null, "Dialog Title"), /* @__PURE__ */ React__default.default.createElement("p", null, "Dialog content goes here"));
|
|
67
|
+
const DefaultPopoverContent = (props) => /* @__PURE__ */ React__default.default.createElement(registerPopover.BasePopover, __spreadValues({}, props), /* @__PURE__ */ React__default.default.createElement(registerDialog.BaseDialog, null, /* @__PURE__ */ React__default.default.createElement(DefaultContent, null)));
|
|
68
|
+
const DefaultModalContent = (props) => /* @__PURE__ */ React__default.default.createElement(registerModal.BaseModal, __spreadValues({}, props), /* @__PURE__ */ React__default.default.createElement(registerDialog.BaseDialog, null, /* @__PURE__ */ React__default.default.createElement(DefaultContent, null)));
|
|
63
69
|
const WithModal = {
|
|
64
70
|
args: {
|
|
65
|
-
trigger: /* @__PURE__ */ React__default.default.createElement(
|
|
66
|
-
|
|
71
|
+
trigger: /* @__PURE__ */ React__default.default.createElement("span", { tabIndex: 0 }, "Open modal"),
|
|
72
|
+
// anything can be used as a trigger
|
|
73
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(
|
|
74
|
+
DefaultModalContent,
|
|
75
|
+
{
|
|
76
|
+
isDismissable: true,
|
|
77
|
+
isKeyboardDismissDisabled: false
|
|
78
|
+
}
|
|
79
|
+
)
|
|
67
80
|
},
|
|
68
81
|
play: async ({ canvasElement, args }) => {
|
|
69
82
|
const canvas = test.within(canvasElement);
|
|
70
83
|
const doc = test.within(document.body);
|
|
71
|
-
const
|
|
84
|
+
const trigger = canvas.getByText("Open modal");
|
|
72
85
|
await test.waitFor(() => {
|
|
73
86
|
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
74
87
|
});
|
|
75
|
-
await test.userEvent.click(
|
|
88
|
+
await test.userEvent.click(trigger);
|
|
76
89
|
await test.waitFor(() => {
|
|
77
90
|
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
78
91
|
});
|
|
@@ -80,7 +93,12 @@ const WithModal = {
|
|
|
80
93
|
await test.waitFor(() => {
|
|
81
94
|
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
82
95
|
});
|
|
83
|
-
await test.userEvent.
|
|
96
|
+
await test.userEvent.tab();
|
|
97
|
+
test.expect(trigger).toHaveFocus();
|
|
98
|
+
await test.waitFor(() => {
|
|
99
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
100
|
+
});
|
|
101
|
+
await test.userEvent.keyboard("[Space]");
|
|
84
102
|
await test.waitFor(() => {
|
|
85
103
|
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
86
104
|
});
|
|
@@ -91,19 +109,105 @@ const WithModal = {
|
|
|
91
109
|
test.expect(args.onOpenChange).toHaveBeenCalledTimes(4);
|
|
92
110
|
}
|
|
93
111
|
};
|
|
112
|
+
const TriggerWithCustomEventHandler = {
|
|
113
|
+
args: {
|
|
114
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(
|
|
115
|
+
DefaultModalContent,
|
|
116
|
+
{
|
|
117
|
+
isDismissable: true,
|
|
118
|
+
isKeyboardDismissDisabled: false
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
},
|
|
122
|
+
parameters: {
|
|
123
|
+
customOnClick: test.fn()
|
|
124
|
+
},
|
|
125
|
+
render: (args, { parameters }) => {
|
|
126
|
+
return /* @__PURE__ */ React__default.default.createElement(
|
|
127
|
+
registerDialogTrigger.BaseDialogTrigger,
|
|
128
|
+
__spreadProps(__spreadValues({}, args), {
|
|
129
|
+
trigger: /* @__PURE__ */ React__default.default.createElement("span", { className: "custom-class", onClick: parameters.customOnClick }, "Open modal")
|
|
130
|
+
})
|
|
131
|
+
);
|
|
132
|
+
},
|
|
133
|
+
play: async ({ canvasElement, args, parameters }) => {
|
|
134
|
+
const canvas = test.within(canvasElement);
|
|
135
|
+
const doc = test.within(document.body);
|
|
136
|
+
const trigger = canvas.getByText("Open modal");
|
|
137
|
+
await test.waitFor(() => {
|
|
138
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
139
|
+
});
|
|
140
|
+
test.expect(trigger).toHaveClass("custom-class");
|
|
141
|
+
test.expect(parameters.customOnClick).toHaveBeenCalledTimes(0);
|
|
142
|
+
await test.userEvent.click(trigger);
|
|
143
|
+
test.expect(parameters.customOnClick).toHaveBeenCalledTimes(1);
|
|
144
|
+
await test.waitFor(() => {
|
|
145
|
+
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
146
|
+
});
|
|
147
|
+
await test.userEvent.click(document.body);
|
|
148
|
+
await test.waitFor(() => {
|
|
149
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
150
|
+
});
|
|
151
|
+
test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const WithNestedTrigger = {
|
|
155
|
+
args: {
|
|
156
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(
|
|
157
|
+
DefaultModalContent,
|
|
158
|
+
{
|
|
159
|
+
isDismissable: true,
|
|
160
|
+
isKeyboardDismissDisabled: false
|
|
161
|
+
}
|
|
162
|
+
),
|
|
163
|
+
trigger: /* @__PURE__ */ React__default.default.createElement("div", null, /* @__PURE__ */ React__default.default.createElement("span", { tabIndex: 0 }, "Open modal"), /* @__PURE__ */ React__default.default.createElement("span", { tabIndex: 0, onClick: (e) => e.stopPropagation() }, "Open modal"), /* @__PURE__ */ React__default.default.createElement("span", { tabIndex: 0 }, "Open modal"))
|
|
164
|
+
},
|
|
165
|
+
play: async ({ canvasElement, args }) => {
|
|
166
|
+
const canvas = test.within(canvasElement);
|
|
167
|
+
const doc = test.within(document.body);
|
|
168
|
+
const triggers = canvas.getAllByText("Open modal");
|
|
169
|
+
await test.waitFor(() => {
|
|
170
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
171
|
+
});
|
|
172
|
+
await test.userEvent.click(triggers[0]);
|
|
173
|
+
await test.waitFor(() => {
|
|
174
|
+
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
175
|
+
});
|
|
176
|
+
await test.userEvent.click(triggers[0]);
|
|
177
|
+
await test.waitFor(() => {
|
|
178
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
179
|
+
});
|
|
180
|
+
test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
181
|
+
await test.userEvent.click(triggers[1]);
|
|
182
|
+
await test.waitFor(() => {
|
|
183
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
184
|
+
});
|
|
185
|
+
test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
186
|
+
await test.userEvent.click(triggers[2]);
|
|
187
|
+
await test.waitFor(() => {
|
|
188
|
+
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
189
|
+
});
|
|
190
|
+
test.expect(args.onOpenChange).toHaveBeenCalledTimes(3);
|
|
191
|
+
await test.userEvent.keyboard("{Escape}");
|
|
192
|
+
test.expect(args.onOpenChange).toHaveBeenCalledTimes(4);
|
|
193
|
+
await test.userEvent.click(triggers[2]);
|
|
194
|
+
test.expect(args.onOpenChange).toHaveBeenCalledTimes(5);
|
|
195
|
+
}
|
|
196
|
+
};
|
|
94
197
|
const WithPopover = {
|
|
95
198
|
args: {
|
|
96
|
-
trigger: /* @__PURE__ */ React__default.default.createElement(
|
|
97
|
-
|
|
199
|
+
trigger: /* @__PURE__ */ React__default.default.createElement("span", { tabIndex: 0 }, "Open popover"),
|
|
200
|
+
// anything can be used as a trigger
|
|
201
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, { isKeyboardDismissDisabled: false })
|
|
98
202
|
},
|
|
99
203
|
play: async ({ canvasElement, args }) => {
|
|
100
204
|
const canvas = test.within(canvasElement);
|
|
101
205
|
const doc = test.within(document.body);
|
|
102
|
-
const
|
|
206
|
+
const trigger = canvas.getByText("Open popover");
|
|
103
207
|
await test.waitFor(() => {
|
|
104
208
|
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
105
209
|
});
|
|
106
|
-
await test.userEvent.click(
|
|
210
|
+
await test.userEvent.click(trigger);
|
|
107
211
|
await test.waitFor(() => {
|
|
108
212
|
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
109
213
|
});
|
|
@@ -111,7 +215,9 @@ const WithPopover = {
|
|
|
111
215
|
await test.waitFor(() => {
|
|
112
216
|
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
113
217
|
});
|
|
114
|
-
await test.userEvent.
|
|
218
|
+
await test.userEvent.tab();
|
|
219
|
+
await test.expect(trigger).toHaveFocus();
|
|
220
|
+
await test.userEvent.keyboard("[Space]");
|
|
115
221
|
await test.waitFor(() => {
|
|
116
222
|
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
117
223
|
});
|
|
@@ -124,17 +230,24 @@ const WithPopover = {
|
|
|
124
230
|
};
|
|
125
231
|
const WithPopoverNonModal = {
|
|
126
232
|
args: {
|
|
127
|
-
trigger: /* @__PURE__ */ React__default.default.createElement(
|
|
128
|
-
|
|
233
|
+
trigger: /* @__PURE__ */ React__default.default.createElement("span", null, "Open popover"),
|
|
234
|
+
// anything can be used as a trigger
|
|
235
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(
|
|
236
|
+
DefaultPopoverContent,
|
|
237
|
+
{
|
|
238
|
+
isNonModal: true,
|
|
239
|
+
isKeyboardDismissDisabled: false
|
|
240
|
+
}
|
|
241
|
+
)
|
|
129
242
|
},
|
|
130
243
|
play: async ({ canvasElement, args }) => {
|
|
131
244
|
const canvas = test.within(canvasElement);
|
|
132
245
|
const doc = test.within(document.body);
|
|
133
|
-
const
|
|
246
|
+
const trigger = canvas.getByText("Open popover");
|
|
134
247
|
await test.waitFor(() => {
|
|
135
248
|
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
136
249
|
});
|
|
137
|
-
await test.userEvent.click(
|
|
250
|
+
await test.userEvent.click(trigger);
|
|
138
251
|
await test.waitFor(() => {
|
|
139
252
|
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
140
253
|
});
|
|
@@ -149,10 +262,66 @@ const WithPopoverNonModal = {
|
|
|
149
262
|
test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
150
263
|
}
|
|
151
264
|
};
|
|
265
|
+
const ControlledDialog = {
|
|
266
|
+
args: {
|
|
267
|
+
trigger: void 0,
|
|
268
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, null)
|
|
269
|
+
},
|
|
270
|
+
render: ({ isOpen, dialog }) => {
|
|
271
|
+
const [open, setOpen] = React.useState(isOpen);
|
|
272
|
+
return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement("span", { onClick: () => setOpen((prev) => !prev) }, "Toggle"), /* @__PURE__ */ React__default.default.createElement(
|
|
273
|
+
registerDialogTrigger.BaseDialogTrigger,
|
|
274
|
+
{
|
|
275
|
+
isOpen: open,
|
|
276
|
+
onOpenChange: setOpen,
|
|
277
|
+
dialog
|
|
278
|
+
}
|
|
279
|
+
));
|
|
280
|
+
},
|
|
281
|
+
play: async ({ canvasElement }) => {
|
|
282
|
+
const doc = test.within(document.body);
|
|
283
|
+
const canvas = test.within(canvasElement);
|
|
284
|
+
const trigger = canvas.getByText("Toggle");
|
|
285
|
+
await test.waitFor(() => {
|
|
286
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
287
|
+
});
|
|
288
|
+
await trigger.click();
|
|
289
|
+
await test.waitFor(() => {
|
|
290
|
+
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
291
|
+
});
|
|
292
|
+
await trigger.click();
|
|
293
|
+
await test.waitFor(() => {
|
|
294
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
const AriaButtonTrigger = {
|
|
299
|
+
args: {
|
|
300
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(DefaultModalContent, { isDismissable: true }),
|
|
301
|
+
trigger: /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, null, "Open modal")
|
|
302
|
+
},
|
|
303
|
+
play: async ({ canvasElement, args }) => {
|
|
304
|
+
const canvas = test.within(canvasElement);
|
|
305
|
+
const doc = test.within(document.body);
|
|
306
|
+
const trigger = canvas.getByText("Open modal");
|
|
307
|
+
await test.waitFor(() => {
|
|
308
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
309
|
+
});
|
|
310
|
+
await test.userEvent.click(trigger);
|
|
311
|
+
await test.waitFor(() => {
|
|
312
|
+
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
313
|
+
});
|
|
314
|
+
await test.userEvent.click(document.body);
|
|
315
|
+
await test.waitFor(() => {
|
|
316
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
317
|
+
});
|
|
318
|
+
test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
319
|
+
}
|
|
320
|
+
};
|
|
152
321
|
const SelectedInCanvas = {
|
|
153
322
|
args: {
|
|
154
|
-
trigger:
|
|
155
|
-
dialog: /* @__PURE__ */ React__default.default.createElement(
|
|
323
|
+
trigger: void 0,
|
|
324
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, { isKeyboardDismissDisabled: false })
|
|
156
325
|
},
|
|
157
326
|
render: (_a) => {
|
|
158
327
|
var _b = _a, args = __objRest(_b, ["__plasmic_selection_prop__"]);
|
|
@@ -207,9 +376,77 @@ const SelectedInCanvas = {
|
|
|
207
376
|
);
|
|
208
377
|
}
|
|
209
378
|
};
|
|
379
|
+
const PopoverPosition = {
|
|
380
|
+
args: {
|
|
381
|
+
trigger: /* @__PURE__ */ React__default.default.createElement("span", null, "Open popover"),
|
|
382
|
+
// anything can be used as a trigger
|
|
383
|
+
dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, null)
|
|
384
|
+
},
|
|
385
|
+
render: (args) => {
|
|
386
|
+
const [className, setClassName] = React.useState("popover");
|
|
387
|
+
React.useEffect(() => {
|
|
388
|
+
setTimeout(() => {
|
|
389
|
+
setClassName((prev) => `${prev} popover-right`);
|
|
390
|
+
}, 1e3);
|
|
391
|
+
}, []);
|
|
392
|
+
return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement(
|
|
393
|
+
"style",
|
|
394
|
+
{
|
|
395
|
+
dangerouslySetInnerHTML: {
|
|
396
|
+
__html: `
|
|
397
|
+
.popover {
|
|
398
|
+
display: inline-block;
|
|
399
|
+
}
|
|
400
|
+
.popover-right {
|
|
401
|
+
position: absolute;
|
|
402
|
+
right: 0;
|
|
403
|
+
}
|
|
404
|
+
`
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
), /* @__PURE__ */ React__default.default.createElement(registerDialogTrigger.BaseDialogTrigger, __spreadProps(__spreadValues({}, args), { className })));
|
|
408
|
+
},
|
|
409
|
+
play: async ({ canvasElement }) => {
|
|
410
|
+
const canvas = test.within(canvasElement);
|
|
411
|
+
const doc = test.within(document.body);
|
|
412
|
+
const trigger = canvas.getByText("Open popover");
|
|
413
|
+
await test.waitFor(() => {
|
|
414
|
+
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
415
|
+
});
|
|
416
|
+
await test.userEvent.click(trigger);
|
|
417
|
+
let initialPopoverLeftPosition;
|
|
418
|
+
await test.waitFor(() => {
|
|
419
|
+
const popover = doc.getByTestId("dialog-content");
|
|
420
|
+
initialPopoverLeftPosition = popover.getBoundingClientRect().left;
|
|
421
|
+
});
|
|
422
|
+
await test.userEvent.click(trigger);
|
|
423
|
+
await sleep(500);
|
|
424
|
+
await test.userEvent.click(trigger);
|
|
425
|
+
await test.waitFor(async () => {
|
|
426
|
+
const popover = doc.getByTestId("dialog-content");
|
|
427
|
+
test.expect(initialPopoverLeftPosition).toEqual(
|
|
428
|
+
popover.getBoundingClientRect().left
|
|
429
|
+
);
|
|
430
|
+
});
|
|
431
|
+
await test.userEvent.click(trigger);
|
|
432
|
+
await sleep(500);
|
|
433
|
+
await test.userEvent.click(trigger);
|
|
434
|
+
await test.waitFor(() => {
|
|
435
|
+
const popover = doc.getByTestId("dialog-content");
|
|
436
|
+
test.expect(initialPopoverLeftPosition).not.toEqual(
|
|
437
|
+
popover.getBoundingClientRect().left
|
|
438
|
+
);
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
};
|
|
210
442
|
|
|
443
|
+
exports.AriaButtonTrigger = AriaButtonTrigger;
|
|
444
|
+
exports.ControlledDialog = ControlledDialog;
|
|
445
|
+
exports.PopoverPosition = PopoverPosition;
|
|
211
446
|
exports.SelectedInCanvas = SelectedInCanvas;
|
|
447
|
+
exports.TriggerWithCustomEventHandler = TriggerWithCustomEventHandler;
|
|
212
448
|
exports.WithModal = WithModal;
|
|
449
|
+
exports.WithNestedTrigger = WithNestedTrigger;
|
|
213
450
|
exports.WithPopover = WithPopover;
|
|
214
451
|
exports.WithPopoverNonModal = WithPopoverNonModal;
|
|
215
452
|
exports.default = meta;
|