@plasmicpkgs/react-aria 0.0.112 → 0.0.114

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.
Files changed (122) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/react-aria.esm.js +60 -27
  3. package/dist/react-aria.esm.js.map +1 -1
  4. package/dist/react-aria.js +59 -26
  5. package/dist/react-aria.js.map +1 -1
  6. package/dist/registerDialogTrigger.d.ts +6 -0
  7. package/dist/utils.d.ts +19 -2
  8. package/package.json +2 -4
  9. package/skinny/{common-ceebbaea.esm.js → common-10d1b069.esm.js} +2 -2
  10. package/skinny/{common-ceebbaea.esm.js.map → common-10d1b069.esm.js.map} +1 -1
  11. package/skinny/{common-b3b54c72.cjs.js → common-c8beb360.cjs.js} +2 -2
  12. package/skinny/{common-b3b54c72.cjs.js.map → common-c8beb360.cjs.js.map} +1 -1
  13. package/skinny/registerButton.cjs.js +2 -2
  14. package/skinny/registerButton.esm.js +2 -2
  15. package/skinny/registerButton.stories.cjs.js +2 -2
  16. package/skinny/registerButton.stories.esm.js +2 -2
  17. package/skinny/registerCheckbox.cjs.js +2 -2
  18. package/skinny/registerCheckbox.esm.js +2 -2
  19. package/skinny/registerCheckboxGroup.cjs.js +2 -2
  20. package/skinny/registerCheckboxGroup.esm.js +2 -2
  21. package/skinny/registerCheckboxGroup.stories.cjs.js +2 -2
  22. package/skinny/registerCheckboxGroup.stories.esm.js +2 -2
  23. package/skinny/registerComboBox.cjs.js +3 -3
  24. package/skinny/registerComboBox.esm.js +3 -3
  25. package/skinny/registerComboBox.stories.cjs.js +3 -3
  26. package/skinny/registerComboBox.stories.esm.js +3 -3
  27. package/skinny/registerDescription.cjs.js +2 -2
  28. package/skinny/registerDescription.esm.js +2 -2
  29. package/skinny/registerDialog.cjs.js +2 -2
  30. package/skinny/registerDialog.esm.js +2 -2
  31. package/skinny/registerDialogTrigger.cjs.js +24 -11
  32. package/skinny/registerDialogTrigger.cjs.js.map +1 -1
  33. package/skinny/registerDialogTrigger.d.ts +6 -0
  34. package/skinny/registerDialogTrigger.esm.js +24 -12
  35. package/skinny/registerDialogTrigger.esm.js.map +1 -1
  36. package/skinny/registerDialogTrigger.stories.cjs.js +260 -18
  37. package/skinny/registerDialogTrigger.stories.cjs.js.map +1 -1
  38. package/skinny/registerDialogTrigger.stories.esm.js +257 -20
  39. package/skinny/registerDialogTrigger.stories.esm.js.map +1 -1
  40. package/skinny/registerFieldError.cjs.js +1 -1
  41. package/skinny/registerFieldError.esm.js +1 -1
  42. package/skinny/registerForm.cjs.js +1 -1
  43. package/skinny/registerForm.esm.js +1 -1
  44. package/skinny/registerHeading.cjs.js +2 -2
  45. package/skinny/registerHeading.esm.js +2 -2
  46. package/skinny/registerInput.cjs.js +2 -2
  47. package/skinny/registerInput.esm.js +2 -2
  48. package/skinny/registerLabel.cjs.js +2 -2
  49. package/skinny/registerLabel.esm.js +2 -2
  50. package/skinny/{registerListBox-a99736df.cjs.js → registerListBox-87d0e61a.cjs.js} +3 -3
  51. package/skinny/{registerListBox-a99736df.cjs.js.map → registerListBox-87d0e61a.cjs.js.map} +1 -1
  52. package/skinny/{registerListBox-49626f55.esm.js → registerListBox-a5fd72be.esm.js} +3 -3
  53. package/skinny/{registerListBox-49626f55.esm.js.map → registerListBox-a5fd72be.esm.js.map} +1 -1
  54. package/skinny/registerListBox.cjs.js +3 -3
  55. package/skinny/registerListBox.esm.js +3 -3
  56. package/skinny/registerListBoxItem.cjs.js +2 -2
  57. package/skinny/registerListBoxItem.esm.js +2 -2
  58. package/skinny/registerListbox.stories.cjs.js +3 -3
  59. package/skinny/registerListbox.stories.esm.js +3 -3
  60. package/skinny/registerModal.cjs.js +18 -14
  61. package/skinny/registerModal.cjs.js.map +1 -1
  62. package/skinny/registerModal.esm.js +19 -15
  63. package/skinny/registerModal.esm.js.map +1 -1
  64. package/skinny/registerModal.stories.cjs.js +2 -2
  65. package/skinny/registerModal.stories.esm.js +2 -2
  66. package/skinny/registerOverlayArrow.cjs.js +2 -2
  67. package/skinny/registerOverlayArrow.esm.js +2 -2
  68. package/skinny/registerPopover.cjs.js +2 -2
  69. package/skinny/registerPopover.esm.js +2 -2
  70. package/skinny/registerPopover.stories.cjs.js +2 -2
  71. package/skinny/registerPopover.stories.esm.js +2 -2
  72. package/skinny/registerRadio.cjs.js +2 -2
  73. package/skinny/registerRadio.esm.js +2 -2
  74. package/skinny/registerRadioGroup.cjs.js +2 -2
  75. package/skinny/registerRadioGroup.esm.js +2 -2
  76. package/skinny/registerRadioGroup.stories.cjs.js +2 -2
  77. package/skinny/registerRadioGroup.stories.esm.js +2 -2
  78. package/skinny/registerSection.cjs.js +3 -3
  79. package/skinny/registerSection.esm.js +3 -3
  80. package/skinny/registerSelect.cjs.js +3 -3
  81. package/skinny/registerSelect.esm.js +3 -3
  82. package/skinny/registerSelect.stories.cjs.js +3 -3
  83. package/skinny/registerSelect.stories.esm.js +3 -3
  84. package/skinny/registerSlider.cjs.js +2 -2
  85. package/skinny/registerSlider.esm.js +2 -2
  86. package/skinny/registerSlider.stories.cjs.js +2 -2
  87. package/skinny/registerSlider.stories.esm.js +2 -2
  88. package/skinny/registerSliderOutput.cjs.js +2 -2
  89. package/skinny/registerSliderOutput.esm.js +2 -2
  90. package/skinny/registerSliderThumb.cjs.js +2 -2
  91. package/skinny/registerSliderThumb.esm.js +2 -2
  92. package/skinny/registerSliderTrack.cjs.js +2 -2
  93. package/skinny/registerSliderTrack.esm.js +2 -2
  94. package/skinny/registerSwitch.cjs.js +2 -2
  95. package/skinny/registerSwitch.esm.js +2 -2
  96. package/skinny/registerSwitch.stories.cjs.js +2 -2
  97. package/skinny/registerSwitch.stories.esm.js +2 -2
  98. package/skinny/registerText.cjs.js +2 -2
  99. package/skinny/registerText.esm.js +2 -2
  100. package/skinny/registerTextArea.cjs.js +2 -2
  101. package/skinny/registerTextArea.esm.js +2 -2
  102. package/skinny/registerTextField-common-stories.cjs.js +2 -2
  103. package/skinny/registerTextField-common-stories.esm.js +2 -2
  104. package/skinny/registerTextField-input.stories.cjs.js +2 -2
  105. package/skinny/registerTextField-input.stories.esm.js +2 -2
  106. package/skinny/registerTextField-textarea.stories.cjs.js +2 -2
  107. package/skinny/registerTextField-textarea.stories.esm.js +2 -2
  108. package/skinny/registerTextField.cjs.js +2 -2
  109. package/skinny/registerTextField.esm.js +2 -2
  110. package/skinny/registerTooltip.cjs.js +12 -10
  111. package/skinny/registerTooltip.cjs.js.map +1 -1
  112. package/skinny/registerTooltip.esm.js +12 -10
  113. package/skinny/registerTooltip.esm.js.map +1 -1
  114. package/skinny/registerTooltip.stories.cjs.js +2 -2
  115. package/skinny/registerTooltip.stories.esm.js +2 -2
  116. package/skinny/{utils-5d1b4c6b.esm.js → utils-59f72eb9.esm.js} +17 -2
  117. package/skinny/utils-59f72eb9.esm.js.map +1 -0
  118. package/skinny/{utils-7d000fa4.cjs.js → utils-91eee672.cjs.js} +17 -1
  119. package/skinny/utils-91eee672.cjs.js.map +1 -0
  120. package/skinny/utils.d.ts +19 -2
  121. package/skinny/utils-5d1b4c6b.esm.js.map +0 -1
  122. package/skinny/utils-7d000fa4.cjs.js.map +0 -1
@@ -3,8 +3,8 @@
3
3
  var host = require('@plasmicapp/host');
4
4
  var React = require('react');
5
5
  var reactAriaComponents = require('react-aria-components');
6
- var common = require('./common-b3b54c72.cjs.js');
7
- var utils = require('./utils-7d000fa4.cjs.js');
6
+ var common = require('./common-c8beb360.cjs.js');
7
+ var utils = require('./utils-91eee672.cjs.js');
8
8
  require('@plasmicapp/host/registerComponent');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -1,8 +1,8 @@
1
1
  import { usePlasmicCanvasContext } from '@plasmicapp/host';
2
2
  import React from 'react';
3
3
  import { Dialog } from 'react-aria-components';
4
- import { C as COMMON_STYLES } from './common-ceebbaea.esm.js';
5
- import { m as makeComponentName, r as registerComponentHelper } from './utils-5d1b4c6b.esm.js';
4
+ import { C as COMMON_STYLES } from './common-10d1b069.esm.js';
5
+ import { m as makeComponentName, r as registerComponentHelper } from './utils-59f72eb9.esm.js';
6
6
  import '@plasmicapp/host/registerComponent';
7
7
 
8
8
  function BaseDialog({ children, className }) {
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var host = require('@plasmicapp/host');
4
3
  var React = require('react');
4
+ var reactAria = require('react-aria');
5
5
  var reactAriaComponents = require('react-aria-components');
6
+ var common = require('./common-c8beb360.cjs.js');
6
7
  var contexts = require('./contexts-6d0cb2b1.cjs.js');
7
8
  var registerButton = require('./registerButton.cjs.js');
8
9
  var registerDialog = require('./registerDialog.cjs.js');
9
10
  var registerModal = require('./registerModal.cjs.js');
10
- var utils = require('./utils-7d000fa4.cjs.js');
11
- require('react-aria');
12
- require('./common-b3b54c72.cjs.js');
11
+ var utils = require('./utils-91eee672.cjs.js');
12
+ require('@plasmicapp/host');
13
13
  require('./variant-utils-0ad70db8.cjs.js');
14
14
  require('@plasmicapp/host/registerComponent');
15
15
 
@@ -48,15 +48,28 @@ 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
- var _b, _c;
53
- const _a = props, { trigger, dialog, isOpen } = _a, rest = __objRest(_a, ["trigger", "dialog", "isOpen"]);
54
- const { isSelected, selectedSlotName } = (_c = (_b = host.usePlasmicCanvasComponentInfo) == null ? void 0 : _b(props)) != null ? _c : {};
55
- const isAutoOpen = selectedSlotName !== "trigger" && isSelected;
63
+ const _a = props, { trigger, dialog, isOpen, className, __plasmic_selection_prop__ } = _a, rest = __objRest(_a, ["trigger", "dialog", "isOpen", "className", "__plasmic_selection_prop__"]);
64
+ const isOpen2 = utils.useIsOpen({
65
+ triggerSlotName: "trigger",
66
+ isOpen,
67
+ __plasmic_selection_prop__
68
+ });
56
69
  const mergedProps = __spreadProps(__spreadValues({}, rest), {
57
- isOpen: isAutoOpen || isOpen
70
+ isOpen: isOpen2
58
71
  });
59
- return /* @__PURE__ */ React__default.default.createElement(contexts.PlasmicDialogTriggerContext.Provider, { value: mergedProps }, /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.DialogTrigger, __spreadValues({}, mergedProps), trigger, dialog));
72
+ 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
73
  }
61
74
  function registerDialogTrigger(loader, overrides) {
62
75
  utils.registerComponentHelper(
@@ -67,7 +80,6 @@ function registerDialogTrigger(loader, overrides) {
67
80
  displayName: "Aria Dialog Trigger",
68
81
  importPath: "@plasmicpkgs/react-aria/skinny/registerDialogTrigger",
69
82
  importName: "BaseDialogTrigger",
70
- styleSections: false,
71
83
  props: {
72
84
  trigger: {
73
85
  type: "slot",
@@ -128,5 +140,6 @@ function registerDialogTrigger(loader, overrides) {
128
140
  }
129
141
 
130
142
  exports.BaseDialogTrigger = BaseDialogTrigger;
143
+ exports.TriggerWrapper = TriggerWrapper;
131
144
  exports.registerDialogTrigger = registerDialogTrigger;
132
145
  //# 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 styleSections: false,\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":["usePlasmicCanvasComponentInfo","React","PlasmicDialogTriggerContext","DialogTrigger","registerComponentHelper","makeComponentName","BUTTON_COMPONENT_NAME","MODAL_COMPONENT_NAME","DIALOG_COMPONENT_NAME","MODAL_DEFAULT_SLOT_CONTENT"],"mappings":"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"}
1
+ {"version":3,"file":"registerDialogTrigger.cjs.js","sources":["../src/registerDialogTrigger.tsx"],"sourcesContent":["import 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 useIsOpen,\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, __plasmic_selection_prop__, ...rest } =\n props;\n\n const isOpen2 = useIsOpen({\n triggerSlotName: \"trigger\",\n isOpen,\n __plasmic_selection_prop__,\n });\n\n const mergedProps = {\n ...rest,\n isOpen: isOpen2,\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","useIsOpen","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
- import { usePlasmicCanvasComponentInfo } from '@plasmicapp/host';
2
1
  import React from 'react';
2
+ import { useButton, mergeProps } from 'react-aria';
3
3
  import { DialogTrigger } from 'react-aria-components';
4
+ import { C as COMMON_STYLES } from './common-10d1b069.esm.js';
4
5
  import { d as PlasmicDialogTriggerContext } from './contexts-5cb81c2f.esm.js';
5
6
  import { BUTTON_COMPONENT_NAME } from './registerButton.esm.js';
6
7
  import { DIALOG_COMPONENT_NAME } from './registerDialog.esm.js';
7
8
  import { MODAL_COMPONENT_NAME, MODAL_DEFAULT_SLOT_CONTENT } from './registerModal.esm.js';
8
- import { r as registerComponentHelper, m as makeComponentName } from './utils-5d1b4c6b.esm.js';
9
- import 'react-aria';
10
- import './common-ceebbaea.esm.js';
9
+ import { a as useIsOpen, r as registerComponentHelper, m as makeComponentName } from './utils-59f72eb9.esm.js';
10
+ import '@plasmicapp/host';
11
11
  import './variant-utils-4405ebb0.esm.js';
12
12
  import '@plasmicapp/host/registerComponent';
13
13
 
@@ -42,15 +42,28 @@ 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
- var _b, _c;
47
- const _a = props, { trigger, dialog, isOpen } = _a, rest = __objRest(_a, ["trigger", "dialog", "isOpen"]);
48
- const { isSelected, selectedSlotName } = (_c = (_b = usePlasmicCanvasComponentInfo) == null ? void 0 : _b(props)) != null ? _c : {};
49
- const isAutoOpen = selectedSlotName !== "trigger" && isSelected;
57
+ const _a = props, { trigger, dialog, isOpen, className, __plasmic_selection_prop__ } = _a, rest = __objRest(_a, ["trigger", "dialog", "isOpen", "className", "__plasmic_selection_prop__"]);
58
+ const isOpen2 = useIsOpen({
59
+ triggerSlotName: "trigger",
60
+ isOpen,
61
+ __plasmic_selection_prop__
62
+ });
50
63
  const mergedProps = __spreadProps(__spreadValues({}, rest), {
51
- isOpen: isAutoOpen || isOpen
64
+ isOpen: isOpen2
52
65
  });
53
- return /* @__PURE__ */ React.createElement(PlasmicDialogTriggerContext.Provider, { value: mergedProps }, /* @__PURE__ */ React.createElement(DialogTrigger, __spreadValues({}, mergedProps), trigger, dialog));
66
+ return /* @__PURE__ */ React.createElement(PlasmicDialogTriggerContext.Provider, { value: mergedProps }, /* @__PURE__ */ React.createElement(DialogTrigger, __spreadValues({}, mergedProps), trigger && /* @__PURE__ */ React.createElement(TriggerWrapper, { className }, trigger), dialog));
54
67
  }
55
68
  function registerDialogTrigger(loader, overrides) {
56
69
  registerComponentHelper(
@@ -61,7 +74,6 @@ function registerDialogTrigger(loader, overrides) {
61
74
  displayName: "Aria Dialog Trigger",
62
75
  importPath: "@plasmicpkgs/react-aria/skinny/registerDialogTrigger",
63
76
  importName: "BaseDialogTrigger",
64
- styleSections: false,
65
77
  props: {
66
78
  trigger: {
67
79
  type: "slot",
@@ -121,5 +133,5 @@ function registerDialogTrigger(loader, overrides) {
121
133
  );
122
134
  }
123
135
 
124
- export { BaseDialogTrigger, registerDialogTrigger };
136
+ export { BaseDialogTrigger, TriggerWrapper, registerDialogTrigger };
125
137
  //# 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 styleSections: false,\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,SAAS,kBAAkB,KAA+B,EAAA;AAzBjE,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA0BE,EAA6C,MAAA,EAAA,GAAA,KAAA,EAArC,EAAS,OAAA,EAAA,MAAA,EAAQ,MA1B3B,EAAA,GA0B+C,IAAT,IAAS,GAAA,SAAA,CAAA,EAAA,EAAT,CAA5B,SAAA,EAAS,QAAQ,EAAA,QAAA,CAAA,CAAA,CAAA;AAEzB,EAAA,MAAM,EAAE,UAAY,EAAA,gBAAA,MAClB,EAAgC,GAAA,CAAA,EAAA,GAAA,6BAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA,KAAhC,YAA0C,EAAC,CAAA;AAC7C,EAAM,MAAA,UAAA,GAAa,qBAAqB,SAAa,IAAA,UAAA,CAAA;AAErD,EAAM,MAAA,WAAA,GAAc,iCACf,IADe,CAAA,EAAA;AAAA,IAElB,QAAQ,UAAc,IAAA,MAAA;AAAA,GACxB,CAAA,CAAA;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,2BAA4B,CAAA,QAAA,EAA5B,EAAqC,KAAA,EAAO,WAC3C,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAkB,EAAA,cAAA,CAAA,EAAA,EAAA,WAAA,CAAA,EAChB,OACA,EAAA,MACH,CACF,CAAA,CAAA;AAEJ,CAAA;AAEgB,SAAA,qBAAA,CACd,QACA,SACA,EAAA;AACA,EAAA,uBAAA;AAAA,IACE,MAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,kBAAkB,eAAe,CAAA;AAAA,MACvC,WAAa,EAAA,qBAAA;AAAA,MACb,UAAY,EAAA,sDAAA;AAAA,MACZ,UAAY,EAAA,mBAAA;AAAA,MACZ,aAAe,EAAA,KAAA;AAAA,MACf,KAAO,EAAA;AAAA,QACL,OAAS,EAAA;AAAA,UACP,IAAM,EAAA,MAAA;AAAA,UACN,eAAiB,EAAA,IAAA;AAAA,UACjB,YAAc,EAAA;AAAA,YACZ,IAAM,EAAA,WAAA;AAAA,YACN,IAAM,EAAA,qBAAA;AAAA,YACN,KAAO,EAAA;AAAA,cACL,QAAU,EAAA;AAAA,gBACR,IAAM,EAAA,MAAA;AAAA,gBACN,KAAO,EAAA,aAAA;AAAA,eACT;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,QACA,MAAQ,EAAA;AAAA,UACN,IAAM,EAAA,MAAA;AAAA,UACN,eAAiB,EAAA,IAAA;AAAA,UACjB,YAAc,EAAA;AAAA,YACZ;AAAA,cACE,IAAM,EAAA,WAAA;AAAA,cACN,IAAM,EAAA,oBAAA;AAAA,cACN,KAAO,EAAA;AAAA,gBACL,QAAU,EAAA;AAAA,kBACR,IAAM,EAAA,WAAA;AAAA,kBACN,IAAM,EAAA,qBAAA;AAAA,kBACN,KAAO,EAAA;AAAA,oBACL,QAAU,EAAA,0BAAA;AAAA,mBACZ;AAAA,iBACF;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,QACA,MAAQ,EAAA;AAAA,UACN,IAAM,EAAA,SAAA;AAAA,UACN,gBAAkB,EAAA,KAAA;AAAA,UAClB,QAAU,EAAA,IAAA;AAAA,UACV,gBAAkB,EAAA,aAAA;AAAA,SACpB;AAAA,QACA,YAAc,EAAA;AAAA,UACZ,IAAM,EAAA,cAAA;AAAA,UACN,UAAU,CAAC,EAAE,MAAM,QAAU,EAAA,IAAA,EAAM,WAAW,CAAA;AAAA,SAChD;AAAA,OACF;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA;AAAA,UACN,IAAM,EAAA,UAAA;AAAA,UACN,SAAW,EAAA,QAAA;AAAA,UACX,YAAc,EAAA,cAAA;AAAA,UACd,YAAc,EAAA,SAAA;AAAA,SAChB;AAAA,OACF;AAAA,MACA,UAAY,EAAA,IAAA;AAAA,KACd;AAAA,IACA,SAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"registerDialogTrigger.esm.js","sources":["../src/registerDialogTrigger.tsx"],"sourcesContent":["import 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 useIsOpen,\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, __plasmic_selection_prop__, ...rest } =\n props;\n\n const isOpen2 = useIsOpen({\n triggerSlotName: \"trigger\",\n isOpen,\n __plasmic_selection_prop__,\n });\n\n const mergedProps = {\n ...rest,\n isOpen: isOpen2,\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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"}
@@ -12,8 +12,8 @@ var registerModal = require('./registerModal.cjs.js');
12
12
  var registerPopover = require('./registerPopover.cjs.js');
13
13
  require('react-aria');
14
14
  require('react-aria-components');
15
- require('./common-b3b54c72.cjs.js');
16
- require('./utils-7d000fa4.cjs.js');
15
+ require('./common-c8beb360.cjs.js');
16
+ require('./utils-91eee672.cjs.js');
17
17
  require('@plasmicapp/host/registerComponent');
18
18
  require('./variant-utils-0ad70db8.cjs.js');
19
19
  require('./contexts-6d0cb2b1.cjs.js');
@@ -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,32 @@ 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(registerButton.BaseButton, null, "Open modal"),
66
- dialog: /* @__PURE__ */ React__default.default.createElement(registerModal.BaseModal, { isDismissable: true, isKeyboardDismissDisabled: false }, /* @__PURE__ */ React__default.default.createElement(registerDialog.BaseDialog, null, /* @__PURE__ */ React__default.default.createElement(DefaultContent, null)))
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
+ defaultOpen: true,
77
+ isOpen: true,
78
+ isDismissable: true,
79
+ isKeyboardDismissDisabled: false
80
+ }
81
+ )
67
82
  },
68
83
  play: async ({ canvasElement, args }) => {
69
84
  const canvas = test.within(canvasElement);
70
85
  const doc = test.within(document.body);
71
- const button = canvas.getByText("Open modal");
86
+ const trigger = canvas.getByText("Open modal");
72
87
  await test.waitFor(() => {
73
88
  test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
74
89
  });
75
- await test.userEvent.click(button);
90
+ await test.userEvent.click(trigger);
76
91
  await test.waitFor(() => {
77
92
  test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
78
93
  });
@@ -80,7 +95,12 @@ const WithModal = {
80
95
  await test.waitFor(() => {
81
96
  test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
82
97
  });
83
- await test.userEvent.click(button);
98
+ await test.userEvent.tab();
99
+ test.expect(trigger).toHaveFocus();
100
+ await test.waitFor(() => {
101
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
102
+ });
103
+ await test.userEvent.keyboard("[Space]");
84
104
  await test.waitFor(() => {
85
105
  test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
86
106
  });
@@ -91,19 +111,105 @@ const WithModal = {
91
111
  test.expect(args.onOpenChange).toHaveBeenCalledTimes(4);
92
112
  }
93
113
  };
114
+ const TriggerWithCustomEventHandler = {
115
+ args: {
116
+ dialog: /* @__PURE__ */ React__default.default.createElement(
117
+ DefaultModalContent,
118
+ {
119
+ isDismissable: true,
120
+ isKeyboardDismissDisabled: false
121
+ }
122
+ )
123
+ },
124
+ parameters: {
125
+ customOnClick: test.fn()
126
+ },
127
+ render: (args, { parameters }) => {
128
+ return /* @__PURE__ */ React__default.default.createElement(
129
+ registerDialogTrigger.BaseDialogTrigger,
130
+ __spreadProps(__spreadValues({}, args), {
131
+ trigger: /* @__PURE__ */ React__default.default.createElement("span", { className: "custom-class", onClick: parameters.customOnClick }, "Open modal")
132
+ })
133
+ );
134
+ },
135
+ play: async ({ canvasElement, args, parameters }) => {
136
+ const canvas = test.within(canvasElement);
137
+ const doc = test.within(document.body);
138
+ const trigger = canvas.getByText("Open modal");
139
+ await test.waitFor(() => {
140
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
141
+ });
142
+ test.expect(trigger).toHaveClass("custom-class");
143
+ test.expect(parameters.customOnClick).toHaveBeenCalledTimes(0);
144
+ await test.userEvent.click(trigger);
145
+ test.expect(parameters.customOnClick).toHaveBeenCalledTimes(1);
146
+ await test.waitFor(() => {
147
+ test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
148
+ });
149
+ await test.userEvent.click(document.body);
150
+ await test.waitFor(() => {
151
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
152
+ });
153
+ test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
154
+ }
155
+ };
156
+ const WithNestedTrigger = {
157
+ args: {
158
+ dialog: /* @__PURE__ */ React__default.default.createElement(
159
+ DefaultModalContent,
160
+ {
161
+ isDismissable: true,
162
+ isKeyboardDismissDisabled: false
163
+ }
164
+ ),
165
+ 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"))
166
+ },
167
+ play: async ({ canvasElement, args }) => {
168
+ const canvas = test.within(canvasElement);
169
+ const doc = test.within(document.body);
170
+ const triggers = canvas.getAllByText("Open modal");
171
+ await test.waitFor(() => {
172
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
173
+ });
174
+ await test.userEvent.click(triggers[0]);
175
+ await test.waitFor(() => {
176
+ test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
177
+ });
178
+ await test.userEvent.click(triggers[0]);
179
+ await test.waitFor(() => {
180
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
181
+ });
182
+ test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
183
+ await test.userEvent.click(triggers[1]);
184
+ await test.waitFor(() => {
185
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
186
+ });
187
+ test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
188
+ await test.userEvent.click(triggers[2]);
189
+ await test.waitFor(() => {
190
+ test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
191
+ });
192
+ test.expect(args.onOpenChange).toHaveBeenCalledTimes(3);
193
+ await test.userEvent.keyboard("{Escape}");
194
+ test.expect(args.onOpenChange).toHaveBeenCalledTimes(4);
195
+ await test.userEvent.click(triggers[2]);
196
+ test.expect(args.onOpenChange).toHaveBeenCalledTimes(5);
197
+ }
198
+ };
94
199
  const WithPopover = {
95
200
  args: {
96
- trigger: /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, null, "Open popover"),
97
- dialog: /* @__PURE__ */ React__default.default.createElement(registerPopover.BasePopover, { isKeyboardDismissDisabled: false }, /* @__PURE__ */ React__default.default.createElement(registerDialog.BaseDialog, null, /* @__PURE__ */ React__default.default.createElement(DefaultContent, null)))
201
+ trigger: /* @__PURE__ */ React__default.default.createElement("span", { tabIndex: 0 }, "Open popover"),
202
+ // anything can be used as a trigger
203
+ dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, { isKeyboardDismissDisabled: false })
98
204
  },
99
205
  play: async ({ canvasElement, args }) => {
100
206
  const canvas = test.within(canvasElement);
101
207
  const doc = test.within(document.body);
102
- const button = canvas.getByText("Open popover");
208
+ const trigger = canvas.getByText("Open popover");
103
209
  await test.waitFor(() => {
104
210
  test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
105
211
  });
106
- await test.userEvent.click(button);
212
+ await test.userEvent.click(trigger);
107
213
  await test.waitFor(() => {
108
214
  test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
109
215
  });
@@ -111,7 +217,9 @@ const WithPopover = {
111
217
  await test.waitFor(() => {
112
218
  test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
113
219
  });
114
- await test.userEvent.click(button);
220
+ await test.userEvent.tab();
221
+ await test.expect(trigger).toHaveFocus();
222
+ await test.userEvent.keyboard("[Space]");
115
223
  await test.waitFor(() => {
116
224
  test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
117
225
  });
@@ -124,17 +232,24 @@ const WithPopover = {
124
232
  };
125
233
  const WithPopoverNonModal = {
126
234
  args: {
127
- trigger: /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, null, "Open popover"),
128
- dialog: /* @__PURE__ */ React__default.default.createElement(registerPopover.BasePopover, { isNonModal: true, isKeyboardDismissDisabled: false }, /* @__PURE__ */ React__default.default.createElement(registerDialog.BaseDialog, null, /* @__PURE__ */ React__default.default.createElement(DefaultContent, null)))
235
+ trigger: /* @__PURE__ */ React__default.default.createElement("span", null, "Open popover"),
236
+ // anything can be used as a trigger
237
+ dialog: /* @__PURE__ */ React__default.default.createElement(
238
+ DefaultPopoverContent,
239
+ {
240
+ isNonModal: true,
241
+ isKeyboardDismissDisabled: false
242
+ }
243
+ )
129
244
  },
130
245
  play: async ({ canvasElement, args }) => {
131
246
  const canvas = test.within(canvasElement);
132
247
  const doc = test.within(document.body);
133
- const button = canvas.getByText("Open popover");
248
+ const trigger = canvas.getByText("Open popover");
134
249
  await test.waitFor(() => {
135
250
  test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
136
251
  });
137
- await test.userEvent.click(button);
252
+ await test.userEvent.click(trigger);
138
253
  await test.waitFor(() => {
139
254
  test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
140
255
  });
@@ -149,10 +264,66 @@ const WithPopoverNonModal = {
149
264
  test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
150
265
  }
151
266
  };
267
+ const ControlledDialog = {
268
+ args: {
269
+ trigger: void 0,
270
+ dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, null)
271
+ },
272
+ render: ({ isOpen, dialog }) => {
273
+ const [open, setOpen] = React.useState(isOpen);
274
+ 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(
275
+ registerDialogTrigger.BaseDialogTrigger,
276
+ {
277
+ isOpen: open,
278
+ onOpenChange: setOpen,
279
+ dialog
280
+ }
281
+ ));
282
+ },
283
+ play: async ({ canvasElement }) => {
284
+ const doc = test.within(document.body);
285
+ const canvas = test.within(canvasElement);
286
+ const trigger = canvas.getByText("Toggle");
287
+ await test.waitFor(() => {
288
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
289
+ });
290
+ await trigger.click();
291
+ await test.waitFor(() => {
292
+ test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
293
+ });
294
+ await trigger.click();
295
+ await test.waitFor(() => {
296
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
297
+ });
298
+ }
299
+ };
300
+ const AriaButtonTrigger = {
301
+ args: {
302
+ dialog: /* @__PURE__ */ React__default.default.createElement(DefaultModalContent, { isDismissable: true }),
303
+ trigger: /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, null, "Open modal")
304
+ },
305
+ play: async ({ canvasElement, args }) => {
306
+ const canvas = test.within(canvasElement);
307
+ const doc = test.within(document.body);
308
+ const trigger = canvas.getByText("Open modal");
309
+ await test.waitFor(() => {
310
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
311
+ });
312
+ await test.userEvent.click(trigger);
313
+ await test.waitFor(() => {
314
+ test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
315
+ });
316
+ await test.userEvent.click(document.body);
317
+ await test.waitFor(() => {
318
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
319
+ });
320
+ test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
321
+ }
322
+ };
152
323
  const SelectedInCanvas = {
153
324
  args: {
154
- trigger: /* @__PURE__ */ React__default.default.createElement(registerButton.BaseButton, null, "Open popover"),
155
- dialog: /* @__PURE__ */ React__default.default.createElement(registerPopover.BasePopover, { isNonModal: true, isKeyboardDismissDisabled: false }, /* @__PURE__ */ React__default.default.createElement(registerDialog.BaseDialog, null, /* @__PURE__ */ React__default.default.createElement(DefaultContent, null)))
325
+ trigger: void 0,
326
+ dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, { isKeyboardDismissDisabled: false })
156
327
  },
157
328
  render: (_a) => {
158
329
  var _b = _a, args = __objRest(_b, ["__plasmic_selection_prop__"]);
@@ -189,6 +360,8 @@ const SelectedInCanvas = {
189
360
  );
190
361
  },
191
362
  play: async () => {
363
+ const consoleWarnSpy = test.spyOn(console, "warn").mockImplementation(() => {
364
+ });
192
365
  const doc = test.within(document.body);
193
366
  await test.waitFor(() => {
194
367
  test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
@@ -205,11 +378,80 @@ const SelectedInCanvas = {
205
378
  },
206
379
  { timeout: 1100 }
207
380
  );
381
+ test.expect(consoleWarnSpy).not.toHaveBeenCalled();
382
+ }
383
+ };
384
+ const PopoverPosition = {
385
+ args: {
386
+ trigger: /* @__PURE__ */ React__default.default.createElement("span", null, "Open popover"),
387
+ // anything can be used as a trigger
388
+ dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, null)
389
+ },
390
+ render: (args) => {
391
+ const [className, setClassName] = React.useState("popover");
392
+ React.useEffect(() => {
393
+ setTimeout(() => {
394
+ setClassName((prev) => `${prev} popover-right`);
395
+ }, 1e3);
396
+ }, []);
397
+ return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement(
398
+ "style",
399
+ {
400
+ dangerouslySetInnerHTML: {
401
+ __html: `
402
+ .popover {
403
+ display: inline-block;
404
+ }
405
+ .popover-right {
406
+ position: absolute;
407
+ right: 0;
408
+ }
409
+ `
410
+ }
411
+ }
412
+ ), /* @__PURE__ */ React__default.default.createElement(registerDialogTrigger.BaseDialogTrigger, __spreadProps(__spreadValues({}, args), { className })));
413
+ },
414
+ play: async ({ canvasElement }) => {
415
+ const canvas = test.within(canvasElement);
416
+ const doc = test.within(document.body);
417
+ const trigger = canvas.getByText("Open popover");
418
+ await test.waitFor(() => {
419
+ test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
420
+ });
421
+ await test.userEvent.click(trigger);
422
+ let initialPopoverLeftPosition;
423
+ await test.waitFor(() => {
424
+ const popover = doc.getByTestId("dialog-content");
425
+ initialPopoverLeftPosition = popover.getBoundingClientRect().left;
426
+ });
427
+ await test.userEvent.click(trigger);
428
+ await sleep(500);
429
+ await test.userEvent.click(trigger);
430
+ await test.waitFor(async () => {
431
+ const popover = doc.getByTestId("dialog-content");
432
+ test.expect(initialPopoverLeftPosition).toEqual(
433
+ popover.getBoundingClientRect().left
434
+ );
435
+ });
436
+ await test.userEvent.click(trigger);
437
+ await sleep(500);
438
+ await test.userEvent.click(trigger);
439
+ await test.waitFor(() => {
440
+ const popover = doc.getByTestId("dialog-content");
441
+ test.expect(initialPopoverLeftPosition).not.toEqual(
442
+ popover.getBoundingClientRect().left
443
+ );
444
+ });
208
445
  }
209
446
  };
210
447
 
448
+ exports.AriaButtonTrigger = AriaButtonTrigger;
449
+ exports.ControlledDialog = ControlledDialog;
450
+ exports.PopoverPosition = PopoverPosition;
211
451
  exports.SelectedInCanvas = SelectedInCanvas;
452
+ exports.TriggerWithCustomEventHandler = TriggerWithCustomEventHandler;
212
453
  exports.WithModal = WithModal;
454
+ exports.WithNestedTrigger = WithNestedTrigger;
213
455
  exports.WithPopover = WithPopover;
214
456
  exports.WithPopoverNonModal = WithPopoverNonModal;
215
457
  exports.default = meta;