@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.
Files changed (92) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contexts.d.ts +2 -1
  3. package/dist/react-aria.esm.js +13 -4
  4. package/dist/react-aria.esm.js.map +1 -1
  5. package/dist/react-aria.js +13 -4
  6. package/dist/react-aria.js.map +1 -1
  7. package/dist/utils.d.ts +5 -4
  8. package/package.json +2 -2
  9. package/skinny/contexts-5cb81c2f.esm.js.map +1 -1
  10. package/skinny/contexts-6d0cb2b1.cjs.js.map +1 -1
  11. package/skinny/contexts.d.ts +2 -1
  12. package/skinny/registerComboBox.esm.js +1 -1
  13. package/skinny/registerInput.cjs.js +1 -1
  14. package/skinny/registerInput.cjs.js.map +1 -1
  15. package/skinny/registerInput.esm.js +2 -2
  16. package/skinny/registerInput.esm.js.map +1 -1
  17. package/skinny/{registerListBox-21dc99fa.esm.js → registerListBox-0f6ebcf0.esm.js} +2 -2
  18. package/skinny/{registerListBox-21dc99fa.esm.js.map → registerListBox-0f6ebcf0.esm.js.map} +1 -1
  19. package/skinny/registerListBox.esm.js +1 -1
  20. package/skinny/registerSection.esm.js +1 -1
  21. package/skinny/registerSelect.esm.js +1 -1
  22. package/skinny/registerTextArea.cjs.js +5 -2
  23. package/skinny/registerTextArea.cjs.js.map +1 -1
  24. package/skinny/registerTextArea.esm.js +6 -3
  25. package/skinny/registerTextArea.esm.js.map +1 -1
  26. package/skinny/registerTextField.cjs.js +8 -2
  27. package/skinny/registerTextField.cjs.js.map +1 -1
  28. package/skinny/registerTextField.esm.js +8 -2
  29. package/skinny/registerTextField.esm.js.map +1 -1
  30. package/skinny/utils-fc1ddd7c.cjs.js.map +1 -1
  31. package/skinny/utils-fd88ad47.esm.js.map +1 -1
  32. package/skinny/utils.d.ts +5 -4
  33. package/skinny/registerButton.stories.cjs.js +0 -163
  34. package/skinny/registerButton.stories.cjs.js.map +0 -1
  35. package/skinny/registerButton.stories.esm.js +0 -149
  36. package/skinny/registerButton.stories.esm.js.map +0 -1
  37. package/skinny/registerCheckboxGroup.stories.cjs.js +0 -121
  38. package/skinny/registerCheckboxGroup.stories.cjs.js.map +0 -1
  39. package/skinny/registerCheckboxGroup.stories.esm.js +0 -109
  40. package/skinny/registerCheckboxGroup.stories.esm.js.map +0 -1
  41. package/skinny/registerComboBox.stories.cjs.js +0 -244
  42. package/skinny/registerComboBox.stories.cjs.js.map +0 -1
  43. package/skinny/registerComboBox.stories.esm.js +0 -230
  44. package/skinny/registerComboBox.stories.esm.js.map +0 -1
  45. package/skinny/registerDialogTrigger.stories.cjs.js +0 -458
  46. package/skinny/registerDialogTrigger.stories.cjs.js.map +0 -1
  47. package/skinny/registerDialogTrigger.stories.esm.js +0 -441
  48. package/skinny/registerDialogTrigger.stories.esm.js.map +0 -1
  49. package/skinny/registerListbox.stories.cjs.js +0 -219
  50. package/skinny/registerListbox.stories.cjs.js.map +0 -1
  51. package/skinny/registerListbox.stories.esm.js +0 -206
  52. package/skinny/registerListbox.stories.esm.js.map +0 -1
  53. package/skinny/registerModal.stories.cjs.js +0 -194
  54. package/skinny/registerModal.stories.cjs.js.map +0 -1
  55. package/skinny/registerModal.stories.esm.js +0 -181
  56. package/skinny/registerModal.stories.esm.js.map +0 -1
  57. package/skinny/registerPopover.stories.cjs.js +0 -102
  58. package/skinny/registerPopover.stories.cjs.js.map +0 -1
  59. package/skinny/registerPopover.stories.esm.js +0 -92
  60. package/skinny/registerPopover.stories.esm.js.map +0 -1
  61. package/skinny/registerRadioGroup.stories.cjs.js +0 -120
  62. package/skinny/registerRadioGroup.stories.cjs.js.map +0 -1
  63. package/skinny/registerRadioGroup.stories.esm.js +0 -108
  64. package/skinny/registerRadioGroup.stories.esm.js.map +0 -1
  65. package/skinny/registerSelect.stories.cjs.js +0 -215
  66. package/skinny/registerSelect.stories.cjs.js.map +0 -1
  67. package/skinny/registerSelect.stories.esm.js +0 -202
  68. package/skinny/registerSelect.stories.esm.js.map +0 -1
  69. package/skinny/registerSlider.stories.cjs.js +0 -165
  70. package/skinny/registerSlider.stories.cjs.js.map +0 -1
  71. package/skinny/registerSlider.stories.esm.js +0 -151
  72. package/skinny/registerSlider.stories.esm.js.map +0 -1
  73. package/skinny/registerSwitch.stories.cjs.js +0 -162
  74. package/skinny/registerSwitch.stories.cjs.js.map +0 -1
  75. package/skinny/registerSwitch.stories.esm.js +0 -148
  76. package/skinny/registerSwitch.stories.esm.js.map +0 -1
  77. package/skinny/registerTextField-common-stories.cjs.js +0 -199
  78. package/skinny/registerTextField-common-stories.cjs.js.map +0 -1
  79. package/skinny/registerTextField-common-stories.esm.js +0 -185
  80. package/skinny/registerTextField-common-stories.esm.js.map +0 -1
  81. package/skinny/registerTextField-input.stories.cjs.js +0 -54
  82. package/skinny/registerTextField-input.stories.cjs.js.map +0 -1
  83. package/skinny/registerTextField-input.stories.esm.js +0 -37
  84. package/skinny/registerTextField-input.stories.esm.js.map +0 -1
  85. package/skinny/registerTextField-textarea.stories.cjs.js +0 -55
  86. package/skinny/registerTextField-textarea.stories.cjs.js.map +0 -1
  87. package/skinny/registerTextField-textarea.stories.esm.js +0 -39
  88. package/skinny/registerTextField-textarea.stories.esm.js.map +0 -1
  89. package/skinny/registerTooltip.stories.cjs.js +0 -616
  90. package/skinny/registerTooltip.stories.cjs.js.map +0 -1
  91. package/skinny/registerTooltip.stories.esm.js +0 -596
  92. package/skinny/registerTooltip.stories.esm.js.map +0 -1
@@ -1,230 +0,0 @@
1
- import { PlasmicCanvasContext } from '@plasmicapp/host';
2
- import { fn, within, expect, userEvent, waitFor } from '@storybook/test';
3
- import React, { useState, useEffect } from 'react';
4
- import { BaseButton } from './registerButton.esm.js';
5
- import { BaseComboBox } from './registerComboBox.esm.js';
6
- import { BaseInput } from './registerInput.esm.js';
7
- import { BaseLabel } from './registerLabel.esm.js';
8
- import { B as BaseListBox } from './registerListBox-21dc99fa.esm.js';
9
- import { BaseListBoxItem } from './registerListBoxItem.esm.js';
10
- import { BasePopover } from './registerPopover.esm.js';
11
- import 'react-aria';
12
- import 'react-aria-components';
13
- import './common-616eb178.esm.js';
14
- import './utils-fd88ad47.esm.js';
15
- import '@plasmicapp/host/registerComponent';
16
- import './variant-utils-4405ebb0.esm.js';
17
- import './contexts-5cb81c2f.esm.js';
18
- import './OptionsItemIdManager-832b8cfe.esm.js';
19
- import './registerDescription.esm.js';
20
- import './registerText.esm.js';
21
- import '@react-aria/utils';
22
-
23
- var __defProp = Object.defineProperty;
24
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
25
- var __hasOwnProp = Object.prototype.hasOwnProperty;
26
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
27
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
28
- var __spreadValues = (a, b) => {
29
- for (var prop in b || (b = {}))
30
- if (__hasOwnProp.call(b, prop))
31
- __defNormalProp(a, prop, b[prop]);
32
- if (__getOwnPropSymbols)
33
- for (var prop of __getOwnPropSymbols(b)) {
34
- if (__propIsEnum.call(b, prop))
35
- __defNormalProp(a, prop, b[prop]);
36
- }
37
- return a;
38
- };
39
- var __objRest = (source, exclude) => {
40
- var target = {};
41
- for (var prop in source)
42
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
43
- target[prop] = source[prop];
44
- if (source != null && __getOwnPropSymbols)
45
- for (var prop of __getOwnPropSymbols(source)) {
46
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
47
- target[prop] = source[prop];
48
- }
49
- return target;
50
- };
51
- const meta = {
52
- title: "Components/BaseComboBox",
53
- component: BaseComboBox,
54
- args: {
55
- onSelectionChange: fn(),
56
- onOpenChange: fn()
57
- }
58
- };
59
- const createListItems = (count) => {
60
- return Array.from({ length: count }, (_, i) => ({
61
- id: `${i + 1}`,
62
- textValue: `Item ${i + 1}`,
63
- children: `Item ${i + 1}`
64
- }));
65
- };
66
- const BoilerplateCombobox = ({ children }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(BaseLabel, null, "Choose an option"), /* @__PURE__ */ React.createElement(BaseInput, null), /* @__PURE__ */ React.createElement(BaseButton, null, "\u25BC"), /* @__PURE__ */ React.createElement(BasePopover, null, /* @__PURE__ */ React.createElement(BaseListBox, null, children)));
67
- const Basic = {
68
- args: {
69
- children: /* @__PURE__ */ React.createElement(BoilerplateCombobox, null, createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { textValue: item.textValue, id: item.id }, item.children)))
70
- },
71
- play: async ({ canvasElement, args }) => {
72
- const canvas = within(canvasElement);
73
- const doc = within(document.body);
74
- const input = canvas.getByRole("combobox");
75
- const button = canvas.getByText("\u25BC");
76
- expect(doc.queryByRole("listbox")).not.toBeInTheDocument();
77
- await userEvent.click(button);
78
- const options = await within(doc.getByRole("listbox")).findAllByRole(
79
- "option"
80
- );
81
- expect(options).toHaveLength(3);
82
- await userEvent.click(options[1]);
83
- expect(input).toHaveValue("Item 2");
84
- expect(doc.queryByRole("listbox")).not.toBeInTheDocument();
85
- expect(args.onOpenChange).toHaveBeenCalledTimes(2);
86
- expect(args.onSelectionChange).toHaveBeenCalledOnce();
87
- }
88
- };
89
- const WithTyping = {
90
- args: {
91
- children: /* @__PURE__ */ React.createElement(BoilerplateCombobox, null, createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { textValue: item.textValue, id: item.id }, item.children)), createListItems(1).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { textValue: `${item.textValue} dup`, id: item.id }, item.children, " dup")))
92
- },
93
- play: async ({ canvasElement, args }) => {
94
- const canvas = within(canvasElement);
95
- const doc = within(document.body);
96
- const input = canvas.getByRole("combobox");
97
- expect(doc.queryByRole("listbox")).not.toBeInTheDocument();
98
- await userEvent.type(input, "Item 1{ArrowDown}{ArrowDown}{Enter}");
99
- expect(input).toHaveValue("Item 1 dup");
100
- await userEvent.type(input, "{backspace}{backspace}{backspace}{backspace}");
101
- expect(input).toHaveValue("Item 1");
102
- expect(
103
- within(doc.getByRole("listbox")).getAllByRole("option")
104
- ).toHaveLength(2);
105
- await userEvent.tab();
106
- expect(input).toHaveValue("Item 1 dup");
107
- expect(args.onOpenChange).toHaveBeenCalledTimes(4);
108
- expect(args.onSelectionChange).toHaveBeenCalledTimes(1);
109
- }
110
- };
111
- const WithDefaultSelection = {
112
- args: {
113
- defaultSelectedKey: "3",
114
- children: /* @__PURE__ */ React.createElement(BoilerplateCombobox, null, createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { textValue: item.textValue, id: item.id }, item.children)))
115
- },
116
- play: async ({ canvasElement }) => {
117
- const canvas = within(canvasElement);
118
- const doc = within(document.body);
119
- const input = canvas.getByRole("combobox");
120
- expect(doc.queryByRole("listbox")).not.toBeInTheDocument();
121
- await waitFor(() => expect(input).toHaveValue("Item 3"));
122
- await userEvent.click(canvas.getByText("\u25BC"));
123
- const options = within(doc.getByRole("listbox")).getAllByRole("option");
124
- await userEvent.click(options[1]);
125
- expect(input).toHaveValue("Item 2");
126
- }
127
- };
128
- const Disabled = {
129
- args: {
130
- defaultSelectedKey: "3",
131
- isDisabled: true,
132
- children: /* @__PURE__ */ React.createElement(BoilerplateCombobox, null, createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { textValue: item.textValue, id: item.id }, item.children)))
133
- },
134
- play: async ({ canvasElement, args }) => {
135
- const canvas = within(canvasElement);
136
- const doc = within(document.body);
137
- const input = canvas.getByRole("combobox");
138
- const button = canvas.getByText("\u25BC");
139
- expect(input).toBeDisabled();
140
- expect(button).toBeDisabled();
141
- await waitFor(() => expect(input).toHaveValue("Item 3"));
142
- expect(input).toHaveValue("Item 3");
143
- await userEvent.click(button);
144
- expect(doc.queryByRole("listbox")).not.toBeInTheDocument();
145
- await userEvent.type(input, "{Backspace}{ArrowDown}{Enter}");
146
- expect(input).toHaveValue("Item 3");
147
- expect(doc.queryByRole("listbox")).not.toBeInTheDocument();
148
- expect(args.onOpenChange).not.toHaveBeenCalled();
149
- expect(args.onSelectionChange).not.toHaveBeenCalled();
150
- }
151
- };
152
- const WithDisabledOptions = {
153
- args: {
154
- disabledKeys: ["1"],
155
- children: /* @__PURE__ */ React.createElement(BoilerplateCombobox, null, createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { textValue: item.textValue, id: item.id }, item.children)))
156
- },
157
- play: async ({ canvasElement, args }) => {
158
- const canvas = within(canvasElement);
159
- const doc = within(document.body);
160
- const input = canvas.getByRole("combobox");
161
- const button = canvas.getByText("\u25BC");
162
- expect(doc.queryByRole("listbox")).not.toBeInTheDocument();
163
- expect(input).toHaveValue("");
164
- await userEvent.click(button);
165
- expect(args.onOpenChange).toHaveBeenCalledOnce();
166
- const listbox = await doc.findByRole("listbox");
167
- const options = await within(listbox).findAllByRole("option");
168
- expect(options).toHaveLength(3);
169
- await userEvent.click(options[0]);
170
- expect(args.onOpenChange).toHaveBeenCalledOnce();
171
- expect(args.onSelectionChange).not.toHaveBeenCalled();
172
- expect(input).toHaveValue("");
173
- await userEvent.click(options[1]);
174
- expect(args.onOpenChange).toHaveBeenCalledTimes(2);
175
- expect(args.onSelectionChange).toHaveBeenCalledOnce();
176
- expect(input).toHaveValue("Item 2");
177
- }
178
- };
179
- const SelectedInCanvas = {
180
- args: {
181
- children: /* @__PURE__ */ React.createElement(BoilerplateCombobox, null, createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { textValue: item.textValue, id: item.id }, item.children)))
182
- },
183
- render: (_a) => {
184
- var _b = _a, args = __objRest(_b, ["__plasmic_selection_prop__"]);
185
- const [selected, setSelected] = useState(false);
186
- useEffect(() => {
187
- setTimeout(() => {
188
- setSelected(true);
189
- }, 1e3);
190
- }, []);
191
- return (
192
- // Simulate Plasmic canvas envirnment
193
- /* @__PURE__ */ React.createElement(
194
- PlasmicCanvasContext.Provider,
195
- {
196
- value: {
197
- componentName: "test",
198
- globalVariants: {}
199
- }
200
- },
201
- /* @__PURE__ */ React.createElement(
202
- BaseComboBox,
203
- __spreadValues({
204
- __plasmic_selection_prop__: {
205
- isSelected: selected
206
- }
207
- }, args)
208
- )
209
- )
210
- );
211
- },
212
- play: async () => {
213
- const doc = within(document.body);
214
- await waitFor(
215
- () => {
216
- expect(doc.queryByRole("listbox")).not.toBeInTheDocument();
217
- },
218
- { timeout: 100 }
219
- );
220
- await waitFor(
221
- () => {
222
- expect(doc.queryByRole("listbox")).toBeInTheDocument();
223
- },
224
- { timeout: 1100 }
225
- );
226
- }
227
- };
228
-
229
- export { Basic, Disabled, SelectedInCanvas, WithDefaultSelection, WithDisabledOptions, WithTyping, meta as default };
230
- //# sourceMappingURL=registerComboBox.stories.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerComboBox.stories.esm.js","sources":["../src/registerComboBox.stories.tsx"],"sourcesContent":["import { PlasmicCanvasContext } from \"@plasmicapp/host\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, userEvent, waitFor, within } from \"@storybook/test\";\nimport React, { useEffect, useState } from \"react\";\nimport { BaseButton } from \"./registerButton\";\nimport { BaseComboBox } from \"./registerComboBox\";\nimport { BaseInput } from \"./registerInput\";\nimport { BaseLabel } from \"./registerLabel\";\nimport { BaseListBox } from \"./registerListBox\";\nimport { BaseListBoxItem } from \"./registerListBoxItem\";\nimport { BasePopover } from \"./registerPopover\";\n\nconst meta: Meta<typeof BaseComboBox> = {\n title: \"Components/BaseComboBox\",\n component: BaseComboBox,\n args: {\n onSelectionChange: fn(),\n onOpenChange: fn(),\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof BaseComboBox>;\n\n// Helper function to create list items\nconst createListItems = (count: number) => {\n return Array.from({ length: count }, (_, i) => ({\n id: `${i + 1}`,\n textValue: `Item ${i + 1}`,\n children: `Item ${i + 1}`,\n }));\n};\n\nconst BoilerplateCombobox = ({ children }: { children: React.ReactNode }) => (\n <>\n <BaseLabel>Choose an option</BaseLabel>\n <BaseInput />\n <BaseButton>▼</BaseButton>\n <BasePopover>\n <BaseListBox>{children}</BaseListBox>\n </BasePopover>\n </>\n);\n\nexport const Basic: Story = {\n args: {\n children: (\n <BoilerplateCombobox>\n {createListItems(3).map((item) => (\n <BaseListBoxItem textValue={item.textValue} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n </BoilerplateCombobox>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n // Get the button and input\n const input = canvas.getByRole(\"combobox\");\n const button = canvas.getByText(\"▼\");\n\n // Check that listbox is not in the document\n expect(doc.queryByRole(\"listbox\")).not.toBeInTheDocument();\n\n // Open the combobox\n await userEvent.click(button);\n\n // Ensure that clicking the button shows all available options, regardless of the input value\n const options = await within(doc.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options).toHaveLength(3);\n\n // Select an option\n await userEvent.click(options[1]);\n // Check that the input value is updated\n expect(input).toHaveValue(\"Item 2\");\n\n // Check that listbox is not in the document\n expect(doc.queryByRole(\"listbox\")).not.toBeInTheDocument();\n\n // Check that the onOpenChange and onSelectionChange are called as expected\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n expect(args.onSelectionChange).toHaveBeenCalledOnce();\n },\n};\n\nexport const WithTyping: Story = {\n args: {\n children: (\n <BoilerplateCombobox>\n {createListItems(3).map((item) => (\n <BaseListBoxItem textValue={item.textValue} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n {createListItems(1).map((item) => (\n <BaseListBoxItem textValue={`${item.textValue} dup`} id={item.id}>\n {item.children} dup\n </BaseListBoxItem>\n ))}\n </BoilerplateCombobox>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n // Get the button and input\n const input = canvas.getByRole(\"combobox\");\n\n // Check that listbox is not in the document\n expect(doc.queryByRole(\"listbox\")).not.toBeInTheDocument();\n\n // Simulate keyboard interaction and select an option\n await userEvent.type(input, \"Item 1{ArrowDown}{ArrowDown}{Enter}\");\n expect(input).toHaveValue(\"Item 1 dup\");\n\n // confirm that the input can't retain a value that is not selected from the listbox\n await userEvent.type(input, \"{backspace}{backspace}{backspace}{backspace}\");\n expect(input).toHaveValue(\"Item 1\");\n expect(\n within(doc.getByRole(\"listbox\")).getAllByRole(\"option\")\n ).toHaveLength(2);\n\n await userEvent.tab(); // simulates input blur\n expect(input).toHaveValue(\"Item 1 dup\");\n\n // Check that the onOpenChange and onSelectionChange are called as expected\n expect(args.onOpenChange).toHaveBeenCalledTimes(4);\n expect(args.onSelectionChange).toHaveBeenCalledTimes(1);\n },\n};\n\nexport const WithDefaultSelection: Story = {\n args: {\n defaultSelectedKey: \"3\",\n children: (\n <BoilerplateCombobox>\n {createListItems(3).map((item) => (\n <BaseListBoxItem textValue={item.textValue} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n </BoilerplateCombobox>\n ),\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n // Get the button and input\n const input = canvas.getByRole(\"combobox\");\n\n // Check that listbox is not in the document\n expect(doc.queryByRole(\"listbox\")).not.toBeInTheDocument();\n\n await waitFor(() => expect(input).toHaveValue(\"Item 3\")); // via defaultSelectedKey\n\n // Open the combobox\n await userEvent.click(canvas.getByText(\"▼\"));\n\n const options = within(doc.getByRole(\"listbox\")).getAllByRole(\"option\");\n await userEvent.click(options[1]);\n\n expect(input).toHaveValue(\"Item 2\");\n },\n};\n\nexport const Disabled: Story = {\n args: {\n defaultSelectedKey: \"3\",\n isDisabled: true,\n children: (\n <BoilerplateCombobox>\n {createListItems(3).map((item) => (\n <BaseListBoxItem textValue={item.textValue} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n </BoilerplateCombobox>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n // Get the button and input\n const input = canvas.getByRole(\"combobox\");\n const button = canvas.getByText(\"▼\");\n\n // Verify disabled state\n expect(input).toBeDisabled();\n expect(button).toBeDisabled();\n\n await waitFor(() => expect(input).toHaveValue(\"Item 3\")); // via defaultSelectedKey\n expect(input).toHaveValue(\"Item 3\"); // via defaultSelectedKey\n\n // Open the combobox\n await userEvent.click(button);\n\n // Check that listbox is not in the document\n expect(doc.queryByRole(\"listbox\")).not.toBeInTheDocument();\n\n await userEvent.type(input, \"{Backspace}{ArrowDown}{Enter}\");\n expect(input).toHaveValue(\"Item 3\"); // unchanged\n\n // Check that listbox is not in the document\n expect(doc.queryByRole(\"listbox\")).not.toBeInTheDocument();\n\n expect(args.onOpenChange).not.toHaveBeenCalled();\n expect(args.onSelectionChange).not.toHaveBeenCalled();\n },\n};\n\nexport const WithDisabledOptions: Story = {\n args: {\n disabledKeys: [\"1\"],\n children: (\n <BoilerplateCombobox>\n {createListItems(3).map((item) => (\n <BaseListBoxItem textValue={item.textValue} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n </BoilerplateCombobox>\n ),\n },\n play: async ({ canvasElement, args }) => {\n const canvas = within(canvasElement);\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n // Get the button and input\n const input = canvas.getByRole(\"combobox\");\n const button = canvas.getByText(\"▼\");\n\n expect(doc.queryByRole(\"listbox\")).not.toBeInTheDocument();\n expect(input).toHaveValue(\"\");\n\n // Open the combobox\n await userEvent.click(button);\n expect(args.onOpenChange).toHaveBeenCalledOnce();\n\n // Ensure that clicking the button shows all available options, regardless of the input value\n const listbox = await doc.findByRole(\"listbox\");\n const options = await within(listbox).findAllByRole(\"option\");\n expect(options).toHaveLength(3);\n\n await userEvent.click(options[0]);\n expect(args.onOpenChange).toHaveBeenCalledOnce(); // the popover does not close when selecting a disabled option\n expect(args.onSelectionChange).not.toHaveBeenCalled(); // the combobox state does not change when selecting a disabled option\n expect(input).toHaveValue(\"\");\n\n await userEvent.click(options[1]); // Other items stay selectable\n expect(args.onOpenChange).toHaveBeenCalledTimes(2);\n expect(args.onSelectionChange).toHaveBeenCalledOnce();\n\n expect(input).toHaveValue(\"Item 2\");\n },\n};\n\nexport const SelectedInCanvas: Story = {\n args: {\n children: (\n <BoilerplateCombobox>\n {createListItems(3).map((item) => (\n <BaseListBoxItem textValue={item.textValue} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n </BoilerplateCombobox>\n ),\n },\n render: ({ __plasmic_selection_prop__, ...args }) => {\n const [selected, setSelected] = useState(false);\n useEffect(() => {\n setTimeout(() => {\n setSelected(true);\n }, 1000);\n }, []);\n\n return (\n // Simulate Plasmic canvas envirnment\n <PlasmicCanvasContext.Provider\n value={{\n componentName: \"test\",\n globalVariants: {},\n }}\n >\n <BaseComboBox\n // Simulate node selection in Plasmic canvas\n __plasmic_selection_prop__={{\n isSelected: selected,\n }}\n {...args}\n />\n </PlasmicCanvasContext.Provider>\n );\n },\n play: async () => {\n // popovers are rendered outside canvas, so we need to use document.body\n const doc = within(document.body);\n\n await waitFor(\n () => {\n expect(doc.queryByRole(\"listbox\")).not.toBeInTheDocument();\n },\n { timeout: 100 }\n );\n\n await waitFor(\n () => {\n expect(doc.queryByRole(\"listbox\")).toBeInTheDocument();\n },\n { timeout: 1100 }\n );\n },\n};\n"],"names":[],"mappings":"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"}