@plasmicpkgs/react-aria 0.0.49 → 0.0.50
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/ListBoxItemIdManager.d.ts +13 -0
- package/dist/common.d.ts +0 -2
- package/dist/contexts.d.ts +4 -5
- package/dist/react-aria.esm.js +711 -843
- package/dist/react-aria.esm.js.map +1 -1
- package/dist/react-aria.js +709 -841
- package/dist/react-aria.js.map +1 -1
- package/dist/registerComboBox.d.ts +9 -17
- package/dist/registerListBox.d.ts +16 -6
- package/dist/registerListBoxItem.d.ts +13 -3
- package/dist/registerSection.d.ts +2 -4
- package/dist/registerSelect.d.ts +9 -18
- package/package.json +2 -2
- package/skinny/ListBoxItemIdManager.d.ts +13 -0
- package/skinny/{common-fa69e9b3.esm.js → common-8ca74873.esm.js} +4 -72
- package/skinny/common-8ca74873.esm.js.map +1 -0
- package/skinny/{common-bfedaf7d.cjs.js → common-c892c339.cjs.js} +4 -82
- package/skinny/common-c892c339.cjs.js.map +1 -0
- package/skinny/common.d.ts +0 -2
- package/skinny/contexts-0a2977d8.esm.js +15 -0
- package/skinny/contexts-0a2977d8.esm.js.map +1 -0
- package/skinny/{contexts-0dec6156.cjs.js → contexts-c26d68f8.cjs.js} +3 -9
- package/skinny/contexts-c26d68f8.cjs.js.map +1 -0
- package/skinny/contexts.d.ts +4 -5
- package/skinny/{interaction-variant-utils-abd0c319.esm.js → interaction-variant-utils-1d94d073.esm.js} +2 -2
- package/skinny/interaction-variant-utils-1d94d073.esm.js.map +1 -0
- package/skinny/{interaction-variant-utils-36f1b397.cjs.js → interaction-variant-utils-9a869063.cjs.js} +2 -2
- package/skinny/interaction-variant-utils-9a869063.cjs.js.map +1 -0
- package/skinny/registerButton.cjs.js +5 -4
- package/skinny/registerButton.cjs.js.map +1 -1
- package/skinny/registerButton.esm.js +3 -2
- package/skinny/registerButton.esm.js.map +1 -1
- package/skinny/registerCheckbox.cjs.js +6 -5
- package/skinny/registerCheckbox.cjs.js.map +1 -1
- package/skinny/registerCheckbox.esm.js +4 -3
- package/skinny/registerCheckbox.esm.js.map +1 -1
- package/skinny/registerCheckboxGroup.cjs.js +8 -7
- package/skinny/registerCheckboxGroup.cjs.js.map +1 -1
- package/skinny/registerCheckboxGroup.esm.js +5 -4
- package/skinny/registerCheckboxGroup.esm.js.map +1 -1
- package/skinny/registerComboBox.cjs.js +73 -253
- package/skinny/registerComboBox.cjs.js.map +1 -1
- package/skinny/registerComboBox.d.ts +9 -17
- package/skinny/registerComboBox.esm.js +74 -254
- package/skinny/registerComboBox.esm.js.map +1 -1
- package/skinny/registerDescription.cjs.js +2 -2
- package/skinny/registerDescription.cjs.js.map +1 -1
- package/skinny/registerDescription.esm.js +1 -1
- package/skinny/registerDialogTrigger.cjs.js +6 -5
- package/skinny/registerDialogTrigger.cjs.js.map +1 -1
- package/skinny/registerDialogTrigger.esm.js +4 -3
- package/skinny/registerDialogTrigger.esm.js.map +1 -1
- package/skinny/registerFieldError.cjs.js +3 -3
- package/skinny/registerFieldError.cjs.js.map +1 -1
- package/skinny/registerFieldError.esm.js +1 -1
- package/skinny/registerForm.cjs.js +3 -3
- package/skinny/registerForm.cjs.js.map +1 -1
- package/skinny/registerForm.esm.js +1 -1
- package/skinny/registerInput.cjs.js +7 -6
- package/skinny/registerInput.cjs.js.map +1 -1
- package/skinny/registerInput.esm.js +5 -4
- package/skinny/registerInput.esm.js.map +1 -1
- package/skinny/registerLabel.cjs.js +3 -3
- package/skinny/registerLabel.cjs.js.map +1 -1
- package/skinny/registerLabel.esm.js +1 -1
- package/skinny/registerListBox-85f61377.esm.js +321 -0
- package/skinny/registerListBox-85f61377.esm.js.map +1 -0
- package/skinny/registerListBox-96ae5783.cjs.js +331 -0
- package/skinny/registerListBox-96ae5783.cjs.js.map +1 -0
- package/skinny/registerListBox.cjs.js +7 -7
- package/skinny/registerListBox.d.ts +16 -6
- package/skinny/registerListBox.esm.js +6 -7
- package/skinny/registerListBox.esm.js.map +1 -1
- package/skinny/registerListBoxItem.cjs.js +96 -13
- package/skinny/registerListBoxItem.cjs.js.map +1 -1
- package/skinny/registerListBoxItem.d.ts +13 -3
- package/skinny/registerListBoxItem.esm.js +95 -12
- package/skinny/registerListBoxItem.esm.js.map +1 -1
- package/skinny/registerModal.cjs.js +5 -4
- package/skinny/registerModal.cjs.js.map +1 -1
- package/skinny/registerModal.esm.js +3 -2
- package/skinny/registerModal.esm.js.map +1 -1
- package/skinny/registerPopover.cjs.js +5 -6
- package/skinny/registerPopover.cjs.js.map +1 -1
- package/skinny/registerPopover.esm.js +3 -4
- package/skinny/registerPopover.esm.js.map +1 -1
- package/skinny/registerRadio.cjs.js +6 -5
- package/skinny/registerRadio.cjs.js.map +1 -1
- package/skinny/registerRadio.esm.js +4 -3
- package/skinny/registerRadio.esm.js.map +1 -1
- package/skinny/registerRadioGroup.cjs.js +8 -7
- package/skinny/registerRadioGroup.cjs.js.map +1 -1
- package/skinny/registerRadioGroup.esm.js +5 -4
- package/skinny/registerRadioGroup.esm.js.map +1 -1
- package/skinny/registerSection.cjs.js +30 -25
- package/skinny/registerSection.cjs.js.map +1 -1
- package/skinny/registerSection.d.ts +2 -4
- package/skinny/registerSection.esm.js +29 -24
- package/skinny/registerSection.esm.js.map +1 -1
- package/skinny/registerSelect.cjs.js +65 -88
- package/skinny/registerSelect.cjs.js.map +1 -1
- package/skinny/registerSelect.d.ts +9 -18
- package/skinny/registerSelect.esm.js +61 -84
- package/skinny/registerSelect.esm.js.map +1 -1
- package/skinny/registerSlider.cjs.js +9 -9
- package/skinny/registerSlider.cjs.js.map +1 -1
- package/skinny/registerSlider.esm.js +5 -5
- package/skinny/registerSliderOutput.cjs.js +4 -4
- package/skinny/registerSliderOutput.cjs.js.map +1 -1
- package/skinny/registerSliderOutput.esm.js +2 -2
- package/skinny/registerSliderThumb.cjs.js +23 -7
- package/skinny/registerSliderThumb.cjs.js.map +1 -1
- package/skinny/registerSliderThumb.esm.js +21 -5
- package/skinny/registerSliderThumb.esm.js.map +1 -1
- package/skinny/registerSliderTrack.cjs.js +7 -7
- package/skinny/registerSliderTrack.cjs.js.map +1 -1
- package/skinny/registerSliderTrack.esm.js +3 -3
- package/skinny/registerSwitch.cjs.js +6 -5
- package/skinny/registerSwitch.cjs.js.map +1 -1
- package/skinny/registerSwitch.esm.js +4 -3
- package/skinny/registerSwitch.esm.js.map +1 -1
- package/skinny/registerText.cjs.js +3 -3
- package/skinny/registerText.cjs.js.map +1 -1
- package/skinny/registerText.esm.js +1 -1
- package/skinny/registerTextArea.cjs.js +6 -5
- package/skinny/registerTextArea.cjs.js.map +1 -1
- package/skinny/registerTextArea.esm.js +4 -3
- package/skinny/registerTextArea.esm.js.map +1 -1
- package/skinny/registerTextField.cjs.js +8 -7
- package/skinny/registerTextField.cjs.js.map +1 -1
- package/skinny/registerTextField.esm.js +5 -4
- package/skinny/registerTextField.esm.js.map +1 -1
- package/skinny/registerTooltip.cjs.js +2 -2
- package/skinny/registerTooltip.cjs.js.map +1 -1
- package/skinny/registerTooltip.esm.js +1 -1
- package/skinny/utils-8dbb4d1f.cjs.js +79 -0
- package/skinny/utils-8dbb4d1f.cjs.js.map +1 -0
- package/skinny/utils-c7662a47.esm.js +69 -0
- package/skinny/utils-c7662a47.esm.js.map +1 -0
- package/dist/option-utils.d.ts +0 -42
- package/dist/registerHeader.d.ts +0 -5
- package/skinny/ErrorBoundary-c6b111d3.esm.js +0 -20
- package/skinny/ErrorBoundary-c6b111d3.esm.js.map +0 -1
- package/skinny/ErrorBoundary-e9b86248.cjs.js +0 -22
- package/skinny/ErrorBoundary-e9b86248.cjs.js.map +0 -1
- package/skinny/common-bfedaf7d.cjs.js.map +0 -1
- package/skinny/common-fa69e9b3.esm.js.map +0 -1
- package/skinny/contexts-0dec6156.cjs.js.map +0 -1
- package/skinny/contexts-9a8234bf.esm.js +0 -17
- package/skinny/contexts-9a8234bf.esm.js.map +0 -1
- package/skinny/interaction-variant-utils-36f1b397.cjs.js.map +0 -1
- package/skinny/interaction-variant-utils-abd0c319.esm.js.map +0 -1
- package/skinny/option-utils.d.ts +0 -42
- package/skinny/registerHeader.cjs.js +0 -55
- package/skinny/registerHeader.cjs.js.map +0 -1
- package/skinny/registerHeader.d.ts +0 -5
- package/skinny/registerHeader.esm.js +0 -48
- package/skinny/registerHeader.esm.js.map +0 -1
- package/skinny/registerListBox-b3f2891a.esm.js +0 -298
- package/skinny/registerListBox-b3f2891a.esm.js.map +0 -1
- package/skinny/registerListBox-f4801dbd.cjs.js +0 -310
- package/skinny/registerListBox-f4801dbd.cjs.js.map +0 -1
|
@@ -3,20 +3,19 @@
|
|
|
3
3
|
var host = require('@plasmicapp/host');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var reactAriaComponents = require('react-aria-components');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
6
|
+
var common = require('./common-c892c339.cjs.js');
|
|
7
|
+
var contexts = require('./contexts-c26d68f8.cjs.js');
|
|
8
|
+
var registerListBox = require('./registerListBox-96ae5783.cjs.js');
|
|
8
9
|
var registerButton = require('./registerButton.cjs.js');
|
|
9
10
|
var registerLabel = require('./registerLabel.cjs.js');
|
|
10
11
|
var registerPopover = require('./registerPopover.cjs.js');
|
|
11
|
-
var
|
|
12
|
-
require('@react-aria/utils');
|
|
12
|
+
var utils = require('./utils-8dbb4d1f.cjs.js');
|
|
13
13
|
require('./registerListBoxItem.cjs.js');
|
|
14
|
-
require('./
|
|
14
|
+
require('./interaction-variant-utils-9a869063.cjs.js');
|
|
15
15
|
require('./registerDescription.cjs.js');
|
|
16
16
|
require('./registerText.cjs.js');
|
|
17
17
|
require('./registerSection.cjs.js');
|
|
18
|
-
require('
|
|
19
|
-
require('./interaction-variant-utils-36f1b397.cjs.js');
|
|
18
|
+
require('@react-aria/utils');
|
|
20
19
|
require('@plasmicapp/host/registerComponent');
|
|
21
20
|
|
|
22
21
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -24,6 +23,8 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
24
23
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
25
24
|
|
|
26
25
|
var __defProp = Object.defineProperty;
|
|
26
|
+
var __defProps = Object.defineProperties;
|
|
27
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
27
28
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
28
29
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
29
30
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -39,36 +40,44 @@ var __spreadValues = (a, b) => {
|
|
|
39
40
|
}
|
|
40
41
|
return a;
|
|
41
42
|
};
|
|
43
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
42
44
|
const BaseSelectValue = (props) => {
|
|
43
45
|
const { children, customize } = props;
|
|
44
46
|
return /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.SelectValue, null, ({ isPlaceholder, selectedText }) => /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, isPlaceholder ? /* @__PURE__ */ React__default.default.createElement("span", null, "Select an item") : /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement("span", null, customize ? children : selectedText))));
|
|
45
47
|
};
|
|
46
|
-
const SELECT_NAME =
|
|
48
|
+
const SELECT_NAME = utils.makeComponentName("select");
|
|
47
49
|
function BaseSelect(props) {
|
|
48
50
|
const {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
selectedKey,
|
|
52
|
+
onSelectionChange,
|
|
51
53
|
placeholder,
|
|
52
54
|
previewOpen,
|
|
53
55
|
onOpenChange,
|
|
54
56
|
isDisabled,
|
|
55
57
|
className,
|
|
56
58
|
style,
|
|
57
|
-
|
|
59
|
+
children,
|
|
58
60
|
name,
|
|
59
61
|
isOpen,
|
|
62
|
+
setControlContextData,
|
|
60
63
|
"aria-label": ariaLabel
|
|
61
64
|
} = props;
|
|
62
|
-
const { options } = registerListBox.useStrictOptions(props);
|
|
63
65
|
const isEditMode = !!host.usePlasmicCanvasContext();
|
|
64
66
|
const openProp = isEditMode && previewOpen ? true : isOpen;
|
|
65
|
-
|
|
67
|
+
let idManager = React.useMemo(() => new registerListBox.ListBoxItemIdManager(), []);
|
|
68
|
+
React.useEffect(() => {
|
|
69
|
+
idManager.subscribe((ids) => {
|
|
70
|
+
setControlContextData == null ? void 0 : setControlContextData({
|
|
71
|
+
itemIds: ids
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}, []);
|
|
66
75
|
return /* @__PURE__ */ React__default.default.createElement(
|
|
67
76
|
reactAriaComponents.Select,
|
|
68
77
|
__spreadValues({
|
|
69
78
|
placeholder,
|
|
70
|
-
selectedKey
|
|
71
|
-
onSelectionChange
|
|
79
|
+
selectedKey,
|
|
80
|
+
onSelectionChange,
|
|
72
81
|
onOpenChange,
|
|
73
82
|
isDisabled,
|
|
74
83
|
className,
|
|
@@ -76,22 +85,21 @@ function BaseSelect(props) {
|
|
|
76
85
|
name,
|
|
77
86
|
"aria-label": ariaLabel,
|
|
78
87
|
isOpen: openProp
|
|
79
|
-
},
|
|
88
|
+
}, utils.extractPlasmicDataProps(props)),
|
|
80
89
|
/* @__PURE__ */ React__default.default.createElement(contexts.PlasmicPopoverContext.Provider, { value: { isOpen: openProp } }, /* @__PURE__ */ React__default.default.createElement(
|
|
81
90
|
contexts.PlasmicListBoxContext.Provider,
|
|
82
91
|
{
|
|
83
92
|
value: {
|
|
84
|
-
|
|
85
|
-
disabledKeys
|
|
93
|
+
idManager
|
|
86
94
|
}
|
|
87
95
|
},
|
|
88
|
-
|
|
96
|
+
children
|
|
89
97
|
))
|
|
90
98
|
);
|
|
91
99
|
}
|
|
92
100
|
function registerSelect(loader) {
|
|
93
|
-
const selectValueMeta =
|
|
94
|
-
name:
|
|
101
|
+
const selectValueMeta = utils.registerComponentHelper(loader, BaseSelectValue, {
|
|
102
|
+
name: utils.makeComponentName("select-value"),
|
|
95
103
|
displayName: "Aria Selected Value",
|
|
96
104
|
importPath: "@plasmicpkgs/react-aria/skinny/registerSelect",
|
|
97
105
|
importName: "BaseSelectValue",
|
|
@@ -122,32 +130,49 @@ function registerSelect(loader) {
|
|
|
122
130
|
}
|
|
123
131
|
}
|
|
124
132
|
});
|
|
125
|
-
|
|
133
|
+
utils.registerComponentHelper(loader, BaseSelect, {
|
|
126
134
|
name: SELECT_NAME,
|
|
127
135
|
displayName: "Aria Select",
|
|
128
136
|
importPath: "@plasmicpkgs/react-aria/skinny/registerSelect",
|
|
129
137
|
importName: "BaseSelect",
|
|
130
|
-
props: {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
138
|
+
props: __spreadProps(__spreadValues({}, common.getCommonProps("Select", [
|
|
139
|
+
"name",
|
|
140
|
+
"aria-label",
|
|
141
|
+
"placeholder",
|
|
142
|
+
"isDisabled",
|
|
143
|
+
"autoFocus"
|
|
144
|
+
])), {
|
|
145
|
+
selectedKey: {
|
|
146
|
+
type: "choice",
|
|
147
|
+
description: "The selected keys of the listbox",
|
|
148
|
+
editOnly: true,
|
|
149
|
+
uncontrolledProp: "defaultSelectedKey",
|
|
150
|
+
displayName: "Initial selected key",
|
|
151
|
+
options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
|
|
152
|
+
// React Aria Select do not support multiple selections yet
|
|
153
|
+
multiSelect: false
|
|
134
154
|
},
|
|
135
|
-
|
|
136
|
-
type: "boolean"
|
|
137
|
-
},
|
|
138
|
-
value: registerListBox.makeValuePropType(),
|
|
139
|
-
onChange: {
|
|
155
|
+
onSelectionChange: {
|
|
140
156
|
type: "eventHandler",
|
|
141
157
|
argTypes: [{ name: "value", type: "string" }]
|
|
142
158
|
},
|
|
159
|
+
disabledKeys: {
|
|
160
|
+
type: "choice",
|
|
161
|
+
description: "The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with.",
|
|
162
|
+
options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
|
|
163
|
+
multiSelect: true,
|
|
164
|
+
advanced: true
|
|
165
|
+
},
|
|
143
166
|
previewOpen: {
|
|
144
167
|
type: "boolean",
|
|
145
168
|
displayName: "Preview opened?",
|
|
146
169
|
description: "Preview opened state while designing in Plasmic editor",
|
|
147
|
-
editOnly: true
|
|
170
|
+
editOnly: true,
|
|
171
|
+
defaultValue: false
|
|
148
172
|
},
|
|
149
173
|
isOpen: {
|
|
150
174
|
type: "boolean",
|
|
175
|
+
defaultValue: false,
|
|
151
176
|
// It doesn't make sense to make isOpen prop editable (it's controlled by user interaction and always closed by default), so we keep this prop hidden. We have listed the prop here in the meta only so we can expose a writeable state for it.
|
|
152
177
|
hidden: () => true
|
|
153
178
|
},
|
|
@@ -155,40 +180,7 @@ function registerSelect(loader) {
|
|
|
155
180
|
type: "eventHandler",
|
|
156
181
|
argTypes: [{ name: "isOpen", type: "boolean" }]
|
|
157
182
|
},
|
|
158
|
-
|
|
159
|
-
// type: "string",
|
|
160
|
-
// displayName: "Field key for an option's value",
|
|
161
|
-
// hidden: (ps) =>
|
|
162
|
-
// !ps.options ||
|
|
163
|
-
// !ps.options[0] ||
|
|
164
|
-
// typeof ps.options[0] === "string" ||
|
|
165
|
-
// "value" in ps.options[0],
|
|
166
|
-
// exprHint:
|
|
167
|
-
// "Return a function that takes in an option object, and returns the key to use",
|
|
168
|
-
// },
|
|
169
|
-
// optionText: {
|
|
170
|
-
// type: "string",
|
|
171
|
-
// displayName: "Field key for an option's text value",
|
|
172
|
-
// hidden: (ps) =>
|
|
173
|
-
// !ps.options ||
|
|
174
|
-
// !ps.options[0] ||
|
|
175
|
-
// typeof ps.options[0] === "string" ||
|
|
176
|
-
// "value" in ps.options[0],
|
|
177
|
-
// exprHint:
|
|
178
|
-
// "Return a function that takes in an option object, and returns the text value to use",
|
|
179
|
-
// },
|
|
180
|
-
// optionDisabled: {
|
|
181
|
-
// type: "string",
|
|
182
|
-
// displayName: "Field key for whether an option is disabled",
|
|
183
|
-
// hidden: (ps) =>
|
|
184
|
-
// !ps.options ||
|
|
185
|
-
// !ps.options[0] ||
|
|
186
|
-
// typeof ps.options[0] === "string" ||
|
|
187
|
-
// "value" in ps.options[0],
|
|
188
|
-
// exprHint:
|
|
189
|
-
// "Return a function that takes in an option object, and returns true if option should be disabled",
|
|
190
|
-
// },
|
|
191
|
-
structure: {
|
|
183
|
+
children: {
|
|
192
184
|
type: "slot",
|
|
193
185
|
defaultValue: [
|
|
194
186
|
{
|
|
@@ -256,6 +248,9 @@ function registerSelect(loader) {
|
|
|
256
248
|
{
|
|
257
249
|
type: "component",
|
|
258
250
|
name: registerListBox.LIST_BOX_COMPONENT_NAME,
|
|
251
|
+
props: {
|
|
252
|
+
selectionMode: "single"
|
|
253
|
+
},
|
|
259
254
|
styles: {
|
|
260
255
|
borderWidth: 0,
|
|
261
256
|
width: "stretch"
|
|
@@ -267,31 +262,13 @@ function registerSelect(loader) {
|
|
|
267
262
|
]
|
|
268
263
|
}
|
|
269
264
|
]
|
|
270
|
-
},
|
|
271
|
-
// renderOption: {
|
|
272
|
-
// type: "slot",
|
|
273
|
-
// displayName: "Custom render option",
|
|
274
|
-
// renderPropParams: ["item"],
|
|
275
|
-
// hidePlaceholder: true
|
|
276
|
-
// },
|
|
277
|
-
name: {
|
|
278
|
-
type: "string",
|
|
279
|
-
displayName: "Form field key",
|
|
280
|
-
description: "Name of the input, when submitting in an HTML form",
|
|
281
|
-
advanced: true
|
|
282
|
-
},
|
|
283
|
-
"aria-label": {
|
|
284
|
-
type: "string",
|
|
285
|
-
displayName: "ARIA label",
|
|
286
|
-
description: "Label for this input, if no visible label is used",
|
|
287
|
-
advanced: true
|
|
288
265
|
}
|
|
289
|
-
},
|
|
266
|
+
}),
|
|
290
267
|
states: {
|
|
291
|
-
|
|
268
|
+
selectedKey: {
|
|
292
269
|
type: "writable",
|
|
293
|
-
valueProp: "
|
|
294
|
-
onChangeProp: "
|
|
270
|
+
valueProp: "selectedKey",
|
|
271
|
+
onChangeProp: "onSelectionChange",
|
|
295
272
|
variableType: "text"
|
|
296
273
|
},
|
|
297
274
|
isOpen: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerSelect.cjs.js","sources":["../src/registerSelect.tsx"],"sourcesContent":["import { usePlasmicCanvasContext } from \"@plasmicapp/host\";\nimport React from \"react\";\nimport { Key, Select, SelectProps, SelectValue } from \"react-aria-components\";\nimport { PlasmicListBoxContext, PlasmicPopoverContext } from \"./contexts\";\nimport {\n flattenOptions,\n HasOptions,\n makeOptionsPropType,\n makeValuePropType,\n useStrictOptions,\n} from \"./option-utils\";\nimport { BUTTON_COMPONENT_NAME } from \"./registerButton\";\nimport { LABEL_COMPONENT_NAME } from \"./registerLabel\";\nimport { LIST_BOX_COMPONENT_NAME } from \"./registerListBox\";\nimport { POPOVER_COMPONENT_NAME } from \"./registerPopover\";\nimport {\n extractPlasmicDataProps,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseSelectValueProps\n extends React.ComponentProps<typeof SelectValue> {\n customize?: boolean;\n}\n\nexport const BaseSelectValue = (props: BaseSelectValueProps) => {\n const { children, customize } = props;\n return (\n <SelectValue>\n {({ isPlaceholder, selectedText }) => (\n <>\n {isPlaceholder ? (\n <span>Select an item</span>\n ) : (\n <>\n <span>\n {customize ? (children as React.ReactNode) : selectedText}\n </span>\n </>\n )}\n {}\n </>\n )}\n </SelectValue>\n );\n};\n\nconst SELECT_NAME = makeComponentName(\"select\");\n\nexport interface BaseSelectProps<T extends object>\n extends HasOptions<T>,\n SelectProps<T> {\n placeholder?: string;\n isDisabled?: boolean;\n\n value?: Key;\n onChange?: (value: Key) => void;\n\n previewOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n structure?: React.ReactNode;\n\n name?: string;\n \"aria-label\"?: string;\n\n renderOption?: (item: {\n value: string;\n label?: string;\n isDisabled?: boolean;\n }) => React.ReactNode;\n}\n\nexport function BaseSelect<T extends object>(props: BaseSelectProps<T>) {\n const {\n value,\n onChange,\n placeholder,\n previewOpen,\n onOpenChange,\n isDisabled,\n className,\n style,\n structure,\n name,\n isOpen,\n \"aria-label\": ariaLabel,\n } = props;\n\n const { options } = useStrictOptions(props);\n\n const isEditMode = !!usePlasmicCanvasContext();\n const openProp = isEditMode && previewOpen ? true : isOpen;\n\n const disabledKeys = flattenOptions(options)\n .filter((op) => op.isDisabled)\n .map((op) => op.id);\n\n return (\n <Select\n placeholder={placeholder}\n selectedKey={value}\n onSelectionChange={onChange}\n onOpenChange={onOpenChange}\n isDisabled={isDisabled}\n className={className}\n style={style}\n name={name}\n aria-label={ariaLabel}\n isOpen={openProp}\n {...extractPlasmicDataProps(props)}\n >\n <PlasmicPopoverContext.Provider value={{ isOpen: openProp }}>\n <PlasmicListBoxContext.Provider\n value={{\n items: options,\n disabledKeys: disabledKeys,\n }}\n >\n {structure}\n </PlasmicListBoxContext.Provider>\n </PlasmicPopoverContext.Provider>\n </Select>\n );\n}\n\nexport function registerSelect(loader?: Registerable) {\n const selectValueMeta = registerComponentHelper(loader, BaseSelectValue, {\n name: makeComponentName(\"select-value\"),\n displayName: \"Aria Selected Value\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerSelect\",\n importName: \"BaseSelectValue\",\n parentComponentName: SELECT_NAME,\n props: {\n customize: {\n type: \"boolean\",\n description: \"Whether to customize the selected value display\",\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"text\",\n value: \"Selected value...\",\n },\n ],\n hidden: (ps) => !ps.customize,\n },\n className: {\n type: \"class\",\n selectors: [\n {\n selector: \":self[data-placeholder]\",\n label: \"Placeholder\",\n },\n ],\n },\n },\n });\n\n registerComponentHelper(loader, BaseSelect, {\n name: SELECT_NAME,\n displayName: \"Aria Select\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerSelect\",\n importName: \"BaseSelect\",\n props: {\n options: makeOptionsPropType(),\n placeholder: {\n type: \"string\",\n },\n isDisabled: {\n type: \"boolean\",\n },\n value: makeValuePropType(),\n onChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"value\", type: \"string\" }],\n },\n previewOpen: {\n type: \"boolean\",\n displayName: \"Preview opened?\",\n description: \"Preview opened state while designing in Plasmic editor\",\n editOnly: true,\n },\n isOpen: {\n type: \"boolean\",\n // It doesn't make sense to make isOpen prop editable (it's controlled by user interaction and always closed by default), so we keep this prop hidden. We have listed the prop here in the meta only so we can expose a writeable state for it.\n hidden: () => true,\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n // optionValue: {\n // type: \"string\",\n // displayName: \"Field key for an option's value\",\n // hidden: (ps) =>\n // !ps.options ||\n // !ps.options[0] ||\n // typeof ps.options[0] === \"string\" ||\n // \"value\" in ps.options[0],\n // exprHint:\n // \"Return a function that takes in an option object, and returns the key to use\",\n // },\n // optionText: {\n // type: \"string\",\n // displayName: \"Field key for an option's text value\",\n // hidden: (ps) =>\n // !ps.options ||\n // !ps.options[0] ||\n // typeof ps.options[0] === \"string\" ||\n // \"value\" in ps.options[0],\n // exprHint:\n // \"Return a function that takes in an option object, and returns the text value to use\",\n // },\n // optionDisabled: {\n // type: \"string\",\n // displayName: \"Field key for whether an option is disabled\",\n // hidden: (ps) =>\n // !ps.options ||\n // !ps.options[0] ||\n // typeof ps.options[0] === \"string\" ||\n // \"value\" in ps.options[0],\n // exprHint:\n // \"Return a function that takes in an option object, and returns true if option should be disabled\",\n // },\n\n structure: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"vbox\",\n styles: {\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n width: \"300px\",\n padding: 0,\n },\n children: [\n {\n type: \"component\",\n name: LABEL_COMPONENT_NAME,\n props: {\n children: {\n type: \"text\",\n value: \"Label\",\n },\n },\n },\n {\n type: \"component\",\n name: BUTTON_COMPONENT_NAME,\n styles: {\n width: \"100%\",\n },\n props: {\n children: {\n type: \"hbox\",\n styles: {\n width: \"stretch\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"2px 5px\",\n },\n children: [\n {\n type: \"component\",\n name: selectValueMeta.name,\n },\n {\n type: \"img\",\n src: \"https://static1.plasmic.app/arrow-up.svg\",\n styles: {\n height: \"20px\",\n width: \"20px\",\n transform: \"rotate(180deg)\",\n },\n },\n ],\n },\n },\n },\n {\n type: \"component\",\n name: POPOVER_COMPONENT_NAME,\n styles: {\n backgroundColor: \"white\",\n padding: \"10px\",\n overflow: \"scroll\",\n },\n props: {\n children: [\n {\n type: \"component\",\n name: LIST_BOX_COMPONENT_NAME,\n styles: {\n borderWidth: 0,\n width: \"stretch\",\n },\n },\n ],\n },\n },\n ],\n },\n ],\n },\n\n // renderOption: {\n // type: \"slot\",\n // displayName: \"Custom render option\",\n // renderPropParams: [\"item\"],\n // hidePlaceholder: true\n // },\n\n name: {\n type: \"string\",\n displayName: \"Form field key\",\n description: \"Name of the input, when submitting in an HTML form\",\n advanced: true,\n },\n\n \"aria-label\": {\n type: \"string\",\n displayName: \"ARIA label\",\n description: \"Label for this input, if no visible label is used\",\n advanced: true,\n },\n },\n states: {\n value: {\n type: \"writable\",\n valueProp: \"value\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n });\n}\n"],"names":["React","SelectValue","makeComponentName","useStrictOptions","usePlasmicCanvasContext","flattenOptions","Select","extractPlasmicDataProps","PlasmicPopoverContext","PlasmicListBoxContext","registerComponentHelper","makeOptionsPropType","makeValuePropType","LABEL_COMPONENT_NAME","BUTTON_COMPONENT_NAME","POPOVER_COMPONENT_NAME","LIST_BOX_COMPONENT_NAME"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Ba,MAAA,eAAA,GAAkB,CAAC,KAAgC,KAAA;AAC9D,EAAM,MAAA,EAAE,QAAU,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAChC,EACE,uBAAAA,sBAAA,CAAA,aAAA,CAACC,uCACE,CAAC,EAAE,eAAe,YAAa,EAAA,iGAE3B,aACC,mBAAAD,sBAAA,CAAA,aAAA,CAAC,cAAK,gBAAc,CAAA,+GAGjBA,sBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EACE,YAAa,QAA+B,GAAA,YAC/C,CACF,CAGJ,CAEJ,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,WAAA,GAAcE,yBAAkB,QAAQ,CAAA,CAAA;AA0BvC,SAAS,WAA6B,KAA2B,EAAA;AACtE,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAc,EAAA,SAAA;AAAA,GACZ,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,EAAE,OAAA,EAAY,GAAAC,gCAAA,CAAiB,KAAK,CAAA,CAAA;AAE1C,EAAM,MAAA,UAAA,GAAa,CAAC,CAACC,4BAAwB,EAAA,CAAA;AAC7C,EAAM,MAAA,QAAA,GAAW,UAAc,IAAA,WAAA,GAAc,IAAO,GAAA,MAAA,CAAA;AAEpD,EAAA,MAAM,YAAe,GAAAC,8BAAA,CAAe,OAAO,CAAA,CACxC,OAAO,CAAC,EAAA,KAAO,EAAG,CAAA,UAAU,CAC5B,CAAA,GAAA,CAAI,CAAC,EAAA,KAAO,GAAG,EAAE,CAAA,CAAA;AAEpB,EACE,uBAAAL,sBAAA,CAAA,aAAA;AAAA,IAACM,0BAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA;AAAA,MACA,WAAa,EAAA,KAAA;AAAA,MACb,iBAAmB,EAAA,QAAA;AAAA,MACnB,YAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAY,EAAA,SAAA;AAAA,MACZ,MAAQ,EAAA,QAAA;AAAA,KAAA,EACJC,+BAAwB,KAAK,CAAA,CAAA;AAAA,oBAEjCP,sBAAA,CAAA,aAAA,CAACQ,+BAAsB,QAAtB,EAAA,EAA+B,OAAO,EAAE,MAAA,EAAQ,UAC/C,EAAA,kBAAAR,sBAAA,CAAA,aAAA;AAAA,MAACS,8BAAsB,CAAA,QAAA;AAAA,MAAtB;AAAA,QACC,KAAO,EAAA;AAAA,UACL,KAAO,EAAA,OAAA;AAAA,UACP,YAAA;AAAA,SACF;AAAA,OAAA;AAAA,MAEC,SAAA;AAAA,KAEL,CAAA;AAAA,GACF,CAAA;AAEJ,CAAA;AAEO,SAAS,eAAe,MAAuB,EAAA;AACpD,EAAM,MAAA,eAAA,GAAkBC,8BAAwB,CAAA,MAAA,EAAQ,eAAiB,EAAA;AAAA,IACvE,IAAA,EAAMR,yBAAkB,cAAc,CAAA;AAAA,IACtC,WAAa,EAAA,qBAAA;AAAA,IACb,UAAY,EAAA,+CAAA;AAAA,IACZ,UAAY,EAAA,iBAAA;AAAA,IACZ,mBAAqB,EAAA,WAAA;AAAA,IACrB,KAAO,EAAA;AAAA,MACL,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,iDAAA;AAAA,OACf;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,MAAA;AAAA,QACN,YAAc,EAAA;AAAA,UACZ;AAAA,YACE,IAAM,EAAA,MAAA;AAAA,YACN,KAAO,EAAA,mBAAA;AAAA,WACT;AAAA,SACF;AAAA,QACA,MAAQ,EAAA,CAAC,EAAO,KAAA,CAAC,EAAG,CAAA,SAAA;AAAA,OACtB;AAAA,MACA,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,OAAA;AAAA,QACN,SAAW,EAAA;AAAA,UACT;AAAA,YACE,QAAU,EAAA,yBAAA;AAAA,YACV,KAAO,EAAA,aAAA;AAAA,WACT;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAAQ,8BAAA,CAAwB,QAAQ,UAAY,EAAA;AAAA,IAC1C,IAAM,EAAA,WAAA;AAAA,IACN,WAAa,EAAA,aAAA;AAAA,IACb,UAAY,EAAA,+CAAA;AAAA,IACZ,UAAY,EAAA,YAAA;AAAA,IACZ,KAAO,EAAA;AAAA,MACL,SAASC,mCAAoB,EAAA;AAAA,MAC7B,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,QAAA;AAAA,OACR;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,SAAA;AAAA,OACR;AAAA,MACA,OAAOC,iCAAkB,EAAA;AAAA,MACzB,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,cAAA;AAAA,QACN,UAAU,CAAC,EAAE,MAAM,OAAS,EAAA,IAAA,EAAM,UAAU,CAAA;AAAA,OAC9C;AAAA,MACA,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,iBAAA;AAAA,QACb,WAAa,EAAA,wDAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,SAAA;AAAA;AAAA,QAEN,QAAQ,MAAM,IAAA;AAAA,OAChB;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,cAAA;AAAA,QACN,UAAU,CAAC,EAAE,MAAM,QAAU,EAAA,IAAA,EAAM,WAAW,CAAA;AAAA,OAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmCA,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,MAAA;AAAA,QACN,YAAc,EAAA;AAAA,UACZ;AAAA,YACE,IAAM,EAAA,MAAA;AAAA,YACN,MAAQ,EAAA;AAAA,cACN,cAAgB,EAAA,YAAA;AAAA,cAChB,UAAY,EAAA,YAAA;AAAA,cACZ,KAAO,EAAA,OAAA;AAAA,cACP,OAAS,EAAA,CAAA;AAAA,aACX;AAAA,YACA,QAAU,EAAA;AAAA,cACR;AAAA,gBACE,IAAM,EAAA,WAAA;AAAA,gBACN,IAAM,EAAAC,kCAAA;AAAA,gBACN,KAAO,EAAA;AAAA,kBACL,QAAU,EAAA;AAAA,oBACR,IAAM,EAAA,MAAA;AAAA,oBACN,KAAO,EAAA,OAAA;AAAA,mBACT;AAAA,iBACF;AAAA,eACF;AAAA,cACA;AAAA,gBACE,IAAM,EAAA,WAAA;AAAA,gBACN,IAAM,EAAAC,oCAAA;AAAA,gBACN,MAAQ,EAAA;AAAA,kBACN,KAAO,EAAA,MAAA;AAAA,iBACT;AAAA,gBACA,KAAO,EAAA;AAAA,kBACL,QAAU,EAAA;AAAA,oBACR,IAAM,EAAA,MAAA;AAAA,oBACN,MAAQ,EAAA;AAAA,sBACN,KAAO,EAAA,SAAA;AAAA,sBACP,cAAgB,EAAA,eAAA;AAAA,sBAChB,UAAY,EAAA,QAAA;AAAA,sBACZ,OAAS,EAAA,SAAA;AAAA,qBACX;AAAA,oBACA,QAAU,EAAA;AAAA,sBACR;AAAA,wBACE,IAAM,EAAA,WAAA;AAAA,wBACN,MAAM,eAAgB,CAAA,IAAA;AAAA,uBACxB;AAAA,sBACA;AAAA,wBACE,IAAM,EAAA,KAAA;AAAA,wBACN,GAAK,EAAA,0CAAA;AAAA,wBACL,MAAQ,EAAA;AAAA,0BACN,MAAQ,EAAA,MAAA;AAAA,0BACR,KAAO,EAAA,MAAA;AAAA,0BACP,SAAW,EAAA,gBAAA;AAAA,yBACb;AAAA,uBACF;AAAA,qBACF;AAAA,mBACF;AAAA,iBACF;AAAA,eACF;AAAA,cACA;AAAA,gBACE,IAAM,EAAA,WAAA;AAAA,gBACN,IAAM,EAAAC,sCAAA;AAAA,gBACN,MAAQ,EAAA;AAAA,kBACN,eAAiB,EAAA,OAAA;AAAA,kBACjB,OAAS,EAAA,MAAA;AAAA,kBACT,QAAU,EAAA,QAAA;AAAA,iBACZ;AAAA,gBACA,KAAO,EAAA;AAAA,kBACL,QAAU,EAAA;AAAA,oBACR;AAAA,sBACE,IAAM,EAAA,WAAA;AAAA,sBACN,IAAM,EAAAC,uCAAA;AAAA,sBACN,MAAQ,EAAA;AAAA,wBACN,WAAa,EAAA,CAAA;AAAA,wBACb,KAAO,EAAA,SAAA;AAAA,uBACT;AAAA,qBACF;AAAA,mBACF;AAAA,iBACF;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,gBAAA;AAAA,QACb,WAAa,EAAA,oDAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,MAEA,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,YAAA;AAAA,QACb,WAAa,EAAA,mDAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,UAAA;AAAA,QACN,SAAW,EAAA,OAAA;AAAA,QACX,YAAc,EAAA,UAAA;AAAA,QACd,YAAc,EAAA,MAAA;AAAA,OAChB;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,UAAA;AAAA,QACN,SAAW,EAAA,QAAA;AAAA,QACX,YAAc,EAAA,cAAA;AAAA,QACd,YAAc,EAAA,SAAA;AAAA,OAChB;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AACH;;;;;;"}
|
|
1
|
+
{"version":3,"file":"registerSelect.cjs.js","sources":["../src/registerSelect.tsx"],"sourcesContent":["import { usePlasmicCanvasContext } from \"@plasmicapp/host\";\nimport React, { useEffect, useMemo } from \"react\";\nimport { Select, SelectProps, SelectValue } from \"react-aria-components\";\nimport { getCommonProps } from \"./common\";\nimport { PlasmicListBoxContext, PlasmicPopoverContext } from \"./contexts\";\nimport { ListBoxItemIdManager } from \"./ListBoxItemIdManager\";\nimport { BUTTON_COMPONENT_NAME } from \"./registerButton\";\nimport { LABEL_COMPONENT_NAME } from \"./registerLabel\";\nimport { LIST_BOX_COMPONENT_NAME } from \"./registerListBox\";\nimport { POPOVER_COMPONENT_NAME } from \"./registerPopover\";\nimport {\n extractPlasmicDataProps,\n HasControlContextData,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseSelectValueProps\n extends React.ComponentProps<typeof SelectValue> {\n customize?: boolean;\n}\n\nexport const BaseSelectValue = (props: BaseSelectValueProps) => {\n const { children, customize } = props;\n return (\n <SelectValue>\n {({ isPlaceholder, selectedText }) => (\n <>\n {isPlaceholder ? (\n <span>Select an item</span>\n ) : (\n <>\n <span>\n {customize ? (children as React.ReactNode) : selectedText}\n </span>\n </>\n )}\n {}\n </>\n )}\n </SelectValue>\n );\n};\n\nconst SELECT_NAME = makeComponentName(\"select\");\n\nexport interface BaseSelectControlContextData {\n itemIds: string[];\n}\n\nexport interface BaseSelectProps\n extends SelectProps<{}>, // NOTE: We don't need generic type here since we don't use items prop (that needs it). We just need to make the type checker happy\n HasControlContextData<BaseSelectControlContextData> {\n previewOpen?: boolean;\n children?: React.ReactNode;\n}\n\nexport function BaseSelect(props: BaseSelectProps) {\n const {\n selectedKey,\n onSelectionChange,\n placeholder,\n previewOpen,\n onOpenChange,\n isDisabled,\n className,\n style,\n children,\n name,\n isOpen,\n setControlContextData,\n \"aria-label\": ariaLabel,\n } = props;\n\n const isEditMode = !!usePlasmicCanvasContext();\n const openProp = isEditMode && previewOpen ? true : isOpen;\n\n let idManager = useMemo(() => new ListBoxItemIdManager(), []);\n\n useEffect(() => {\n idManager.subscribe((ids: string[]) => {\n setControlContextData?.({\n itemIds: ids,\n });\n });\n }, []);\n\n return (\n <Select\n placeholder={placeholder}\n selectedKey={selectedKey}\n onSelectionChange={onSelectionChange}\n onOpenChange={onOpenChange}\n isDisabled={isDisabled}\n className={className}\n style={style}\n name={name}\n aria-label={ariaLabel}\n isOpen={openProp}\n {...extractPlasmicDataProps(props)}\n >\n <PlasmicPopoverContext.Provider value={{ isOpen: openProp }}>\n <PlasmicListBoxContext.Provider\n value={{\n idManager,\n }}\n >\n {children}\n </PlasmicListBoxContext.Provider>\n </PlasmicPopoverContext.Provider>\n </Select>\n );\n}\n\nexport function registerSelect(loader?: Registerable) {\n const selectValueMeta = registerComponentHelper(loader, BaseSelectValue, {\n name: makeComponentName(\"select-value\"),\n displayName: \"Aria Selected Value\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerSelect\",\n importName: \"BaseSelectValue\",\n parentComponentName: SELECT_NAME,\n props: {\n customize: {\n type: \"boolean\",\n description: \"Whether to customize the selected value display\",\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"text\",\n value: \"Selected value...\",\n },\n ],\n hidden: (ps) => !ps.customize,\n },\n className: {\n type: \"class\",\n selectors: [\n {\n selector: \":self[data-placeholder]\",\n label: \"Placeholder\",\n },\n ],\n },\n },\n });\n\n registerComponentHelper(loader, BaseSelect, {\n name: SELECT_NAME,\n displayName: \"Aria Select\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerSelect\",\n importName: \"BaseSelect\",\n props: {\n ...getCommonProps<BaseSelectProps>(\"Select\", [\n \"name\",\n \"aria-label\",\n \"placeholder\",\n \"isDisabled\",\n \"autoFocus\",\n ]),\n selectedKey: {\n type: \"choice\",\n description: \"The selected keys of the listbox\",\n editOnly: true,\n uncontrolledProp: \"defaultSelectedKey\",\n displayName: \"Initial selected key\",\n options: (\n _props: BaseSelectProps,\n ctx: BaseSelectControlContextData | null\n ) => (ctx?.itemIds ? Array.from(ctx.itemIds) : []),\n // React Aria Select do not support multiple selections yet\n multiSelect: false,\n },\n onSelectionChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"value\", type: \"string\" }],\n },\n disabledKeys: {\n type: \"choice\",\n description:\n \"The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with.\",\n options: (\n _props: BaseSelectProps,\n ctx: BaseSelectControlContextData | null\n ) => (ctx?.itemIds ? Array.from(ctx.itemIds) : []),\n multiSelect: true,\n advanced: true,\n },\n previewOpen: {\n type: \"boolean\",\n displayName: \"Preview opened?\",\n description: \"Preview opened state while designing in Plasmic editor\",\n editOnly: true,\n defaultValue: false,\n },\n isOpen: {\n type: \"boolean\",\n defaultValue: false,\n // It doesn't make sense to make isOpen prop editable (it's controlled by user interaction and always closed by default), so we keep this prop hidden. We have listed the prop here in the meta only so we can expose a writeable state for it.\n hidden: () => true,\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"vbox\",\n styles: {\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n width: \"300px\",\n padding: 0,\n },\n children: [\n {\n type: \"component\",\n name: LABEL_COMPONENT_NAME,\n props: {\n children: {\n type: \"text\",\n value: \"Label\",\n },\n },\n },\n {\n type: \"component\",\n name: BUTTON_COMPONENT_NAME,\n styles: {\n width: \"100%\",\n },\n props: {\n children: {\n type: \"hbox\",\n styles: {\n width: \"stretch\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"2px 5px\",\n },\n children: [\n {\n type: \"component\",\n name: selectValueMeta.name,\n },\n {\n type: \"img\",\n src: \"https://static1.plasmic.app/arrow-up.svg\",\n styles: {\n height: \"20px\",\n width: \"20px\",\n transform: \"rotate(180deg)\",\n },\n },\n ],\n },\n },\n },\n {\n type: \"component\",\n name: POPOVER_COMPONENT_NAME,\n styles: {\n backgroundColor: \"white\",\n padding: \"10px\",\n overflow: \"scroll\",\n },\n props: {\n children: [\n {\n type: \"component\",\n name: LIST_BOX_COMPONENT_NAME,\n props: {\n selectionMode: \"single\",\n },\n styles: {\n borderWidth: 0,\n width: \"stretch\",\n },\n },\n ],\n },\n },\n ],\n },\n ],\n },\n },\n states: {\n selectedKey: {\n type: \"writable\",\n valueProp: \"selectedKey\",\n onChangeProp: \"onSelectionChange\",\n variableType: \"text\",\n },\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n });\n}\n"],"names":["React","SelectValue","makeComponentName","usePlasmicCanvasContext","useMemo","ListBoxItemIdManager","useEffect","Select","extractPlasmicDataProps","PlasmicPopoverContext","PlasmicListBoxContext","registerComponentHelper","getCommonProps","LABEL_COMPONENT_NAME","BUTTON_COMPONENT_NAME","POPOVER_COMPONENT_NAME","LIST_BOX_COMPONENT_NAME"],"mappings":"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"}
|
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Registerable } from "./utils";
|
|
2
|
+
import { SelectProps, SelectValue } from "react-aria-components";
|
|
3
|
+
import { HasControlContextData, Registerable } from "./utils";
|
|
5
4
|
export interface BaseSelectValueProps extends React.ComponentProps<typeof SelectValue> {
|
|
6
5
|
customize?: boolean;
|
|
7
6
|
}
|
|
8
7
|
export declare const BaseSelectValue: (props: BaseSelectValueProps) => React.JSX.Element;
|
|
9
|
-
export interface
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
export interface BaseSelectControlContextData {
|
|
9
|
+
itemIds: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface BaseSelectProps extends SelectProps<{}>, // NOTE: We don't need generic type here since we don't use items prop (that needs it). We just need to make the type checker happy
|
|
12
|
+
HasControlContextData<BaseSelectControlContextData> {
|
|
14
13
|
previewOpen?: boolean;
|
|
15
|
-
|
|
16
|
-
structure?: React.ReactNode;
|
|
17
|
-
name?: string;
|
|
18
|
-
"aria-label"?: string;
|
|
19
|
-
renderOption?: (item: {
|
|
20
|
-
value: string;
|
|
21
|
-
label?: string;
|
|
22
|
-
isDisabled?: boolean;
|
|
23
|
-
}) => React.ReactNode;
|
|
14
|
+
children?: React.ReactNode;
|
|
24
15
|
}
|
|
25
|
-
export declare function BaseSelect
|
|
16
|
+
export declare function BaseSelect(props: BaseSelectProps): React.JSX.Element;
|
|
26
17
|
export declare function registerSelect(loader?: Registerable): void;
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { usePlasmicCanvasContext } from '@plasmicapp/host';
|
|
2
|
-
import React from 'react';
|
|
2
|
+
import React, { useMemo, useEffect } from 'react';
|
|
3
3
|
import { SelectValue, Select } from 'react-aria-components';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { g as getCommonProps } from './common-8ca74873.esm.js';
|
|
5
|
+
import { a as PlasmicPopoverContext, b as PlasmicListBoxContext } from './contexts-0a2977d8.esm.js';
|
|
6
|
+
import { L as ListBoxItemIdManager, a as LIST_BOX_COMPONENT_NAME } from './registerListBox-85f61377.esm.js';
|
|
6
7
|
import { BUTTON_COMPONENT_NAME } from './registerButton.esm.js';
|
|
7
8
|
import { LABEL_COMPONENT_NAME } from './registerLabel.esm.js';
|
|
8
9
|
import { POPOVER_COMPONENT_NAME } from './registerPopover.esm.js';
|
|
9
|
-
import { e as extractPlasmicDataProps, r as registerComponentHelper, a as makeComponentName } from './
|
|
10
|
-
import '@react-aria/utils';
|
|
10
|
+
import { e as extractPlasmicDataProps, r as registerComponentHelper, a as makeComponentName } from './utils-c7662a47.esm.js';
|
|
11
11
|
import './registerListBoxItem.esm.js';
|
|
12
|
-
import './
|
|
12
|
+
import './interaction-variant-utils-1d94d073.esm.js';
|
|
13
13
|
import './registerDescription.esm.js';
|
|
14
14
|
import './registerText.esm.js';
|
|
15
15
|
import './registerSection.esm.js';
|
|
16
|
-
import '
|
|
17
|
-
import './interaction-variant-utils-abd0c319.esm.js';
|
|
16
|
+
import '@react-aria/utils';
|
|
18
17
|
import '@plasmicapp/host/registerComponent';
|
|
19
18
|
|
|
20
19
|
var __defProp = Object.defineProperty;
|
|
20
|
+
var __defProps = Object.defineProperties;
|
|
21
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
21
22
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
22
23
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
23
24
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -33,6 +34,7 @@ var __spreadValues = (a, b) => {
|
|
|
33
34
|
}
|
|
34
35
|
return a;
|
|
35
36
|
};
|
|
37
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
36
38
|
const BaseSelectValue = (props) => {
|
|
37
39
|
const { children, customize } = props;
|
|
38
40
|
return /* @__PURE__ */ React.createElement(SelectValue, null, ({ isPlaceholder, selectedText }) => /* @__PURE__ */ React.createElement(React.Fragment, null, isPlaceholder ? /* @__PURE__ */ React.createElement("span", null, "Select an item") : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("span", null, customize ? children : selectedText))));
|
|
@@ -40,29 +42,36 @@ const BaseSelectValue = (props) => {
|
|
|
40
42
|
const SELECT_NAME = makeComponentName("select");
|
|
41
43
|
function BaseSelect(props) {
|
|
42
44
|
const {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
selectedKey,
|
|
46
|
+
onSelectionChange,
|
|
45
47
|
placeholder,
|
|
46
48
|
previewOpen,
|
|
47
49
|
onOpenChange,
|
|
48
50
|
isDisabled,
|
|
49
51
|
className,
|
|
50
52
|
style,
|
|
51
|
-
|
|
53
|
+
children,
|
|
52
54
|
name,
|
|
53
55
|
isOpen,
|
|
56
|
+
setControlContextData,
|
|
54
57
|
"aria-label": ariaLabel
|
|
55
58
|
} = props;
|
|
56
|
-
const { options } = useStrictOptions(props);
|
|
57
59
|
const isEditMode = !!usePlasmicCanvasContext();
|
|
58
60
|
const openProp = isEditMode && previewOpen ? true : isOpen;
|
|
59
|
-
|
|
61
|
+
let idManager = useMemo(() => new ListBoxItemIdManager(), []);
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
idManager.subscribe((ids) => {
|
|
64
|
+
setControlContextData == null ? void 0 : setControlContextData({
|
|
65
|
+
itemIds: ids
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}, []);
|
|
60
69
|
return /* @__PURE__ */ React.createElement(
|
|
61
70
|
Select,
|
|
62
71
|
__spreadValues({
|
|
63
72
|
placeholder,
|
|
64
|
-
selectedKey
|
|
65
|
-
onSelectionChange
|
|
73
|
+
selectedKey,
|
|
74
|
+
onSelectionChange,
|
|
66
75
|
onOpenChange,
|
|
67
76
|
isDisabled,
|
|
68
77
|
className,
|
|
@@ -75,11 +84,10 @@ function BaseSelect(props) {
|
|
|
75
84
|
PlasmicListBoxContext.Provider,
|
|
76
85
|
{
|
|
77
86
|
value: {
|
|
78
|
-
|
|
79
|
-
disabledKeys
|
|
87
|
+
idManager
|
|
80
88
|
}
|
|
81
89
|
},
|
|
82
|
-
|
|
90
|
+
children
|
|
83
91
|
))
|
|
84
92
|
);
|
|
85
93
|
}
|
|
@@ -121,27 +129,44 @@ function registerSelect(loader) {
|
|
|
121
129
|
displayName: "Aria Select",
|
|
122
130
|
importPath: "@plasmicpkgs/react-aria/skinny/registerSelect",
|
|
123
131
|
importName: "BaseSelect",
|
|
124
|
-
props: {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
132
|
+
props: __spreadProps(__spreadValues({}, getCommonProps("Select", [
|
|
133
|
+
"name",
|
|
134
|
+
"aria-label",
|
|
135
|
+
"placeholder",
|
|
136
|
+
"isDisabled",
|
|
137
|
+
"autoFocus"
|
|
138
|
+
])), {
|
|
139
|
+
selectedKey: {
|
|
140
|
+
type: "choice",
|
|
141
|
+
description: "The selected keys of the listbox",
|
|
142
|
+
editOnly: true,
|
|
143
|
+
uncontrolledProp: "defaultSelectedKey",
|
|
144
|
+
displayName: "Initial selected key",
|
|
145
|
+
options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
|
|
146
|
+
// React Aria Select do not support multiple selections yet
|
|
147
|
+
multiSelect: false
|
|
128
148
|
},
|
|
129
|
-
|
|
130
|
-
type: "boolean"
|
|
131
|
-
},
|
|
132
|
-
value: makeValuePropType(),
|
|
133
|
-
onChange: {
|
|
149
|
+
onSelectionChange: {
|
|
134
150
|
type: "eventHandler",
|
|
135
151
|
argTypes: [{ name: "value", type: "string" }]
|
|
136
152
|
},
|
|
153
|
+
disabledKeys: {
|
|
154
|
+
type: "choice",
|
|
155
|
+
description: "The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with.",
|
|
156
|
+
options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
|
|
157
|
+
multiSelect: true,
|
|
158
|
+
advanced: true
|
|
159
|
+
},
|
|
137
160
|
previewOpen: {
|
|
138
161
|
type: "boolean",
|
|
139
162
|
displayName: "Preview opened?",
|
|
140
163
|
description: "Preview opened state while designing in Plasmic editor",
|
|
141
|
-
editOnly: true
|
|
164
|
+
editOnly: true,
|
|
165
|
+
defaultValue: false
|
|
142
166
|
},
|
|
143
167
|
isOpen: {
|
|
144
168
|
type: "boolean",
|
|
169
|
+
defaultValue: false,
|
|
145
170
|
// It doesn't make sense to make isOpen prop editable (it's controlled by user interaction and always closed by default), so we keep this prop hidden. We have listed the prop here in the meta only so we can expose a writeable state for it.
|
|
146
171
|
hidden: () => true
|
|
147
172
|
},
|
|
@@ -149,40 +174,7 @@ function registerSelect(loader) {
|
|
|
149
174
|
type: "eventHandler",
|
|
150
175
|
argTypes: [{ name: "isOpen", type: "boolean" }]
|
|
151
176
|
},
|
|
152
|
-
|
|
153
|
-
// type: "string",
|
|
154
|
-
// displayName: "Field key for an option's value",
|
|
155
|
-
// hidden: (ps) =>
|
|
156
|
-
// !ps.options ||
|
|
157
|
-
// !ps.options[0] ||
|
|
158
|
-
// typeof ps.options[0] === "string" ||
|
|
159
|
-
// "value" in ps.options[0],
|
|
160
|
-
// exprHint:
|
|
161
|
-
// "Return a function that takes in an option object, and returns the key to use",
|
|
162
|
-
// },
|
|
163
|
-
// optionText: {
|
|
164
|
-
// type: "string",
|
|
165
|
-
// displayName: "Field key for an option's text value",
|
|
166
|
-
// hidden: (ps) =>
|
|
167
|
-
// !ps.options ||
|
|
168
|
-
// !ps.options[0] ||
|
|
169
|
-
// typeof ps.options[0] === "string" ||
|
|
170
|
-
// "value" in ps.options[0],
|
|
171
|
-
// exprHint:
|
|
172
|
-
// "Return a function that takes in an option object, and returns the text value to use",
|
|
173
|
-
// },
|
|
174
|
-
// optionDisabled: {
|
|
175
|
-
// type: "string",
|
|
176
|
-
// displayName: "Field key for whether an option is disabled",
|
|
177
|
-
// hidden: (ps) =>
|
|
178
|
-
// !ps.options ||
|
|
179
|
-
// !ps.options[0] ||
|
|
180
|
-
// typeof ps.options[0] === "string" ||
|
|
181
|
-
// "value" in ps.options[0],
|
|
182
|
-
// exprHint:
|
|
183
|
-
// "Return a function that takes in an option object, and returns true if option should be disabled",
|
|
184
|
-
// },
|
|
185
|
-
structure: {
|
|
177
|
+
children: {
|
|
186
178
|
type: "slot",
|
|
187
179
|
defaultValue: [
|
|
188
180
|
{
|
|
@@ -250,6 +242,9 @@ function registerSelect(loader) {
|
|
|
250
242
|
{
|
|
251
243
|
type: "component",
|
|
252
244
|
name: LIST_BOX_COMPONENT_NAME,
|
|
245
|
+
props: {
|
|
246
|
+
selectionMode: "single"
|
|
247
|
+
},
|
|
253
248
|
styles: {
|
|
254
249
|
borderWidth: 0,
|
|
255
250
|
width: "stretch"
|
|
@@ -261,31 +256,13 @@ function registerSelect(loader) {
|
|
|
261
256
|
]
|
|
262
257
|
}
|
|
263
258
|
]
|
|
264
|
-
},
|
|
265
|
-
// renderOption: {
|
|
266
|
-
// type: "slot",
|
|
267
|
-
// displayName: "Custom render option",
|
|
268
|
-
// renderPropParams: ["item"],
|
|
269
|
-
// hidePlaceholder: true
|
|
270
|
-
// },
|
|
271
|
-
name: {
|
|
272
|
-
type: "string",
|
|
273
|
-
displayName: "Form field key",
|
|
274
|
-
description: "Name of the input, when submitting in an HTML form",
|
|
275
|
-
advanced: true
|
|
276
|
-
},
|
|
277
|
-
"aria-label": {
|
|
278
|
-
type: "string",
|
|
279
|
-
displayName: "ARIA label",
|
|
280
|
-
description: "Label for this input, if no visible label is used",
|
|
281
|
-
advanced: true
|
|
282
259
|
}
|
|
283
|
-
},
|
|
260
|
+
}),
|
|
284
261
|
states: {
|
|
285
|
-
|
|
262
|
+
selectedKey: {
|
|
286
263
|
type: "writable",
|
|
287
|
-
valueProp: "
|
|
288
|
-
onChangeProp: "
|
|
264
|
+
valueProp: "selectedKey",
|
|
265
|
+
onChangeProp: "onSelectionChange",
|
|
289
266
|
variableType: "text"
|
|
290
267
|
},
|
|
291
268
|
isOpen: {
|