@plasmicpkgs/react-aria 0.0.118 → 0.0.119
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/contexts.d.ts +2 -1
- package/dist/react-aria.esm.js +13 -4
- package/dist/react-aria.esm.js.map +1 -1
- package/dist/react-aria.js +13 -4
- package/dist/react-aria.js.map +1 -1
- package/dist/utils.d.ts +5 -4
- package/package.json +2 -2
- package/skinny/contexts-5cb81c2f.esm.js.map +1 -1
- package/skinny/contexts-6d0cb2b1.cjs.js.map +1 -1
- package/skinny/contexts.d.ts +2 -1
- package/skinny/registerComboBox.esm.js +1 -1
- package/skinny/registerInput.cjs.js +1 -1
- package/skinny/registerInput.cjs.js.map +1 -1
- package/skinny/registerInput.esm.js +2 -2
- package/skinny/registerInput.esm.js.map +1 -1
- package/skinny/{registerListBox-21dc99fa.esm.js → registerListBox-0f6ebcf0.esm.js} +2 -2
- package/skinny/{registerListBox-21dc99fa.esm.js.map → registerListBox-0f6ebcf0.esm.js.map} +1 -1
- package/skinny/registerListBox.esm.js +1 -1
- package/skinny/registerSection.esm.js +1 -1
- package/skinny/registerSelect.esm.js +1 -1
- package/skinny/registerTextArea.cjs.js +5 -2
- package/skinny/registerTextArea.cjs.js.map +1 -1
- package/skinny/registerTextArea.esm.js +6 -3
- package/skinny/registerTextArea.esm.js.map +1 -1
- package/skinny/registerTextField.cjs.js +8 -2
- package/skinny/registerTextField.cjs.js.map +1 -1
- package/skinny/registerTextField.esm.js +8 -2
- package/skinny/registerTextField.esm.js.map +1 -1
- package/skinny/utils-fc1ddd7c.cjs.js.map +1 -1
- package/skinny/utils-fd88ad47.esm.js.map +1 -1
- package/skinny/utils.d.ts +5 -4
- package/skinny/registerButton.stories.cjs.js +0 -163
- package/skinny/registerButton.stories.cjs.js.map +0 -1
- package/skinny/registerButton.stories.esm.js +0 -149
- package/skinny/registerButton.stories.esm.js.map +0 -1
- package/skinny/registerCheckboxGroup.stories.cjs.js +0 -121
- package/skinny/registerCheckboxGroup.stories.cjs.js.map +0 -1
- package/skinny/registerCheckboxGroup.stories.esm.js +0 -109
- package/skinny/registerCheckboxGroup.stories.esm.js.map +0 -1
- package/skinny/registerComboBox.stories.cjs.js +0 -244
- package/skinny/registerComboBox.stories.cjs.js.map +0 -1
- package/skinny/registerComboBox.stories.esm.js +0 -230
- package/skinny/registerComboBox.stories.esm.js.map +0 -1
- package/skinny/registerDialogTrigger.stories.cjs.js +0 -458
- package/skinny/registerDialogTrigger.stories.cjs.js.map +0 -1
- package/skinny/registerDialogTrigger.stories.esm.js +0 -441
- package/skinny/registerDialogTrigger.stories.esm.js.map +0 -1
- package/skinny/registerListbox.stories.cjs.js +0 -219
- package/skinny/registerListbox.stories.cjs.js.map +0 -1
- package/skinny/registerListbox.stories.esm.js +0 -206
- package/skinny/registerListbox.stories.esm.js.map +0 -1
- package/skinny/registerModal.stories.cjs.js +0 -194
- package/skinny/registerModal.stories.cjs.js.map +0 -1
- package/skinny/registerModal.stories.esm.js +0 -181
- package/skinny/registerModal.stories.esm.js.map +0 -1
- package/skinny/registerPopover.stories.cjs.js +0 -102
- package/skinny/registerPopover.stories.cjs.js.map +0 -1
- package/skinny/registerPopover.stories.esm.js +0 -92
- package/skinny/registerPopover.stories.esm.js.map +0 -1
- package/skinny/registerRadioGroup.stories.cjs.js +0 -120
- package/skinny/registerRadioGroup.stories.cjs.js.map +0 -1
- package/skinny/registerRadioGroup.stories.esm.js +0 -108
- package/skinny/registerRadioGroup.stories.esm.js.map +0 -1
- package/skinny/registerSelect.stories.cjs.js +0 -215
- package/skinny/registerSelect.stories.cjs.js.map +0 -1
- package/skinny/registerSelect.stories.esm.js +0 -202
- package/skinny/registerSelect.stories.esm.js.map +0 -1
- package/skinny/registerSlider.stories.cjs.js +0 -165
- package/skinny/registerSlider.stories.cjs.js.map +0 -1
- package/skinny/registerSlider.stories.esm.js +0 -151
- package/skinny/registerSlider.stories.esm.js.map +0 -1
- package/skinny/registerSwitch.stories.cjs.js +0 -162
- package/skinny/registerSwitch.stories.cjs.js.map +0 -1
- package/skinny/registerSwitch.stories.esm.js +0 -148
- package/skinny/registerSwitch.stories.esm.js.map +0 -1
- package/skinny/registerTextField-common-stories.cjs.js +0 -199
- package/skinny/registerTextField-common-stories.cjs.js.map +0 -1
- package/skinny/registerTextField-common-stories.esm.js +0 -185
- package/skinny/registerTextField-common-stories.esm.js.map +0 -1
- package/skinny/registerTextField-input.stories.cjs.js +0 -54
- package/skinny/registerTextField-input.stories.cjs.js.map +0 -1
- package/skinny/registerTextField-input.stories.esm.js +0 -37
- package/skinny/registerTextField-input.stories.esm.js.map +0 -1
- package/skinny/registerTextField-textarea.stories.cjs.js +0 -55
- package/skinny/registerTextField-textarea.stories.cjs.js.map +0 -1
- package/skinny/registerTextField-textarea.stories.esm.js +0 -39
- package/skinny/registerTextField-textarea.stories.esm.js.map +0 -1
- package/skinny/registerTooltip.stories.cjs.js +0 -616
- package/skinny/registerTooltip.stories.cjs.js.map +0 -1
- package/skinny/registerTooltip.stories.esm.js +0 -596
- package/skinny/registerTooltip.stories.esm.js.map +0 -1
|
@@ -1,458 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var host = require('@plasmicapp/host');
|
|
6
|
-
var test = require('@storybook/test');
|
|
7
|
-
var React = require('react');
|
|
8
|
-
var registerButton = require('./registerButton.cjs.js');
|
|
9
|
-
var registerDialog = require('./registerDialog.cjs.js');
|
|
10
|
-
var registerDialogTrigger = require('./registerDialogTrigger.cjs.js');
|
|
11
|
-
var registerModal = require('./registerModal.cjs.js');
|
|
12
|
-
var registerPopover = require('./registerPopover.cjs.js');
|
|
13
|
-
require('react-aria');
|
|
14
|
-
require('react-aria-components');
|
|
15
|
-
require('./common-45acb83c.cjs.js');
|
|
16
|
-
require('./utils-fc1ddd7c.cjs.js');
|
|
17
|
-
require('@plasmicapp/host/registerComponent');
|
|
18
|
-
require('./variant-utils-0ad70db8.cjs.js');
|
|
19
|
-
require('./contexts-6d0cb2b1.cjs.js');
|
|
20
|
-
require('@react-aria/utils');
|
|
21
|
-
|
|
22
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
23
|
-
|
|
24
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
25
|
-
|
|
26
|
-
var __defProp = Object.defineProperty;
|
|
27
|
-
var __defProps = Object.defineProperties;
|
|
28
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
29
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
30
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
31
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
32
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
33
|
-
var __spreadValues = (a, b) => {
|
|
34
|
-
for (var prop in b || (b = {}))
|
|
35
|
-
if (__hasOwnProp.call(b, prop))
|
|
36
|
-
__defNormalProp(a, prop, b[prop]);
|
|
37
|
-
if (__getOwnPropSymbols)
|
|
38
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
39
|
-
if (__propIsEnum.call(b, prop))
|
|
40
|
-
__defNormalProp(a, prop, b[prop]);
|
|
41
|
-
}
|
|
42
|
-
return a;
|
|
43
|
-
};
|
|
44
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
45
|
-
var __objRest = (source, exclude) => {
|
|
46
|
-
var target = {};
|
|
47
|
-
for (var prop in source)
|
|
48
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
49
|
-
target[prop] = source[prop];
|
|
50
|
-
if (source != null && __getOwnPropSymbols)
|
|
51
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
52
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
53
|
-
target[prop] = source[prop];
|
|
54
|
-
}
|
|
55
|
-
return target;
|
|
56
|
-
};
|
|
57
|
-
const meta = {
|
|
58
|
-
title: "Components/BaseDialogTrigger",
|
|
59
|
-
component: registerDialogTrigger.BaseDialogTrigger,
|
|
60
|
-
args: {
|
|
61
|
-
defaultOpen: false,
|
|
62
|
-
onOpenChange: test.fn()
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
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)));
|
|
69
|
-
const WithModal = {
|
|
70
|
-
args: {
|
|
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
|
-
)
|
|
82
|
-
},
|
|
83
|
-
play: async ({ canvasElement, args }) => {
|
|
84
|
-
const canvas = test.within(canvasElement);
|
|
85
|
-
const doc = test.within(document.body);
|
|
86
|
-
const trigger = canvas.getByText("Open modal");
|
|
87
|
-
await test.waitFor(() => {
|
|
88
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
89
|
-
});
|
|
90
|
-
await test.userEvent.click(trigger);
|
|
91
|
-
await test.waitFor(() => {
|
|
92
|
-
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
93
|
-
});
|
|
94
|
-
await test.userEvent.click(document.body);
|
|
95
|
-
await test.waitFor(() => {
|
|
96
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
97
|
-
});
|
|
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]");
|
|
104
|
-
await test.waitFor(() => {
|
|
105
|
-
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
106
|
-
});
|
|
107
|
-
await test.userEvent.keyboard("{Escape}");
|
|
108
|
-
await test.waitFor(() => {
|
|
109
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
110
|
-
});
|
|
111
|
-
test.expect(args.onOpenChange).toHaveBeenCalledTimes(4);
|
|
112
|
-
}
|
|
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
|
-
};
|
|
199
|
-
const WithPopover = {
|
|
200
|
-
args: {
|
|
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 })
|
|
204
|
-
},
|
|
205
|
-
play: async ({ canvasElement, args }) => {
|
|
206
|
-
const canvas = test.within(canvasElement);
|
|
207
|
-
const doc = test.within(document.body);
|
|
208
|
-
const trigger = canvas.getByText("Open popover");
|
|
209
|
-
await test.waitFor(() => {
|
|
210
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
211
|
-
});
|
|
212
|
-
await test.userEvent.click(trigger);
|
|
213
|
-
await test.waitFor(() => {
|
|
214
|
-
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
215
|
-
});
|
|
216
|
-
await test.userEvent.click(document.body);
|
|
217
|
-
await test.waitFor(() => {
|
|
218
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
219
|
-
});
|
|
220
|
-
await test.userEvent.tab();
|
|
221
|
-
await test.expect(trigger).toHaveFocus();
|
|
222
|
-
await test.userEvent.keyboard("[Space]");
|
|
223
|
-
await test.waitFor(() => {
|
|
224
|
-
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
225
|
-
});
|
|
226
|
-
await test.userEvent.keyboard("{Escape}");
|
|
227
|
-
await test.waitFor(() => {
|
|
228
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
229
|
-
});
|
|
230
|
-
test.expect(args.onOpenChange).toHaveBeenCalledTimes(4);
|
|
231
|
-
}
|
|
232
|
-
};
|
|
233
|
-
const WithPopoverNonModal = {
|
|
234
|
-
args: {
|
|
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
|
-
)
|
|
244
|
-
},
|
|
245
|
-
play: async ({ canvasElement, args }) => {
|
|
246
|
-
const canvas = test.within(canvasElement);
|
|
247
|
-
const doc = test.within(document.body);
|
|
248
|
-
const trigger = canvas.getByText("Open popover");
|
|
249
|
-
await test.waitFor(() => {
|
|
250
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
251
|
-
});
|
|
252
|
-
await test.userEvent.click(trigger);
|
|
253
|
-
await test.waitFor(() => {
|
|
254
|
-
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
255
|
-
});
|
|
256
|
-
await test.userEvent.click(document.body);
|
|
257
|
-
await test.waitFor(() => {
|
|
258
|
-
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
259
|
-
});
|
|
260
|
-
await test.userEvent.keyboard("{Escape}");
|
|
261
|
-
await test.waitFor(() => {
|
|
262
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
263
|
-
});
|
|
264
|
-
test.expect(args.onOpenChange).toHaveBeenCalledTimes(2);
|
|
265
|
-
}
|
|
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
|
-
};
|
|
323
|
-
const SelectedInCanvas = {
|
|
324
|
-
args: {
|
|
325
|
-
trigger: void 0,
|
|
326
|
-
dialog: /* @__PURE__ */ React__default.default.createElement(DefaultPopoverContent, { isKeyboardDismissDisabled: false })
|
|
327
|
-
},
|
|
328
|
-
render: (_a) => {
|
|
329
|
-
var _b = _a, args = __objRest(_b, ["__plasmic_selection_prop__"]);
|
|
330
|
-
const [selected, setSelected] = React.useState(false);
|
|
331
|
-
const [selectedSlotName, setSelectedSlotName] = React.useState("");
|
|
332
|
-
React.useEffect(() => {
|
|
333
|
-
setTimeout(() => {
|
|
334
|
-
setSelected(true);
|
|
335
|
-
setTimeout(() => {
|
|
336
|
-
setSelectedSlotName("trigger");
|
|
337
|
-
}, 1e3);
|
|
338
|
-
}, 1e3);
|
|
339
|
-
}, []);
|
|
340
|
-
return (
|
|
341
|
-
// Simulate Plasmic canvas envirnment
|
|
342
|
-
/* @__PURE__ */ React__default.default.createElement(
|
|
343
|
-
host.PlasmicCanvasContext.Provider,
|
|
344
|
-
{
|
|
345
|
-
value: {
|
|
346
|
-
componentName: "test",
|
|
347
|
-
globalVariants: {}
|
|
348
|
-
}
|
|
349
|
-
},
|
|
350
|
-
/* @__PURE__ */ React__default.default.createElement(
|
|
351
|
-
registerDialogTrigger.BaseDialogTrigger,
|
|
352
|
-
__spreadValues({
|
|
353
|
-
__plasmic_selection_prop__: {
|
|
354
|
-
isSelected: selected,
|
|
355
|
-
selectedSlotName
|
|
356
|
-
}
|
|
357
|
-
}, args)
|
|
358
|
-
)
|
|
359
|
-
)
|
|
360
|
-
);
|
|
361
|
-
},
|
|
362
|
-
play: async () => {
|
|
363
|
-
const consoleWarnSpy = test.spyOn(console, "warn").mockImplementation(() => {
|
|
364
|
-
});
|
|
365
|
-
const doc = test.within(document.body);
|
|
366
|
-
await test.waitFor(() => {
|
|
367
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
368
|
-
});
|
|
369
|
-
await test.waitFor(
|
|
370
|
-
() => {
|
|
371
|
-
test.expect(doc.queryByTestId("dialog-content")).toBeInTheDocument();
|
|
372
|
-
},
|
|
373
|
-
{ timeout: 1100 }
|
|
374
|
-
);
|
|
375
|
-
await test.waitFor(
|
|
376
|
-
() => {
|
|
377
|
-
test.expect(doc.queryByTestId("dialog-content")).not.toBeInTheDocument();
|
|
378
|
-
},
|
|
379
|
-
{ timeout: 1100 }
|
|
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
|
-
});
|
|
445
|
-
}
|
|
446
|
-
};
|
|
447
|
-
|
|
448
|
-
exports.AriaButtonTrigger = AriaButtonTrigger;
|
|
449
|
-
exports.ControlledDialog = ControlledDialog;
|
|
450
|
-
exports.PopoverPosition = PopoverPosition;
|
|
451
|
-
exports.SelectedInCanvas = SelectedInCanvas;
|
|
452
|
-
exports.TriggerWithCustomEventHandler = TriggerWithCustomEventHandler;
|
|
453
|
-
exports.WithModal = WithModal;
|
|
454
|
-
exports.WithNestedTrigger = WithNestedTrigger;
|
|
455
|
-
exports.WithPopover = WithPopover;
|
|
456
|
-
exports.WithPopoverNonModal = WithPopoverNonModal;
|
|
457
|
-
exports.default = meta;
|
|
458
|
-
//# sourceMappingURL=registerDialogTrigger.stories.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerDialogTrigger.stories.cjs.js","sources":["../src/registerDialogTrigger.stories.tsx"],"sourcesContent":["import { PlasmicCanvasContext } from \"@plasmicapp/host\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, spyOn, userEvent, waitFor, within } from \"@storybook/test\";\nimport React, { useEffect, useState } from \"react\";\nimport { BaseButton } from \"./registerButton\";\nimport { BaseDialog } from \"./registerDialog\";\nimport { BaseDialogTrigger } from \"./registerDialogTrigger\";\nimport { BaseModal, BaseModalProps } from \"./registerModal\";\nimport { BasePopover, BasePopoverProps } from \"./registerPopover\";\n\nconst meta: Meta<typeof BaseDialogTrigger> = {\n title: \"Components/BaseDialogTrigger\",\n component: BaseDialogTrigger,\n args: {\n defaultOpen: false,\n onOpenChange: fn(),\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof BaseDialogTrigger>;\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst DefaultContent = () => (\n <div data-testid=\"dialog-content\">\n <h2>Dialog Title</h2>\n <p>Dialog content goes here</p>\n </div>\n);\n\nconst DefaultPopoverContent = (props: BasePopoverProps) => (\n <BasePopover {...props}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BasePopover>\n);\n\nconst DefaultModalContent = (props: BaseModalProps) => (\n <BaseModal {...props}>\n <BaseDialog>\n <DefaultContent />\n </BaseDialog>\n </BaseModal>\n);\n\nexport const WithModal: Story = {\n args: {\n trigger: <span tabIndex={0}>Open modal</span>, // anything can be used as a trigger\n dialog: (\n <DefaultModalContent\n // The test ensures that isOpen and defaultOpen are disregarded when inside a dialog trigger\n defaultOpen={true}\n isOpen={true}\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation\n await userEvent.tab();\n expect(trigger).toHaveFocus();\n\n // Still not open because a click/press is required\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"[Space]\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n // press Escape to dismiss\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\n// Ensures that any custom event handlers on the trigger are called, and any custom props passed to it are passed through.\nexport const TriggerWithCustomEventHandler: Story = {\n args: {\n dialog: (\n <DefaultModalContent\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n parameters: {\n customOnClick: fn(),\n },\n render: (args, { parameters }) => {\n return (\n <BaseDialogTrigger\n {...args}\n trigger={\n <span className=\"custom-class\" onClick={parameters.customOnClick}>\n Open modal\n </span>\n }\n />\n );\n },\n play: async ({ canvasElement, args, parameters }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(trigger).toHaveClass(\"custom-class\");\n\n expect(parameters.customOnClick).toHaveBeenCalledTimes(0);\n await userEvent.click(trigger);\n expect(parameters.customOnClick).toHaveBeenCalledTimes(1);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\n// tests that a trigger that's nested in a div (e.g. a <span>) can trigger open the dialog on click\n// Also tests that either of nested triggers can be made non-triggerable via e.stopPropagation\nexport const WithNestedTrigger: Story = {\n args: {\n dialog: (\n <DefaultModalContent\n isDismissable={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n trigger: (\n <div>\n <span tabIndex={0}>Open modal</span>\n <span tabIndex={0} onClick={(e) => e.stopPropagation()}>\n Open modal\n </span>\n <span tabIndex={0}>Open modal</span>\n </div>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const triggers = canvas.getAllByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(triggers[0]);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n // Click again to dismiss\n await userEvent.click(triggers[0]);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n\n await userEvent.click(triggers[1]);\n\n // trigger # 2 stops propagation via e.stopPropagation. So, clicking on trigger # 2 should not open the dialog\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2); // not changed\n\n await userEvent.click(triggers[2]);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n expect(args.onOpenChange).toHaveBeenCalledTimes(3);\n\n await userEvent.keyboard(\"{Escape}\");\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n await userEvent.click(triggers[2]);\n expect(args.onOpenChange).toHaveBeenCalledTimes(5);\n },\n};\n\nexport const WithPopover: Story = {\n args: {\n trigger: <span tabIndex={0}>Open popover</span>, // anything can be used as a trigger\n dialog: <DefaultPopoverContent isKeyboardDismissDisabled={false} />,\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n // With keyboard navigation, press Space to open and Escape to dismiss\n await userEvent.tab();\n await expect(trigger).toHaveFocus();\n await userEvent.keyboard(\"[Space]\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n },\n};\n\nexport const WithPopoverNonModal: Story = {\n args: {\n trigger: <span>Open popover</span>, // anything can be used as a trigger\n dialog: (\n <DefaultPopoverContent\n isNonModal={true}\n isKeyboardDismissDisabled={false}\n />\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // popover should NOT close, because the outside can be interacted with without affecting the popover's open state\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.keyboard(\"{Escape}\");\n // dialog should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\nexport const ControlledDialog: Story = {\n args: {\n trigger: undefined,\n dialog: <DefaultPopoverContent />,\n },\n render: ({ isOpen, dialog }) => {\n const [open, setOpen] = useState(isOpen);\n return (\n <>\n <span onClick={() => setOpen((prev) => !prev)}>Toggle</span>\n <BaseDialogTrigger\n isOpen={open}\n onOpenChange={setOpen}\n dialog={dialog}\n />\n </>\n );\n },\n play: async ({ canvasElement }) => {\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n const canvas = within(canvasElement);\n const trigger = canvas.getByText(\"Toggle\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await trigger.click();\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await trigger.click();\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n },\n};\n\nexport const AriaButtonTrigger: Story = {\n args: {\n dialog: <DefaultModalContent isDismissable={true} />,\n trigger: <BaseButton>Open modal</BaseButton>,\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open modal\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n });\n\n await userEvent.click(document.body);\n\n // Modal should close\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n },\n};\n\nexport const SelectedInCanvas: Story = {\n args: {\n trigger: undefined,\n dialog: <DefaultPopoverContent isKeyboardDismissDisabled={false} />,\n },\n render: ({ __plasmic_selection_prop__, ...args }) => {\n const [selected, setSelected] = useState(false);\n const [selectedSlotName, setSelectedSlotName] = useState(\"\");\n useEffect(() => {\n setTimeout(() => {\n setSelected(true);\n setTimeout(() => {\n // Simulate trigger slot selection in Plasmic canvas\n setSelectedSlotName(\"trigger\");\n }, 1000);\n }, 1000);\n }, []);\n\n return (\n // Simulate Plasmic canvas envirnment\n <PlasmicCanvasContext.Provider\n value={{\n componentName: \"test\",\n globalVariants: {},\n }}\n >\n <BaseDialogTrigger\n // Simulate node selection in Plasmic canvas\n __plasmic_selection_prop__={{\n isSelected: selected,\n selectedSlotName,\n }}\n {...args}\n />\n </PlasmicCanvasContext.Provider>\n );\n },\n play: async () => {\n const consoleWarnSpy = spyOn(console, \"warn\").mockImplementation(() => { });\n\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).toBeInTheDocument();\n },\n { timeout: 1100 }\n );\n\n await waitFor(\n () => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n },\n { timeout: 1100 }\n ); // the slot selected is trigger, so the popover should close\n\n // This is to ensure that the warning \"A component changed from controlled to uncontrolled\" is not logged\n expect(consoleWarnSpy).not.toHaveBeenCalled();\n },\n};\n\nexport const PopoverPosition: Story = {\n args: {\n trigger: <span>Open popover</span>, // anything can be used as a trigger\n dialog: <DefaultPopoverContent />,\n },\n render: (args) => {\n const [className, setClassName] = useState<string | undefined>(\"popover\");\n useEffect(() => {\n setTimeout(() => {\n setClassName((prev) => `${prev} popover-right`);\n }, 1000);\n }, []);\n\n return (\n <>\n <style\n dangerouslySetInnerHTML={{\n __html: `\n .popover {\n display: inline-block;\n }\n .popover-right {\n position: absolute;\n right: 0;\n }\n `,\n }}\n />\n <BaseDialogTrigger {...args} className={className} />\n </>\n );\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const doc = within(document.body);\n const trigger = canvas.getByText(\"Open popover\");\n\n await waitFor(() => {\n expect(doc.queryByTestId(\"dialog-content\")).not.toBeInTheDocument();\n });\n\n await userEvent.click(trigger);\n\n let initialPopoverLeftPosition: number;\n\n // Check that tooltip appears\n await waitFor(() => {\n const popover = doc.getByTestId(\"dialog-content\");\n initialPopoverLeftPosition = popover.getBoundingClientRect().left;\n });\n\n await userEvent.click(trigger); // toggle close\n\n await sleep(500);\n await userEvent.click(trigger);\n\n await waitFor(async () => {\n const popover = doc.getByTestId(\"dialog-content\");\n expect(initialPopoverLeftPosition).toEqual(\n popover.getBoundingClientRect().left\n ); // opens again at exactly the same position\n });\n\n await userEvent.click(trigger); // toggle close\n\n await sleep(500);\n await userEvent.click(trigger);\n\n await waitFor(() => {\n const popover = doc.getByTestId(\"dialog-content\");\n expect(initialPopoverLeftPosition).not.toEqual(\n popover.getBoundingClientRect().left\n ); // opens at a different position because the position of the trigger changed\n });\n },\n};\n"],"names":["BaseDialogTrigger","fn","React","BasePopover","BaseDialog","BaseModal","within","waitFor","expect","userEvent","useState","BaseButton","useEffect","PlasmicCanvasContext","spyOn"],"mappings":"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"}
|