@plasmicpkgs/react-aria 0.0.103 → 0.0.105

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/react-aria.esm.js.map +1 -1
  3. package/dist/react-aria.js.map +1 -1
  4. package/dist/registerButton.d.ts +1 -1
  5. package/dist/registerComboBox.d.ts +2 -2
  6. package/dist/registerDialogTrigger.d.ts +3 -3
  7. package/dist/registerModal.d.ts +3 -4
  8. package/dist/registerPopover.d.ts +2 -2
  9. package/dist/registerSelect.d.ts +2 -2
  10. package/dist/registerSliderTrack.d.ts +1 -1
  11. package/dist/registerTooltip.d.ts +2 -2
  12. package/dist/utils.d.ts +6 -0
  13. package/package.json +13 -3
  14. package/skinny/registerButton.cjs.js.map +1 -1
  15. package/skinny/registerButton.d.ts +1 -1
  16. package/skinny/registerButton.esm.js.map +1 -1
  17. package/skinny/registerButton.stories.cjs.js +163 -0
  18. package/skinny/registerButton.stories.cjs.js.map +1 -0
  19. package/skinny/registerButton.stories.esm.js +149 -0
  20. package/skinny/registerButton.stories.esm.js.map +1 -0
  21. package/skinny/registerCheckboxGroup.stories.cjs.js +121 -0
  22. package/skinny/registerCheckboxGroup.stories.cjs.js.map +1 -0
  23. package/skinny/registerCheckboxGroup.stories.esm.js +109 -0
  24. package/skinny/registerCheckboxGroup.stories.esm.js.map +1 -0
  25. package/skinny/registerComboBox.cjs.js.map +1 -1
  26. package/skinny/registerComboBox.d.ts +2 -2
  27. package/skinny/registerComboBox.esm.js +1 -1
  28. package/skinny/registerComboBox.esm.js.map +1 -1
  29. package/skinny/registerComboBox.stories.cjs.js +244 -0
  30. package/skinny/registerComboBox.stories.cjs.js.map +1 -0
  31. package/skinny/registerComboBox.stories.esm.js +230 -0
  32. package/skinny/registerComboBox.stories.esm.js.map +1 -0
  33. package/skinny/registerDialogTrigger.cjs.js.map +1 -1
  34. package/skinny/registerDialogTrigger.d.ts +3 -3
  35. package/skinny/registerDialogTrigger.esm.js.map +1 -1
  36. package/skinny/registerDialogTrigger.stories.cjs.js +233 -0
  37. package/skinny/registerDialogTrigger.stories.cjs.js.map +1 -0
  38. package/skinny/registerDialogTrigger.stories.esm.js +221 -0
  39. package/skinny/registerDialogTrigger.stories.esm.js.map +1 -0
  40. package/skinny/{registerListBox-40846430.esm.js → registerListBox-49626f55.esm.js} +2 -2
  41. package/skinny/{registerListBox-40846430.esm.js.map → registerListBox-49626f55.esm.js.map} +1 -1
  42. package/skinny/registerListBox.esm.js +1 -1
  43. package/skinny/registerListbox.stories.cjs.js +219 -0
  44. package/skinny/registerListbox.stories.cjs.js.map +1 -0
  45. package/skinny/registerListbox.stories.esm.js +206 -0
  46. package/skinny/registerListbox.stories.esm.js.map +1 -0
  47. package/skinny/registerModal.cjs.js.map +1 -1
  48. package/skinny/registerModal.d.ts +3 -4
  49. package/skinny/registerModal.esm.js.map +1 -1
  50. package/skinny/registerModal.stories.cjs.js +194 -0
  51. package/skinny/registerModal.stories.cjs.js.map +1 -0
  52. package/skinny/registerModal.stories.esm.js +181 -0
  53. package/skinny/registerModal.stories.esm.js.map +1 -0
  54. package/skinny/registerPopover.cjs.js.map +1 -1
  55. package/skinny/registerPopover.d.ts +2 -2
  56. package/skinny/registerPopover.esm.js.map +1 -1
  57. package/skinny/registerPopover.stories.cjs.js +42 -0
  58. package/skinny/registerPopover.stories.cjs.js.map +1 -0
  59. package/skinny/registerPopover.stories.esm.js +33 -0
  60. package/skinny/registerPopover.stories.esm.js.map +1 -0
  61. package/skinny/registerRadioGroup.stories.cjs.js +120 -0
  62. package/skinny/registerRadioGroup.stories.cjs.js.map +1 -0
  63. package/skinny/registerRadioGroup.stories.esm.js +108 -0
  64. package/skinny/registerRadioGroup.stories.esm.js.map +1 -0
  65. package/skinny/registerSection.esm.js +1 -1
  66. package/skinny/registerSelect.cjs.js.map +1 -1
  67. package/skinny/registerSelect.d.ts +2 -2
  68. package/skinny/registerSelect.esm.js +1 -1
  69. package/skinny/registerSelect.esm.js.map +1 -1
  70. package/skinny/registerSelect.stories.cjs.js +176 -0
  71. package/skinny/registerSelect.stories.cjs.js.map +1 -0
  72. package/skinny/registerSelect.stories.esm.js +165 -0
  73. package/skinny/registerSelect.stories.esm.js.map +1 -0
  74. package/skinny/registerSlider.stories.cjs.js +184 -0
  75. package/skinny/registerSlider.stories.cjs.js.map +1 -0
  76. package/skinny/registerSlider.stories.esm.js +171 -0
  77. package/skinny/registerSlider.stories.esm.js.map +1 -0
  78. package/skinny/registerSliderTrack.cjs.js.map +1 -1
  79. package/skinny/registerSliderTrack.d.ts +1 -1
  80. package/skinny/registerSliderTrack.esm.js.map +1 -1
  81. package/skinny/registerTextField.cjs.js +1 -1
  82. package/skinny/registerTextField.esm.js +1 -1
  83. package/skinny/registerTooltip.cjs.js.map +1 -1
  84. package/skinny/registerTooltip.d.ts +2 -2
  85. package/skinny/registerTooltip.esm.js.map +1 -1
  86. package/skinny/registerTooltip.stories.cjs.js +228 -0
  87. package/skinny/registerTooltip.stories.cjs.js.map +1 -0
  88. package/skinny/registerTooltip.stories.esm.js +215 -0
  89. package/skinny/registerTooltip.stories.esm.js.map +1 -0
  90. package/skinny/utils-5d1b4c6b.esm.js.map +1 -1
  91. package/skinny/utils-7d000fa4.cjs.js.map +1 -1
  92. package/skinny/utils.d.ts +6 -0
@@ -0,0 +1,219 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var test = require('@storybook/test');
6
+ var React = require('react');
7
+ var reactAriaComponents = require('react-aria-components');
8
+ var registerSection = require('./registerListBox-a99736df.cjs.js');
9
+ var registerListBoxItem = require('./registerListBoxItem.cjs.js');
10
+ require('./common-b3b54c72.cjs.js');
11
+ require('./utils-7d000fa4.cjs.js');
12
+ require('@plasmicapp/host');
13
+ require('@plasmicapp/host/registerComponent');
14
+ require('./contexts-6d0cb2b1.cjs.js');
15
+ require('./OptionsItemIdManager-a89a28b9.cjs.js');
16
+ require('./variant-utils-0ad70db8.cjs.js');
17
+ require('./registerDescription.cjs.js');
18
+ require('./registerText.cjs.js');
19
+
20
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
21
+
22
+ var React__default = /*#__PURE__*/_interopDefault(React);
23
+
24
+ const meta = {
25
+ title: "Components/BaseListBox",
26
+ component: registerSection.BaseListBox,
27
+ args: {
28
+ onSelectionChange: test.fn()
29
+ },
30
+ argTypes: {
31
+ selectionMode: {
32
+ control: "radio",
33
+ options: ["none", "single"],
34
+ description: "The selection mode of the listbox"
35
+ },
36
+ selectedKeys: {
37
+ control: "text",
38
+ description: "Currently selected key(s)"
39
+ },
40
+ defaultSelectedKeys: {
41
+ control: "text",
42
+ description: "Default selected key(s)"
43
+ }
44
+ }
45
+ };
46
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
47
+ const beforeEach = async () => {
48
+ await sleep(100);
49
+ };
50
+ const createListItems = (count) => {
51
+ return Array.from({ length: count }, (_, i) => ({
52
+ id: `${i + 1}`,
53
+ textValue: `Item ${i + 1}`,
54
+ children: `Item ${i + 1} - Description`
55
+ }));
56
+ };
57
+ const NoSelection = {
58
+ args: {
59
+ selectionMode: "none",
60
+ children: createListItems(3).map((item) => /* @__PURE__ */ React__default.default.createElement(registerListBoxItem.BaseListBoxItem, { key: item.id, id: item.id }, item.children))
61
+ },
62
+ play: async ({ canvasElement, args }) => {
63
+ await beforeEach();
64
+ const canvas = test.within(canvasElement);
65
+ const options = await test.within(canvas.getByRole("listbox")).findAllByRole(
66
+ "option"
67
+ );
68
+ test.expect(options).toHaveLength(3);
69
+ await test.userEvent.click(options[1]);
70
+ test.expect(args.onSelectionChange).not.toHaveBeenCalled();
71
+ test.expect(options[0]).not.toHaveAttribute("aria-selected");
72
+ options.forEach((option) => {
73
+ test.expect(option).not.toHaveAttribute("aria-selected");
74
+ });
75
+ }
76
+ };
77
+ const SingleSelection = {
78
+ args: {
79
+ selectionMode: "single",
80
+ defaultSelectedKeys: "1",
81
+ children: createListItems(3).map((item) => /* @__PURE__ */ React__default.default.createElement(registerListBoxItem.BaseListBoxItem, { key: item.id, id: item.id }, item.children))
82
+ },
83
+ play: async ({ canvasElement }) => {
84
+ await beforeEach();
85
+ const canvas = test.within(canvasElement);
86
+ const options = await test.within(canvas.getByRole("listbox")).findAllByRole(
87
+ "option"
88
+ );
89
+ test.expect(options[0]).toHaveAttribute("aria-selected", "true");
90
+ test.expect(options[1]).toHaveAttribute("aria-selected", "false");
91
+ test.expect(options[2]).toHaveAttribute("aria-selected", "false");
92
+ await test.userEvent.click(options[1]);
93
+ test.expect(options[0]).toHaveAttribute("aria-selected", "false");
94
+ test.expect(options[1]).toHaveAttribute("aria-selected", "true");
95
+ test.expect(options[2]).toHaveAttribute("aria-selected", "false");
96
+ }
97
+ };
98
+ const WithSections = {
99
+ args: {
100
+ selectionMode: "single",
101
+ children: [
102
+ /* @__PURE__ */ React__default.default.createElement(
103
+ registerSection.BaseSection,
104
+ {
105
+ key: "section1",
106
+ header: "Section 1",
107
+ items: createListItems(2).map((item) => /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.ListBoxItem, { key: item.id, id: item.id }, item.children))
108
+ }
109
+ ),
110
+ /* @__PURE__ */ React__default.default.createElement(
111
+ registerSection.BaseSection,
112
+ {
113
+ key: "section2",
114
+ header: "Section 2",
115
+ items: createListItems(2).map((item) => /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.ListBoxItem, { key: `s2-${item.id}`, id: `s2-${item.id}` }, item.children))
116
+ }
117
+ )
118
+ ]
119
+ },
120
+ play: async ({ canvasElement, args }) => {
121
+ await beforeEach();
122
+ const canvas = test.within(canvasElement);
123
+ const options = await test.within(canvas.getByRole("listbox")).findAllByRole(
124
+ "option"
125
+ );
126
+ let lastCallArg;
127
+ options.forEach((option) => {
128
+ test.expect(option).toHaveAttribute("aria-selected", "false");
129
+ });
130
+ await test.userEvent.click(options[0]);
131
+ test.expect(options[0]).toHaveAttribute("aria-selected", "true");
132
+ [options[1], options[2], options[3]].forEach((option) => {
133
+ test.expect(option).toHaveAttribute("aria-selected", "false");
134
+ });
135
+ lastCallArg = args.onSelectionChange.mock.calls[0][0];
136
+ test.expect(lastCallArg.has("1")).toBe(true);
137
+ await test.userEvent.click(options[2]);
138
+ test.expect(options[2]).toHaveAttribute("aria-selected", "true");
139
+ [options[0], options[1], options[3]].forEach((option) => {
140
+ test.expect(option).toHaveAttribute("aria-selected", "false");
141
+ });
142
+ test.expect(args.onSelectionChange).toHaveBeenCalledTimes(2);
143
+ lastCallArg = args.onSelectionChange.mock.calls[1][0];
144
+ test.expect(lastCallArg.has("s2-1")).toBe(true);
145
+ }
146
+ };
147
+ const WithDuplicateIds = {
148
+ args: {
149
+ selectionMode: "single",
150
+ defaultSelectedKeys: "1",
151
+ children: /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, createListItems(2).map((item) => /* @__PURE__ */ React__default.default.createElement(registerListBoxItem.BaseListBoxItem, { key: item.id, id: item.id }, item.children)), createListItems(3).map((item) => /* @__PURE__ */ React__default.default.createElement(registerListBoxItem.BaseListBoxItem, { key: item.id, id: item.id }, item.children)), createListItems(1).map((item) => /* @__PURE__ */ React__default.default.createElement(registerListBoxItem.BaseListBoxItem, { key: item.id, id: item.id }, item.children)))
152
+ },
153
+ play: async ({ canvasElement, args }) => {
154
+ await beforeEach();
155
+ let lastCallArg;
156
+ const canvas = test.within(canvasElement);
157
+ const options = await test.within(canvas.getByRole("listbox")).findAllByRole(
158
+ "option"
159
+ );
160
+ test.expect(options).toHaveLength(6);
161
+ test.expect(options[0]).toHaveAttribute("aria-selected", "true");
162
+ [1, 2, 3, 4, 5].forEach((index) => {
163
+ test.expect(options[index]).toHaveAttribute("aria-selected", "false");
164
+ });
165
+ await test.userEvent.click(options[2]);
166
+ lastCallArg = args.onSelectionChange.mock.calls[0][0];
167
+ test.expect(lastCallArg.has("1 duplicate(1)")).toBe(true);
168
+ test.expect(options[2]).toHaveAttribute("aria-selected", "true");
169
+ [0, 1, 3, 4, 5].forEach((index) => {
170
+ test.expect(options[index]).toHaveAttribute("aria-selected", "false");
171
+ });
172
+ await test.userEvent.click(options[3]);
173
+ lastCallArg = args.onSelectionChange.mock.calls[1][0];
174
+ test.expect(lastCallArg.has("2 duplicate(1)")).toBe(true);
175
+ [0, 1, 2, 4, 5].forEach((index) => {
176
+ test.expect(options[index]).toHaveAttribute("aria-selected", "false");
177
+ });
178
+ await test.userEvent.click(options[5]);
179
+ lastCallArg = args.onSelectionChange.mock.calls[2][0];
180
+ test.expect(lastCallArg.has("1 duplicate(2)")).toBe(true);
181
+ [0, 1, 2, 3, 4].forEach((index) => {
182
+ test.expect(options[index]).toHaveAttribute("aria-selected", "false");
183
+ });
184
+ }
185
+ };
186
+ const WithMissingIds = {
187
+ args: {
188
+ selectionMode: "single",
189
+ defaultSelectedKeys: "1",
190
+ children: /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, createListItems(2).map((item) => /* @__PURE__ */ React__default.default.createElement(registerListBoxItem.BaseListBoxItem, { key: item.id, id: item.id }, item.children)), /* @__PURE__ */ React__default.default.createElement(registerListBoxItem.BaseListBoxItem, null, "Item with missing id"))
191
+ },
192
+ play: async ({ canvasElement, args }) => {
193
+ await beforeEach();
194
+ const canvas = test.within(canvasElement);
195
+ const options = await test.within(canvas.getByRole("listbox")).findAllByRole(
196
+ "option"
197
+ );
198
+ test.expect(options).toHaveLength(3);
199
+ test.expect(options[0]).toHaveAttribute("aria-selected", "true");
200
+ [1, 2].forEach((index) => {
201
+ test.expect(options[index]).toHaveAttribute("aria-selected", "false");
202
+ });
203
+ await test.userEvent.click(options[2]);
204
+ const lastCallArg = args.onSelectionChange.mock.calls[0][0];
205
+ test.expect(lastCallArg.has("missing(1)")).toBe(true);
206
+ test.expect(options[2]).toHaveAttribute("aria-selected", "true");
207
+ [0, 1].forEach((index) => {
208
+ test.expect(options[index]).toHaveAttribute("aria-selected", "false");
209
+ });
210
+ }
211
+ };
212
+
213
+ exports.NoSelection = NoSelection;
214
+ exports.SingleSelection = SingleSelection;
215
+ exports.WithDuplicateIds = WithDuplicateIds;
216
+ exports.WithMissingIds = WithMissingIds;
217
+ exports.WithSections = WithSections;
218
+ exports.default = meta;
219
+ //# sourceMappingURL=registerListbox.stories.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerListbox.stories.cjs.js","sources":["../src/registerListbox.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, Mock, userEvent, within } from \"@storybook/test\";\nimport React from \"react\";\nimport { ListBoxItem } from \"react-aria-components\";\nimport { BaseListBox } from \"./registerListBox\";\nimport { BaseListBoxItem } from \"./registerListBoxItem\";\nimport { BaseSection } from \"./registerSection\";\n\nconst meta: Meta<typeof BaseListBox> = {\n title: \"Components/BaseListBox\",\n component: BaseListBox,\n args: {\n onSelectionChange: fn(),\n },\n argTypes: {\n selectionMode: {\n control: \"radio\",\n options: [\"none\", \"single\"],\n description: \"The selection mode of the listbox\",\n },\n selectedKeys: {\n control: \"text\",\n description: \"Currently selected key(s)\",\n },\n defaultSelectedKeys: {\n control: \"text\",\n description: \"Default selected key(s)\",\n },\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof BaseListBox>;\n\n// TODO: Assertions may be flaky because the registeredId is set inside useEffect, so in the first render, the id is randomly generated by react-aria itself.\n// We use sleep to wait for the id to be set before asserting.\n// This is marked todo because the sleep needs to be removed in a separate PR that fixes this issue\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst beforeEach = async () => {\n await sleep(100);\n};\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} - Description`,\n }));\n};\n\n// Basic ListBox with no selection\nexport const NoSelection: Story = {\n args: {\n selectionMode: \"none\",\n children: createListItems(3).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n )),\n },\n play: async ({ canvasElement, args }) => {\n await beforeEach();\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options).toHaveLength(3);\n await userEvent.click(options[1]);\n\n expect(args.onSelectionChange).not.toHaveBeenCalled();\n\n // Verify no selection occurred by checking aria-selected attribute\n expect(options[0]).not.toHaveAttribute(\"aria-selected\");\n\n // Additional verification that none of the options are selected\n options.forEach((option) => {\n expect(option).not.toHaveAttribute(\"aria-selected\");\n });\n },\n};\n\n// ListBox with single selection\nexport const SingleSelection: Story = {\n args: {\n selectionMode: \"single\",\n defaultSelectedKeys: \"1\",\n children: createListItems(3).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n )),\n },\n play: async ({ canvasElement }) => {\n await beforeEach();\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"true\");\n expect(options[1]).toHaveAttribute(\"aria-selected\", \"false\");\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"false\");\n\n await userEvent.click(options[1]);\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"false\");\n expect(options[1]).toHaveAttribute(\"aria-selected\", \"true\");\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"false\");\n },\n};\n\n// ListBox with sections\nexport const WithSections: Story = {\n args: {\n selectionMode: \"single\",\n children: [\n <BaseSection\n key=\"section1\"\n header=\"Section 1\"\n items={createListItems(2).map((item) => (\n <ListBoxItem key={item.id} id={item.id}>\n {item.children}\n </ListBoxItem>\n ))}\n />,\n <BaseSection\n key=\"section2\"\n header=\"Section 2\"\n items={createListItems(2).map((item) => (\n <ListBoxItem key={`s2-${item.id}`} id={`s2-${item.id}`}>\n {item.children}\n </ListBoxItem>\n ))}\n />,\n ],\n },\n play: async ({ canvasElement, args }) => {\n await beforeEach();\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n let lastCallArg;\n\n options.forEach((option) => {\n expect(option).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n // Test selection in first section\n await userEvent.click(options[0]);\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"true\");\n [options[1], options[2], options[3]].forEach((option) => {\n expect(option).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[0][0];\n expect(lastCallArg.has(\"1\")).toBe(true);\n\n // Test selection in second section\n await userEvent.click(options[2]); // First item in second section\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"true\");\n [options[0], options[1], options[3]].forEach((option) => {\n expect(option).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n expect(args.onSelectionChange).toHaveBeenCalledTimes(2);\n\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[1][0];\n expect(lastCallArg.has(\"s2-1\")).toBe(true);\n },\n};\n// ListBox containing items with duplicate ids\nexport const WithDuplicateIds: Story = {\n args: {\n selectionMode: \"single\",\n defaultSelectedKeys: \"1\",\n children: (\n <>\n {createListItems(2).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n {createListItems(3).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n {createListItems(1).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n </>\n ),\n },\n play: async ({ canvasElement, args }) => {\n await beforeEach();\n\n let lastCallArg;\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options).toHaveLength(6);\n\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"true\");\n [1, 2, 3, 4, 5].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n await userEvent.click(options[2]);\n\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[0][0];\n expect(lastCallArg.has(\"1 duplicate(1)\")).toBe(true);\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"true\");\n [0, 1, 3, 4, 5].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n await userEvent.click(options[3]);\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[1][0];\n expect(lastCallArg.has(\"2 duplicate(1)\")).toBe(true);\n [0, 1, 2, 4, 5].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n await userEvent.click(options[5]);\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[2][0];\n expect(lastCallArg.has(\"1 duplicate(2)\")).toBe(true);\n [0, 1, 2, 3, 4].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n },\n};\n\n// ListBox containing items with duplicate ids\nexport const WithMissingIds: Story = {\n args: {\n selectionMode: \"single\",\n defaultSelectedKeys: \"1\",\n children: (\n <>\n {createListItems(2).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n <BaseListBoxItem>Item with missing id</BaseListBoxItem>\n </>\n ),\n },\n play: async ({ canvasElement, args }) => {\n await beforeEach();\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options).toHaveLength(3);\n\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"true\");\n [1, 2].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n await userEvent.click(options[2]);\n\n const lastCallArg = (args.onSelectionChange as Mock).mock.calls[0][0];\n expect(lastCallArg.has(\"missing(1)\")).toBe(true);\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"true\");\n [0, 1].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n },\n};\n"],"names":["BaseListBox","fn","React","BaseListBoxItem","within","expect","userEvent","BaseSection","ListBoxItem"],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ import { fn, within, expect, userEvent } from '@storybook/test';
2
+ import React from 'react';
3
+ import { ListBoxItem } from 'react-aria-components';
4
+ import { B as BaseListBox, a as BaseSection } from './registerListBox-49626f55.esm.js';
5
+ import { BaseListBoxItem } from './registerListBoxItem.esm.js';
6
+ import './common-ceebbaea.esm.js';
7
+ import './utils-5d1b4c6b.esm.js';
8
+ import '@plasmicapp/host';
9
+ import '@plasmicapp/host/registerComponent';
10
+ import './contexts-5cb81c2f.esm.js';
11
+ import './OptionsItemIdManager-832b8cfe.esm.js';
12
+ import './variant-utils-4405ebb0.esm.js';
13
+ import './registerDescription.esm.js';
14
+ import './registerText.esm.js';
15
+
16
+ const meta = {
17
+ title: "Components/BaseListBox",
18
+ component: BaseListBox,
19
+ args: {
20
+ onSelectionChange: fn()
21
+ },
22
+ argTypes: {
23
+ selectionMode: {
24
+ control: "radio",
25
+ options: ["none", "single"],
26
+ description: "The selection mode of the listbox"
27
+ },
28
+ selectedKeys: {
29
+ control: "text",
30
+ description: "Currently selected key(s)"
31
+ },
32
+ defaultSelectedKeys: {
33
+ control: "text",
34
+ description: "Default selected key(s)"
35
+ }
36
+ }
37
+ };
38
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
39
+ const beforeEach = async () => {
40
+ await sleep(100);
41
+ };
42
+ const createListItems = (count) => {
43
+ return Array.from({ length: count }, (_, i) => ({
44
+ id: `${i + 1}`,
45
+ textValue: `Item ${i + 1}`,
46
+ children: `Item ${i + 1} - Description`
47
+ }));
48
+ };
49
+ const NoSelection = {
50
+ args: {
51
+ selectionMode: "none",
52
+ children: createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { key: item.id, id: item.id }, item.children))
53
+ },
54
+ play: async ({ canvasElement, args }) => {
55
+ await beforeEach();
56
+ const canvas = within(canvasElement);
57
+ const options = await within(canvas.getByRole("listbox")).findAllByRole(
58
+ "option"
59
+ );
60
+ expect(options).toHaveLength(3);
61
+ await userEvent.click(options[1]);
62
+ expect(args.onSelectionChange).not.toHaveBeenCalled();
63
+ expect(options[0]).not.toHaveAttribute("aria-selected");
64
+ options.forEach((option) => {
65
+ expect(option).not.toHaveAttribute("aria-selected");
66
+ });
67
+ }
68
+ };
69
+ const SingleSelection = {
70
+ args: {
71
+ selectionMode: "single",
72
+ defaultSelectedKeys: "1",
73
+ children: createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { key: item.id, id: item.id }, item.children))
74
+ },
75
+ play: async ({ canvasElement }) => {
76
+ await beforeEach();
77
+ const canvas = within(canvasElement);
78
+ const options = await within(canvas.getByRole("listbox")).findAllByRole(
79
+ "option"
80
+ );
81
+ expect(options[0]).toHaveAttribute("aria-selected", "true");
82
+ expect(options[1]).toHaveAttribute("aria-selected", "false");
83
+ expect(options[2]).toHaveAttribute("aria-selected", "false");
84
+ await userEvent.click(options[1]);
85
+ expect(options[0]).toHaveAttribute("aria-selected", "false");
86
+ expect(options[1]).toHaveAttribute("aria-selected", "true");
87
+ expect(options[2]).toHaveAttribute("aria-selected", "false");
88
+ }
89
+ };
90
+ const WithSections = {
91
+ args: {
92
+ selectionMode: "single",
93
+ children: [
94
+ /* @__PURE__ */ React.createElement(
95
+ BaseSection,
96
+ {
97
+ key: "section1",
98
+ header: "Section 1",
99
+ items: createListItems(2).map((item) => /* @__PURE__ */ React.createElement(ListBoxItem, { key: item.id, id: item.id }, item.children))
100
+ }
101
+ ),
102
+ /* @__PURE__ */ React.createElement(
103
+ BaseSection,
104
+ {
105
+ key: "section2",
106
+ header: "Section 2",
107
+ items: createListItems(2).map((item) => /* @__PURE__ */ React.createElement(ListBoxItem, { key: `s2-${item.id}`, id: `s2-${item.id}` }, item.children))
108
+ }
109
+ )
110
+ ]
111
+ },
112
+ play: async ({ canvasElement, args }) => {
113
+ await beforeEach();
114
+ const canvas = within(canvasElement);
115
+ const options = await within(canvas.getByRole("listbox")).findAllByRole(
116
+ "option"
117
+ );
118
+ let lastCallArg;
119
+ options.forEach((option) => {
120
+ expect(option).toHaveAttribute("aria-selected", "false");
121
+ });
122
+ await userEvent.click(options[0]);
123
+ expect(options[0]).toHaveAttribute("aria-selected", "true");
124
+ [options[1], options[2], options[3]].forEach((option) => {
125
+ expect(option).toHaveAttribute("aria-selected", "false");
126
+ });
127
+ lastCallArg = args.onSelectionChange.mock.calls[0][0];
128
+ expect(lastCallArg.has("1")).toBe(true);
129
+ await userEvent.click(options[2]);
130
+ expect(options[2]).toHaveAttribute("aria-selected", "true");
131
+ [options[0], options[1], options[3]].forEach((option) => {
132
+ expect(option).toHaveAttribute("aria-selected", "false");
133
+ });
134
+ expect(args.onSelectionChange).toHaveBeenCalledTimes(2);
135
+ lastCallArg = args.onSelectionChange.mock.calls[1][0];
136
+ expect(lastCallArg.has("s2-1")).toBe(true);
137
+ }
138
+ };
139
+ const WithDuplicateIds = {
140
+ args: {
141
+ selectionMode: "single",
142
+ defaultSelectedKeys: "1",
143
+ children: /* @__PURE__ */ React.createElement(React.Fragment, null, createListItems(2).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { key: item.id, id: item.id }, item.children)), createListItems(3).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { key: item.id, id: item.id }, item.children)), createListItems(1).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { key: item.id, id: item.id }, item.children)))
144
+ },
145
+ play: async ({ canvasElement, args }) => {
146
+ await beforeEach();
147
+ let lastCallArg;
148
+ const canvas = within(canvasElement);
149
+ const options = await within(canvas.getByRole("listbox")).findAllByRole(
150
+ "option"
151
+ );
152
+ expect(options).toHaveLength(6);
153
+ expect(options[0]).toHaveAttribute("aria-selected", "true");
154
+ [1, 2, 3, 4, 5].forEach((index) => {
155
+ expect(options[index]).toHaveAttribute("aria-selected", "false");
156
+ });
157
+ await userEvent.click(options[2]);
158
+ lastCallArg = args.onSelectionChange.mock.calls[0][0];
159
+ expect(lastCallArg.has("1 duplicate(1)")).toBe(true);
160
+ expect(options[2]).toHaveAttribute("aria-selected", "true");
161
+ [0, 1, 3, 4, 5].forEach((index) => {
162
+ expect(options[index]).toHaveAttribute("aria-selected", "false");
163
+ });
164
+ await userEvent.click(options[3]);
165
+ lastCallArg = args.onSelectionChange.mock.calls[1][0];
166
+ expect(lastCallArg.has("2 duplicate(1)")).toBe(true);
167
+ [0, 1, 2, 4, 5].forEach((index) => {
168
+ expect(options[index]).toHaveAttribute("aria-selected", "false");
169
+ });
170
+ await userEvent.click(options[5]);
171
+ lastCallArg = args.onSelectionChange.mock.calls[2][0];
172
+ expect(lastCallArg.has("1 duplicate(2)")).toBe(true);
173
+ [0, 1, 2, 3, 4].forEach((index) => {
174
+ expect(options[index]).toHaveAttribute("aria-selected", "false");
175
+ });
176
+ }
177
+ };
178
+ const WithMissingIds = {
179
+ args: {
180
+ selectionMode: "single",
181
+ defaultSelectedKeys: "1",
182
+ children: /* @__PURE__ */ React.createElement(React.Fragment, null, createListItems(2).map((item) => /* @__PURE__ */ React.createElement(BaseListBoxItem, { key: item.id, id: item.id }, item.children)), /* @__PURE__ */ React.createElement(BaseListBoxItem, null, "Item with missing id"))
183
+ },
184
+ play: async ({ canvasElement, args }) => {
185
+ await beforeEach();
186
+ const canvas = within(canvasElement);
187
+ const options = await within(canvas.getByRole("listbox")).findAllByRole(
188
+ "option"
189
+ );
190
+ expect(options).toHaveLength(3);
191
+ expect(options[0]).toHaveAttribute("aria-selected", "true");
192
+ [1, 2].forEach((index) => {
193
+ expect(options[index]).toHaveAttribute("aria-selected", "false");
194
+ });
195
+ await userEvent.click(options[2]);
196
+ const lastCallArg = args.onSelectionChange.mock.calls[0][0];
197
+ expect(lastCallArg.has("missing(1)")).toBe(true);
198
+ expect(options[2]).toHaveAttribute("aria-selected", "true");
199
+ [0, 1].forEach((index) => {
200
+ expect(options[index]).toHaveAttribute("aria-selected", "false");
201
+ });
202
+ }
203
+ };
204
+
205
+ export { NoSelection, SingleSelection, WithDuplicateIds, WithMissingIds, WithSections, meta as default };
206
+ //# sourceMappingURL=registerListbox.stories.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerListbox.stories.esm.js","sources":["../src/registerListbox.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { expect, fn, Mock, userEvent, within } from \"@storybook/test\";\nimport React from \"react\";\nimport { ListBoxItem } from \"react-aria-components\";\nimport { BaseListBox } from \"./registerListBox\";\nimport { BaseListBoxItem } from \"./registerListBoxItem\";\nimport { BaseSection } from \"./registerSection\";\n\nconst meta: Meta<typeof BaseListBox> = {\n title: \"Components/BaseListBox\",\n component: BaseListBox,\n args: {\n onSelectionChange: fn(),\n },\n argTypes: {\n selectionMode: {\n control: \"radio\",\n options: [\"none\", \"single\"],\n description: \"The selection mode of the listbox\",\n },\n selectedKeys: {\n control: \"text\",\n description: \"Currently selected key(s)\",\n },\n defaultSelectedKeys: {\n control: \"text\",\n description: \"Default selected key(s)\",\n },\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof BaseListBox>;\n\n// TODO: Assertions may be flaky because the registeredId is set inside useEffect, so in the first render, the id is randomly generated by react-aria itself.\n// We use sleep to wait for the id to be set before asserting.\n// This is marked todo because the sleep needs to be removed in a separate PR that fixes this issue\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst beforeEach = async () => {\n await sleep(100);\n};\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} - Description`,\n }));\n};\n\n// Basic ListBox with no selection\nexport const NoSelection: Story = {\n args: {\n selectionMode: \"none\",\n children: createListItems(3).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n )),\n },\n play: async ({ canvasElement, args }) => {\n await beforeEach();\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options).toHaveLength(3);\n await userEvent.click(options[1]);\n\n expect(args.onSelectionChange).not.toHaveBeenCalled();\n\n // Verify no selection occurred by checking aria-selected attribute\n expect(options[0]).not.toHaveAttribute(\"aria-selected\");\n\n // Additional verification that none of the options are selected\n options.forEach((option) => {\n expect(option).not.toHaveAttribute(\"aria-selected\");\n });\n },\n};\n\n// ListBox with single selection\nexport const SingleSelection: Story = {\n args: {\n selectionMode: \"single\",\n defaultSelectedKeys: \"1\",\n children: createListItems(3).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n )),\n },\n play: async ({ canvasElement }) => {\n await beforeEach();\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"true\");\n expect(options[1]).toHaveAttribute(\"aria-selected\", \"false\");\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"false\");\n\n await userEvent.click(options[1]);\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"false\");\n expect(options[1]).toHaveAttribute(\"aria-selected\", \"true\");\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"false\");\n },\n};\n\n// ListBox with sections\nexport const WithSections: Story = {\n args: {\n selectionMode: \"single\",\n children: [\n <BaseSection\n key=\"section1\"\n header=\"Section 1\"\n items={createListItems(2).map((item) => (\n <ListBoxItem key={item.id} id={item.id}>\n {item.children}\n </ListBoxItem>\n ))}\n />,\n <BaseSection\n key=\"section2\"\n header=\"Section 2\"\n items={createListItems(2).map((item) => (\n <ListBoxItem key={`s2-${item.id}`} id={`s2-${item.id}`}>\n {item.children}\n </ListBoxItem>\n ))}\n />,\n ],\n },\n play: async ({ canvasElement, args }) => {\n await beforeEach();\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n let lastCallArg;\n\n options.forEach((option) => {\n expect(option).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n // Test selection in first section\n await userEvent.click(options[0]);\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"true\");\n [options[1], options[2], options[3]].forEach((option) => {\n expect(option).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[0][0];\n expect(lastCallArg.has(\"1\")).toBe(true);\n\n // Test selection in second section\n await userEvent.click(options[2]); // First item in second section\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"true\");\n [options[0], options[1], options[3]].forEach((option) => {\n expect(option).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n expect(args.onSelectionChange).toHaveBeenCalledTimes(2);\n\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[1][0];\n expect(lastCallArg.has(\"s2-1\")).toBe(true);\n },\n};\n// ListBox containing items with duplicate ids\nexport const WithDuplicateIds: Story = {\n args: {\n selectionMode: \"single\",\n defaultSelectedKeys: \"1\",\n children: (\n <>\n {createListItems(2).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n {createListItems(3).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n {createListItems(1).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n </>\n ),\n },\n play: async ({ canvasElement, args }) => {\n await beforeEach();\n\n let lastCallArg;\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options).toHaveLength(6);\n\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"true\");\n [1, 2, 3, 4, 5].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n await userEvent.click(options[2]);\n\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[0][0];\n expect(lastCallArg.has(\"1 duplicate(1)\")).toBe(true);\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"true\");\n [0, 1, 3, 4, 5].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n await userEvent.click(options[3]);\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[1][0];\n expect(lastCallArg.has(\"2 duplicate(1)\")).toBe(true);\n [0, 1, 2, 4, 5].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n await userEvent.click(options[5]);\n lastCallArg = (args.onSelectionChange as Mock).mock.calls[2][0];\n expect(lastCallArg.has(\"1 duplicate(2)\")).toBe(true);\n [0, 1, 2, 3, 4].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n },\n};\n\n// ListBox containing items with duplicate ids\nexport const WithMissingIds: Story = {\n args: {\n selectionMode: \"single\",\n defaultSelectedKeys: \"1\",\n children: (\n <>\n {createListItems(2).map((item) => (\n <BaseListBoxItem key={item.id} id={item.id}>\n {item.children}\n </BaseListBoxItem>\n ))}\n <BaseListBoxItem>Item with missing id</BaseListBoxItem>\n </>\n ),\n },\n play: async ({ canvasElement, args }) => {\n await beforeEach();\n const canvas = within(canvasElement);\n const options = await within(canvas.getByRole(\"listbox\")).findAllByRole(\n \"option\"\n );\n expect(options).toHaveLength(3);\n\n expect(options[0]).toHaveAttribute(\"aria-selected\", \"true\");\n [1, 2].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n\n await userEvent.click(options[2]);\n\n const lastCallArg = (args.onSelectionChange as Mock).mock.calls[0][0];\n expect(lastCallArg.has(\"missing(1)\")).toBe(true);\n expect(options[2]).toHaveAttribute(\"aria-selected\", \"true\");\n [0, 1].forEach((index) => {\n expect(options[index]).toHaveAttribute(\"aria-selected\", \"false\");\n });\n },\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registerModal.cjs.js","sources":["../src/registerModal.tsx"],"sourcesContent":["import {\n PlasmicElement,\n usePlasmicCanvasComponentInfo,\n usePlasmicCanvasContext,\n} from \"@plasmicapp/host\";\nimport React, { forwardRef, useImperativeHandle } from \"react\";\nimport { mergeProps } from \"react-aria\";\nimport { Modal, ModalOverlay, ModalOverlayProps } from \"react-aria-components\";\nimport { hasParent } from \"./common\";\nimport { PlasmicDialogTriggerContext } from \"./contexts\";\nimport {\n CodeComponentMetaOverrides,\n HasControlContextData,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseModalProps\n extends ModalOverlayProps,\n HasControlContextData {\n heading: React.ReactNode;\n modalOverlayClass: string;\n resetClassName?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface BaseModalActions {\n close(): void;\n open(): void;\n}\n\nexport const BaseModal = forwardRef<BaseModalActions, BaseModalProps>(\n function BaseModalInner(props, ref) {\n const {\n children,\n modalOverlayClass,\n className,\n isOpen,\n resetClassName,\n setControlContextData,\n isDismissable,\n ...rest\n } = props;\n\n const canvasCtx = usePlasmicCanvasContext();\n const isEditMode = canvasCtx && canvasCtx.interactive === false;\n const isSelected =\n usePlasmicCanvasComponentInfo?.(props)?.isSelected ?? false;\n\n const contextProps = React.useContext(PlasmicDialogTriggerContext);\n const isStandalone = !contextProps;\n const mergedProps = mergeProps(contextProps, rest, {\n isOpen: isStandalone ? isSelected || isOpen : contextProps.isOpen,\n /*\n isDismissable on canvas (non-interactive mode) causes the following two issues:\n 1. Clicking anywhere inside the modal dismisses it\n 2. If the modal is auto-opened due to selection in outline tab, the modal stays open despite issue #1, but the text elements inside the modal are no longer selectable, and therefore the text or headings inside the modal are not editable.\n\n To fix the above issue, we set an interim isDismissable state to false in edit mode, because it only matters in interactive mode.\n */\n isDismissable: isEditMode ? false : isDismissable,\n });\n\n setControlContextData?.({\n parent: isStandalone ? undefined : {},\n });\n\n // Expose close operation using useImperativeHandle\n useImperativeHandle(ref, () => ({\n close: () => {\n mergedProps.onOpenChange?.(false);\n },\n open: () => {\n mergedProps.onOpenChange?.(true);\n },\n }));\n\n return (\n <ModalOverlay\n {...mergedProps}\n className={`${resetClassName} ${modalOverlayClass}`}\n >\n <Modal className={className}>{children}</Modal>\n </ModalOverlay>\n );\n }\n);\n\nexport const MODAL_COMPONENT_NAME = makeComponentName(\"modal\");\n\nexport const MODAL_DEFAULT_SLOT_CONTENT: PlasmicElement = {\n type: \"vbox\",\n styles: {\n width: \"stretch\",\n padding: 0,\n gap: \"10px\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n },\n children: [\n {\n type: \"text\",\n value: \"Heading\",\n tag: \"h2\",\n },\n {\n type: \"text\",\n value: \"This is a Modal!\",\n },\n {\n type: \"text\",\n value: \"You can put anything you can imagine here!\",\n styles: {\n fontWeight: 500,\n },\n },\n {\n type: \"text\",\n value:\n \"Use it in a `Aria Dialog Trigger` component to trigger it on a button click!\",\n },\n ],\n};\n\nexport function registerModal(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseModal>\n) {\n registerComponentHelper(\n loader,\n BaseModal,\n {\n name: MODAL_COMPONENT_NAME,\n displayName: \"Aria Modal\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerModal\",\n importName: \"BaseModal\",\n styleSections: true,\n defaultStyles: {\n // centering the modal on the page by default\n position: \"fixed\",\n top: \"10%\",\n left: \"50%\",\n width: \"50%\",\n transform: \"translateX(-50%)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"black\",\n padding: \"20px\",\n maxWidth: \"300px\",\n backgroundColor: \"#FDE3C3\",\n },\n refActions: {\n open: {\n description: \"Open the modal\",\n argTypes: [],\n },\n close: {\n description: \"Close the modal\",\n argTypes: [],\n },\n },\n props: {\n children: {\n type: \"slot\",\n mergeWithParent: true,\n defaultValue: MODAL_DEFAULT_SLOT_CONTENT,\n },\n modalOverlayClass: {\n type: \"class\",\n displayName: \"Modal Overlay\",\n },\n isOpen: {\n type: \"boolean\",\n editOnly: true,\n uncontrolledProp: \"defaultOpen\",\n defaultValueHint: true,\n defaultValue: true,\n hidden: hasParent,\n },\n isDismissable: {\n type: \"boolean\",\n description:\n \"Whether to close the modal when the user interacts outside it.\",\n },\n isKeyboardDismissDisabled: {\n type: \"boolean\",\n description:\n \"Whether pressing the escape key to close the modal should be disabled.\",\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n resetClassName: {\n type: \"themeResetClass\",\n },\n },\n states: {\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n hidden: hasParent,\n },\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["forwardRef","usePlasmicCanvasContext","usePlasmicCanvasComponentInfo","React","PlasmicDialogTriggerContext","mergeProps","useImperativeHandle","_a","ModalOverlay","Modal","makeComponentName","registerComponentHelper","hasParent"],"mappings":"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"}
1
+ {"version":3,"file":"registerModal.cjs.js","sources":["../src/registerModal.tsx"],"sourcesContent":["import {\n PlasmicElement,\n usePlasmicCanvasComponentInfo,\n usePlasmicCanvasContext,\n} from \"@plasmicapp/host\";\nimport React, { forwardRef, useImperativeHandle } from \"react\";\nimport { mergeProps } from \"react-aria\";\nimport { Modal, ModalOverlay, ModalOverlayProps } from \"react-aria-components\";\nimport { hasParent } from \"./common\";\nimport { PlasmicDialogTriggerContext } from \"./contexts\";\nimport {\n CodeComponentMetaOverrides,\n HasControlContextData,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n WithPlasmicCanvasComponentInfo,\n} from \"./utils\";\n\nexport interface BaseModalProps\n extends ModalOverlayProps,\n WithPlasmicCanvasComponentInfo,\n HasControlContextData {\n modalOverlayClass?: string;\n resetClassName?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface BaseModalActions {\n close(): void;\n open(): void;\n}\n\nexport const BaseModal = forwardRef<BaseModalActions, BaseModalProps>(\n function BaseModalInner(props, ref) {\n const {\n children,\n modalOverlayClass,\n className,\n isOpen,\n resetClassName,\n setControlContextData,\n isDismissable,\n ...rest\n } = props;\n\n const canvasCtx = usePlasmicCanvasContext();\n const isEditMode = canvasCtx && canvasCtx.interactive === false;\n const isSelected =\n usePlasmicCanvasComponentInfo?.(props)?.isSelected ?? false;\n\n const contextProps = React.useContext(PlasmicDialogTriggerContext);\n const isStandalone = !contextProps;\n // TODO: React-aria does not like modal being passed defaultOpen while its inside a DialogTrigger.\n const mergedProps = mergeProps(contextProps, rest, {\n isOpen: isStandalone ? isSelected || isOpen : contextProps.isOpen,\n /*\n isDismissable on canvas (non-interactive mode) causes the following two issues:\n 1. Clicking anywhere inside the modal dismisses it\n 2. If the modal is auto-opened due to selection in outline tab, the modal stays open despite issue #1, but the text elements inside the modal are no longer selectable, and therefore the text or headings inside the modal are not editable.\n\n To fix the above issue, we set an interim isDismissable state to false in edit mode, because it only matters in interactive mode.\n */\n isDismissable: isEditMode ? false : isDismissable,\n });\n\n setControlContextData?.({\n parent: isStandalone ? undefined : {},\n });\n\n // Expose close operation using useImperativeHandle\n useImperativeHandle(ref, () => ({\n close: () => {\n mergedProps.onOpenChange?.(false);\n },\n open: () => {\n mergedProps.onOpenChange?.(true);\n },\n }));\n\n return (\n <ModalOverlay\n {...mergedProps}\n className={`${resetClassName} ${modalOverlayClass}`}\n >\n <Modal className={className}>{children}</Modal>\n </ModalOverlay>\n );\n }\n);\n\nexport const MODAL_COMPONENT_NAME = makeComponentName(\"modal\");\n\nexport const MODAL_DEFAULT_SLOT_CONTENT: PlasmicElement = {\n type: \"vbox\",\n styles: {\n width: \"stretch\",\n padding: 0,\n gap: \"10px\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n },\n children: [\n {\n type: \"text\",\n value: \"Heading\",\n tag: \"h2\",\n },\n {\n type: \"text\",\n value: \"This is a Modal!\",\n },\n {\n type: \"text\",\n value: \"You can put anything you can imagine here!\",\n styles: {\n fontWeight: 500,\n },\n },\n {\n type: \"text\",\n value:\n \"Use it in a `Aria Dialog Trigger` component to trigger it on a button click!\",\n },\n ],\n};\n\nexport function registerModal(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseModal>\n) {\n registerComponentHelper(\n loader,\n BaseModal,\n {\n name: MODAL_COMPONENT_NAME,\n displayName: \"Aria Modal\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerModal\",\n importName: \"BaseModal\",\n styleSections: true,\n defaultStyles: {\n // centering the modal on the page by default\n position: \"fixed\",\n top: \"10%\",\n left: \"50%\",\n width: \"50%\",\n transform: \"translateX(-50%)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"black\",\n padding: \"20px\",\n maxWidth: \"300px\",\n backgroundColor: \"#FDE3C3\",\n },\n refActions: {\n open: {\n description: \"Open the modal\",\n argTypes: [],\n },\n close: {\n description: \"Close the modal\",\n argTypes: [],\n },\n },\n props: {\n children: {\n type: \"slot\",\n mergeWithParent: true,\n defaultValue: MODAL_DEFAULT_SLOT_CONTENT,\n },\n modalOverlayClass: {\n type: \"class\",\n displayName: \"Modal Overlay\",\n },\n isOpen: {\n type: \"boolean\",\n editOnly: true,\n uncontrolledProp: \"defaultOpen\",\n defaultValueHint: true,\n defaultValue: true,\n hidden: hasParent,\n },\n isDismissable: {\n type: \"boolean\",\n description:\n \"Whether to close the modal when the user interacts outside it.\",\n },\n isKeyboardDismissDisabled: {\n type: \"boolean\",\n description:\n \"Whether pressing the escape key to close the modal should be disabled.\",\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n resetClassName: {\n type: \"themeResetClass\",\n },\n },\n states: {\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n hidden: hasParent,\n },\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["forwardRef","usePlasmicCanvasContext","usePlasmicCanvasComponentInfo","React","PlasmicDialogTriggerContext","mergeProps","useImperativeHandle","_a","ModalOverlay","Modal","makeComponentName","registerComponentHelper","hasParent"],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import { PlasmicElement } from "@plasmicapp/host";
2
2
  import React from "react";
3
3
  import { ModalOverlayProps } from "react-aria-components";
4
- import { CodeComponentMetaOverrides, HasControlContextData, Registerable } from "./utils";
5
- export interface BaseModalProps extends ModalOverlayProps, HasControlContextData {
6
- heading: React.ReactNode;
7
- modalOverlayClass: string;
4
+ import { CodeComponentMetaOverrides, HasControlContextData, Registerable, WithPlasmicCanvasComponentInfo } from "./utils";
5
+ export interface BaseModalProps extends ModalOverlayProps, WithPlasmicCanvasComponentInfo, HasControlContextData {
6
+ modalOverlayClass?: string;
8
7
  resetClassName?: string;
9
8
  children?: React.ReactNode;
10
9
  className?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"registerModal.esm.js","sources":["../src/registerModal.tsx"],"sourcesContent":["import {\n PlasmicElement,\n usePlasmicCanvasComponentInfo,\n usePlasmicCanvasContext,\n} from \"@plasmicapp/host\";\nimport React, { forwardRef, useImperativeHandle } from \"react\";\nimport { mergeProps } from \"react-aria\";\nimport { Modal, ModalOverlay, ModalOverlayProps } from \"react-aria-components\";\nimport { hasParent } from \"./common\";\nimport { PlasmicDialogTriggerContext } from \"./contexts\";\nimport {\n CodeComponentMetaOverrides,\n HasControlContextData,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseModalProps\n extends ModalOverlayProps,\n HasControlContextData {\n heading: React.ReactNode;\n modalOverlayClass: string;\n resetClassName?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface BaseModalActions {\n close(): void;\n open(): void;\n}\n\nexport const BaseModal = forwardRef<BaseModalActions, BaseModalProps>(\n function BaseModalInner(props, ref) {\n const {\n children,\n modalOverlayClass,\n className,\n isOpen,\n resetClassName,\n setControlContextData,\n isDismissable,\n ...rest\n } = props;\n\n const canvasCtx = usePlasmicCanvasContext();\n const isEditMode = canvasCtx && canvasCtx.interactive === false;\n const isSelected =\n usePlasmicCanvasComponentInfo?.(props)?.isSelected ?? false;\n\n const contextProps = React.useContext(PlasmicDialogTriggerContext);\n const isStandalone = !contextProps;\n const mergedProps = mergeProps(contextProps, rest, {\n isOpen: isStandalone ? isSelected || isOpen : contextProps.isOpen,\n /*\n isDismissable on canvas (non-interactive mode) causes the following two issues:\n 1. Clicking anywhere inside the modal dismisses it\n 2. If the modal is auto-opened due to selection in outline tab, the modal stays open despite issue #1, but the text elements inside the modal are no longer selectable, and therefore the text or headings inside the modal are not editable.\n\n To fix the above issue, we set an interim isDismissable state to false in edit mode, because it only matters in interactive mode.\n */\n isDismissable: isEditMode ? false : isDismissable,\n });\n\n setControlContextData?.({\n parent: isStandalone ? undefined : {},\n });\n\n // Expose close operation using useImperativeHandle\n useImperativeHandle(ref, () => ({\n close: () => {\n mergedProps.onOpenChange?.(false);\n },\n open: () => {\n mergedProps.onOpenChange?.(true);\n },\n }));\n\n return (\n <ModalOverlay\n {...mergedProps}\n className={`${resetClassName} ${modalOverlayClass}`}\n >\n <Modal className={className}>{children}</Modal>\n </ModalOverlay>\n );\n }\n);\n\nexport const MODAL_COMPONENT_NAME = makeComponentName(\"modal\");\n\nexport const MODAL_DEFAULT_SLOT_CONTENT: PlasmicElement = {\n type: \"vbox\",\n styles: {\n width: \"stretch\",\n padding: 0,\n gap: \"10px\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n },\n children: [\n {\n type: \"text\",\n value: \"Heading\",\n tag: \"h2\",\n },\n {\n type: \"text\",\n value: \"This is a Modal!\",\n },\n {\n type: \"text\",\n value: \"You can put anything you can imagine here!\",\n styles: {\n fontWeight: 500,\n },\n },\n {\n type: \"text\",\n value:\n \"Use it in a `Aria Dialog Trigger` component to trigger it on a button click!\",\n },\n ],\n};\n\nexport function registerModal(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseModal>\n) {\n registerComponentHelper(\n loader,\n BaseModal,\n {\n name: MODAL_COMPONENT_NAME,\n displayName: \"Aria Modal\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerModal\",\n importName: \"BaseModal\",\n styleSections: true,\n defaultStyles: {\n // centering the modal on the page by default\n position: \"fixed\",\n top: \"10%\",\n left: \"50%\",\n width: \"50%\",\n transform: \"translateX(-50%)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"black\",\n padding: \"20px\",\n maxWidth: \"300px\",\n backgroundColor: \"#FDE3C3\",\n },\n refActions: {\n open: {\n description: \"Open the modal\",\n argTypes: [],\n },\n close: {\n description: \"Close the modal\",\n argTypes: [],\n },\n },\n props: {\n children: {\n type: \"slot\",\n mergeWithParent: true,\n defaultValue: MODAL_DEFAULT_SLOT_CONTENT,\n },\n modalOverlayClass: {\n type: \"class\",\n displayName: \"Modal Overlay\",\n },\n isOpen: {\n type: \"boolean\",\n editOnly: true,\n uncontrolledProp: \"defaultOpen\",\n defaultValueHint: true,\n defaultValue: true,\n hidden: hasParent,\n },\n isDismissable: {\n type: \"boolean\",\n description:\n \"Whether to close the modal when the user interacts outside it.\",\n },\n isKeyboardDismissDisabled: {\n type: \"boolean\",\n description:\n \"Whether pressing the escape key to close the modal should be disabled.\",\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n resetClassName: {\n type: \"themeResetClass\",\n },\n },\n states: {\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n hidden: hasParent,\n },\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"registerModal.esm.js","sources":["../src/registerModal.tsx"],"sourcesContent":["import {\n PlasmicElement,\n usePlasmicCanvasComponentInfo,\n usePlasmicCanvasContext,\n} from \"@plasmicapp/host\";\nimport React, { forwardRef, useImperativeHandle } from \"react\";\nimport { mergeProps } from \"react-aria\";\nimport { Modal, ModalOverlay, ModalOverlayProps } from \"react-aria-components\";\nimport { hasParent } from \"./common\";\nimport { PlasmicDialogTriggerContext } from \"./contexts\";\nimport {\n CodeComponentMetaOverrides,\n HasControlContextData,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n WithPlasmicCanvasComponentInfo,\n} from \"./utils\";\n\nexport interface BaseModalProps\n extends ModalOverlayProps,\n WithPlasmicCanvasComponentInfo,\n HasControlContextData {\n modalOverlayClass?: string;\n resetClassName?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface BaseModalActions {\n close(): void;\n open(): void;\n}\n\nexport const BaseModal = forwardRef<BaseModalActions, BaseModalProps>(\n function BaseModalInner(props, ref) {\n const {\n children,\n modalOverlayClass,\n className,\n isOpen,\n resetClassName,\n setControlContextData,\n isDismissable,\n ...rest\n } = props;\n\n const canvasCtx = usePlasmicCanvasContext();\n const isEditMode = canvasCtx && canvasCtx.interactive === false;\n const isSelected =\n usePlasmicCanvasComponentInfo?.(props)?.isSelected ?? false;\n\n const contextProps = React.useContext(PlasmicDialogTriggerContext);\n const isStandalone = !contextProps;\n // TODO: React-aria does not like modal being passed defaultOpen while its inside a DialogTrigger.\n const mergedProps = mergeProps(contextProps, rest, {\n isOpen: isStandalone ? isSelected || isOpen : contextProps.isOpen,\n /*\n isDismissable on canvas (non-interactive mode) causes the following two issues:\n 1. Clicking anywhere inside the modal dismisses it\n 2. If the modal is auto-opened due to selection in outline tab, the modal stays open despite issue #1, but the text elements inside the modal are no longer selectable, and therefore the text or headings inside the modal are not editable.\n\n To fix the above issue, we set an interim isDismissable state to false in edit mode, because it only matters in interactive mode.\n */\n isDismissable: isEditMode ? false : isDismissable,\n });\n\n setControlContextData?.({\n parent: isStandalone ? undefined : {},\n });\n\n // Expose close operation using useImperativeHandle\n useImperativeHandle(ref, () => ({\n close: () => {\n mergedProps.onOpenChange?.(false);\n },\n open: () => {\n mergedProps.onOpenChange?.(true);\n },\n }));\n\n return (\n <ModalOverlay\n {...mergedProps}\n className={`${resetClassName} ${modalOverlayClass}`}\n >\n <Modal className={className}>{children}</Modal>\n </ModalOverlay>\n );\n }\n);\n\nexport const MODAL_COMPONENT_NAME = makeComponentName(\"modal\");\n\nexport const MODAL_DEFAULT_SLOT_CONTENT: PlasmicElement = {\n type: \"vbox\",\n styles: {\n width: \"stretch\",\n padding: 0,\n gap: \"10px\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n },\n children: [\n {\n type: \"text\",\n value: \"Heading\",\n tag: \"h2\",\n },\n {\n type: \"text\",\n value: \"This is a Modal!\",\n },\n {\n type: \"text\",\n value: \"You can put anything you can imagine here!\",\n styles: {\n fontWeight: 500,\n },\n },\n {\n type: \"text\",\n value:\n \"Use it in a `Aria Dialog Trigger` component to trigger it on a button click!\",\n },\n ],\n};\n\nexport function registerModal(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseModal>\n) {\n registerComponentHelper(\n loader,\n BaseModal,\n {\n name: MODAL_COMPONENT_NAME,\n displayName: \"Aria Modal\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerModal\",\n importName: \"BaseModal\",\n styleSections: true,\n defaultStyles: {\n // centering the modal on the page by default\n position: \"fixed\",\n top: \"10%\",\n left: \"50%\",\n width: \"50%\",\n transform: \"translateX(-50%)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"black\",\n padding: \"20px\",\n maxWidth: \"300px\",\n backgroundColor: \"#FDE3C3\",\n },\n refActions: {\n open: {\n description: \"Open the modal\",\n argTypes: [],\n },\n close: {\n description: \"Close the modal\",\n argTypes: [],\n },\n },\n props: {\n children: {\n type: \"slot\",\n mergeWithParent: true,\n defaultValue: MODAL_DEFAULT_SLOT_CONTENT,\n },\n modalOverlayClass: {\n type: \"class\",\n displayName: \"Modal Overlay\",\n },\n isOpen: {\n type: \"boolean\",\n editOnly: true,\n uncontrolledProp: \"defaultOpen\",\n defaultValueHint: true,\n defaultValue: true,\n hidden: hasParent,\n },\n isDismissable: {\n type: \"boolean\",\n description:\n \"Whether to close the modal when the user interacts outside it.\",\n },\n isKeyboardDismissDisabled: {\n type: \"boolean\",\n description:\n \"Whether pressing the escape key to close the modal should be disabled.\",\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n resetClassName: {\n type: \"themeResetClass\",\n },\n },\n states: {\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n hidden: hasParent,\n },\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["_a"],"mappings":"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"}