@sproutsocial/seeds-react-menu 1.2.0 → 1.2.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.
- package/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +14 -0
- package/dist/esm/index.js +106 -76
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +120 -60
- package/dist/index.d.ts +120 -60
- package/dist/index.js +130 -105
- 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 +7 -19
- package/src/Autocomplete/Autocomplete.tsx +2 -3
- package/src/Autocomplete/AutocompleteTypes.ts +16 -12
- package/src/Autocomplete/SingleAutocomplete.tsx +2 -3
- package/src/MenuContent/MenuContent.tsx +4 -4
- package/src/MenuContext.tsx +6 -1
- 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 +46 -27
- 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/NestedMenu.tsx +3 -0
- 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,
|
|
@@ -2603,9 +2602,10 @@ var MenuGroup = ({
|
|
|
2603
2602
|
MenuGroup.__MENU_PRIMITIVE_TYPE = "MenuGroup";
|
|
2604
2603
|
|
|
2605
2604
|
// src/MenuRoot/MenuRoot.tsx
|
|
2606
|
-
var import_react10 = require("react");
|
|
2605
|
+
var import_react10 = __toESM(require("react"));
|
|
2607
2606
|
var import_styled_components10 = __toESM(require("styled-components"));
|
|
2608
2607
|
var import_seeds_react_popout = require("@sproutsocial/seeds-react-popout");
|
|
2608
|
+
var import_seeds_react_utilities = require("@sproutsocial/seeds-react-utilities");
|
|
2609
2609
|
|
|
2610
2610
|
// ../../seeds-design-tokens/seeds-motion/dist/seeds-motion-unitless.esm.js
|
|
2611
2611
|
var MOTION_DURATION_FAST = 0.15;
|
|
@@ -2682,7 +2682,7 @@ var MenuRoot = ({
|
|
|
2682
2682
|
children,
|
|
2683
2683
|
menuToggleElement,
|
|
2684
2684
|
popoutProps: { placement = "bottom", focusLockProps, ...popoutProps } = {},
|
|
2685
|
-
width: width2
|
|
2685
|
+
width: width2,
|
|
2686
2686
|
...contextProps
|
|
2687
2687
|
}) => {
|
|
2688
2688
|
const {
|
|
@@ -2691,14 +2691,22 @@ var MenuRoot = ({
|
|
|
2691
2691
|
closeMenu,
|
|
2692
2692
|
inputValue,
|
|
2693
2693
|
hiddenItemsCount = 0,
|
|
2694
|
-
items
|
|
2694
|
+
items,
|
|
2695
|
+
getMenuProps
|
|
2695
2696
|
} = contextProps;
|
|
2696
|
-
const
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2697
|
+
const toggleElementRef = import_react10.default.useRef(null);
|
|
2698
|
+
const [finalWidth, setFinalWidth] = import_react10.default.useState();
|
|
2699
|
+
const min_width = 200;
|
|
2700
|
+
(0, import_react10.useLayoutEffect)(() => {
|
|
2701
|
+
if (width2) {
|
|
2702
|
+
setFinalWidth(width2);
|
|
2703
|
+
} else if (toggleElementRef.current?.offsetWidth) {
|
|
2704
|
+
const toggleWidth = toggleElementRef.current.offsetWidth;
|
|
2705
|
+
setFinalWidth(Math.max(toggleWidth, min_width));
|
|
2706
|
+
} else {
|
|
2707
|
+
setFinalWidth(min_width);
|
|
2708
|
+
}
|
|
2709
|
+
}, [width2, toggleElementRef.current?.offsetWidth]);
|
|
2702
2710
|
(0, import_react10.useEffect)(() => {
|
|
2703
2711
|
if (!inputValue) return;
|
|
2704
2712
|
if (items && hiddenItemsCount >= items.length && isOpen) {
|
|
@@ -2706,6 +2714,7 @@ var MenuRoot = ({
|
|
|
2706
2714
|
}
|
|
2707
2715
|
}, [hiddenItemsCount, items?.length, isOpen, inputValue]);
|
|
2708
2716
|
const menuContext = useMenu(contextProps);
|
|
2717
|
+
getMenuProps?.({}, { suppressRefError: true });
|
|
2709
2718
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2710
2719
|
MenuPopout,
|
|
2711
2720
|
{
|
|
@@ -2714,37 +2723,55 @@ var MenuRoot = ({
|
|
|
2714
2723
|
openMenu,
|
|
2715
2724
|
closeMenu,
|
|
2716
2725
|
content: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuContentProvider, { menuContext, children }),
|
|
2726
|
+
width: finalWidth,
|
|
2717
2727
|
...popoutProps,
|
|
2718
|
-
children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2728
|
+
children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2729
|
+
MenuToggleProvider,
|
|
2730
|
+
{
|
|
2731
|
+
menuContext: {
|
|
2732
|
+
...menuContext,
|
|
2733
|
+
...toggleProps,
|
|
2734
|
+
ref: (0, import_seeds_react_utilities.mergeRefs)(
|
|
2735
|
+
toggleProps.ref,
|
|
2736
|
+
toggleElementRef
|
|
2737
|
+
)
|
|
2738
|
+
},
|
|
2739
|
+
children: menuToggleElement
|
|
2740
|
+
}
|
|
2741
|
+
)
|
|
2719
2742
|
}
|
|
2720
2743
|
);
|
|
2721
2744
|
};
|
|
2722
|
-
var MenuRootNoPopout = ({
|
|
2723
|
-
children,
|
|
2724
|
-
menuToggleElement,
|
|
2725
|
-
...contextProps
|
|
2726
|
-
}) => {
|
|
2727
|
-
const menuContext = useMenu(contextProps);
|
|
2728
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuContentProvider, { menuContext, children });
|
|
2729
|
-
};
|
|
2730
2745
|
|
|
2731
2746
|
// src/MenuLabel.tsx
|
|
2732
2747
|
var import_react11 = require("react");
|
|
2733
2748
|
var import_seeds_react_label = require("@sproutsocial/seeds-react-label");
|
|
2734
|
-
var import_jsx_runtime11 =
|
|
2735
|
-
|
|
2749
|
+
var import_jsx_runtime11 = (
|
|
2750
|
+
// This fallback id should never be used, but it is here to satisfy TypeScript since getLabelProps could be undefined.
|
|
2751
|
+
require("react/jsx-runtime")
|
|
2752
|
+
);
|
|
2753
|
+
var MenuLabel = ({
|
|
2754
|
+
children,
|
|
2755
|
+
required = false,
|
|
2756
|
+
...rest
|
|
2757
|
+
}) => {
|
|
2736
2758
|
const { getLabelProps } = useMenuToggleContext();
|
|
2737
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2759
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2760
|
+
import_seeds_react_label.Label,
|
|
2761
|
+
{
|
|
2762
|
+
htmlFor: "fallback_menu_label",
|
|
2763
|
+
required,
|
|
2764
|
+
...getLabelProps?.(),
|
|
2765
|
+
...rest,
|
|
2766
|
+
children
|
|
2767
|
+
}
|
|
2768
|
+
);
|
|
2738
2769
|
};
|
|
2739
2770
|
|
|
2740
2771
|
// src/MenuToggleButton/MenuToggleButton.tsx
|
|
2741
|
-
var import_react12 = require("react");
|
|
2742
2772
|
var import_seeds_react_button = require("@sproutsocial/seeds-react-button");
|
|
2743
2773
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
2744
|
-
var MenuToggleButton = ({
|
|
2745
|
-
children,
|
|
2746
|
-
...rest
|
|
2747
|
-
}) => {
|
|
2774
|
+
var MenuToggleButton = (props) => {
|
|
2748
2775
|
const { getToggleButtonProps, isListbox, getDropdownProps, ref, ariaProps } = useMenuToggleContext();
|
|
2749
2776
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2750
2777
|
import_seeds_react_button.Button,
|
|
@@ -2757,18 +2784,17 @@ var MenuToggleButton = ({
|
|
|
2757
2784
|
...ariaProps,
|
|
2758
2785
|
...isListbox ? {} : { role: "button", "aria-haspopup": "menu" }
|
|
2759
2786
|
}),
|
|
2760
|
-
...
|
|
2761
|
-
children
|
|
2787
|
+
...props
|
|
2762
2788
|
}
|
|
2763
2789
|
);
|
|
2764
2790
|
};
|
|
2765
2791
|
|
|
2766
2792
|
// src/MenuSearchInput/MenuSearchInput.tsx
|
|
2767
|
-
var
|
|
2793
|
+
var import_react13 = __toESM(require("react"));
|
|
2768
2794
|
var import_seeds_react_input = require("@sproutsocial/seeds-react-input");
|
|
2769
2795
|
|
|
2770
2796
|
// src/hooks/useItemFiltering.tsx
|
|
2771
|
-
var
|
|
2797
|
+
var import_react12 = __toESM(require("react"));
|
|
2772
2798
|
|
|
2773
2799
|
// src/utils/downshiftDefaults.ts
|
|
2774
2800
|
var itemToString = (item) => {
|
|
@@ -2788,8 +2814,8 @@ var useItemFiltering = ({
|
|
|
2788
2814
|
getShouldFilter = defaultGetShouldFilter,
|
|
2789
2815
|
setHiddenItemsMap: setHiddenItemsMapProp
|
|
2790
2816
|
}) => {
|
|
2791
|
-
const [hiddenItemsMap, setHiddenItemsMap] =
|
|
2792
|
-
const updateFilteredItems =
|
|
2817
|
+
const [hiddenItemsMap, setHiddenItemsMap] = import_react12.default.useState({});
|
|
2818
|
+
const updateFilteredItems = import_react12.default.useCallback(
|
|
2793
2819
|
({ inputValue }) => {
|
|
2794
2820
|
const newHiddenItems = getShouldFilter({ inputValue }) ? allMenuItems.reduce((map, item) => {
|
|
2795
2821
|
const isItemVisible = getIsItemVisible(item, inputValue);
|
|
@@ -2826,11 +2852,11 @@ var MenuSearchInput = ({
|
|
|
2826
2852
|
getIsItemVisible,
|
|
2827
2853
|
setHiddenItemsMap
|
|
2828
2854
|
});
|
|
2829
|
-
|
|
2855
|
+
import_react13.default.useEffect(() => {
|
|
2830
2856
|
updateFilteredItems({ inputValue: restInputProps.value || "" });
|
|
2831
2857
|
}, [isOpen, restInputProps.value]);
|
|
2832
2858
|
const toggleButtonProps = getToggleButtonProps?.() || {};
|
|
2833
|
-
const handleKeyDown =
|
|
2859
|
+
const handleKeyDown = import_react13.default.useCallback(
|
|
2834
2860
|
(e) => {
|
|
2835
2861
|
if (e.key === " ") return;
|
|
2836
2862
|
toggleButtonProps.onKeyDown?.(e);
|
|
@@ -2857,7 +2883,7 @@ var MenuSearchInput = ({
|
|
|
2857
2883
|
};
|
|
2858
2884
|
|
|
2859
2885
|
// src/MenuTokenInput.tsx
|
|
2860
|
-
var
|
|
2886
|
+
var import_react14 = __toESM(require("react"));
|
|
2861
2887
|
var import_styled_components11 = __toESM(require("styled-components"));
|
|
2862
2888
|
var import_seeds_react_token_input = require("@sproutsocial/seeds-react-token-input");
|
|
2863
2889
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
@@ -2890,7 +2916,7 @@ var MenuTokenInput = ({
|
|
|
2890
2916
|
removeSelectedItem,
|
|
2891
2917
|
setActiveIndex,
|
|
2892
2918
|
selectedItems = []
|
|
2893
|
-
} =
|
|
2919
|
+
} = import_react14.default.useContext(MenuContext);
|
|
2894
2920
|
const removeToken = (tokenId) => {
|
|
2895
2921
|
const tokenToRemove = selectedItems?.find((item) => item.id === tokenId);
|
|
2896
2922
|
tokenToRemove && removeSelectedItem?.(tokenToRemove);
|
|
@@ -2944,7 +2970,7 @@ var MenuTokenInput = ({
|
|
|
2944
2970
|
};
|
|
2945
2971
|
|
|
2946
2972
|
// src/MenuSearchTokenInput/MenuSearchTokenInput.tsx
|
|
2947
|
-
var
|
|
2973
|
+
var import_react15 = __toESM(require("react"));
|
|
2948
2974
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
2949
2975
|
var MenuSearchTokenInput = ({
|
|
2950
2976
|
getIsItemVisible,
|
|
@@ -2968,10 +2994,10 @@ var MenuSearchTokenInput = ({
|
|
|
2968
2994
|
setHiddenItemsMap
|
|
2969
2995
|
});
|
|
2970
2996
|
const controlledValue = value || inputPropsValue !== void 0 ? `${inputPropsValue}` : void 0;
|
|
2971
|
-
const [internalValue, setInternalValue] =
|
|
2997
|
+
const [internalValue, setInternalValue] = import_react15.default.useState(
|
|
2972
2998
|
controlledValue || ""
|
|
2973
2999
|
);
|
|
2974
|
-
const updateFilteredState =
|
|
3000
|
+
const updateFilteredState = import_react15.default.useCallback(
|
|
2975
3001
|
// defaults to an empty string if no value is passed
|
|
2976
3002
|
(value2 = "") => {
|
|
2977
3003
|
setInternalValue(value2);
|
|
@@ -2979,14 +3005,14 @@ var MenuSearchTokenInput = ({
|
|
|
2979
3005
|
},
|
|
2980
3006
|
[updateFilteredItems]
|
|
2981
3007
|
);
|
|
2982
|
-
|
|
3008
|
+
import_react15.default.useEffect(() => {
|
|
2983
3009
|
updateFilteredState(controlledValue);
|
|
2984
3010
|
}, [controlledValue]);
|
|
2985
|
-
|
|
3011
|
+
import_react15.default.useEffect(() => {
|
|
2986
3012
|
updateFilteredState(controlledValue);
|
|
2987
3013
|
}, [isOpen]);
|
|
2988
3014
|
const toggleButtonProps = getToggleButtonProps?.() || {};
|
|
2989
|
-
const handleKeyDown =
|
|
3015
|
+
const handleKeyDown = import_react15.default.useCallback(
|
|
2990
3016
|
(e) => {
|
|
2991
3017
|
if (e.key === " ") return;
|
|
2992
3018
|
toggleButtonProps.onKeyDown?.(e);
|
|
@@ -3014,10 +3040,10 @@ var MenuSearchTokenInput = ({
|
|
|
3014
3040
|
};
|
|
3015
3041
|
|
|
3016
3042
|
// src/SubmenuItem/SubmenuItem.tsx
|
|
3017
|
-
var
|
|
3043
|
+
var import_react16 = __toESM(require("react"));
|
|
3018
3044
|
var import_seeds_react_icon2 = require("@sproutsocial/seeds-react-icon");
|
|
3019
3045
|
var import_seeds_react_box3 = require("@sproutsocial/seeds-react-box");
|
|
3020
|
-
var
|
|
3046
|
+
var import_seeds_react_utilities2 = require("@sproutsocial/seeds-react-utilities");
|
|
3021
3047
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
3022
3048
|
var SubmenuItemTrigger = ({
|
|
3023
3049
|
id,
|
|
@@ -3026,7 +3052,7 @@ var SubmenuItemTrigger = ({
|
|
|
3026
3052
|
...rest
|
|
3027
3053
|
}) => {
|
|
3028
3054
|
const { getToggleButtonProps, getDropdownProps, ref, ariaProps } = useMenuToggleContext();
|
|
3029
|
-
const toggleRef = ref && innerRef ? (0,
|
|
3055
|
+
const toggleRef = ref && innerRef ? (0, import_seeds_react_utilities2.mergeRefs)([ref, innerRef].filter(Boolean)) : ref || innerRef;
|
|
3030
3056
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3031
3057
|
MenuItem,
|
|
3032
3058
|
{
|
|
@@ -3076,17 +3102,17 @@ var SubmenuItem = ({
|
|
|
3076
3102
|
itemsMap,
|
|
3077
3103
|
isOpen: parentIsOpen
|
|
3078
3104
|
} = useMenuContentContext();
|
|
3079
|
-
const [submenuIsFocused, setSubmenuIsFocused] =
|
|
3080
|
-
const [submenuIsOpen, setSubmenuIsOpen] =
|
|
3081
|
-
const [submenuIsActive, setSubmenuIsActive] =
|
|
3082
|
-
const submenuItemRef =
|
|
3083
|
-
const submenuRef =
|
|
3105
|
+
const [submenuIsFocused, setSubmenuIsFocused] = import_react16.default.useState(false);
|
|
3106
|
+
const [submenuIsOpen, setSubmenuIsOpen] = import_react16.default.useState(false);
|
|
3107
|
+
const [submenuIsActive, setSubmenuIsActive] = import_react16.default.useState(false);
|
|
3108
|
+
const submenuItemRef = import_react16.default.useRef(null);
|
|
3109
|
+
const submenuRef = import_react16.default.useRef(null);
|
|
3084
3110
|
const menuContent = menuItems ? getChildrenFromMenuItems({ menuItems, MenuItemComponent }) : menuChildren;
|
|
3085
3111
|
const item = itemsMap[id] || {
|
|
3086
3112
|
index: 0,
|
|
3087
3113
|
id
|
|
3088
3114
|
};
|
|
3089
|
-
|
|
3115
|
+
import_react16.default.useEffect(() => {
|
|
3090
3116
|
if (highlightedIndex === item.index) {
|
|
3091
3117
|
!submenuIsOpen && setSubmenuIsOpen(true);
|
|
3092
3118
|
} else if (submenuIsOpen && highlightedIndex !== -1) {
|
|
@@ -3094,7 +3120,7 @@ var SubmenuItem = ({
|
|
|
3094
3120
|
setSubmenuIsActive(false);
|
|
3095
3121
|
}
|
|
3096
3122
|
}, [highlightedIndex, item.index, submenuIsOpen, setSubmenuIsOpen]);
|
|
3097
|
-
const onSubmenuStateChange =
|
|
3123
|
+
const onSubmenuStateChange = import_react16.default.useCallback(
|
|
3098
3124
|
(state) => {
|
|
3099
3125
|
if (state.isOpen !== void 0) {
|
|
3100
3126
|
setSubmenuIsOpen(state.isOpen);
|
|
@@ -3138,7 +3164,7 @@ var SubmenuItem = ({
|
|
|
3138
3164
|
onMenuItemClick();
|
|
3139
3165
|
}
|
|
3140
3166
|
};
|
|
3141
|
-
|
|
3167
|
+
import_react16.default.useEffect(() => {
|
|
3142
3168
|
if (document && document.body) {
|
|
3143
3169
|
document.body.addEventListener("click", onBodyClick, {
|
|
3144
3170
|
capture: true
|
|
@@ -3242,11 +3268,11 @@ var ListboxToggleButton = ({
|
|
|
3242
3268
|
};
|
|
3243
3269
|
|
|
3244
3270
|
// src/ActionMenu/ActionMenu.tsx
|
|
3245
|
-
var
|
|
3271
|
+
var import_react18 = __toESM(require("react"));
|
|
3246
3272
|
var import_downshift3 = require("downshift");
|
|
3247
3273
|
|
|
3248
3274
|
// src/hooks/useDownshiftDefaults.tsx
|
|
3249
|
-
var
|
|
3275
|
+
var import_react17 = __toESM(require("react"));
|
|
3250
3276
|
|
|
3251
3277
|
// src/reducers/useComboboxStateReducer.tsx
|
|
3252
3278
|
var import_downshift = require("downshift");
|
|
@@ -3370,12 +3396,12 @@ var useDownshiftDefaults = ({
|
|
|
3370
3396
|
isMulti = false,
|
|
3371
3397
|
multiSelectProps = {}
|
|
3372
3398
|
} = {}) => {
|
|
3373
|
-
const [hiddenItemsMap, setHiddenItemsMap] =
|
|
3374
|
-
const hiddenItemsCount =
|
|
3399
|
+
const [hiddenItemsMap, setHiddenItemsMap] = import_react17.default.useState({});
|
|
3400
|
+
const hiddenItemsCount = import_react17.default.useMemo(
|
|
3375
3401
|
() => Object.keys(hiddenItemsMap).filter(Boolean).length,
|
|
3376
3402
|
[hiddenItemsMap]
|
|
3377
3403
|
);
|
|
3378
|
-
const isItemDisabled =
|
|
3404
|
+
const isItemDisabled = import_react17.default.useCallback(
|
|
3379
3405
|
(item) => Boolean(item.disabled || hiddenItemsMap[item.id]),
|
|
3380
3406
|
[hiddenItemsMap]
|
|
3381
3407
|
);
|
|
@@ -3454,7 +3480,7 @@ var ActionMenu = ({
|
|
|
3454
3480
|
const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
|
|
3455
3481
|
isCombobox: false
|
|
3456
3482
|
});
|
|
3457
|
-
const [currentSelectedItem, setCurrentSelectedItem] =
|
|
3483
|
+
const [currentSelectedItem, setCurrentSelectedItem] = import_react18.default.useState(null);
|
|
3458
3484
|
const { isOpen, ...useSelectReturnProps } = (0, import_downshift3.useSelect)({
|
|
3459
3485
|
...defaultDownshiftProps.select,
|
|
3460
3486
|
items: allMenuItems,
|
|
@@ -3466,7 +3492,7 @@ var ActionMenu = ({
|
|
|
3466
3492
|
),
|
|
3467
3493
|
...useSelectProps
|
|
3468
3494
|
});
|
|
3469
|
-
(0,
|
|
3495
|
+
(0, import_react18.useEffect)(() => {
|
|
3470
3496
|
setCurrentSelectedItem(useSelectReturnProps.selectedItem);
|
|
3471
3497
|
}, [useSelectReturnProps.selectedItem]);
|
|
3472
3498
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
@@ -3488,7 +3514,7 @@ var ActionMenu = ({
|
|
|
3488
3514
|
};
|
|
3489
3515
|
|
|
3490
3516
|
// src/SingleSelectMenu/SingleSelectMenu.tsx
|
|
3491
|
-
var
|
|
3517
|
+
var import_react19 = require("react");
|
|
3492
3518
|
var import_downshift4 = require("downshift");
|
|
3493
3519
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
3494
3520
|
var SingleSelectMenu = ({
|
|
@@ -3536,7 +3562,7 @@ var SingleSelectMenu = ({
|
|
|
3536
3562
|
};
|
|
3537
3563
|
|
|
3538
3564
|
// src/MultiSelectMenu/MultiSelectMenu.tsx
|
|
3539
|
-
var
|
|
3565
|
+
var import_react20 = require("react");
|
|
3540
3566
|
var import_downshift5 = require("downshift");
|
|
3541
3567
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
3542
3568
|
var MultiSelectMenu = ({
|
|
@@ -3639,10 +3665,9 @@ var MultiSelectMenu = ({
|
|
|
3639
3665
|
};
|
|
3640
3666
|
|
|
3641
3667
|
// src/Autocomplete/Autocomplete.tsx
|
|
3642
|
-
var
|
|
3668
|
+
var import_react22 = require("react");
|
|
3643
3669
|
|
|
3644
3670
|
// src/Autocomplete/SingleAutocomplete.tsx
|
|
3645
|
-
var import_react22 = require("react");
|
|
3646
3671
|
var import_downshift6 = require("downshift");
|
|
3647
3672
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
3648
3673
|
var SingleAutocomplete = ({
|
|
@@ -3700,7 +3725,7 @@ var SingleAutocomplete = ({
|
|
|
3700
3725
|
};
|
|
3701
3726
|
|
|
3702
3727
|
// src/Autocomplete/MultiAutocomplete.tsx
|
|
3703
|
-
var
|
|
3728
|
+
var import_react21 = __toESM(require("react"));
|
|
3704
3729
|
var import_downshift7 = require("downshift");
|
|
3705
3730
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
3706
3731
|
var MultiAutocomplete = ({
|
|
@@ -3726,15 +3751,15 @@ var MultiAutocomplete = ({
|
|
|
3726
3751
|
menuItems,
|
|
3727
3752
|
MenuItemComponent
|
|
3728
3753
|
});
|
|
3729
|
-
const [selectedItems, setSelectedItems] =
|
|
3730
|
-
const [selectedItemIds, setSelectedItemIds] =
|
|
3731
|
-
const getIsItemVisibleMulti =
|
|
3754
|
+
const [selectedItems, setSelectedItems] = import_react21.default.useState(initialSelectedItems);
|
|
3755
|
+
const [selectedItemIds, setSelectedItemIds] = import_react21.default.useState(getSelectedItemIds(initialSelectedItems));
|
|
3756
|
+
const getIsItemVisibleMulti = import_react21.default.useCallback(
|
|
3732
3757
|
(item, inputValue) => {
|
|
3733
3758
|
return (showSelectedItemsInDropdown || !selectedItemIds[item.id]) && getIsItemVisible(item, inputValue);
|
|
3734
3759
|
},
|
|
3735
3760
|
[selectedItemIds, showSelectedItemsInDropdown, getIsItemVisible]
|
|
3736
3761
|
);
|
|
3737
|
-
const getShouldFilterMulti =
|
|
3762
|
+
const getShouldFilterMulti = import_react21.default.useCallback(
|
|
3738
3763
|
(args) => {
|
|
3739
3764
|
return !showSelectedItemsInDropdown && Object.keys(selectedItemIds).length > 0 || defaultGetShouldFilter(args);
|
|
3740
3765
|
},
|
|
@@ -3758,7 +3783,7 @@ var MultiAutocomplete = ({
|
|
|
3758
3783
|
getShouldFilter: getShouldFilterMulti,
|
|
3759
3784
|
setHiddenItemsMap
|
|
3760
3785
|
});
|
|
3761
|
-
|
|
3786
|
+
import_react21.default.useEffect(() => {
|
|
3762
3787
|
updateFilteredItems({ inputValue: "" });
|
|
3763
3788
|
}, [selectedItemIds]);
|
|
3764
3789
|
const useMultipleSelectionReturnProps = (0, import_downshift7.useMultipleSelection)({
|
|
@@ -3838,7 +3863,7 @@ var MultiAutocomplete = ({
|
|
|
3838
3863
|
// src/Autocomplete/Autocomplete.tsx
|
|
3839
3864
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
3840
3865
|
var Autocomplete = ({
|
|
3841
|
-
multiSelect,
|
|
3866
|
+
multiSelect = false,
|
|
3842
3867
|
...rest
|
|
3843
3868
|
}) => {
|
|
3844
3869
|
if (multiSelect) {
|
|
@@ -3848,7 +3873,7 @@ var Autocomplete = ({
|
|
|
3848
3873
|
};
|
|
3849
3874
|
|
|
3850
3875
|
// src/Autocomplete/AutocompleteInput.tsx
|
|
3851
|
-
var
|
|
3876
|
+
var import_react23 = require("react");
|
|
3852
3877
|
var import_seeds_react_input2 = require("@sproutsocial/seeds-react-input");
|
|
3853
3878
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
3854
3879
|
var AutocompleteInput = ({
|
|
@@ -3886,7 +3911,7 @@ var AutocompleteInput = ({
|
|
|
3886
3911
|
};
|
|
3887
3912
|
|
|
3888
3913
|
// src/Autocomplete/AutocompleteTokenInput.tsx
|
|
3889
|
-
var
|
|
3914
|
+
var import_react24 = require("react");
|
|
3890
3915
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3891
3916
|
var AutocompleteTokenInput = ({
|
|
3892
3917
|
onKeyDown,
|
|
@@ -3930,7 +3955,7 @@ var AutocompleteTokenInput = ({
|
|
|
3930
3955
|
|
|
3931
3956
|
// src/Autocomplete/AutocompleteSelect.tsx
|
|
3932
3957
|
var import_seeds_react_icon4 = __toESM(require("@sproutsocial/seeds-react-icon"));
|
|
3933
|
-
var
|
|
3958
|
+
var import_react25 = require("react");
|
|
3934
3959
|
var import_styled_components13 = __toESM(require("styled-components"));
|
|
3935
3960
|
var import_seeds_react_input3 = require("@sproutsocial/seeds-react-input");
|
|
3936
3961
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
@@ -3950,8 +3975,8 @@ var AutocompleteSelect = (props) => {
|
|
|
3950
3975
|
};
|
|
3951
3976
|
|
|
3952
3977
|
// src/NestedMenu/NestedMenu.tsx
|
|
3953
|
-
var
|
|
3954
|
-
var
|
|
3978
|
+
var import_react31 = require("react");
|
|
3979
|
+
var import_react32 = require("motion/react");
|
|
3955
3980
|
var import_downshift9 = require("downshift");
|
|
3956
3981
|
|
|
3957
3982
|
// src/reducers/nestedMenuStateReducer.tsx
|
|
@@ -3979,7 +4004,7 @@ var nestedMenuStateReducer = (_state, actionAndChanges) => {
|
|
|
3979
4004
|
};
|
|
3980
4005
|
|
|
3981
4006
|
// src/NestedMenu/NestedMenuContext.tsx
|
|
3982
|
-
var
|
|
4007
|
+
var import_react26 = require("react");
|
|
3983
4008
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
3984
4009
|
var defaultNestedMenuContext = {
|
|
3985
4010
|
selectedMenuPath: [],
|
|
@@ -3997,7 +4022,7 @@ var defaultNestedMenuContext = {
|
|
|
3997
4022
|
},
|
|
3998
4023
|
animationSpeed: MOTION_DURATION_FAST
|
|
3999
4024
|
};
|
|
4000
|
-
var NestedMenuContext = (0,
|
|
4025
|
+
var NestedMenuContext = (0, import_react26.createContext)(
|
|
4001
4026
|
defaultNestedMenuContext
|
|
4002
4027
|
);
|
|
4003
4028
|
var NestedMenuProvider = ({
|
|
@@ -4007,7 +4032,7 @@ var NestedMenuProvider = ({
|
|
|
4007
4032
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(NestedMenuContext.Provider, { value: nestedMenuProps, children });
|
|
4008
4033
|
};
|
|
4009
4034
|
var useNestedMenuContext = () => {
|
|
4010
|
-
const nestedMenuContextValue = (0,
|
|
4035
|
+
const nestedMenuContextValue = (0, import_react26.useContext)(NestedMenuContext);
|
|
4011
4036
|
if (nestedMenuContextValue === null) {
|
|
4012
4037
|
throw new Error(
|
|
4013
4038
|
"useNestedMenuContext must be used within a <NestedMenuContext.Provider />"
|
|
@@ -4017,8 +4042,8 @@ var useNestedMenuContext = () => {
|
|
|
4017
4042
|
};
|
|
4018
4043
|
|
|
4019
4044
|
// src/NestedMenu/NestedMenuContent.tsx
|
|
4020
|
-
var
|
|
4021
|
-
var
|
|
4045
|
+
var import_react27 = require("react");
|
|
4046
|
+
var import_seeds_react_utilities3 = require("@sproutsocial/seeds-react-utilities");
|
|
4022
4047
|
|
|
4023
4048
|
// src/NestedMenu/NestedMenuItem.tsx
|
|
4024
4049
|
var import_seeds_react_icon5 = require("@sproutsocial/seeds-react-icon");
|
|
@@ -4058,10 +4083,10 @@ var NestedMenuContent = ({
|
|
|
4058
4083
|
}) => {
|
|
4059
4084
|
const { highlightedIndex, items } = useMenuContentContext();
|
|
4060
4085
|
const { setSelectedMenuId, selectedMenuPath, goBack } = useNestedMenuContext();
|
|
4061
|
-
const internalRef = (0,
|
|
4062
|
-
const innerRef = (0,
|
|
4086
|
+
const internalRef = (0, import_react27.useRef)(null);
|
|
4087
|
+
const innerRef = (0, import_seeds_react_utilities3.mergeRefs)(internalRef, innerRefProp);
|
|
4063
4088
|
const contentProps = children ? { children } : { menuItems, MenuItemComponent };
|
|
4064
|
-
(0,
|
|
4089
|
+
(0, import_react27.useEffect)(() => {
|
|
4065
4090
|
internalRef?.current?.focus();
|
|
4066
4091
|
}, []);
|
|
4067
4092
|
const onKeyDown = (e) => {
|
|
@@ -4099,7 +4124,7 @@ NestedMenuContent.__MENU_PRIMITIVE_TYPE = "MenuContent";
|
|
|
4099
4124
|
// src/NestedMenu/NestedMenuHeader.tsx
|
|
4100
4125
|
var import_seeds_react_button2 = require("@sproutsocial/seeds-react-button");
|
|
4101
4126
|
var import_seeds_react_icon6 = require("@sproutsocial/seeds-react-icon");
|
|
4102
|
-
var
|
|
4127
|
+
var import_react28 = require("motion/react");
|
|
4103
4128
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
4104
4129
|
var NestedMenuHeader = ({
|
|
4105
4130
|
backArrowLabel,
|
|
@@ -4110,8 +4135,8 @@ var NestedMenuHeader = ({
|
|
|
4110
4135
|
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
4111
4136
|
MenuHeader,
|
|
4112
4137
|
{
|
|
4113
|
-
leftAction: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
4114
|
-
|
|
4138
|
+
leftAction: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_react28.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
4139
|
+
import_react28.motion.div,
|
|
4115
4140
|
{
|
|
4116
4141
|
initial: { opacity: 0 },
|
|
4117
4142
|
animate: { opacity: 1 },
|
|
@@ -4129,7 +4154,7 @@ var NestedMenuHeader = ({
|
|
|
4129
4154
|
};
|
|
4130
4155
|
|
|
4131
4156
|
// src/NestedMenu/NestedMenuRoot.tsx
|
|
4132
|
-
var
|
|
4157
|
+
var import_react29 = __toESM(require("react"));
|
|
4133
4158
|
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
4134
4159
|
var NestedMenuRoot = ({
|
|
4135
4160
|
children,
|
|
@@ -4138,7 +4163,7 @@ var NestedMenuRoot = ({
|
|
|
4138
4163
|
}) => {
|
|
4139
4164
|
const menuContext = useMenu(contextProps);
|
|
4140
4165
|
const { setActiveMenuContext, selectedMenuPath } = useNestedMenuContext();
|
|
4141
|
-
|
|
4166
|
+
import_react29.default.useEffect(() => {
|
|
4142
4167
|
setActiveMenuContext(menuContext);
|
|
4143
4168
|
}, [
|
|
4144
4169
|
selectedMenuPath[selectedMenuPath.length - 1],
|
|
@@ -4149,10 +4174,10 @@ var NestedMenuRoot = ({
|
|
|
4149
4174
|
};
|
|
4150
4175
|
|
|
4151
4176
|
// src/NestedMenu/NestedMenuPopout.tsx
|
|
4152
|
-
var
|
|
4177
|
+
var import_react30 = require("motion/react");
|
|
4153
4178
|
var import_styled_components14 = __toESM(require("styled-components"));
|
|
4154
4179
|
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
4155
|
-
var StyledDiv = (0, import_styled_components14.default)(
|
|
4180
|
+
var StyledDiv = (0, import_styled_components14.default)(import_react30.motion.div)`
|
|
4156
4181
|
overflow: hidden;
|
|
4157
4182
|
`;
|
|
4158
4183
|
var NestedMenuPopout = ({
|
|
@@ -4204,9 +4229,9 @@ var NestedMenu = ({
|
|
|
4204
4229
|
const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
|
|
4205
4230
|
isCombobox: false
|
|
4206
4231
|
});
|
|
4207
|
-
const uniqueId = (0,
|
|
4232
|
+
const uniqueId = (0, import_react31.useId)();
|
|
4208
4233
|
const nestedMenuId = externalNestedMenuId ?? `nested-menu-${uniqueId}`;
|
|
4209
|
-
const [hasLoadedOnce, setHasLoadedOnce] = (0,
|
|
4234
|
+
const [hasLoadedOnce, setHasLoadedOnce] = (0, import_react31.useState)(false);
|
|
4210
4235
|
const useSelectReturnProps = (0, import_downshift9.useSelect)({
|
|
4211
4236
|
...defaultDownshiftProps.select,
|
|
4212
4237
|
id: nestedMenuId,
|
|
@@ -4222,7 +4247,7 @@ var NestedMenu = ({
|
|
|
4222
4247
|
...useSelectReturnProps,
|
|
4223
4248
|
...restDefaults
|
|
4224
4249
|
};
|
|
4225
|
-
(0,
|
|
4250
|
+
(0, import_react31.useEffect)(() => {
|
|
4226
4251
|
if (!useSelectReturnProps.isOpen) {
|
|
4227
4252
|
setHasLoadedOnce(false);
|
|
4228
4253
|
} else {
|
|
@@ -4239,15 +4264,16 @@ var NestedMenu = ({
|
|
|
4239
4264
|
id: nestedMenuId,
|
|
4240
4265
|
onIsOpenChange: onNestedIsOpenChange
|
|
4241
4266
|
};
|
|
4242
|
-
|
|
4243
|
-
const [
|
|
4244
|
-
const [
|
|
4245
|
-
const [
|
|
4267
|
+
rootMenuContextProps.getMenuProps?.({}, { suppressRefError: true });
|
|
4268
|
+
const [selectedMenuPath, setSelectedMenuPath] = (0, import_react31.useState)([initialMenuId]);
|
|
4269
|
+
const [activeMenuContext, setActiveMenuContext] = (0, import_react31.useState)(defaultMenuContext);
|
|
4270
|
+
const [currentMenuId, setCurrentMenuId] = (0, import_react31.useState)(initialMenuId);
|
|
4271
|
+
const [isAdding, setIsAdding] = (0, import_react31.useState)(false);
|
|
4246
4272
|
const setSelectedMenuId = (id) => {
|
|
4247
4273
|
setIsAdding(true);
|
|
4248
4274
|
setSelectedMenuPath((currentPath) => [...currentPath, id]);
|
|
4249
4275
|
};
|
|
4250
|
-
(0,
|
|
4276
|
+
(0, import_react31.useEffect)(() => {
|
|
4251
4277
|
if (selectedMenuPath.length > 0) {
|
|
4252
4278
|
const newMenuId = selectedMenuPath[selectedMenuPath.length - 1];
|
|
4253
4279
|
setCurrentMenuId(newMenuId);
|
|
@@ -4341,8 +4367,8 @@ var NestedMenu = ({
|
|
|
4341
4367
|
initialIsOpen: true,
|
|
4342
4368
|
children: (
|
|
4343
4369
|
// Handles the smooth animating of the content
|
|
4344
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4345
|
-
|
|
4370
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react32.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
4371
|
+
import_react32.motion.div,
|
|
4346
4372
|
{
|
|
4347
4373
|
variants: contentVariants,
|
|
4348
4374
|
initial: "arrive",
|
|
@@ -4390,8 +4416,8 @@ var NestedMenu = ({
|
|
|
4390
4416
|
NestedMenuPopout,
|
|
4391
4417
|
{
|
|
4392
4418
|
content: MenuComponent && // Handles the rerender of the component
|
|
4393
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4394
|
-
|
|
4419
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react32.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4420
|
+
import_react32.motion.div,
|
|
4395
4421
|
{
|
|
4396
4422
|
variants: menuVariants,
|
|
4397
4423
|
initial: "arrive",
|
|
@@ -4436,7 +4462,6 @@ var NestedMenu = ({
|
|
|
4436
4462
|
MenuLabel,
|
|
4437
4463
|
MenuPopout,
|
|
4438
4464
|
MenuRoot,
|
|
4439
|
-
MenuRootNoPopout,
|
|
4440
4465
|
MenuSearchInput,
|
|
4441
4466
|
MenuSearchTokenInput,
|
|
4442
4467
|
MenuToggleButton,
|