@homebound/beam 3.61.0 → 3.63.0
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/index.cjs +53 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +53 -44
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -12236,7 +12236,6 @@ function TreeOption(props) {
|
|
|
12236
12236
|
const {
|
|
12237
12237
|
item,
|
|
12238
12238
|
state,
|
|
12239
|
-
allowCollapsing = true,
|
|
12240
12239
|
disabledReason
|
|
12241
12240
|
} = props;
|
|
12242
12241
|
const leveledOption = item.value;
|
|
@@ -12265,7 +12264,7 @@ function TreeOption(props) {
|
|
|
12265
12264
|
shouldFocusOnHover: false
|
|
12266
12265
|
}, state, ref);
|
|
12267
12266
|
const isGroup = groupKeys.includes(item.key);
|
|
12268
|
-
const canCollapse =
|
|
12267
|
+
const canCollapse = !!option.children?.length;
|
|
12269
12268
|
function toggleCollapsed() {
|
|
12270
12269
|
if (!canCollapse) return;
|
|
12271
12270
|
setCollapsedKeys((prevKeys) => collapsedKeys.includes(item.key) ? prevKeys.filter((k) => k !== item.key) : [...prevKeys, item.key]);
|
|
@@ -12323,7 +12322,7 @@ function TreeOption(props) {
|
|
|
12323
12322
|
...isFocused && !isGroup ? listItemStyles.focus : {},
|
|
12324
12323
|
...isDisabled && !isGroup ? listItemStyles.disabled : {}
|
|
12325
12324
|
}), children: [
|
|
12326
|
-
|
|
12325
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "w_18px fs0 df aic", children: canCollapse && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("button", { onClick: (e) => {
|
|
12327
12326
|
e.preventDefault();
|
|
12328
12327
|
e.stopPropagation();
|
|
12329
12328
|
toggleCollapsed();
|
|
@@ -12382,16 +12381,7 @@ function isLeveledNode(node) {
|
|
|
12382
12381
|
// src/inputs/internal/VirtualizedOptions.tsx
|
|
12383
12382
|
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
12384
12383
|
function VirtualizedOptions(props) {
|
|
12385
|
-
const {
|
|
12386
|
-
state,
|
|
12387
|
-
items,
|
|
12388
|
-
onListHeightChange,
|
|
12389
|
-
scrollOnFocus,
|
|
12390
|
-
loading,
|
|
12391
|
-
disabledOptionsWithReasons,
|
|
12392
|
-
isTree,
|
|
12393
|
-
allowCollapsing
|
|
12394
|
-
} = props;
|
|
12384
|
+
const { state, items, onListHeightChange, scrollOnFocus, loading, disabledOptionsWithReasons, isTree } = props;
|
|
12395
12385
|
const virtuosoRef = (0, import_react49.useRef)(null);
|
|
12396
12386
|
const focusedKey = state.selectionManager.focusedKey;
|
|
12397
12387
|
const focusedItem = focusedKey != null ? state.collection.getItem(focusedKey) : null;
|
|
@@ -12432,7 +12422,6 @@ function VirtualizedOptions(props) {
|
|
|
12432
12422
|
{
|
|
12433
12423
|
item,
|
|
12434
12424
|
state,
|
|
12435
|
-
allowCollapsing,
|
|
12436
12425
|
disabledReason: disabledOptionsWithReasons[item.key]
|
|
12437
12426
|
},
|
|
12438
12427
|
item.key
|
|
@@ -12531,8 +12520,7 @@ function ListBox(props) {
|
|
|
12531
12520
|
horizontalLayout = false,
|
|
12532
12521
|
loading,
|
|
12533
12522
|
disabledOptionsWithReasons = {},
|
|
12534
|
-
isTree
|
|
12535
|
-
allowCollapsing
|
|
12523
|
+
isTree
|
|
12536
12524
|
} = props;
|
|
12537
12525
|
const {
|
|
12538
12526
|
listBoxProps
|
|
@@ -12610,8 +12598,7 @@ function ListBox(props) {
|
|
|
12610
12598
|
scrollOnFocus: props.shouldUseVirtualFocus,
|
|
12611
12599
|
loading,
|
|
12612
12600
|
disabledOptionsWithReasons,
|
|
12613
|
-
isTree
|
|
12614
|
-
allowCollapsing
|
|
12601
|
+
isTree
|
|
12615
12602
|
}
|
|
12616
12603
|
) })
|
|
12617
12604
|
] });
|
|
@@ -12704,7 +12691,8 @@ function TreeSelectFieldBase(props) {
|
|
|
12704
12691
|
sensitivity: "base"
|
|
12705
12692
|
});
|
|
12706
12693
|
const {
|
|
12707
|
-
collapsedKeys
|
|
12694
|
+
collapsedKeys,
|
|
12695
|
+
setCollapsedKeys
|
|
12708
12696
|
} = useTreeSelectFieldProvider();
|
|
12709
12697
|
const groupKeys = (0, import_react51.useMemo)(() => _groupOptions?.map((option) => valueToKey(option)) ?? [], [_groupOptions]);
|
|
12710
12698
|
const groupKeySet = (0, import_react51.useMemo)(() => new Set(groupKeys), [groupKeys]);
|
|
@@ -12746,8 +12734,7 @@ function TreeSelectFieldBase(props) {
|
|
|
12746
12734
|
selectedChipOptions: selectedChipState.options,
|
|
12747
12735
|
allOptions: initialOptions,
|
|
12748
12736
|
selectedOptionsLabels: selectedChipState.labels,
|
|
12749
|
-
optionsLoading: false
|
|
12750
|
-
allowCollapsing: true
|
|
12737
|
+
optionsLoading: false
|
|
12751
12738
|
};
|
|
12752
12739
|
}, [initialOptions, values, chipDisplay, getOptionLabel, isReadOnly, nothingSelectedText, getOptionValue, groupKeySet]);
|
|
12753
12740
|
const [fieldState, setFieldState] = (0, import_react51.useState)(() => initTreeFieldState());
|
|
@@ -12769,14 +12756,26 @@ function TreeSelectFieldBase(props) {
|
|
|
12769
12756
|
setFieldState(initTreeFieldState());
|
|
12770
12757
|
}
|
|
12771
12758
|
}, [getOptionValue, initTreeFieldState, values]);
|
|
12759
|
+
const preSearchCollapsedKeys = (0, import_react51.useRef)(void 0);
|
|
12760
|
+
(0, import_react51.useEffect)(() => {
|
|
12761
|
+
if (fieldState.searchValue) {
|
|
12762
|
+
if (preSearchCollapsedKeys.current === void 0) {
|
|
12763
|
+
preSearchCollapsedKeys.current = collapsedKeys;
|
|
12764
|
+
if (collapsedKeys.length > 0) setCollapsedKeys([]);
|
|
12765
|
+
}
|
|
12766
|
+
} else if (preSearchCollapsedKeys.current !== void 0) {
|
|
12767
|
+
const keys = preSearchCollapsedKeys.current;
|
|
12768
|
+
preSearchCollapsedKeys.current = void 0;
|
|
12769
|
+
setCollapsedKeys(keys);
|
|
12770
|
+
}
|
|
12771
|
+
}, [fieldState.searchValue, collapsedKeys, setCollapsedKeys]);
|
|
12772
12772
|
const filteredOptions = (0, import_react51.useMemo)(() => getFilteredOptions(fieldState.allOptions, fieldState.searchValue, collapsedKeys, contains, getOptionLabel, getOptionValue), [fieldState.allOptions, fieldState.searchValue, collapsedKeys, contains, getOptionLabel, getOptionValue]);
|
|
12773
12773
|
const onInputChange = (0, import_react51.useCallback)((inputValue) => {
|
|
12774
12774
|
setFieldState((prevState) => {
|
|
12775
12775
|
return {
|
|
12776
12776
|
...prevState,
|
|
12777
12777
|
inputValue,
|
|
12778
|
-
searchValue: inputValue.length === 0 ? void 0 : inputValue
|
|
12779
|
-
allowCollapsing: inputValue.length === 0
|
|
12778
|
+
searchValue: inputValue.length === 0 ? void 0 : inputValue
|
|
12780
12779
|
};
|
|
12781
12780
|
});
|
|
12782
12781
|
}, []);
|
|
@@ -12804,8 +12803,7 @@ function TreeSelectFieldBase(props) {
|
|
|
12804
12803
|
setFieldState((prevState) => ({
|
|
12805
12804
|
...prevState,
|
|
12806
12805
|
inputValue: "",
|
|
12807
|
-
searchValue: void 0
|
|
12808
|
-
allowCollapsing: true
|
|
12806
|
+
searchValue: void 0
|
|
12809
12807
|
}));
|
|
12810
12808
|
}
|
|
12811
12809
|
}
|
|
@@ -12840,9 +12838,8 @@ function TreeSelectFieldBase(props) {
|
|
|
12840
12838
|
if (newKeys.size === 0) {
|
|
12841
12839
|
setFieldState((prevState) => ({
|
|
12842
12840
|
...prevState,
|
|
12843
|
-
|
|
12844
|
-
|
|
12845
|
-
allowCollapsing: true,
|
|
12841
|
+
// Unselecting the last option shouldn't drop the search either
|
|
12842
|
+
inputValue: prevState.searchValue ?? nothingSelectedText,
|
|
12846
12843
|
selectedKeys: [],
|
|
12847
12844
|
selectedOptions: [],
|
|
12848
12845
|
selectedChipOptions: [],
|
|
@@ -12916,9 +12913,9 @@ function TreeSelectFieldBase(props) {
|
|
|
12916
12913
|
const selectedChipState = getSelectedChipState(fieldState.allOptions, selectedOptions, selectedKeys, chipDisplay, getOptionLabel, getOptionValue);
|
|
12917
12914
|
setFieldState((prevState) => ({
|
|
12918
12915
|
...prevState,
|
|
12919
|
-
//
|
|
12920
|
-
|
|
12921
|
-
|
|
12916
|
+
// Keep any search in place, so picking several options out of the same filtered list doesn't
|
|
12917
|
+
// make the user retype it; when they're not searching the input stays empty as before.
|
|
12918
|
+
inputValue: prevState.searchValue ?? "",
|
|
12922
12919
|
selectedKeys: [...selectedKeys],
|
|
12923
12920
|
selectedOptions,
|
|
12924
12921
|
selectedChipOptions: selectedChipState.options,
|
|
@@ -12950,8 +12947,7 @@ function TreeSelectFieldBase(props) {
|
|
|
12950
12947
|
setFieldState((prevState) => ({
|
|
12951
12948
|
...prevState,
|
|
12952
12949
|
inputValue: selectedOptions.length === 1 ? getOptionLabel(selectedOptions[0]) : selectedOptions.length === 0 ? nothingSelectedText : "",
|
|
12953
|
-
searchValue: void 0
|
|
12954
|
-
allowCollapsing: true
|
|
12950
|
+
searchValue: void 0
|
|
12955
12951
|
}));
|
|
12956
12952
|
}
|
|
12957
12953
|
}
|
|
@@ -13021,17 +13017,16 @@ function TreeSelectFieldBase(props) {
|
|
|
13021
13017
|
onClose: () => state.toggle(),
|
|
13022
13018
|
isOpen: state.isOpen,
|
|
13023
13019
|
minWidth: 320,
|
|
13024
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ListBox, { ...listBoxProps, positionProps, state, listBoxRef, selectedOptions: fieldState.selectedChipOptions, getOptionLabel, getOptionValue: (o) => valueToKey(getOptionValue(o)), horizontalLayout: labelStyle === "left", loading: fieldState.optionsLoading,
|
|
13020
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ListBox, { ...listBoxProps, positionProps, state, listBoxRef, selectedOptions: fieldState.selectedChipOptions, getOptionLabel, getOptionValue: (o) => valueToKey(getOptionValue(o)), horizontalLayout: labelStyle === "left", loading: fieldState.optionsLoading, disabledOptionsWithReasons, isTree: true })
|
|
13025
13021
|
}
|
|
13026
13022
|
)
|
|
13027
13023
|
] });
|
|
13028
13024
|
}
|
|
13029
|
-
function levelOptions(o, level,
|
|
13030
|
-
const actualLevel = filtering ? 0 : level;
|
|
13025
|
+
function levelOptions(o, level, collapsedKeys, getOptionValue) {
|
|
13031
13026
|
return [
|
|
13032
|
-
[o,
|
|
13033
|
-
// Flat map the children if the parent is not collapsed
|
|
13034
|
-
...o.children?.length &&
|
|
13027
|
+
[o, level],
|
|
13028
|
+
// Flat map the children if the parent is not collapsed
|
|
13029
|
+
...o.children?.length && !collapsedKeys.includes(valueToKey(getOptionValue(o))) ? o.children.flatMap((oc) => levelOptions(oc, level + 1, collapsedKeys, getOptionValue)) : []
|
|
13035
13030
|
];
|
|
13036
13031
|
}
|
|
13037
13032
|
function getTopLevelSelections(o, selectedKeys, getOptionValue) {
|
|
@@ -13040,7 +13035,16 @@ function getTopLevelSelections(o, selectedKeys, getOptionValue) {
|
|
|
13040
13035
|
return [];
|
|
13041
13036
|
}
|
|
13042
13037
|
function getFilteredOptions(allOptions, searchValue, collapsedKeys, contains, getOptionLabel, getOptionValue) {
|
|
13043
|
-
return allOptions.flatMap((option) => levelOptions(option, 0,
|
|
13038
|
+
if (!searchValue) return allOptions.flatMap((option) => levelOptions(option, 0, collapsedKeys, getOptionValue));
|
|
13039
|
+
const search = searchValue;
|
|
13040
|
+
return allOptions.flatMap((option) => matchedOptions(option, 0, false));
|
|
13041
|
+
function matchedOptions(o, level, hasMatchedParent) {
|
|
13042
|
+
const isDirectlyMatched = contains(getOptionLabel(o), search);
|
|
13043
|
+
const children = o.children?.flatMap((oc) => matchedOptions(oc, level + 1, hasMatchedParent || isDirectlyMatched));
|
|
13044
|
+
if (!isDirectlyMatched && !hasMatchedParent && !children?.length) return [];
|
|
13045
|
+
const isCollapsed = collapsedKeys.includes(valueToKey(getOptionValue(o)));
|
|
13046
|
+
return isCollapsed ? [[o, level]] : [[o, level], ...children ?? []];
|
|
13047
|
+
}
|
|
13044
13048
|
}
|
|
13045
13049
|
function isOptionFullySelected(option, selectedKeys, disabledKeys, groupKeys, getOptionValue) {
|
|
13046
13050
|
const key = valueToKey(getOptionValue(option));
|
|
@@ -24853,7 +24857,8 @@ function StepperTab(props) {
|
|
|
24853
24857
|
completed,
|
|
24854
24858
|
onClick,
|
|
24855
24859
|
disabled = false,
|
|
24856
|
-
collapsed = false
|
|
24860
|
+
collapsed = false,
|
|
24861
|
+
__storyState
|
|
24857
24862
|
} = props;
|
|
24858
24863
|
const ariaProps = {
|
|
24859
24864
|
onPress: () => onClick(value),
|
|
@@ -24864,13 +24869,15 @@ function StepperTab(props) {
|
|
|
24864
24869
|
buttonProps
|
|
24865
24870
|
} = (0, import_react_aria63.useButton)(ariaProps, ref);
|
|
24866
24871
|
const {
|
|
24867
|
-
isFocusVisible,
|
|
24872
|
+
isFocusVisible: isFocusVisibleFromEvents,
|
|
24868
24873
|
focusProps
|
|
24869
24874
|
} = (0, import_react_aria63.useFocusRing)();
|
|
24870
24875
|
const {
|
|
24871
24876
|
hoverProps,
|
|
24872
|
-
isHovered
|
|
24877
|
+
isHovered: isHoveredFromEvents
|
|
24873
24878
|
} = (0, import_react_aria63.useHover)(ariaProps);
|
|
24879
|
+
const isHovered = __storyState?.hovered ?? isHoveredFromEvents;
|
|
24880
|
+
const isFocusVisible = __storyState?.focusVisible ?? isFocusVisibleFromEvents;
|
|
24874
24881
|
const tid = useTestIds(props, "stepperTab");
|
|
24875
24882
|
return /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)("button", { ref, ...(0, import_react_aria63.mergeProps)(buttonProps, focusProps, hoverProps), "aria-label": label, ...(0, import_runtime114.trussProps)({
|
|
24876
24883
|
...stepperTabStyles.baseStyles,
|
|
@@ -24924,7 +24931,7 @@ function getCollapsedStyles(active, completed) {
|
|
|
24924
24931
|
paddingTop: "pt0",
|
|
24925
24932
|
paddingBottom: "pb0"
|
|
24926
24933
|
},
|
|
24927
|
-
...
|
|
24934
|
+
...active || completed ? {
|
|
24928
24935
|
borderColor: "bcBlue600"
|
|
24929
24936
|
} : {
|
|
24930
24937
|
borderColor: "bcGray300"
|
|
@@ -25778,6 +25785,7 @@ function FormSectionLayout(props) {
|
|
|
25778
25785
|
title,
|
|
25779
25786
|
description,
|
|
25780
25787
|
actions,
|
|
25788
|
+
initialFields,
|
|
25781
25789
|
sections
|
|
25782
25790
|
} = props;
|
|
25783
25791
|
const tid = useTestIds(props, "formSectionLayout");
|
|
@@ -25796,6 +25804,7 @@ function FormSectionLayout(props) {
|
|
|
25796
25804
|
] }),
|
|
25797
25805
|
actions && /* @__PURE__ */ (0, import_jsx_runtime207.jsx)("div", { className: "df gap1 fs0", ...tid.actions, children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(Button, { ...action }, `${action.label}`)) })
|
|
25798
25806
|
] }),
|
|
25807
|
+
initialFields,
|
|
25799
25808
|
/* @__PURE__ */ (0, import_jsx_runtime207.jsx)("div", { className: "df fdc gap6", children: sections.map((section, i) => /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(FormSection, { ...section }, defaultTestId(section.title) || i)) })
|
|
25800
25809
|
] });
|
|
25801
25810
|
}
|