@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/.turbo/turbo-build.log
CHANGED
|
@@ -84,14 +84,14 @@ ESM Build start
|
|
|
84
84
|
╵ [32m~~~~~~~~~[0m
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
CJS dist/index.js 140.
|
|
88
|
-
CJS dist/index.js.map
|
|
89
|
-
CJS ⚡️ Build success in
|
|
90
|
-
ESM dist/esm/index.js
|
|
91
|
-
ESM dist/esm/index.js.map
|
|
92
|
-
ESM ⚡️ Build success in
|
|
87
|
+
CJS dist/index.js 140.79 KB
|
|
88
|
+
CJS dist/index.js.map 365.47 KB
|
|
89
|
+
CJS ⚡️ Build success in 515ms
|
|
90
|
+
ESM dist/esm/index.js 131.30 KB
|
|
91
|
+
ESM dist/esm/index.js.map 364.25 KB
|
|
92
|
+
ESM ⚡️ Build success in 518ms
|
|
93
93
|
DTS Build start
|
|
94
|
-
DTS ⚡️ Build success in
|
|
95
|
-
DTS dist/index.d.ts
|
|
96
|
-
DTS dist/index.d.mts
|
|
97
|
-
Done in 18.
|
|
94
|
+
DTS ⚡️ Build success in 15560ms
|
|
95
|
+
DTS dist/index.d.ts 36.84 KB
|
|
96
|
+
DTS dist/index.d.mts 36.84 KB
|
|
97
|
+
Done in 18.60s.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @sproutsocial/seeds-react-menu
|
|
2
2
|
|
|
3
|
+
## 1.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 75c88a8: Improves Menu prop documentation
|
|
8
|
+
|
|
9
|
+
## 1.2.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- d309821: - Update all menus so that they set the menu width to the toggle width by default, with a minimum width of 200px
|
|
14
|
+
- Fix recently introduced bug that made the `width` prop stop working
|
|
15
|
+
- 4bcd4f3: Fix error: "downshift: You forgot to call the getMenuProps getter function on your component / element."
|
|
16
|
+
|
|
3
17
|
## 1.2.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
package/dist/esm/index.js
CHANGED
|
@@ -2547,9 +2547,14 @@ var MenuGroup = ({
|
|
|
2547
2547
|
MenuGroup.__MENU_PRIMITIVE_TYPE = "MenuGroup";
|
|
2548
2548
|
|
|
2549
2549
|
// src/MenuRoot/MenuRoot.tsx
|
|
2550
|
-
import
|
|
2550
|
+
import React7, {
|
|
2551
|
+
useCallback as useCallback2,
|
|
2552
|
+
useEffect,
|
|
2553
|
+
useLayoutEffect
|
|
2554
|
+
} from "react";
|
|
2551
2555
|
import styled7 from "styled-components";
|
|
2552
2556
|
import { Popout } from "@sproutsocial/seeds-react-popout";
|
|
2557
|
+
import { mergeRefs } from "@sproutsocial/seeds-react-utilities";
|
|
2553
2558
|
|
|
2554
2559
|
// ../../seeds-design-tokens/seeds-motion/dist/seeds-motion-unitless.esm.js
|
|
2555
2560
|
var MOTION_DURATION_FAST = 0.15;
|
|
@@ -2626,7 +2631,7 @@ var MenuRoot = ({
|
|
|
2626
2631
|
children,
|
|
2627
2632
|
menuToggleElement,
|
|
2628
2633
|
popoutProps: { placement = "bottom", focusLockProps, ...popoutProps } = {},
|
|
2629
|
-
width: width2
|
|
2634
|
+
width: width2,
|
|
2630
2635
|
...contextProps
|
|
2631
2636
|
}) => {
|
|
2632
2637
|
const {
|
|
@@ -2635,14 +2640,22 @@ var MenuRoot = ({
|
|
|
2635
2640
|
closeMenu,
|
|
2636
2641
|
inputValue,
|
|
2637
2642
|
hiddenItemsCount = 0,
|
|
2638
|
-
items
|
|
2643
|
+
items,
|
|
2644
|
+
getMenuProps
|
|
2639
2645
|
} = contextProps;
|
|
2640
|
-
const
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
+
const toggleElementRef = React7.useRef(null);
|
|
2647
|
+
const [finalWidth, setFinalWidth] = React7.useState();
|
|
2648
|
+
const min_width = 200;
|
|
2649
|
+
useLayoutEffect(() => {
|
|
2650
|
+
if (width2) {
|
|
2651
|
+
setFinalWidth(width2);
|
|
2652
|
+
} else if (toggleElementRef.current?.offsetWidth) {
|
|
2653
|
+
const toggleWidth = toggleElementRef.current.offsetWidth;
|
|
2654
|
+
setFinalWidth(Math.max(toggleWidth, min_width));
|
|
2655
|
+
} else {
|
|
2656
|
+
setFinalWidth(min_width);
|
|
2657
|
+
}
|
|
2658
|
+
}, [width2, toggleElementRef.current?.offsetWidth]);
|
|
2646
2659
|
useEffect(() => {
|
|
2647
2660
|
if (!inputValue) return;
|
|
2648
2661
|
if (items && hiddenItemsCount >= items.length && isOpen) {
|
|
@@ -2650,6 +2663,7 @@ var MenuRoot = ({
|
|
|
2650
2663
|
}
|
|
2651
2664
|
}, [hiddenItemsCount, items?.length, isOpen, inputValue]);
|
|
2652
2665
|
const menuContext = useMenu(contextProps);
|
|
2666
|
+
getMenuProps?.({}, { suppressRefError: true });
|
|
2653
2667
|
return /* @__PURE__ */ jsx10(
|
|
2654
2668
|
MenuPopout,
|
|
2655
2669
|
{
|
|
@@ -2658,37 +2672,55 @@ var MenuRoot = ({
|
|
|
2658
2672
|
openMenu,
|
|
2659
2673
|
closeMenu,
|
|
2660
2674
|
content: /* @__PURE__ */ jsx10(MenuContentProvider, { menuContext, children }),
|
|
2675
|
+
width: finalWidth,
|
|
2661
2676
|
...popoutProps,
|
|
2662
|
-
children: (toggleProps) => /* @__PURE__ */ jsx10(
|
|
2677
|
+
children: (toggleProps) => /* @__PURE__ */ jsx10(
|
|
2678
|
+
MenuToggleProvider,
|
|
2679
|
+
{
|
|
2680
|
+
menuContext: {
|
|
2681
|
+
...menuContext,
|
|
2682
|
+
...toggleProps,
|
|
2683
|
+
ref: mergeRefs(
|
|
2684
|
+
toggleProps.ref,
|
|
2685
|
+
toggleElementRef
|
|
2686
|
+
)
|
|
2687
|
+
},
|
|
2688
|
+
children: menuToggleElement
|
|
2689
|
+
}
|
|
2690
|
+
)
|
|
2663
2691
|
}
|
|
2664
2692
|
);
|
|
2665
2693
|
};
|
|
2666
|
-
var MenuRootNoPopout = ({
|
|
2667
|
-
children,
|
|
2668
|
-
menuToggleElement,
|
|
2669
|
-
...contextProps
|
|
2670
|
-
}) => {
|
|
2671
|
-
const menuContext = useMenu(contextProps);
|
|
2672
|
-
return /* @__PURE__ */ jsx10(MenuContentProvider, { menuContext, children });
|
|
2673
|
-
};
|
|
2674
2694
|
|
|
2675
2695
|
// src/MenuLabel.tsx
|
|
2676
2696
|
import "react";
|
|
2677
2697
|
import { Label } from "@sproutsocial/seeds-react-label";
|
|
2678
2698
|
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
2679
|
-
var MenuLabel = ({
|
|
2699
|
+
var MenuLabel = ({
|
|
2700
|
+
children,
|
|
2701
|
+
required = false,
|
|
2702
|
+
...rest
|
|
2703
|
+
}) => {
|
|
2680
2704
|
const { getLabelProps } = useMenuToggleContext();
|
|
2681
|
-
return
|
|
2705
|
+
return (
|
|
2706
|
+
// This fallback id should never be used, but it is here to satisfy TypeScript since getLabelProps could be undefined.
|
|
2707
|
+
/* @__PURE__ */ jsx11(
|
|
2708
|
+
Label,
|
|
2709
|
+
{
|
|
2710
|
+
htmlFor: "fallback_menu_label",
|
|
2711
|
+
required,
|
|
2712
|
+
...getLabelProps?.(),
|
|
2713
|
+
...rest,
|
|
2714
|
+
children
|
|
2715
|
+
}
|
|
2716
|
+
)
|
|
2717
|
+
);
|
|
2682
2718
|
};
|
|
2683
2719
|
|
|
2684
2720
|
// src/MenuToggleButton/MenuToggleButton.tsx
|
|
2685
|
-
import "react";
|
|
2686
2721
|
import { Button } from "@sproutsocial/seeds-react-button";
|
|
2687
2722
|
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
2688
|
-
var MenuToggleButton = ({
|
|
2689
|
-
children,
|
|
2690
|
-
...rest
|
|
2691
|
-
}) => {
|
|
2723
|
+
var MenuToggleButton = (props) => {
|
|
2692
2724
|
const { getToggleButtonProps, isListbox, getDropdownProps, ref, ariaProps } = useMenuToggleContext();
|
|
2693
2725
|
return /* @__PURE__ */ jsx12(
|
|
2694
2726
|
Button,
|
|
@@ -2701,18 +2733,17 @@ var MenuToggleButton = ({
|
|
|
2701
2733
|
...ariaProps,
|
|
2702
2734
|
...isListbox ? {} : { role: "button", "aria-haspopup": "menu" }
|
|
2703
2735
|
}),
|
|
2704
|
-
...
|
|
2705
|
-
children
|
|
2736
|
+
...props
|
|
2706
2737
|
}
|
|
2707
2738
|
);
|
|
2708
2739
|
};
|
|
2709
2740
|
|
|
2710
2741
|
// src/MenuSearchInput/MenuSearchInput.tsx
|
|
2711
|
-
import
|
|
2742
|
+
import React10 from "react";
|
|
2712
2743
|
import { Input } from "@sproutsocial/seeds-react-input";
|
|
2713
2744
|
|
|
2714
2745
|
// src/hooks/useItemFiltering.tsx
|
|
2715
|
-
import
|
|
2746
|
+
import React9 from "react";
|
|
2716
2747
|
|
|
2717
2748
|
// src/utils/downshiftDefaults.ts
|
|
2718
2749
|
var itemToString = (item) => {
|
|
@@ -2732,8 +2763,8 @@ var useItemFiltering = ({
|
|
|
2732
2763
|
getShouldFilter = defaultGetShouldFilter,
|
|
2733
2764
|
setHiddenItemsMap: setHiddenItemsMapProp
|
|
2734
2765
|
}) => {
|
|
2735
|
-
const [hiddenItemsMap, setHiddenItemsMap] =
|
|
2736
|
-
const updateFilteredItems =
|
|
2766
|
+
const [hiddenItemsMap, setHiddenItemsMap] = React9.useState({});
|
|
2767
|
+
const updateFilteredItems = React9.useCallback(
|
|
2737
2768
|
({ inputValue }) => {
|
|
2738
2769
|
const newHiddenItems = getShouldFilter({ inputValue }) ? allMenuItems.reduce((map, item) => {
|
|
2739
2770
|
const isItemVisible = getIsItemVisible(item, inputValue);
|
|
@@ -2770,11 +2801,11 @@ var MenuSearchInput = ({
|
|
|
2770
2801
|
getIsItemVisible,
|
|
2771
2802
|
setHiddenItemsMap
|
|
2772
2803
|
});
|
|
2773
|
-
|
|
2804
|
+
React10.useEffect(() => {
|
|
2774
2805
|
updateFilteredItems({ inputValue: restInputProps.value || "" });
|
|
2775
2806
|
}, [isOpen, restInputProps.value]);
|
|
2776
2807
|
const toggleButtonProps = getToggleButtonProps?.() || {};
|
|
2777
|
-
const handleKeyDown =
|
|
2808
|
+
const handleKeyDown = React10.useCallback(
|
|
2778
2809
|
(e) => {
|
|
2779
2810
|
if (e.key === " ") return;
|
|
2780
2811
|
toggleButtonProps.onKeyDown?.(e);
|
|
@@ -2801,7 +2832,7 @@ var MenuSearchInput = ({
|
|
|
2801
2832
|
};
|
|
2802
2833
|
|
|
2803
2834
|
// src/MenuTokenInput.tsx
|
|
2804
|
-
import
|
|
2835
|
+
import React11 from "react";
|
|
2805
2836
|
import styled8 from "styled-components";
|
|
2806
2837
|
import {
|
|
2807
2838
|
TokenInput
|
|
@@ -2836,7 +2867,7 @@ var MenuTokenInput = ({
|
|
|
2836
2867
|
removeSelectedItem,
|
|
2837
2868
|
setActiveIndex,
|
|
2838
2869
|
selectedItems = []
|
|
2839
|
-
} =
|
|
2870
|
+
} = React11.useContext(MenuContext);
|
|
2840
2871
|
const removeToken = (tokenId) => {
|
|
2841
2872
|
const tokenToRemove = selectedItems?.find((item) => item.id === tokenId);
|
|
2842
2873
|
tokenToRemove && removeSelectedItem?.(tokenToRemove);
|
|
@@ -2890,7 +2921,7 @@ var MenuTokenInput = ({
|
|
|
2890
2921
|
};
|
|
2891
2922
|
|
|
2892
2923
|
// src/MenuSearchTokenInput/MenuSearchTokenInput.tsx
|
|
2893
|
-
import
|
|
2924
|
+
import React12 from "react";
|
|
2894
2925
|
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
2895
2926
|
var MenuSearchTokenInput = ({
|
|
2896
2927
|
getIsItemVisible,
|
|
@@ -2914,10 +2945,10 @@ var MenuSearchTokenInput = ({
|
|
|
2914
2945
|
setHiddenItemsMap
|
|
2915
2946
|
});
|
|
2916
2947
|
const controlledValue = value || inputPropsValue !== void 0 ? `${inputPropsValue}` : void 0;
|
|
2917
|
-
const [internalValue, setInternalValue] =
|
|
2948
|
+
const [internalValue, setInternalValue] = React12.useState(
|
|
2918
2949
|
controlledValue || ""
|
|
2919
2950
|
);
|
|
2920
|
-
const updateFilteredState =
|
|
2951
|
+
const updateFilteredState = React12.useCallback(
|
|
2921
2952
|
// defaults to an empty string if no value is passed
|
|
2922
2953
|
(value2 = "") => {
|
|
2923
2954
|
setInternalValue(value2);
|
|
@@ -2925,14 +2956,14 @@ var MenuSearchTokenInput = ({
|
|
|
2925
2956
|
},
|
|
2926
2957
|
[updateFilteredItems]
|
|
2927
2958
|
);
|
|
2928
|
-
|
|
2959
|
+
React12.useEffect(() => {
|
|
2929
2960
|
updateFilteredState(controlledValue);
|
|
2930
2961
|
}, [controlledValue]);
|
|
2931
|
-
|
|
2962
|
+
React12.useEffect(() => {
|
|
2932
2963
|
updateFilteredState(controlledValue);
|
|
2933
2964
|
}, [isOpen]);
|
|
2934
2965
|
const toggleButtonProps = getToggleButtonProps?.() || {};
|
|
2935
|
-
const handleKeyDown =
|
|
2966
|
+
const handleKeyDown = React12.useCallback(
|
|
2936
2967
|
(e) => {
|
|
2937
2968
|
if (e.key === " ") return;
|
|
2938
2969
|
toggleButtonProps.onKeyDown?.(e);
|
|
@@ -2960,10 +2991,10 @@ var MenuSearchTokenInput = ({
|
|
|
2960
2991
|
};
|
|
2961
2992
|
|
|
2962
2993
|
// src/SubmenuItem/SubmenuItem.tsx
|
|
2963
|
-
import
|
|
2994
|
+
import React13 from "react";
|
|
2964
2995
|
import { Icon as Icon2 } from "@sproutsocial/seeds-react-icon";
|
|
2965
2996
|
import { Box as Box3 } from "@sproutsocial/seeds-react-box";
|
|
2966
|
-
import { mergeRefs } from "@sproutsocial/seeds-react-utilities";
|
|
2997
|
+
import { mergeRefs as mergeRefs2 } from "@sproutsocial/seeds-react-utilities";
|
|
2967
2998
|
import { jsx as jsx16, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
2968
2999
|
var SubmenuItemTrigger = ({
|
|
2969
3000
|
id,
|
|
@@ -2972,7 +3003,7 @@ var SubmenuItemTrigger = ({
|
|
|
2972
3003
|
...rest
|
|
2973
3004
|
}) => {
|
|
2974
3005
|
const { getToggleButtonProps, getDropdownProps, ref, ariaProps } = useMenuToggleContext();
|
|
2975
|
-
const toggleRef = ref && innerRef ?
|
|
3006
|
+
const toggleRef = ref && innerRef ? mergeRefs2([ref, innerRef].filter(Boolean)) : ref || innerRef;
|
|
2976
3007
|
return /* @__PURE__ */ jsx16(
|
|
2977
3008
|
MenuItem,
|
|
2978
3009
|
{
|
|
@@ -3022,17 +3053,17 @@ var SubmenuItem = ({
|
|
|
3022
3053
|
itemsMap,
|
|
3023
3054
|
isOpen: parentIsOpen
|
|
3024
3055
|
} = useMenuContentContext();
|
|
3025
|
-
const [submenuIsFocused, setSubmenuIsFocused] =
|
|
3026
|
-
const [submenuIsOpen, setSubmenuIsOpen] =
|
|
3027
|
-
const [submenuIsActive, setSubmenuIsActive] =
|
|
3028
|
-
const submenuItemRef =
|
|
3029
|
-
const submenuRef =
|
|
3056
|
+
const [submenuIsFocused, setSubmenuIsFocused] = React13.useState(false);
|
|
3057
|
+
const [submenuIsOpen, setSubmenuIsOpen] = React13.useState(false);
|
|
3058
|
+
const [submenuIsActive, setSubmenuIsActive] = React13.useState(false);
|
|
3059
|
+
const submenuItemRef = React13.useRef(null);
|
|
3060
|
+
const submenuRef = React13.useRef(null);
|
|
3030
3061
|
const menuContent = menuItems ? getChildrenFromMenuItems({ menuItems, MenuItemComponent }) : menuChildren;
|
|
3031
3062
|
const item = itemsMap[id] || {
|
|
3032
3063
|
index: 0,
|
|
3033
3064
|
id
|
|
3034
3065
|
};
|
|
3035
|
-
|
|
3066
|
+
React13.useEffect(() => {
|
|
3036
3067
|
if (highlightedIndex === item.index) {
|
|
3037
3068
|
!submenuIsOpen && setSubmenuIsOpen(true);
|
|
3038
3069
|
} else if (submenuIsOpen && highlightedIndex !== -1) {
|
|
@@ -3040,7 +3071,7 @@ var SubmenuItem = ({
|
|
|
3040
3071
|
setSubmenuIsActive(false);
|
|
3041
3072
|
}
|
|
3042
3073
|
}, [highlightedIndex, item.index, submenuIsOpen, setSubmenuIsOpen]);
|
|
3043
|
-
const onSubmenuStateChange =
|
|
3074
|
+
const onSubmenuStateChange = React13.useCallback(
|
|
3044
3075
|
(state) => {
|
|
3045
3076
|
if (state.isOpen !== void 0) {
|
|
3046
3077
|
setSubmenuIsOpen(state.isOpen);
|
|
@@ -3084,7 +3115,7 @@ var SubmenuItem = ({
|
|
|
3084
3115
|
onMenuItemClick();
|
|
3085
3116
|
}
|
|
3086
3117
|
};
|
|
3087
|
-
|
|
3118
|
+
React13.useEffect(() => {
|
|
3088
3119
|
if (document && document.body) {
|
|
3089
3120
|
document.body.addEventListener("click", onBodyClick, {
|
|
3090
3121
|
capture: true
|
|
@@ -3188,13 +3219,13 @@ var ListboxToggleButton = ({
|
|
|
3188
3219
|
};
|
|
3189
3220
|
|
|
3190
3221
|
// src/ActionMenu/ActionMenu.tsx
|
|
3191
|
-
import
|
|
3222
|
+
import React15, { useEffect as useEffect2 } from "react";
|
|
3192
3223
|
import {
|
|
3193
3224
|
useSelect as useSelect2
|
|
3194
3225
|
} from "downshift";
|
|
3195
3226
|
|
|
3196
3227
|
// src/hooks/useDownshiftDefaults.tsx
|
|
3197
|
-
import
|
|
3228
|
+
import React14 from "react";
|
|
3198
3229
|
|
|
3199
3230
|
// src/reducers/useComboboxStateReducer.tsx
|
|
3200
3231
|
import { useCombobox } from "downshift";
|
|
@@ -3318,12 +3349,12 @@ var useDownshiftDefaults = ({
|
|
|
3318
3349
|
isMulti = false,
|
|
3319
3350
|
multiSelectProps = {}
|
|
3320
3351
|
} = {}) => {
|
|
3321
|
-
const [hiddenItemsMap, setHiddenItemsMap] =
|
|
3322
|
-
const hiddenItemsCount =
|
|
3352
|
+
const [hiddenItemsMap, setHiddenItemsMap] = React14.useState({});
|
|
3353
|
+
const hiddenItemsCount = React14.useMemo(
|
|
3323
3354
|
() => Object.keys(hiddenItemsMap).filter(Boolean).length,
|
|
3324
3355
|
[hiddenItemsMap]
|
|
3325
3356
|
);
|
|
3326
|
-
const isItemDisabled =
|
|
3357
|
+
const isItemDisabled = React14.useCallback(
|
|
3327
3358
|
(item) => Boolean(item.disabled || hiddenItemsMap[item.id]),
|
|
3328
3359
|
[hiddenItemsMap]
|
|
3329
3360
|
);
|
|
@@ -3402,7 +3433,7 @@ var ActionMenu = ({
|
|
|
3402
3433
|
const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
|
|
3403
3434
|
isCombobox: false
|
|
3404
3435
|
});
|
|
3405
|
-
const [currentSelectedItem, setCurrentSelectedItem] =
|
|
3436
|
+
const [currentSelectedItem, setCurrentSelectedItem] = React15.useState(null);
|
|
3406
3437
|
const { isOpen, ...useSelectReturnProps } = useSelect2({
|
|
3407
3438
|
...defaultDownshiftProps.select,
|
|
3408
3439
|
items: allMenuItems,
|
|
@@ -3590,7 +3621,6 @@ var MultiSelectMenu = ({
|
|
|
3590
3621
|
import "react";
|
|
3591
3622
|
|
|
3592
3623
|
// src/Autocomplete/SingleAutocomplete.tsx
|
|
3593
|
-
import "react";
|
|
3594
3624
|
import { useCombobox as useCombobox2 } from "downshift";
|
|
3595
3625
|
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
3596
3626
|
var SingleAutocomplete = ({
|
|
@@ -3648,7 +3678,7 @@ var SingleAutocomplete = ({
|
|
|
3648
3678
|
};
|
|
3649
3679
|
|
|
3650
3680
|
// src/Autocomplete/MultiAutocomplete.tsx
|
|
3651
|
-
import
|
|
3681
|
+
import React18 from "react";
|
|
3652
3682
|
import { useCombobox as useCombobox3, useMultipleSelection as useMultipleSelection2 } from "downshift";
|
|
3653
3683
|
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
3654
3684
|
var MultiAutocomplete = ({
|
|
@@ -3674,15 +3704,15 @@ var MultiAutocomplete = ({
|
|
|
3674
3704
|
menuItems,
|
|
3675
3705
|
MenuItemComponent
|
|
3676
3706
|
});
|
|
3677
|
-
const [selectedItems, setSelectedItems] =
|
|
3678
|
-
const [selectedItemIds, setSelectedItemIds] =
|
|
3679
|
-
const getIsItemVisibleMulti =
|
|
3707
|
+
const [selectedItems, setSelectedItems] = React18.useState(initialSelectedItems);
|
|
3708
|
+
const [selectedItemIds, setSelectedItemIds] = React18.useState(getSelectedItemIds(initialSelectedItems));
|
|
3709
|
+
const getIsItemVisibleMulti = React18.useCallback(
|
|
3680
3710
|
(item, inputValue) => {
|
|
3681
3711
|
return (showSelectedItemsInDropdown || !selectedItemIds[item.id]) && getIsItemVisible(item, inputValue);
|
|
3682
3712
|
},
|
|
3683
3713
|
[selectedItemIds, showSelectedItemsInDropdown, getIsItemVisible]
|
|
3684
3714
|
);
|
|
3685
|
-
const getShouldFilterMulti =
|
|
3715
|
+
const getShouldFilterMulti = React18.useCallback(
|
|
3686
3716
|
(args) => {
|
|
3687
3717
|
return !showSelectedItemsInDropdown && Object.keys(selectedItemIds).length > 0 || defaultGetShouldFilter(args);
|
|
3688
3718
|
},
|
|
@@ -3706,7 +3736,7 @@ var MultiAutocomplete = ({
|
|
|
3706
3736
|
getShouldFilter: getShouldFilterMulti,
|
|
3707
3737
|
setHiddenItemsMap
|
|
3708
3738
|
});
|
|
3709
|
-
|
|
3739
|
+
React18.useEffect(() => {
|
|
3710
3740
|
updateFilteredItems({ inputValue: "" });
|
|
3711
3741
|
}, [selectedItemIds]);
|
|
3712
3742
|
const useMultipleSelectionReturnProps = useMultipleSelection2({
|
|
@@ -3786,7 +3816,7 @@ var MultiAutocomplete = ({
|
|
|
3786
3816
|
// src/Autocomplete/Autocomplete.tsx
|
|
3787
3817
|
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
3788
3818
|
var Autocomplete = ({
|
|
3789
|
-
multiSelect,
|
|
3819
|
+
multiSelect = false,
|
|
3790
3820
|
...rest
|
|
3791
3821
|
}) => {
|
|
3792
3822
|
if (multiSelect) {
|
|
@@ -3898,7 +3928,7 @@ var AutocompleteSelect = (props) => {
|
|
|
3898
3928
|
};
|
|
3899
3929
|
|
|
3900
3930
|
// src/NestedMenu/NestedMenu.tsx
|
|
3901
|
-
import { useId, useEffect as
|
|
3931
|
+
import { useId, useEffect as useEffect4, useState } from "react";
|
|
3902
3932
|
import { AnimatePresence as AnimatePresence2, motion as motion3 } from "motion/react";
|
|
3903
3933
|
import { useSelect as useSelect6 } from "downshift";
|
|
3904
3934
|
|
|
@@ -3965,8 +3995,8 @@ var useNestedMenuContext = () => {
|
|
|
3965
3995
|
};
|
|
3966
3996
|
|
|
3967
3997
|
// src/NestedMenu/NestedMenuContent.tsx
|
|
3968
|
-
import { useEffect as
|
|
3969
|
-
import { mergeRefs as
|
|
3998
|
+
import { useEffect as useEffect3, useRef } from "react";
|
|
3999
|
+
import { mergeRefs as mergeRefs3 } from "@sproutsocial/seeds-react-utilities";
|
|
3970
4000
|
|
|
3971
4001
|
// src/NestedMenu/NestedMenuItem.tsx
|
|
3972
4002
|
import { Icon as Icon5 } from "@sproutsocial/seeds-react-icon";
|
|
@@ -4007,9 +4037,9 @@ var NestedMenuContent = ({
|
|
|
4007
4037
|
const { highlightedIndex, items } = useMenuContentContext();
|
|
4008
4038
|
const { setSelectedMenuId, selectedMenuPath, goBack } = useNestedMenuContext();
|
|
4009
4039
|
const internalRef = useRef(null);
|
|
4010
|
-
const innerRef =
|
|
4040
|
+
const innerRef = mergeRefs3(internalRef, innerRefProp);
|
|
4011
4041
|
const contentProps = children ? { children } : { menuItems, MenuItemComponent };
|
|
4012
|
-
|
|
4042
|
+
useEffect3(() => {
|
|
4013
4043
|
internalRef?.current?.focus();
|
|
4014
4044
|
}, []);
|
|
4015
4045
|
const onKeyDown = (e) => {
|
|
@@ -4077,7 +4107,7 @@ var NestedMenuHeader = ({
|
|
|
4077
4107
|
};
|
|
4078
4108
|
|
|
4079
4109
|
// src/NestedMenu/NestedMenuRoot.tsx
|
|
4080
|
-
import
|
|
4110
|
+
import React23 from "react";
|
|
4081
4111
|
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
4082
4112
|
var NestedMenuRoot = ({
|
|
4083
4113
|
children,
|
|
@@ -4086,7 +4116,7 @@ var NestedMenuRoot = ({
|
|
|
4086
4116
|
}) => {
|
|
4087
4117
|
const menuContext = useMenu(contextProps);
|
|
4088
4118
|
const { setActiveMenuContext, selectedMenuPath } = useNestedMenuContext();
|
|
4089
|
-
|
|
4119
|
+
React23.useEffect(() => {
|
|
4090
4120
|
setActiveMenuContext(menuContext);
|
|
4091
4121
|
}, [
|
|
4092
4122
|
selectedMenuPath[selectedMenuPath.length - 1],
|
|
@@ -4170,7 +4200,7 @@ var NestedMenu = ({
|
|
|
4170
4200
|
...useSelectReturnProps,
|
|
4171
4201
|
...restDefaults
|
|
4172
4202
|
};
|
|
4173
|
-
|
|
4203
|
+
useEffect4(() => {
|
|
4174
4204
|
if (!useSelectReturnProps.isOpen) {
|
|
4175
4205
|
setHasLoadedOnce(false);
|
|
4176
4206
|
} else {
|
|
@@ -4187,6 +4217,7 @@ var NestedMenu = ({
|
|
|
4187
4217
|
id: nestedMenuId,
|
|
4188
4218
|
onIsOpenChange: onNestedIsOpenChange
|
|
4189
4219
|
};
|
|
4220
|
+
rootMenuContextProps.getMenuProps?.({}, { suppressRefError: true });
|
|
4190
4221
|
const [selectedMenuPath, setSelectedMenuPath] = useState([initialMenuId]);
|
|
4191
4222
|
const [activeMenuContext, setActiveMenuContext] = useState(defaultMenuContext);
|
|
4192
4223
|
const [currentMenuId, setCurrentMenuId] = useState(initialMenuId);
|
|
@@ -4195,7 +4226,7 @@ var NestedMenu = ({
|
|
|
4195
4226
|
setIsAdding(true);
|
|
4196
4227
|
setSelectedMenuPath((currentPath) => [...currentPath, id]);
|
|
4197
4228
|
};
|
|
4198
|
-
|
|
4229
|
+
useEffect4(() => {
|
|
4199
4230
|
if (selectedMenuPath.length > 0) {
|
|
4200
4231
|
const newMenuId = selectedMenuPath[selectedMenuPath.length - 1];
|
|
4201
4232
|
setCurrentMenuId(newMenuId);
|
|
@@ -4383,7 +4414,6 @@ export {
|
|
|
4383
4414
|
MenuLabel,
|
|
4384
4415
|
MenuPopout,
|
|
4385
4416
|
MenuRoot,
|
|
4386
|
-
MenuRootNoPopout,
|
|
4387
4417
|
MenuSearchInput,
|
|
4388
4418
|
MenuSearchTokenInput,
|
|
4389
4419
|
MenuToggleButton,
|