@sproutsocial/seeds-react-menu 1.2.1 → 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.
@@ -84,14 +84,14 @@ ESM Build start
84
84
  ╵ ~~~~~~~~~
85
85
 
86
86
 
87
- CJS dist/index.js 140.98 KB
88
- CJS dist/index.js.map 362.59 KB
89
- CJS ⚡️ Build success in 539ms
90
- ESM dist/esm/index.js 131.36 KB
91
- ESM dist/esm/index.js.map 361.32 KB
92
- ESM ⚡️ Build success in 545ms
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 15626ms
95
- DTS dist/index.d.ts 32.53 KB
96
- DTS dist/index.d.mts 32.53 KB
97
- Done in 17.69s.
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,11 @@
1
1
  # @sproutsocial/seeds-react-menu
2
2
 
3
+ ## 1.2.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 75c88a8: Improves Menu prop documentation
8
+
3
9
  ## 1.2.1
4
10
 
5
11
  ### Patch Changes
package/dist/esm/index.js CHANGED
@@ -2691,32 +2691,36 @@ var MenuRoot = ({
2691
2691
  }
2692
2692
  );
2693
2693
  };
2694
- var MenuRootNoPopout = ({
2695
- children,
2696
- menuToggleElement,
2697
- ...contextProps
2698
- }) => {
2699
- const menuContext = useMenu(contextProps);
2700
- return /* @__PURE__ */ jsx10(MenuContentProvider, { menuContext, children });
2701
- };
2702
2694
 
2703
2695
  // src/MenuLabel.tsx
2704
2696
  import "react";
2705
2697
  import { Label } from "@sproutsocial/seeds-react-label";
2706
2698
  import { jsx as jsx11 } from "react/jsx-runtime";
2707
- var MenuLabel = ({ children, ...rest }) => {
2699
+ var MenuLabel = ({
2700
+ children,
2701
+ required = false,
2702
+ ...rest
2703
+ }) => {
2708
2704
  const { getLabelProps } = useMenuToggleContext();
2709
- return /* @__PURE__ */ jsx11(Label, { htmlFor: "fallback_menu_label", ...getLabelProps?.(), ...rest, children });
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
+ );
2710
2718
  };
2711
2719
 
2712
2720
  // src/MenuToggleButton/MenuToggleButton.tsx
2713
- import "react";
2714
2721
  import { Button } from "@sproutsocial/seeds-react-button";
2715
2722
  import { jsx as jsx12 } from "react/jsx-runtime";
2716
- var MenuToggleButton = ({
2717
- children,
2718
- ...rest
2719
- }) => {
2723
+ var MenuToggleButton = (props) => {
2720
2724
  const { getToggleButtonProps, isListbox, getDropdownProps, ref, ariaProps } = useMenuToggleContext();
2721
2725
  return /* @__PURE__ */ jsx12(
2722
2726
  Button,
@@ -2729,18 +2733,17 @@ var MenuToggleButton = ({
2729
2733
  ...ariaProps,
2730
2734
  ...isListbox ? {} : { role: "button", "aria-haspopup": "menu" }
2731
2735
  }),
2732
- ...rest,
2733
- children
2736
+ ...props
2734
2737
  }
2735
2738
  );
2736
2739
  };
2737
2740
 
2738
2741
  // src/MenuSearchInput/MenuSearchInput.tsx
2739
- import React11 from "react";
2742
+ import React10 from "react";
2740
2743
  import { Input } from "@sproutsocial/seeds-react-input";
2741
2744
 
2742
2745
  // src/hooks/useItemFiltering.tsx
2743
- import React10 from "react";
2746
+ import React9 from "react";
2744
2747
 
2745
2748
  // src/utils/downshiftDefaults.ts
2746
2749
  var itemToString = (item) => {
@@ -2760,8 +2763,8 @@ var useItemFiltering = ({
2760
2763
  getShouldFilter = defaultGetShouldFilter,
2761
2764
  setHiddenItemsMap: setHiddenItemsMapProp
2762
2765
  }) => {
2763
- const [hiddenItemsMap, setHiddenItemsMap] = React10.useState({});
2764
- const updateFilteredItems = React10.useCallback(
2766
+ const [hiddenItemsMap, setHiddenItemsMap] = React9.useState({});
2767
+ const updateFilteredItems = React9.useCallback(
2765
2768
  ({ inputValue }) => {
2766
2769
  const newHiddenItems = getShouldFilter({ inputValue }) ? allMenuItems.reduce((map, item) => {
2767
2770
  const isItemVisible = getIsItemVisible(item, inputValue);
@@ -2798,11 +2801,11 @@ var MenuSearchInput = ({
2798
2801
  getIsItemVisible,
2799
2802
  setHiddenItemsMap
2800
2803
  });
2801
- React11.useEffect(() => {
2804
+ React10.useEffect(() => {
2802
2805
  updateFilteredItems({ inputValue: restInputProps.value || "" });
2803
2806
  }, [isOpen, restInputProps.value]);
2804
2807
  const toggleButtonProps = getToggleButtonProps?.() || {};
2805
- const handleKeyDown = React11.useCallback(
2808
+ const handleKeyDown = React10.useCallback(
2806
2809
  (e) => {
2807
2810
  if (e.key === " ") return;
2808
2811
  toggleButtonProps.onKeyDown?.(e);
@@ -2829,7 +2832,7 @@ var MenuSearchInput = ({
2829
2832
  };
2830
2833
 
2831
2834
  // src/MenuTokenInput.tsx
2832
- import React12 from "react";
2835
+ import React11 from "react";
2833
2836
  import styled8 from "styled-components";
2834
2837
  import {
2835
2838
  TokenInput
@@ -2864,7 +2867,7 @@ var MenuTokenInput = ({
2864
2867
  removeSelectedItem,
2865
2868
  setActiveIndex,
2866
2869
  selectedItems = []
2867
- } = React12.useContext(MenuContext);
2870
+ } = React11.useContext(MenuContext);
2868
2871
  const removeToken = (tokenId) => {
2869
2872
  const tokenToRemove = selectedItems?.find((item) => item.id === tokenId);
2870
2873
  tokenToRemove && removeSelectedItem?.(tokenToRemove);
@@ -2918,7 +2921,7 @@ var MenuTokenInput = ({
2918
2921
  };
2919
2922
 
2920
2923
  // src/MenuSearchTokenInput/MenuSearchTokenInput.tsx
2921
- import React13 from "react";
2924
+ import React12 from "react";
2922
2925
  import { jsx as jsx15 } from "react/jsx-runtime";
2923
2926
  var MenuSearchTokenInput = ({
2924
2927
  getIsItemVisible,
@@ -2942,10 +2945,10 @@ var MenuSearchTokenInput = ({
2942
2945
  setHiddenItemsMap
2943
2946
  });
2944
2947
  const controlledValue = value || inputPropsValue !== void 0 ? `${inputPropsValue}` : void 0;
2945
- const [internalValue, setInternalValue] = React13.useState(
2948
+ const [internalValue, setInternalValue] = React12.useState(
2946
2949
  controlledValue || ""
2947
2950
  );
2948
- const updateFilteredState = React13.useCallback(
2951
+ const updateFilteredState = React12.useCallback(
2949
2952
  // defaults to an empty string if no value is passed
2950
2953
  (value2 = "") => {
2951
2954
  setInternalValue(value2);
@@ -2953,14 +2956,14 @@ var MenuSearchTokenInput = ({
2953
2956
  },
2954
2957
  [updateFilteredItems]
2955
2958
  );
2956
- React13.useEffect(() => {
2959
+ React12.useEffect(() => {
2957
2960
  updateFilteredState(controlledValue);
2958
2961
  }, [controlledValue]);
2959
- React13.useEffect(() => {
2962
+ React12.useEffect(() => {
2960
2963
  updateFilteredState(controlledValue);
2961
2964
  }, [isOpen]);
2962
2965
  const toggleButtonProps = getToggleButtonProps?.() || {};
2963
- const handleKeyDown = React13.useCallback(
2966
+ const handleKeyDown = React12.useCallback(
2964
2967
  (e) => {
2965
2968
  if (e.key === " ") return;
2966
2969
  toggleButtonProps.onKeyDown?.(e);
@@ -2988,7 +2991,7 @@ var MenuSearchTokenInput = ({
2988
2991
  };
2989
2992
 
2990
2993
  // src/SubmenuItem/SubmenuItem.tsx
2991
- import React14 from "react";
2994
+ import React13 from "react";
2992
2995
  import { Icon as Icon2 } from "@sproutsocial/seeds-react-icon";
2993
2996
  import { Box as Box3 } from "@sproutsocial/seeds-react-box";
2994
2997
  import { mergeRefs as mergeRefs2 } from "@sproutsocial/seeds-react-utilities";
@@ -3050,17 +3053,17 @@ var SubmenuItem = ({
3050
3053
  itemsMap,
3051
3054
  isOpen: parentIsOpen
3052
3055
  } = useMenuContentContext();
3053
- const [submenuIsFocused, setSubmenuIsFocused] = React14.useState(false);
3054
- const [submenuIsOpen, setSubmenuIsOpen] = React14.useState(false);
3055
- const [submenuIsActive, setSubmenuIsActive] = React14.useState(false);
3056
- const submenuItemRef = React14.useRef(null);
3057
- const submenuRef = React14.useRef(null);
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);
3058
3061
  const menuContent = menuItems ? getChildrenFromMenuItems({ menuItems, MenuItemComponent }) : menuChildren;
3059
3062
  const item = itemsMap[id] || {
3060
3063
  index: 0,
3061
3064
  id
3062
3065
  };
3063
- React14.useEffect(() => {
3066
+ React13.useEffect(() => {
3064
3067
  if (highlightedIndex === item.index) {
3065
3068
  !submenuIsOpen && setSubmenuIsOpen(true);
3066
3069
  } else if (submenuIsOpen && highlightedIndex !== -1) {
@@ -3068,7 +3071,7 @@ var SubmenuItem = ({
3068
3071
  setSubmenuIsActive(false);
3069
3072
  }
3070
3073
  }, [highlightedIndex, item.index, submenuIsOpen, setSubmenuIsOpen]);
3071
- const onSubmenuStateChange = React14.useCallback(
3074
+ const onSubmenuStateChange = React13.useCallback(
3072
3075
  (state) => {
3073
3076
  if (state.isOpen !== void 0) {
3074
3077
  setSubmenuIsOpen(state.isOpen);
@@ -3112,7 +3115,7 @@ var SubmenuItem = ({
3112
3115
  onMenuItemClick();
3113
3116
  }
3114
3117
  };
3115
- React14.useEffect(() => {
3118
+ React13.useEffect(() => {
3116
3119
  if (document && document.body) {
3117
3120
  document.body.addEventListener("click", onBodyClick, {
3118
3121
  capture: true
@@ -3216,13 +3219,13 @@ var ListboxToggleButton = ({
3216
3219
  };
3217
3220
 
3218
3221
  // src/ActionMenu/ActionMenu.tsx
3219
- import React16, { useEffect as useEffect2 } from "react";
3222
+ import React15, { useEffect as useEffect2 } from "react";
3220
3223
  import {
3221
3224
  useSelect as useSelect2
3222
3225
  } from "downshift";
3223
3226
 
3224
3227
  // src/hooks/useDownshiftDefaults.tsx
3225
- import React15 from "react";
3228
+ import React14 from "react";
3226
3229
 
3227
3230
  // src/reducers/useComboboxStateReducer.tsx
3228
3231
  import { useCombobox } from "downshift";
@@ -3346,12 +3349,12 @@ var useDownshiftDefaults = ({
3346
3349
  isMulti = false,
3347
3350
  multiSelectProps = {}
3348
3351
  } = {}) => {
3349
- const [hiddenItemsMap, setHiddenItemsMap] = React15.useState({});
3350
- const hiddenItemsCount = React15.useMemo(
3352
+ const [hiddenItemsMap, setHiddenItemsMap] = React14.useState({});
3353
+ const hiddenItemsCount = React14.useMemo(
3351
3354
  () => Object.keys(hiddenItemsMap).filter(Boolean).length,
3352
3355
  [hiddenItemsMap]
3353
3356
  );
3354
- const isItemDisabled = React15.useCallback(
3357
+ const isItemDisabled = React14.useCallback(
3355
3358
  (item) => Boolean(item.disabled || hiddenItemsMap[item.id]),
3356
3359
  [hiddenItemsMap]
3357
3360
  );
@@ -3430,7 +3433,7 @@ var ActionMenu = ({
3430
3433
  const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
3431
3434
  isCombobox: false
3432
3435
  });
3433
- const [currentSelectedItem, setCurrentSelectedItem] = React16.useState(null);
3436
+ const [currentSelectedItem, setCurrentSelectedItem] = React15.useState(null);
3434
3437
  const { isOpen, ...useSelectReturnProps } = useSelect2({
3435
3438
  ...defaultDownshiftProps.select,
3436
3439
  items: allMenuItems,
@@ -3618,7 +3621,6 @@ var MultiSelectMenu = ({
3618
3621
  import "react";
3619
3622
 
3620
3623
  // src/Autocomplete/SingleAutocomplete.tsx
3621
- import "react";
3622
3624
  import { useCombobox as useCombobox2 } from "downshift";
3623
3625
  import { jsx as jsx21 } from "react/jsx-runtime";
3624
3626
  var SingleAutocomplete = ({
@@ -3676,7 +3678,7 @@ var SingleAutocomplete = ({
3676
3678
  };
3677
3679
 
3678
3680
  // src/Autocomplete/MultiAutocomplete.tsx
3679
- import React20 from "react";
3681
+ import React18 from "react";
3680
3682
  import { useCombobox as useCombobox3, useMultipleSelection as useMultipleSelection2 } from "downshift";
3681
3683
  import { jsx as jsx22 } from "react/jsx-runtime";
3682
3684
  var MultiAutocomplete = ({
@@ -3702,15 +3704,15 @@ var MultiAutocomplete = ({
3702
3704
  menuItems,
3703
3705
  MenuItemComponent
3704
3706
  });
3705
- const [selectedItems, setSelectedItems] = React20.useState(initialSelectedItems);
3706
- const [selectedItemIds, setSelectedItemIds] = React20.useState(getSelectedItemIds(initialSelectedItems));
3707
- const getIsItemVisibleMulti = React20.useCallback(
3707
+ const [selectedItems, setSelectedItems] = React18.useState(initialSelectedItems);
3708
+ const [selectedItemIds, setSelectedItemIds] = React18.useState(getSelectedItemIds(initialSelectedItems));
3709
+ const getIsItemVisibleMulti = React18.useCallback(
3708
3710
  (item, inputValue) => {
3709
3711
  return (showSelectedItemsInDropdown || !selectedItemIds[item.id]) && getIsItemVisible(item, inputValue);
3710
3712
  },
3711
3713
  [selectedItemIds, showSelectedItemsInDropdown, getIsItemVisible]
3712
3714
  );
3713
- const getShouldFilterMulti = React20.useCallback(
3715
+ const getShouldFilterMulti = React18.useCallback(
3714
3716
  (args) => {
3715
3717
  return !showSelectedItemsInDropdown && Object.keys(selectedItemIds).length > 0 || defaultGetShouldFilter(args);
3716
3718
  },
@@ -3734,7 +3736,7 @@ var MultiAutocomplete = ({
3734
3736
  getShouldFilter: getShouldFilterMulti,
3735
3737
  setHiddenItemsMap
3736
3738
  });
3737
- React20.useEffect(() => {
3739
+ React18.useEffect(() => {
3738
3740
  updateFilteredItems({ inputValue: "" });
3739
3741
  }, [selectedItemIds]);
3740
3742
  const useMultipleSelectionReturnProps = useMultipleSelection2({
@@ -3814,7 +3816,7 @@ var MultiAutocomplete = ({
3814
3816
  // src/Autocomplete/Autocomplete.tsx
3815
3817
  import { jsx as jsx23 } from "react/jsx-runtime";
3816
3818
  var Autocomplete = ({
3817
- multiSelect,
3819
+ multiSelect = false,
3818
3820
  ...rest
3819
3821
  }) => {
3820
3822
  if (multiSelect) {
@@ -3926,7 +3928,7 @@ var AutocompleteSelect = (props) => {
3926
3928
  };
3927
3929
 
3928
3930
  // src/NestedMenu/NestedMenu.tsx
3929
- import { useId, useEffect as useEffect5, useState } from "react";
3931
+ import { useId, useEffect as useEffect4, useState } from "react";
3930
3932
  import { AnimatePresence as AnimatePresence2, motion as motion3 } from "motion/react";
3931
3933
  import { useSelect as useSelect6 } from "downshift";
3932
3934
 
@@ -3993,7 +3995,7 @@ var useNestedMenuContext = () => {
3993
3995
  };
3994
3996
 
3995
3997
  // src/NestedMenu/NestedMenuContent.tsx
3996
- import { useEffect as useEffect4, useRef } from "react";
3998
+ import { useEffect as useEffect3, useRef } from "react";
3997
3999
  import { mergeRefs as mergeRefs3 } from "@sproutsocial/seeds-react-utilities";
3998
4000
 
3999
4001
  // src/NestedMenu/NestedMenuItem.tsx
@@ -4037,7 +4039,7 @@ var NestedMenuContent = ({
4037
4039
  const internalRef = useRef(null);
4038
4040
  const innerRef = mergeRefs3(internalRef, innerRefProp);
4039
4041
  const contentProps = children ? { children } : { menuItems, MenuItemComponent };
4040
- useEffect4(() => {
4042
+ useEffect3(() => {
4041
4043
  internalRef?.current?.focus();
4042
4044
  }, []);
4043
4045
  const onKeyDown = (e) => {
@@ -4105,7 +4107,7 @@ var NestedMenuHeader = ({
4105
4107
  };
4106
4108
 
4107
4109
  // src/NestedMenu/NestedMenuRoot.tsx
4108
- import React25 from "react";
4110
+ import React23 from "react";
4109
4111
  import { jsx as jsx31 } from "react/jsx-runtime";
4110
4112
  var NestedMenuRoot = ({
4111
4113
  children,
@@ -4114,7 +4116,7 @@ var NestedMenuRoot = ({
4114
4116
  }) => {
4115
4117
  const menuContext = useMenu(contextProps);
4116
4118
  const { setActiveMenuContext, selectedMenuPath } = useNestedMenuContext();
4117
- React25.useEffect(() => {
4119
+ React23.useEffect(() => {
4118
4120
  setActiveMenuContext(menuContext);
4119
4121
  }, [
4120
4122
  selectedMenuPath[selectedMenuPath.length - 1],
@@ -4198,7 +4200,7 @@ var NestedMenu = ({
4198
4200
  ...useSelectReturnProps,
4199
4201
  ...restDefaults
4200
4202
  };
4201
- useEffect5(() => {
4203
+ useEffect4(() => {
4202
4204
  if (!useSelectReturnProps.isOpen) {
4203
4205
  setHasLoadedOnce(false);
4204
4206
  } else {
@@ -4224,7 +4226,7 @@ var NestedMenu = ({
4224
4226
  setIsAdding(true);
4225
4227
  setSelectedMenuPath((currentPath) => [...currentPath, id]);
4226
4228
  };
4227
- useEffect5(() => {
4229
+ useEffect4(() => {
4228
4230
  if (selectedMenuPath.length > 0) {
4229
4231
  const newMenuId = selectedMenuPath[selectedMenuPath.length - 1];
4230
4232
  setCurrentMenuId(newMenuId);
@@ -4412,7 +4414,6 @@ export {
4412
4414
  MenuLabel,
4413
4415
  MenuPopout,
4414
4416
  MenuRoot,
4415
- MenuRootNoPopout,
4416
4417
  MenuSearchInput,
4417
4418
  MenuSearchTokenInput,
4418
4419
  MenuToggleButton,