@sproutsocial/seeds-react-menu 1.2.1 → 1.2.3
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/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +12 -0
- package/dist/esm/index.js +90 -83
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +119 -59
- package/dist/index.d.ts +119 -59
- package/dist/index.js +118 -111
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/ActionMenu/ActionMenu.tsx +2 -2
- package/src/Autocomplete/Autocomplete.stories.tsx +6 -18
- package/src/Autocomplete/Autocomplete.tsx +2 -3
- package/src/Autocomplete/AutocompleteTypes.ts +16 -12
- package/src/Autocomplete/MultiAutocomplete.tsx +26 -18
- package/src/Autocomplete/SingleAutocomplete.tsx +20 -9
- package/src/MenuContent/MenuContent.tsx +4 -4
- package/src/MenuContext.tsx +3 -0
- package/src/MenuFooter/MenuFooter.tsx +2 -2
- package/src/MenuGroup/MenuGroup.tsx +4 -4
- package/src/MenuHeader/MenuHeader.tsx +4 -2
- package/src/MenuLabel.tsx +32 -2
- package/src/MenuRoot/MenuRoot.tsx +7 -24
- package/src/MenuSearchInput/MenuSearchInput.tsx +5 -11
- package/src/MenuSearchTokenInput/MenuSearchTokenInput.tsx +6 -3
- package/src/MenuToggleButton/MenuToggleButton.tsx +11 -12
- package/src/MenuTokenInput.tsx +10 -4
- package/src/MultiSelectMenu/MultiSelectMenu.tsx +4 -3
- package/src/NestedMenu/NestedMenu.feature +2 -2
- package/src/NestedMenu/NestedMenuTypes.ts +3 -0
- package/src/SingleSelectMenu/SingleSelectMenu.tsx +5 -4
- package/src/hooks/useItemFiltering.tsx +2 -1
- package/src/hooks/useMenuChildren.tsx +1 -1
- package/src/types.ts +28 -15
package/dist/index.js
CHANGED
|
@@ -127,7 +127,6 @@ __export(index_exports, {
|
|
|
127
127
|
MenuLabel: () => MenuLabel,
|
|
128
128
|
MenuPopout: () => MenuPopout,
|
|
129
129
|
MenuRoot: () => MenuRoot,
|
|
130
|
-
MenuRootNoPopout: () => MenuRootNoPopout,
|
|
131
130
|
MenuSearchInput: () => MenuSearchInput,
|
|
132
131
|
MenuSearchTokenInput: () => MenuSearchTokenInput,
|
|
133
132
|
MenuToggleButton: () => MenuToggleButton,
|
|
@@ -2708,12 +2707,6 @@ var MenuRoot = ({
|
|
|
2708
2707
|
setFinalWidth(min_width);
|
|
2709
2708
|
}
|
|
2710
2709
|
}, [width2, toggleElementRef.current?.offsetWidth]);
|
|
2711
|
-
(0, import_react10.useEffect)(() => {
|
|
2712
|
-
if (!inputValue) return;
|
|
2713
|
-
if (items && hiddenItemsCount >= items.length && isOpen) {
|
|
2714
|
-
closeMenu?.();
|
|
2715
|
-
}
|
|
2716
|
-
}, [hiddenItemsCount, items?.length, isOpen, inputValue]);
|
|
2717
2710
|
const menuContext = useMenu(contextProps);
|
|
2718
2711
|
getMenuProps?.({}, { suppressRefError: true });
|
|
2719
2712
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
@@ -2743,32 +2736,36 @@ var MenuRoot = ({
|
|
|
2743
2736
|
}
|
|
2744
2737
|
);
|
|
2745
2738
|
};
|
|
2746
|
-
var MenuRootNoPopout = ({
|
|
2747
|
-
children,
|
|
2748
|
-
menuToggleElement,
|
|
2749
|
-
...contextProps
|
|
2750
|
-
}) => {
|
|
2751
|
-
const menuContext = useMenu(contextProps);
|
|
2752
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuContentProvider, { menuContext, children });
|
|
2753
|
-
};
|
|
2754
2739
|
|
|
2755
2740
|
// src/MenuLabel.tsx
|
|
2756
2741
|
var import_react11 = require("react");
|
|
2757
2742
|
var import_seeds_react_label = require("@sproutsocial/seeds-react-label");
|
|
2758
|
-
var import_jsx_runtime11 =
|
|
2759
|
-
|
|
2743
|
+
var import_jsx_runtime11 = (
|
|
2744
|
+
// This fallback id should never be used, but it is here to satisfy TypeScript since getLabelProps could be undefined.
|
|
2745
|
+
require("react/jsx-runtime")
|
|
2746
|
+
);
|
|
2747
|
+
var MenuLabel = ({
|
|
2748
|
+
children,
|
|
2749
|
+
required = false,
|
|
2750
|
+
...rest
|
|
2751
|
+
}) => {
|
|
2760
2752
|
const { getLabelProps } = useMenuToggleContext();
|
|
2761
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2753
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2754
|
+
import_seeds_react_label.Label,
|
|
2755
|
+
{
|
|
2756
|
+
htmlFor: "fallback_menu_label",
|
|
2757
|
+
required,
|
|
2758
|
+
...getLabelProps?.(),
|
|
2759
|
+
...rest,
|
|
2760
|
+
children
|
|
2761
|
+
}
|
|
2762
|
+
);
|
|
2762
2763
|
};
|
|
2763
2764
|
|
|
2764
2765
|
// src/MenuToggleButton/MenuToggleButton.tsx
|
|
2765
|
-
var import_react12 = require("react");
|
|
2766
2766
|
var import_seeds_react_button = require("@sproutsocial/seeds-react-button");
|
|
2767
2767
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
2768
|
-
var MenuToggleButton = ({
|
|
2769
|
-
children,
|
|
2770
|
-
...rest
|
|
2771
|
-
}) => {
|
|
2768
|
+
var MenuToggleButton = (props) => {
|
|
2772
2769
|
const { getToggleButtonProps, isListbox, getDropdownProps, ref, ariaProps } = useMenuToggleContext();
|
|
2773
2770
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2774
2771
|
import_seeds_react_button.Button,
|
|
@@ -2781,18 +2778,17 @@ var MenuToggleButton = ({
|
|
|
2781
2778
|
...ariaProps,
|
|
2782
2779
|
...isListbox ? {} : { role: "button", "aria-haspopup": "menu" }
|
|
2783
2780
|
}),
|
|
2784
|
-
...
|
|
2785
|
-
children
|
|
2781
|
+
...props
|
|
2786
2782
|
}
|
|
2787
2783
|
);
|
|
2788
2784
|
};
|
|
2789
2785
|
|
|
2790
2786
|
// src/MenuSearchInput/MenuSearchInput.tsx
|
|
2791
|
-
var
|
|
2787
|
+
var import_react13 = __toESM(require("react"));
|
|
2792
2788
|
var import_seeds_react_input = require("@sproutsocial/seeds-react-input");
|
|
2793
2789
|
|
|
2794
2790
|
// src/hooks/useItemFiltering.tsx
|
|
2795
|
-
var
|
|
2791
|
+
var import_react12 = __toESM(require("react"));
|
|
2796
2792
|
|
|
2797
2793
|
// src/utils/downshiftDefaults.ts
|
|
2798
2794
|
var itemToString = (item) => {
|
|
@@ -2812,8 +2808,8 @@ var useItemFiltering = ({
|
|
|
2812
2808
|
getShouldFilter = defaultGetShouldFilter,
|
|
2813
2809
|
setHiddenItemsMap: setHiddenItemsMapProp
|
|
2814
2810
|
}) => {
|
|
2815
|
-
const [hiddenItemsMap, setHiddenItemsMap] =
|
|
2816
|
-
const updateFilteredItems =
|
|
2811
|
+
const [hiddenItemsMap, setHiddenItemsMap] = import_react12.default.useState({});
|
|
2812
|
+
const updateFilteredItems = import_react12.default.useCallback(
|
|
2817
2813
|
({ inputValue }) => {
|
|
2818
2814
|
const newHiddenItems = getShouldFilter({ inputValue }) ? allMenuItems.reduce((map, item) => {
|
|
2819
2815
|
const isItemVisible = getIsItemVisible(item, inputValue);
|
|
@@ -2850,11 +2846,11 @@ var MenuSearchInput = ({
|
|
|
2850
2846
|
getIsItemVisible,
|
|
2851
2847
|
setHiddenItemsMap
|
|
2852
2848
|
});
|
|
2853
|
-
|
|
2849
|
+
import_react13.default.useEffect(() => {
|
|
2854
2850
|
updateFilteredItems({ inputValue: restInputProps.value || "" });
|
|
2855
2851
|
}, [isOpen, restInputProps.value]);
|
|
2856
2852
|
const toggleButtonProps = getToggleButtonProps?.() || {};
|
|
2857
|
-
const handleKeyDown =
|
|
2853
|
+
const handleKeyDown = import_react13.default.useCallback(
|
|
2858
2854
|
(e) => {
|
|
2859
2855
|
if (e.key === " ") return;
|
|
2860
2856
|
toggleButtonProps.onKeyDown?.(e);
|
|
@@ -2881,7 +2877,7 @@ var MenuSearchInput = ({
|
|
|
2881
2877
|
};
|
|
2882
2878
|
|
|
2883
2879
|
// src/MenuTokenInput.tsx
|
|
2884
|
-
var
|
|
2880
|
+
var import_react14 = __toESM(require("react"));
|
|
2885
2881
|
var import_styled_components11 = __toESM(require("styled-components"));
|
|
2886
2882
|
var import_seeds_react_token_input = require("@sproutsocial/seeds-react-token-input");
|
|
2887
2883
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
@@ -2914,7 +2910,7 @@ var MenuTokenInput = ({
|
|
|
2914
2910
|
removeSelectedItem,
|
|
2915
2911
|
setActiveIndex,
|
|
2916
2912
|
selectedItems = []
|
|
2917
|
-
} =
|
|
2913
|
+
} = import_react14.default.useContext(MenuContext);
|
|
2918
2914
|
const removeToken = (tokenId) => {
|
|
2919
2915
|
const tokenToRemove = selectedItems?.find((item) => item.id === tokenId);
|
|
2920
2916
|
tokenToRemove && removeSelectedItem?.(tokenToRemove);
|
|
@@ -2968,7 +2964,7 @@ var MenuTokenInput = ({
|
|
|
2968
2964
|
};
|
|
2969
2965
|
|
|
2970
2966
|
// src/MenuSearchTokenInput/MenuSearchTokenInput.tsx
|
|
2971
|
-
var
|
|
2967
|
+
var import_react15 = __toESM(require("react"));
|
|
2972
2968
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
2973
2969
|
var MenuSearchTokenInput = ({
|
|
2974
2970
|
getIsItemVisible,
|
|
@@ -2992,10 +2988,10 @@ var MenuSearchTokenInput = ({
|
|
|
2992
2988
|
setHiddenItemsMap
|
|
2993
2989
|
});
|
|
2994
2990
|
const controlledValue = value || inputPropsValue !== void 0 ? `${inputPropsValue}` : void 0;
|
|
2995
|
-
const [internalValue, setInternalValue] =
|
|
2991
|
+
const [internalValue, setInternalValue] = import_react15.default.useState(
|
|
2996
2992
|
controlledValue || ""
|
|
2997
2993
|
);
|
|
2998
|
-
const updateFilteredState =
|
|
2994
|
+
const updateFilteredState = import_react15.default.useCallback(
|
|
2999
2995
|
// defaults to an empty string if no value is passed
|
|
3000
2996
|
(value2 = "") => {
|
|
3001
2997
|
setInternalValue(value2);
|
|
@@ -3003,14 +2999,14 @@ var MenuSearchTokenInput = ({
|
|
|
3003
2999
|
},
|
|
3004
3000
|
[updateFilteredItems]
|
|
3005
3001
|
);
|
|
3006
|
-
|
|
3002
|
+
import_react15.default.useEffect(() => {
|
|
3007
3003
|
updateFilteredState(controlledValue);
|
|
3008
3004
|
}, [controlledValue]);
|
|
3009
|
-
|
|
3005
|
+
import_react15.default.useEffect(() => {
|
|
3010
3006
|
updateFilteredState(controlledValue);
|
|
3011
3007
|
}, [isOpen]);
|
|
3012
3008
|
const toggleButtonProps = getToggleButtonProps?.() || {};
|
|
3013
|
-
const handleKeyDown =
|
|
3009
|
+
const handleKeyDown = import_react15.default.useCallback(
|
|
3014
3010
|
(e) => {
|
|
3015
3011
|
if (e.key === " ") return;
|
|
3016
3012
|
toggleButtonProps.onKeyDown?.(e);
|
|
@@ -3038,7 +3034,7 @@ var MenuSearchTokenInput = ({
|
|
|
3038
3034
|
};
|
|
3039
3035
|
|
|
3040
3036
|
// src/SubmenuItem/SubmenuItem.tsx
|
|
3041
|
-
var
|
|
3037
|
+
var import_react16 = __toESM(require("react"));
|
|
3042
3038
|
var import_seeds_react_icon2 = require("@sproutsocial/seeds-react-icon");
|
|
3043
3039
|
var import_seeds_react_box3 = require("@sproutsocial/seeds-react-box");
|
|
3044
3040
|
var import_seeds_react_utilities2 = require("@sproutsocial/seeds-react-utilities");
|
|
@@ -3100,17 +3096,17 @@ var SubmenuItem = ({
|
|
|
3100
3096
|
itemsMap,
|
|
3101
3097
|
isOpen: parentIsOpen
|
|
3102
3098
|
} = useMenuContentContext();
|
|
3103
|
-
const [submenuIsFocused, setSubmenuIsFocused] =
|
|
3104
|
-
const [submenuIsOpen, setSubmenuIsOpen] =
|
|
3105
|
-
const [submenuIsActive, setSubmenuIsActive] =
|
|
3106
|
-
const submenuItemRef =
|
|
3107
|
-
const submenuRef =
|
|
3099
|
+
const [submenuIsFocused, setSubmenuIsFocused] = import_react16.default.useState(false);
|
|
3100
|
+
const [submenuIsOpen, setSubmenuIsOpen] = import_react16.default.useState(false);
|
|
3101
|
+
const [submenuIsActive, setSubmenuIsActive] = import_react16.default.useState(false);
|
|
3102
|
+
const submenuItemRef = import_react16.default.useRef(null);
|
|
3103
|
+
const submenuRef = import_react16.default.useRef(null);
|
|
3108
3104
|
const menuContent = menuItems ? getChildrenFromMenuItems({ menuItems, MenuItemComponent }) : menuChildren;
|
|
3109
3105
|
const item = itemsMap[id] || {
|
|
3110
3106
|
index: 0,
|
|
3111
3107
|
id
|
|
3112
3108
|
};
|
|
3113
|
-
|
|
3109
|
+
import_react16.default.useEffect(() => {
|
|
3114
3110
|
if (highlightedIndex === item.index) {
|
|
3115
3111
|
!submenuIsOpen && setSubmenuIsOpen(true);
|
|
3116
3112
|
} else if (submenuIsOpen && highlightedIndex !== -1) {
|
|
@@ -3118,7 +3114,7 @@ var SubmenuItem = ({
|
|
|
3118
3114
|
setSubmenuIsActive(false);
|
|
3119
3115
|
}
|
|
3120
3116
|
}, [highlightedIndex, item.index, submenuIsOpen, setSubmenuIsOpen]);
|
|
3121
|
-
const onSubmenuStateChange =
|
|
3117
|
+
const onSubmenuStateChange = import_react16.default.useCallback(
|
|
3122
3118
|
(state) => {
|
|
3123
3119
|
if (state.isOpen !== void 0) {
|
|
3124
3120
|
setSubmenuIsOpen(state.isOpen);
|
|
@@ -3162,7 +3158,7 @@ var SubmenuItem = ({
|
|
|
3162
3158
|
onMenuItemClick();
|
|
3163
3159
|
}
|
|
3164
3160
|
};
|
|
3165
|
-
|
|
3161
|
+
import_react16.default.useEffect(() => {
|
|
3166
3162
|
if (document && document.body) {
|
|
3167
3163
|
document.body.addEventListener("click", onBodyClick, {
|
|
3168
3164
|
capture: true
|
|
@@ -3266,11 +3262,11 @@ var ListboxToggleButton = ({
|
|
|
3266
3262
|
};
|
|
3267
3263
|
|
|
3268
3264
|
// src/ActionMenu/ActionMenu.tsx
|
|
3269
|
-
var
|
|
3265
|
+
var import_react18 = __toESM(require("react"));
|
|
3270
3266
|
var import_downshift3 = require("downshift");
|
|
3271
3267
|
|
|
3272
3268
|
// src/hooks/useDownshiftDefaults.tsx
|
|
3273
|
-
var
|
|
3269
|
+
var import_react17 = __toESM(require("react"));
|
|
3274
3270
|
|
|
3275
3271
|
// src/reducers/useComboboxStateReducer.tsx
|
|
3276
3272
|
var import_downshift = require("downshift");
|
|
@@ -3394,12 +3390,12 @@ var useDownshiftDefaults = ({
|
|
|
3394
3390
|
isMulti = false,
|
|
3395
3391
|
multiSelectProps = {}
|
|
3396
3392
|
} = {}) => {
|
|
3397
|
-
const [hiddenItemsMap, setHiddenItemsMap] =
|
|
3398
|
-
const hiddenItemsCount =
|
|
3393
|
+
const [hiddenItemsMap, setHiddenItemsMap] = import_react17.default.useState({});
|
|
3394
|
+
const hiddenItemsCount = import_react17.default.useMemo(
|
|
3399
3395
|
() => Object.keys(hiddenItemsMap).filter(Boolean).length,
|
|
3400
3396
|
[hiddenItemsMap]
|
|
3401
3397
|
);
|
|
3402
|
-
const isItemDisabled =
|
|
3398
|
+
const isItemDisabled = import_react17.default.useCallback(
|
|
3403
3399
|
(item) => Boolean(item.disabled || hiddenItemsMap[item.id]),
|
|
3404
3400
|
[hiddenItemsMap]
|
|
3405
3401
|
);
|
|
@@ -3478,7 +3474,7 @@ var ActionMenu = ({
|
|
|
3478
3474
|
const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
|
|
3479
3475
|
isCombobox: false
|
|
3480
3476
|
});
|
|
3481
|
-
const [currentSelectedItem, setCurrentSelectedItem] =
|
|
3477
|
+
const [currentSelectedItem, setCurrentSelectedItem] = import_react18.default.useState(null);
|
|
3482
3478
|
const { isOpen, ...useSelectReturnProps } = (0, import_downshift3.useSelect)({
|
|
3483
3479
|
...defaultDownshiftProps.select,
|
|
3484
3480
|
items: allMenuItems,
|
|
@@ -3490,7 +3486,7 @@ var ActionMenu = ({
|
|
|
3490
3486
|
),
|
|
3491
3487
|
...useSelectProps
|
|
3492
3488
|
});
|
|
3493
|
-
(0,
|
|
3489
|
+
(0, import_react18.useEffect)(() => {
|
|
3494
3490
|
setCurrentSelectedItem(useSelectReturnProps.selectedItem);
|
|
3495
3491
|
}, [useSelectReturnProps.selectedItem]);
|
|
3496
3492
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
@@ -3512,7 +3508,7 @@ var ActionMenu = ({
|
|
|
3512
3508
|
};
|
|
3513
3509
|
|
|
3514
3510
|
// src/SingleSelectMenu/SingleSelectMenu.tsx
|
|
3515
|
-
var
|
|
3511
|
+
var import_react19 = require("react");
|
|
3516
3512
|
var import_downshift4 = require("downshift");
|
|
3517
3513
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
3518
3514
|
var SingleSelectMenu = ({
|
|
@@ -3560,7 +3556,7 @@ var SingleSelectMenu = ({
|
|
|
3560
3556
|
};
|
|
3561
3557
|
|
|
3562
3558
|
// src/MultiSelectMenu/MultiSelectMenu.tsx
|
|
3563
|
-
var
|
|
3559
|
+
var import_react20 = require("react");
|
|
3564
3560
|
var import_downshift5 = require("downshift");
|
|
3565
3561
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
3566
3562
|
var MultiSelectMenu = ({
|
|
@@ -3663,10 +3659,10 @@ var MultiSelectMenu = ({
|
|
|
3663
3659
|
};
|
|
3664
3660
|
|
|
3665
3661
|
// src/Autocomplete/Autocomplete.tsx
|
|
3666
|
-
var
|
|
3662
|
+
var import_react23 = require("react");
|
|
3667
3663
|
|
|
3668
3664
|
// src/Autocomplete/SingleAutocomplete.tsx
|
|
3669
|
-
var
|
|
3665
|
+
var import_react21 = __toESM(require("react"));
|
|
3670
3666
|
var import_downshift6 = require("downshift");
|
|
3671
3667
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
3672
3668
|
var SingleAutocomplete = ({
|
|
@@ -3684,14 +3680,15 @@ var SingleAutocomplete = ({
|
|
|
3684
3680
|
menuItems,
|
|
3685
3681
|
MenuItemComponent
|
|
3686
3682
|
});
|
|
3687
|
-
const
|
|
3683
|
+
const downshiftDefaults = useDownshiftDefaults({ isCombobox: true });
|
|
3684
|
+
const { setHiddenItemsMap, defaultDownshiftProps, hiddenItemsCount } = downshiftDefaults;
|
|
3688
3685
|
const { updateFilteredItems } = useItemFiltering({
|
|
3689
3686
|
allMenuItems,
|
|
3690
3687
|
itemToString: itemToString2,
|
|
3691
3688
|
getIsItemVisible,
|
|
3692
3689
|
setHiddenItemsMap
|
|
3693
3690
|
});
|
|
3694
|
-
const
|
|
3691
|
+
const useComboboxReturnProps = (0, import_downshift6.useCombobox)({
|
|
3695
3692
|
...defaultDownshiftProps.combobox,
|
|
3696
3693
|
items: allMenuItems,
|
|
3697
3694
|
itemToString: itemToString2,
|
|
@@ -3702,6 +3699,13 @@ var SingleAutocomplete = ({
|
|
|
3702
3699
|
),
|
|
3703
3700
|
...useComboboxProps
|
|
3704
3701
|
});
|
|
3702
|
+
const { isOpen, closeMenu, inputValue } = useComboboxReturnProps;
|
|
3703
|
+
import_react21.default.useEffect(() => {
|
|
3704
|
+
if (!inputValue) return;
|
|
3705
|
+
if (allMenuItems && hiddenItemsCount >= allMenuItems.length && isOpen) {
|
|
3706
|
+
closeMenu?.();
|
|
3707
|
+
}
|
|
3708
|
+
}, [hiddenItemsCount, allMenuItems?.length, isOpen, inputValue]);
|
|
3705
3709
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3706
3710
|
MenuRootComponent,
|
|
3707
3711
|
{
|
|
@@ -3709,11 +3713,9 @@ var SingleAutocomplete = ({
|
|
|
3709
3713
|
isListbox: true,
|
|
3710
3714
|
items: allMenuItems,
|
|
3711
3715
|
itemToString: itemToString2,
|
|
3712
|
-
isOpen,
|
|
3713
|
-
setHiddenItemsMap,
|
|
3714
3716
|
...useComboboxProps,
|
|
3715
3717
|
...useComboboxReturnProps,
|
|
3716
|
-
...
|
|
3718
|
+
...downshiftDefaults
|
|
3717
3719
|
},
|
|
3718
3720
|
popoutProps: {
|
|
3719
3721
|
focusOnContent: false
|
|
@@ -3724,7 +3726,7 @@ var SingleAutocomplete = ({
|
|
|
3724
3726
|
};
|
|
3725
3727
|
|
|
3726
3728
|
// src/Autocomplete/MultiAutocomplete.tsx
|
|
3727
|
-
var
|
|
3729
|
+
var import_react22 = __toESM(require("react"));
|
|
3728
3730
|
var import_downshift7 = require("downshift");
|
|
3729
3731
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
3730
3732
|
var MultiAutocomplete = ({
|
|
@@ -3750,21 +3752,21 @@ var MultiAutocomplete = ({
|
|
|
3750
3752
|
menuItems,
|
|
3751
3753
|
MenuItemComponent
|
|
3752
3754
|
});
|
|
3753
|
-
const [selectedItems, setSelectedItems] =
|
|
3754
|
-
const [selectedItemIds, setSelectedItemIds] =
|
|
3755
|
-
const getIsItemVisibleMulti =
|
|
3756
|
-
(item,
|
|
3757
|
-
return (showSelectedItemsInDropdown || !selectedItemIds[item.id]) && getIsItemVisible(item,
|
|
3755
|
+
const [selectedItems, setSelectedItems] = import_react22.default.useState(initialSelectedItems);
|
|
3756
|
+
const [selectedItemIds, setSelectedItemIds] = import_react22.default.useState(getSelectedItemIds(initialSelectedItems));
|
|
3757
|
+
const getIsItemVisibleMulti = import_react22.default.useCallback(
|
|
3758
|
+
(item, inputValue2) => {
|
|
3759
|
+
return (showSelectedItemsInDropdown || !selectedItemIds[item.id]) && getIsItemVisible(item, inputValue2);
|
|
3758
3760
|
},
|
|
3759
3761
|
[selectedItemIds, showSelectedItemsInDropdown, getIsItemVisible]
|
|
3760
3762
|
);
|
|
3761
|
-
const getShouldFilterMulti =
|
|
3763
|
+
const getShouldFilterMulti = import_react22.default.useCallback(
|
|
3762
3764
|
(args) => {
|
|
3763
3765
|
return !showSelectedItemsInDropdown && Object.keys(selectedItemIds).length > 0 || defaultGetShouldFilter(args);
|
|
3764
3766
|
},
|
|
3765
3767
|
[selectedItemIds, showSelectedItemsInDropdown, getIsItemVisible]
|
|
3766
3768
|
);
|
|
3767
|
-
const
|
|
3769
|
+
const downshiftDefaults = useDownshiftDefaults({
|
|
3768
3770
|
isCombobox: true,
|
|
3769
3771
|
isMulti: true,
|
|
3770
3772
|
// handles the prop name mapping for multi select
|
|
@@ -3775,6 +3777,7 @@ var MultiAutocomplete = ({
|
|
|
3775
3777
|
...useComboboxProps
|
|
3776
3778
|
}
|
|
3777
3779
|
});
|
|
3780
|
+
const { setHiddenItemsMap, defaultDownshiftProps, hiddenItemsCount } = downshiftDefaults;
|
|
3778
3781
|
const { updateFilteredItems } = useItemFiltering({
|
|
3779
3782
|
allMenuItems,
|
|
3780
3783
|
itemToString: itemToString2,
|
|
@@ -3782,7 +3785,7 @@ var MultiAutocomplete = ({
|
|
|
3782
3785
|
getShouldFilter: getShouldFilterMulti,
|
|
3783
3786
|
setHiddenItemsMap
|
|
3784
3787
|
});
|
|
3785
|
-
|
|
3788
|
+
import_react22.default.useEffect(() => {
|
|
3786
3789
|
updateFilteredItems({ inputValue: "" });
|
|
3787
3790
|
}, [selectedItemIds]);
|
|
3788
3791
|
const useMultipleSelectionReturnProps = (0, import_downshift7.useMultipleSelection)({
|
|
@@ -3795,7 +3798,7 @@ var MultiAutocomplete = ({
|
|
|
3795
3798
|
onSelectedItemsChange && onSelectedItemsChange({ selectedItems: selectedItems2, ...changes });
|
|
3796
3799
|
}
|
|
3797
3800
|
});
|
|
3798
|
-
const
|
|
3801
|
+
const useComboboxReturnProps = (0, import_downshift7.useCombobox)({
|
|
3799
3802
|
...defaultDownshiftProps.combobox,
|
|
3800
3803
|
items: allMenuItems,
|
|
3801
3804
|
itemToString: itemToString2,
|
|
@@ -3805,7 +3808,7 @@ var MultiAutocomplete = ({
|
|
|
3805
3808
|
externalStateReducer
|
|
3806
3809
|
),
|
|
3807
3810
|
onStateChange(changes) {
|
|
3808
|
-
const { type, selectedItem: newSelectedItem, inputValue } = changes;
|
|
3811
|
+
const { type, selectedItem: newSelectedItem, inputValue: inputValue2 } = changes;
|
|
3809
3812
|
switch (type) {
|
|
3810
3813
|
// Add the selected item to the selected items list
|
|
3811
3814
|
case import_downshift7.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
@@ -3826,11 +3829,18 @@ var MultiAutocomplete = ({
|
|
|
3826
3829
|
default:
|
|
3827
3830
|
break;
|
|
3828
3831
|
}
|
|
3829
|
-
if (
|
|
3832
|
+
if (inputValue2 !== void 0) updateFilteredItems({ inputValue: inputValue2 });
|
|
3830
3833
|
onStateChange && onStateChange(changes);
|
|
3831
3834
|
},
|
|
3832
3835
|
...useComboboxProps
|
|
3833
3836
|
});
|
|
3837
|
+
const { isOpen, closeMenu, inputValue } = useComboboxReturnProps;
|
|
3838
|
+
import_react22.default.useEffect(() => {
|
|
3839
|
+
if (!inputValue) return;
|
|
3840
|
+
if (allMenuItems && hiddenItemsCount >= allMenuItems.length && isOpen) {
|
|
3841
|
+
closeMenu?.();
|
|
3842
|
+
}
|
|
3843
|
+
}, [hiddenItemsCount, allMenuItems?.length, isOpen, inputValue]);
|
|
3834
3844
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
3835
3845
|
MenuRootComponent,
|
|
3836
3846
|
{
|
|
@@ -3838,18 +3848,16 @@ var MultiAutocomplete = ({
|
|
|
3838
3848
|
isListbox: true,
|
|
3839
3849
|
items: allMenuItems,
|
|
3840
3850
|
itemToString: itemToString2,
|
|
3841
|
-
isOpen,
|
|
3842
3851
|
initialSelectedItems,
|
|
3843
3852
|
onStateChange,
|
|
3844
3853
|
onSelectedItemsChange,
|
|
3845
3854
|
getA11yMultiStatusMessage,
|
|
3846
3855
|
onMultiSelectStateChange,
|
|
3847
3856
|
multiSelectStateReducer,
|
|
3848
|
-
setHiddenItemsMap,
|
|
3849
3857
|
...useComboboxProps,
|
|
3850
3858
|
...useComboboxReturnProps,
|
|
3851
3859
|
...useMultipleSelectionReturnProps,
|
|
3852
|
-
...
|
|
3860
|
+
...downshiftDefaults
|
|
3853
3861
|
},
|
|
3854
3862
|
popoutProps: {
|
|
3855
3863
|
focusOnContent: false
|
|
@@ -3862,7 +3870,7 @@ var MultiAutocomplete = ({
|
|
|
3862
3870
|
// src/Autocomplete/Autocomplete.tsx
|
|
3863
3871
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
3864
3872
|
var Autocomplete = ({
|
|
3865
|
-
multiSelect,
|
|
3873
|
+
multiSelect = false,
|
|
3866
3874
|
...rest
|
|
3867
3875
|
}) => {
|
|
3868
3876
|
if (multiSelect) {
|
|
@@ -3872,7 +3880,7 @@ var Autocomplete = ({
|
|
|
3872
3880
|
};
|
|
3873
3881
|
|
|
3874
3882
|
// src/Autocomplete/AutocompleteInput.tsx
|
|
3875
|
-
var
|
|
3883
|
+
var import_react24 = require("react");
|
|
3876
3884
|
var import_seeds_react_input2 = require("@sproutsocial/seeds-react-input");
|
|
3877
3885
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
3878
3886
|
var AutocompleteInput = ({
|
|
@@ -3910,7 +3918,7 @@ var AutocompleteInput = ({
|
|
|
3910
3918
|
};
|
|
3911
3919
|
|
|
3912
3920
|
// src/Autocomplete/AutocompleteTokenInput.tsx
|
|
3913
|
-
var
|
|
3921
|
+
var import_react25 = require("react");
|
|
3914
3922
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3915
3923
|
var AutocompleteTokenInput = ({
|
|
3916
3924
|
onKeyDown,
|
|
@@ -3954,7 +3962,7 @@ var AutocompleteTokenInput = ({
|
|
|
3954
3962
|
|
|
3955
3963
|
// src/Autocomplete/AutocompleteSelect.tsx
|
|
3956
3964
|
var import_seeds_react_icon4 = __toESM(require("@sproutsocial/seeds-react-icon"));
|
|
3957
|
-
var
|
|
3965
|
+
var import_react26 = require("react");
|
|
3958
3966
|
var import_styled_components13 = __toESM(require("styled-components"));
|
|
3959
3967
|
var import_seeds_react_input3 = require("@sproutsocial/seeds-react-input");
|
|
3960
3968
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
@@ -3974,8 +3982,8 @@ var AutocompleteSelect = (props) => {
|
|
|
3974
3982
|
};
|
|
3975
3983
|
|
|
3976
3984
|
// src/NestedMenu/NestedMenu.tsx
|
|
3977
|
-
var
|
|
3978
|
-
var
|
|
3985
|
+
var import_react32 = require("react");
|
|
3986
|
+
var import_react33 = require("motion/react");
|
|
3979
3987
|
var import_downshift9 = require("downshift");
|
|
3980
3988
|
|
|
3981
3989
|
// src/reducers/nestedMenuStateReducer.tsx
|
|
@@ -4003,7 +4011,7 @@ var nestedMenuStateReducer = (_state, actionAndChanges) => {
|
|
|
4003
4011
|
};
|
|
4004
4012
|
|
|
4005
4013
|
// src/NestedMenu/NestedMenuContext.tsx
|
|
4006
|
-
var
|
|
4014
|
+
var import_react27 = require("react");
|
|
4007
4015
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
4008
4016
|
var defaultNestedMenuContext = {
|
|
4009
4017
|
selectedMenuPath: [],
|
|
@@ -4021,7 +4029,7 @@ var defaultNestedMenuContext = {
|
|
|
4021
4029
|
},
|
|
4022
4030
|
animationSpeed: MOTION_DURATION_FAST
|
|
4023
4031
|
};
|
|
4024
|
-
var NestedMenuContext = (0,
|
|
4032
|
+
var NestedMenuContext = (0, import_react27.createContext)(
|
|
4025
4033
|
defaultNestedMenuContext
|
|
4026
4034
|
);
|
|
4027
4035
|
var NestedMenuProvider = ({
|
|
@@ -4031,7 +4039,7 @@ var NestedMenuProvider = ({
|
|
|
4031
4039
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(NestedMenuContext.Provider, { value: nestedMenuProps, children });
|
|
4032
4040
|
};
|
|
4033
4041
|
var useNestedMenuContext = () => {
|
|
4034
|
-
const nestedMenuContextValue = (0,
|
|
4042
|
+
const nestedMenuContextValue = (0, import_react27.useContext)(NestedMenuContext);
|
|
4035
4043
|
if (nestedMenuContextValue === null) {
|
|
4036
4044
|
throw new Error(
|
|
4037
4045
|
"useNestedMenuContext must be used within a <NestedMenuContext.Provider />"
|
|
@@ -4041,7 +4049,7 @@ var useNestedMenuContext = () => {
|
|
|
4041
4049
|
};
|
|
4042
4050
|
|
|
4043
4051
|
// src/NestedMenu/NestedMenuContent.tsx
|
|
4044
|
-
var
|
|
4052
|
+
var import_react28 = require("react");
|
|
4045
4053
|
var import_seeds_react_utilities3 = require("@sproutsocial/seeds-react-utilities");
|
|
4046
4054
|
|
|
4047
4055
|
// src/NestedMenu/NestedMenuItem.tsx
|
|
@@ -4082,10 +4090,10 @@ var NestedMenuContent = ({
|
|
|
4082
4090
|
}) => {
|
|
4083
4091
|
const { highlightedIndex, items } = useMenuContentContext();
|
|
4084
4092
|
const { setSelectedMenuId, selectedMenuPath, goBack } = useNestedMenuContext();
|
|
4085
|
-
const internalRef = (0,
|
|
4093
|
+
const internalRef = (0, import_react28.useRef)(null);
|
|
4086
4094
|
const innerRef = (0, import_seeds_react_utilities3.mergeRefs)(internalRef, innerRefProp);
|
|
4087
4095
|
const contentProps = children ? { children } : { menuItems, MenuItemComponent };
|
|
4088
|
-
(0,
|
|
4096
|
+
(0, import_react28.useEffect)(() => {
|
|
4089
4097
|
internalRef?.current?.focus();
|
|
4090
4098
|
}, []);
|
|
4091
4099
|
const onKeyDown = (e) => {
|
|
@@ -4123,7 +4131,7 @@ NestedMenuContent.__MENU_PRIMITIVE_TYPE = "MenuContent";
|
|
|
4123
4131
|
// src/NestedMenu/NestedMenuHeader.tsx
|
|
4124
4132
|
var import_seeds_react_button2 = require("@sproutsocial/seeds-react-button");
|
|
4125
4133
|
var import_seeds_react_icon6 = require("@sproutsocial/seeds-react-icon");
|
|
4126
|
-
var
|
|
4134
|
+
var import_react29 = require("motion/react");
|
|
4127
4135
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
4128
4136
|
var NestedMenuHeader = ({
|
|
4129
4137
|
backArrowLabel,
|
|
@@ -4134,8 +4142,8 @@ var NestedMenuHeader = ({
|
|
|
4134
4142
|
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
4135
4143
|
MenuHeader,
|
|
4136
4144
|
{
|
|
4137
|
-
leftAction: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
4138
|
-
|
|
4145
|
+
leftAction: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_react29.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
4146
|
+
import_react29.motion.div,
|
|
4139
4147
|
{
|
|
4140
4148
|
initial: { opacity: 0 },
|
|
4141
4149
|
animate: { opacity: 1 },
|
|
@@ -4153,7 +4161,7 @@ var NestedMenuHeader = ({
|
|
|
4153
4161
|
};
|
|
4154
4162
|
|
|
4155
4163
|
// src/NestedMenu/NestedMenuRoot.tsx
|
|
4156
|
-
var
|
|
4164
|
+
var import_react30 = __toESM(require("react"));
|
|
4157
4165
|
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
4158
4166
|
var NestedMenuRoot = ({
|
|
4159
4167
|
children,
|
|
@@ -4162,7 +4170,7 @@ var NestedMenuRoot = ({
|
|
|
4162
4170
|
}) => {
|
|
4163
4171
|
const menuContext = useMenu(contextProps);
|
|
4164
4172
|
const { setActiveMenuContext, selectedMenuPath } = useNestedMenuContext();
|
|
4165
|
-
|
|
4173
|
+
import_react30.default.useEffect(() => {
|
|
4166
4174
|
setActiveMenuContext(menuContext);
|
|
4167
4175
|
}, [
|
|
4168
4176
|
selectedMenuPath[selectedMenuPath.length - 1],
|
|
@@ -4173,10 +4181,10 @@ var NestedMenuRoot = ({
|
|
|
4173
4181
|
};
|
|
4174
4182
|
|
|
4175
4183
|
// src/NestedMenu/NestedMenuPopout.tsx
|
|
4176
|
-
var
|
|
4184
|
+
var import_react31 = require("motion/react");
|
|
4177
4185
|
var import_styled_components14 = __toESM(require("styled-components"));
|
|
4178
4186
|
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
4179
|
-
var StyledDiv = (0, import_styled_components14.default)(
|
|
4187
|
+
var StyledDiv = (0, import_styled_components14.default)(import_react31.motion.div)`
|
|
4180
4188
|
overflow: hidden;
|
|
4181
4189
|
`;
|
|
4182
4190
|
var NestedMenuPopout = ({
|
|
@@ -4228,9 +4236,9 @@ var NestedMenu = ({
|
|
|
4228
4236
|
const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
|
|
4229
4237
|
isCombobox: false
|
|
4230
4238
|
});
|
|
4231
|
-
const uniqueId = (0,
|
|
4239
|
+
const uniqueId = (0, import_react32.useId)();
|
|
4232
4240
|
const nestedMenuId = externalNestedMenuId ?? `nested-menu-${uniqueId}`;
|
|
4233
|
-
const [hasLoadedOnce, setHasLoadedOnce] = (0,
|
|
4241
|
+
const [hasLoadedOnce, setHasLoadedOnce] = (0, import_react32.useState)(false);
|
|
4234
4242
|
const useSelectReturnProps = (0, import_downshift9.useSelect)({
|
|
4235
4243
|
...defaultDownshiftProps.select,
|
|
4236
4244
|
id: nestedMenuId,
|
|
@@ -4246,7 +4254,7 @@ var NestedMenu = ({
|
|
|
4246
4254
|
...useSelectReturnProps,
|
|
4247
4255
|
...restDefaults
|
|
4248
4256
|
};
|
|
4249
|
-
(0,
|
|
4257
|
+
(0, import_react32.useEffect)(() => {
|
|
4250
4258
|
if (!useSelectReturnProps.isOpen) {
|
|
4251
4259
|
setHasLoadedOnce(false);
|
|
4252
4260
|
} else {
|
|
@@ -4264,15 +4272,15 @@ var NestedMenu = ({
|
|
|
4264
4272
|
onIsOpenChange: onNestedIsOpenChange
|
|
4265
4273
|
};
|
|
4266
4274
|
rootMenuContextProps.getMenuProps?.({}, { suppressRefError: true });
|
|
4267
|
-
const [selectedMenuPath, setSelectedMenuPath] = (0,
|
|
4268
|
-
const [activeMenuContext, setActiveMenuContext] = (0,
|
|
4269
|
-
const [currentMenuId, setCurrentMenuId] = (0,
|
|
4270
|
-
const [isAdding, setIsAdding] = (0,
|
|
4275
|
+
const [selectedMenuPath, setSelectedMenuPath] = (0, import_react32.useState)([initialMenuId]);
|
|
4276
|
+
const [activeMenuContext, setActiveMenuContext] = (0, import_react32.useState)(defaultMenuContext);
|
|
4277
|
+
const [currentMenuId, setCurrentMenuId] = (0, import_react32.useState)(initialMenuId);
|
|
4278
|
+
const [isAdding, setIsAdding] = (0, import_react32.useState)(false);
|
|
4271
4279
|
const setSelectedMenuId = (id) => {
|
|
4272
4280
|
setIsAdding(true);
|
|
4273
4281
|
setSelectedMenuPath((currentPath) => [...currentPath, id]);
|
|
4274
4282
|
};
|
|
4275
|
-
(0,
|
|
4283
|
+
(0, import_react32.useEffect)(() => {
|
|
4276
4284
|
if (selectedMenuPath.length > 0) {
|
|
4277
4285
|
const newMenuId = selectedMenuPath[selectedMenuPath.length - 1];
|
|
4278
4286
|
setCurrentMenuId(newMenuId);
|
|
@@ -4366,8 +4374,8 @@ var NestedMenu = ({
|
|
|
4366
4374
|
initialIsOpen: true,
|
|
4367
4375
|
children: (
|
|
4368
4376
|
// Handles the smooth animating of the content
|
|
4369
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4370
|
-
|
|
4377
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react33.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
4378
|
+
import_react33.motion.div,
|
|
4371
4379
|
{
|
|
4372
4380
|
variants: contentVariants,
|
|
4373
4381
|
initial: "arrive",
|
|
@@ -4415,8 +4423,8 @@ var NestedMenu = ({
|
|
|
4415
4423
|
NestedMenuPopout,
|
|
4416
4424
|
{
|
|
4417
4425
|
content: MenuComponent && // Handles the rerender of the component
|
|
4418
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4419
|
-
|
|
4426
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react33.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4427
|
+
import_react33.motion.div,
|
|
4420
4428
|
{
|
|
4421
4429
|
variants: menuVariants,
|
|
4422
4430
|
initial: "arrive",
|
|
@@ -4461,7 +4469,6 @@ var NestedMenu = ({
|
|
|
4461
4469
|
MenuLabel,
|
|
4462
4470
|
MenuPopout,
|
|
4463
4471
|
MenuRoot,
|
|
4464
|
-
MenuRootNoPopout,
|
|
4465
4472
|
MenuSearchInput,
|
|
4466
4473
|
MenuSearchTokenInput,
|
|
4467
4474
|
MenuToggleButton,
|