@homebound/beam 2.238.1 → 2.238.2
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.
|
@@ -53,9 +53,11 @@ function ListBox(props) {
|
|
|
53
53
|
firstRender.current = false;
|
|
54
54
|
}, [state.selectionManager.selectedKeys.size]);
|
|
55
55
|
return ((0, jsx_runtime_1.jsxs)("div", { css: {
|
|
56
|
+
// If `horizontalLayout`, then that means `labelStyle === "left"`. In this case the label the the field both take 50% of the horizontal space.
|
|
57
|
+
// Add `w50` in that case to ensure the ListBox is only the width of the field. If the width definitions ever change, we need to update here as well.
|
|
56
58
|
...Css_1.Css.bgWhite.br4.w100.bshBasic.hPx(popoverHeight).df.fdc.if(contrast).bgGray700.if(horizontalLayout).w50.$,
|
|
57
59
|
"&:hover": Css_1.Css.bshHover.$,
|
|
58
|
-
}, ref: listBoxRef, ...listBoxProps, children: [isMultiSelect && state.selectionManager.selectedKeys.size > 0 && ((0, jsx_runtime_1.jsx)("ul", { css: Css_1.Css.listReset.pt2.pl2.pb1.pr1.df.bb.bGray200.add("flexWrap", "wrap").$, ref: selectedList, children: selectedOptions.map((o) => ((0, jsx_runtime_1.jsx)(ListBoxToggleChip_1.ListBoxToggleChip, { state: state, option: o, getOptionValue: getOptionValue, getOptionLabel: getOptionLabel, disabled: state.disabledKeys.has(getOptionValue(o)) }, getOptionValue(o)))) })), (0, jsx_runtime_1.jsx)("ul", { css: Css_1.Css.listReset.fg1.$, children: hasSections ? ([...state.collection].map((section) => ((0, jsx_runtime_1.jsx)(ListBoxSection_1.ListBoxSection, { section: section, state: state, contrast: contrast, onListHeightChange: onListHeightChange, popoverHeight: popoverHeight,
|
|
60
|
+
}, ref: listBoxRef, ...listBoxProps, children: [isMultiSelect && state.selectionManager.selectedKeys.size > 0 && ((0, jsx_runtime_1.jsx)("ul", { css: Css_1.Css.listReset.pt2.pl2.pb1.pr1.df.bb.bGray200.add("flexWrap", "wrap").maxh("50%").overflowAuto.$, ref: selectedList, children: selectedOptions.map((o) => ((0, jsx_runtime_1.jsx)(ListBoxToggleChip_1.ListBoxToggleChip, { state: state, option: o, getOptionValue: getOptionValue, getOptionLabel: getOptionLabel, disabled: state.disabledKeys.has(getOptionValue(o)) }, getOptionValue(o)))) })), (0, jsx_runtime_1.jsx)("ul", { css: Css_1.Css.listReset.fg1.$, children: hasSections ? ([...state.collection].map((section) => ((0, jsx_runtime_1.jsx)(ListBoxSection_1.ListBoxSection, { section: section, state: state, contrast: contrast, onListHeightChange: onListHeightChange, popoverHeight: popoverHeight,
|
|
59
61
|
// Only scroll on focus if using VirtualFocus (used for ComboBoxState (SelectField), but not SelectState (ChipSelectField))
|
|
60
62
|
scrollOnFocus: props.shouldUseVirtualFocus, disabledOptionsWithReasons: disabledOptionsWithReasons }, section.key)))) : ((0, jsx_runtime_1.jsx)(VirtualizedOptions_1.VirtualizedOptions, { state: state, items: [...state.collection], onListHeightChange: onListHeightChange, contrast: contrast,
|
|
61
63
|
// Only scroll on focus if using VirtualFocus (used for ComboBoxState (SelectField), but not SelectState (ChipSelectField))
|
|
@@ -7,6 +7,7 @@ const react_aria_1 = require("react-aria");
|
|
|
7
7
|
const react_stately_1 = require("react-stately");
|
|
8
8
|
const components_1 = require("../../components");
|
|
9
9
|
const internal_1 = require("../../components/internal");
|
|
10
|
+
const PresentationContext_1 = require("../../components/PresentationContext");
|
|
10
11
|
const Css_1 = require("../../Css");
|
|
11
12
|
const ListBox_1 = require("./ListBox");
|
|
12
13
|
const SelectFieldInput_1 = require("./SelectFieldInput");
|
|
@@ -22,8 +23,10 @@ const utils_1 = require("../../utils");
|
|
|
22
23
|
* and so we cannot easily change them.
|
|
23
24
|
*/
|
|
24
25
|
function SelectFieldBase(props) {
|
|
25
|
-
var _a, _b;
|
|
26
|
+
var _a, _b, _c, _d;
|
|
27
|
+
const { fieldProps } = (0, PresentationContext_1.usePresentationContext)();
|
|
26
28
|
const { disabled, readOnly, onSelect, options, multiselect = false, values = [], nothingSelectedText = "", contrast, disabledOptions, borderless, unsetLabel, ...otherProps } = props;
|
|
29
|
+
const labelStyle = (_b = (_a = otherProps.labelStyle) !== null && _a !== void 0 ? _a : fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.labelStyle) !== null && _b !== void 0 ? _b : "above";
|
|
27
30
|
// Call `initializeOptions` to prepend the `unset` option if the `unsetLabel` was provided.
|
|
28
31
|
const maybeOptions = (0, react_1.useMemo)(() => initializeOptions(options, unsetLabel), [options, unsetLabel]);
|
|
29
32
|
// Memoize the callback functions and handle the `unset` option if provided.
|
|
@@ -145,7 +148,7 @@ function SelectFieldBase(props) {
|
|
|
145
148
|
const popoverRef = (0, react_1.useRef)(null);
|
|
146
149
|
// `disabledKeys` from ComboBoxState does not support additional meta for showing a disabled reason to the user
|
|
147
150
|
// This lookup map helps us cleanly prune out the optional reason text, then access it further down the component tree
|
|
148
|
-
const disabledOptionsWithReasons = Object.fromEntries((
|
|
151
|
+
const disabledOptionsWithReasons = Object.fromEntries((_c = disabledOptions === null || disabledOptions === void 0 ? void 0 : disabledOptions.map(disabledOptionToKeyedTuple)) !== null && _c !== void 0 ? _c : []);
|
|
149
152
|
const comboBoxProps = {
|
|
150
153
|
...otherProps,
|
|
151
154
|
disabledKeys: Object.keys(disabledOptionsWithReasons),
|
|
@@ -243,11 +246,11 @@ function SelectFieldBase(props) {
|
|
|
243
246
|
});
|
|
244
247
|
positionProps.style = {
|
|
245
248
|
...positionProps.style,
|
|
246
|
-
width: (
|
|
249
|
+
width: (_d = comboBoxRef === null || comboBoxRef === void 0 ? void 0 : comboBoxRef.current) === null || _d === void 0 ? void 0 : _d.clientWidth,
|
|
247
250
|
// Ensures the menu never gets too small.
|
|
248
251
|
minWidth: 200,
|
|
249
252
|
};
|
|
250
|
-
return ((0, jsx_runtime_1.jsxs)("div", { css: Css_1.Css.df.fdc.w100.maxw((0, Css_1.px)(550)).if(
|
|
253
|
+
return ((0, jsx_runtime_1.jsxs)("div", { css: Css_1.Css.df.fdc.w100.maxw((0, Css_1.px)(550)).if(labelStyle === "left").maxw100.$, ref: comboBoxRef, children: [(0, jsx_runtime_1.jsx)(SelectFieldInput_1.SelectFieldInput, { ...otherProps, buttonProps: buttonProps, buttonRef: triggerRef, inputProps: inputProps, inputRef: inputRef, inputWrapRef: inputWrapRef, state: state, labelProps: labelProps, selectedOptions: fieldState.selectedOptions, getOptionValue: getOptionValue, getOptionLabel: getOptionLabel, contrast: contrast, nothingSelectedText: nothingSelectedText, borderless: borderless, tooltip: (0, components_1.resolveTooltip)(disabled, undefined, readOnly), resetField: resetField }), state.isOpen && ((0, jsx_runtime_1.jsx)(internal_1.Popover, { triggerRef: triggerRef, popoverRef: popoverRef, positionProps: positionProps, onClose: () => state.close(), isOpen: state.isOpen, minWidth: 200, children: (0, jsx_runtime_1.jsx)(ListBox_1.ListBox, { ...listBoxProps, positionProps: positionProps, state: state, listBoxRef: listBoxRef, selectedOptions: fieldState.selectedOptions, getOptionLabel: getOptionLabel, getOptionValue: (o) => (0, Value_1.valueToKey)(getOptionValue(o)), contrast: contrast, horizontalLayout: labelStyle === "left", loading: fieldState.optionsLoading, disabledOptionsWithReasons: disabledOptionsWithReasons }) }))] }));
|
|
251
254
|
}
|
|
252
255
|
exports.SelectFieldBase = SelectFieldBase;
|
|
253
256
|
function getInputValue(selectedOptions, getOptionLabel, multiselect, nothingSelectedText) {
|