@sproutsocial/seeds-react-menu 1.2.2 → 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/dist/index.js CHANGED
@@ -2707,12 +2707,6 @@ var MenuRoot = ({
2707
2707
  setFinalWidth(min_width);
2708
2708
  }
2709
2709
  }, [width2, toggleElementRef.current?.offsetWidth]);
2710
- (0, import_react10.useEffect)(() => {
2711
- if (!inputValue) return;
2712
- if (items && hiddenItemsCount >= items.length && isOpen) {
2713
- closeMenu?.();
2714
- }
2715
- }, [hiddenItemsCount, items?.length, isOpen, inputValue]);
2716
2710
  const menuContext = useMenu(contextProps);
2717
2711
  getMenuProps?.({}, { suppressRefError: true });
2718
2712
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
@@ -3665,9 +3659,10 @@ var MultiSelectMenu = ({
3665
3659
  };
3666
3660
 
3667
3661
  // src/Autocomplete/Autocomplete.tsx
3668
- var import_react22 = require("react");
3662
+ var import_react23 = require("react");
3669
3663
 
3670
3664
  // src/Autocomplete/SingleAutocomplete.tsx
3665
+ var import_react21 = __toESM(require("react"));
3671
3666
  var import_downshift6 = require("downshift");
3672
3667
  var import_jsx_runtime21 = require("react/jsx-runtime");
3673
3668
  var SingleAutocomplete = ({
@@ -3685,14 +3680,15 @@ var SingleAutocomplete = ({
3685
3680
  menuItems,
3686
3681
  MenuItemComponent
3687
3682
  });
3688
- const { setHiddenItemsMap, defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({ isCombobox: true });
3683
+ const downshiftDefaults = useDownshiftDefaults({ isCombobox: true });
3684
+ const { setHiddenItemsMap, defaultDownshiftProps, hiddenItemsCount } = downshiftDefaults;
3689
3685
  const { updateFilteredItems } = useItemFiltering({
3690
3686
  allMenuItems,
3691
3687
  itemToString: itemToString2,
3692
3688
  getIsItemVisible,
3693
3689
  setHiddenItemsMap
3694
3690
  });
3695
- const { isOpen, ...useComboboxReturnProps } = (0, import_downshift6.useCombobox)({
3691
+ const useComboboxReturnProps = (0, import_downshift6.useCombobox)({
3696
3692
  ...defaultDownshiftProps.combobox,
3697
3693
  items: allMenuItems,
3698
3694
  itemToString: itemToString2,
@@ -3703,6 +3699,13 @@ var SingleAutocomplete = ({
3703
3699
  ),
3704
3700
  ...useComboboxProps
3705
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]);
3706
3709
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3707
3710
  MenuRootComponent,
3708
3711
  {
@@ -3710,11 +3713,9 @@ var SingleAutocomplete = ({
3710
3713
  isListbox: true,
3711
3714
  items: allMenuItems,
3712
3715
  itemToString: itemToString2,
3713
- isOpen,
3714
- setHiddenItemsMap,
3715
3716
  ...useComboboxProps,
3716
3717
  ...useComboboxReturnProps,
3717
- ...restDefaults
3718
+ ...downshiftDefaults
3718
3719
  },
3719
3720
  popoutProps: {
3720
3721
  focusOnContent: false
@@ -3725,7 +3726,7 @@ var SingleAutocomplete = ({
3725
3726
  };
3726
3727
 
3727
3728
  // src/Autocomplete/MultiAutocomplete.tsx
3728
- var import_react21 = __toESM(require("react"));
3729
+ var import_react22 = __toESM(require("react"));
3729
3730
  var import_downshift7 = require("downshift");
3730
3731
  var import_jsx_runtime22 = require("react/jsx-runtime");
3731
3732
  var MultiAutocomplete = ({
@@ -3751,21 +3752,21 @@ var MultiAutocomplete = ({
3751
3752
  menuItems,
3752
3753
  MenuItemComponent
3753
3754
  });
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(
3757
- (item, inputValue) => {
3758
- return (showSelectedItemsInDropdown || !selectedItemIds[item.id]) && getIsItemVisible(item, inputValue);
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);
3759
3760
  },
3760
3761
  [selectedItemIds, showSelectedItemsInDropdown, getIsItemVisible]
3761
3762
  );
3762
- const getShouldFilterMulti = import_react21.default.useCallback(
3763
+ const getShouldFilterMulti = import_react22.default.useCallback(
3763
3764
  (args) => {
3764
3765
  return !showSelectedItemsInDropdown && Object.keys(selectedItemIds).length > 0 || defaultGetShouldFilter(args);
3765
3766
  },
3766
3767
  [selectedItemIds, showSelectedItemsInDropdown, getIsItemVisible]
3767
3768
  );
3768
- const { setHiddenItemsMap, defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
3769
+ const downshiftDefaults = useDownshiftDefaults({
3769
3770
  isCombobox: true,
3770
3771
  isMulti: true,
3771
3772
  // handles the prop name mapping for multi select
@@ -3776,6 +3777,7 @@ var MultiAutocomplete = ({
3776
3777
  ...useComboboxProps
3777
3778
  }
3778
3779
  });
3780
+ const { setHiddenItemsMap, defaultDownshiftProps, hiddenItemsCount } = downshiftDefaults;
3779
3781
  const { updateFilteredItems } = useItemFiltering({
3780
3782
  allMenuItems,
3781
3783
  itemToString: itemToString2,
@@ -3783,7 +3785,7 @@ var MultiAutocomplete = ({
3783
3785
  getShouldFilter: getShouldFilterMulti,
3784
3786
  setHiddenItemsMap
3785
3787
  });
3786
- import_react21.default.useEffect(() => {
3788
+ import_react22.default.useEffect(() => {
3787
3789
  updateFilteredItems({ inputValue: "" });
3788
3790
  }, [selectedItemIds]);
3789
3791
  const useMultipleSelectionReturnProps = (0, import_downshift7.useMultipleSelection)({
@@ -3796,7 +3798,7 @@ var MultiAutocomplete = ({
3796
3798
  onSelectedItemsChange && onSelectedItemsChange({ selectedItems: selectedItems2, ...changes });
3797
3799
  }
3798
3800
  });
3799
- const { isOpen, ...useComboboxReturnProps } = (0, import_downshift7.useCombobox)({
3801
+ const useComboboxReturnProps = (0, import_downshift7.useCombobox)({
3800
3802
  ...defaultDownshiftProps.combobox,
3801
3803
  items: allMenuItems,
3802
3804
  itemToString: itemToString2,
@@ -3806,7 +3808,7 @@ var MultiAutocomplete = ({
3806
3808
  externalStateReducer
3807
3809
  ),
3808
3810
  onStateChange(changes) {
3809
- const { type, selectedItem: newSelectedItem, inputValue } = changes;
3811
+ const { type, selectedItem: newSelectedItem, inputValue: inputValue2 } = changes;
3810
3812
  switch (type) {
3811
3813
  // Add the selected item to the selected items list
3812
3814
  case import_downshift7.useCombobox.stateChangeTypes.InputKeyDownEnter:
@@ -3827,11 +3829,18 @@ var MultiAutocomplete = ({
3827
3829
  default:
3828
3830
  break;
3829
3831
  }
3830
- if (inputValue !== void 0) updateFilteredItems({ inputValue });
3832
+ if (inputValue2 !== void 0) updateFilteredItems({ inputValue: inputValue2 });
3831
3833
  onStateChange && onStateChange(changes);
3832
3834
  },
3833
3835
  ...useComboboxProps
3834
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]);
3835
3844
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3836
3845
  MenuRootComponent,
3837
3846
  {
@@ -3839,18 +3848,16 @@ var MultiAutocomplete = ({
3839
3848
  isListbox: true,
3840
3849
  items: allMenuItems,
3841
3850
  itemToString: itemToString2,
3842
- isOpen,
3843
3851
  initialSelectedItems,
3844
3852
  onStateChange,
3845
3853
  onSelectedItemsChange,
3846
3854
  getA11yMultiStatusMessage,
3847
3855
  onMultiSelectStateChange,
3848
3856
  multiSelectStateReducer,
3849
- setHiddenItemsMap,
3850
3857
  ...useComboboxProps,
3851
3858
  ...useComboboxReturnProps,
3852
3859
  ...useMultipleSelectionReturnProps,
3853
- ...restDefaults
3860
+ ...downshiftDefaults
3854
3861
  },
3855
3862
  popoutProps: {
3856
3863
  focusOnContent: false
@@ -3873,7 +3880,7 @@ var Autocomplete = ({
3873
3880
  };
3874
3881
 
3875
3882
  // src/Autocomplete/AutocompleteInput.tsx
3876
- var import_react23 = require("react");
3883
+ var import_react24 = require("react");
3877
3884
  var import_seeds_react_input2 = require("@sproutsocial/seeds-react-input");
3878
3885
  var import_jsx_runtime24 = require("react/jsx-runtime");
3879
3886
  var AutocompleteInput = ({
@@ -3911,7 +3918,7 @@ var AutocompleteInput = ({
3911
3918
  };
3912
3919
 
3913
3920
  // src/Autocomplete/AutocompleteTokenInput.tsx
3914
- var import_react24 = require("react");
3921
+ var import_react25 = require("react");
3915
3922
  var import_jsx_runtime25 = require("react/jsx-runtime");
3916
3923
  var AutocompleteTokenInput = ({
3917
3924
  onKeyDown,
@@ -3955,7 +3962,7 @@ var AutocompleteTokenInput = ({
3955
3962
 
3956
3963
  // src/Autocomplete/AutocompleteSelect.tsx
3957
3964
  var import_seeds_react_icon4 = __toESM(require("@sproutsocial/seeds-react-icon"));
3958
- var import_react25 = require("react");
3965
+ var import_react26 = require("react");
3959
3966
  var import_styled_components13 = __toESM(require("styled-components"));
3960
3967
  var import_seeds_react_input3 = require("@sproutsocial/seeds-react-input");
3961
3968
  var import_jsx_runtime26 = require("react/jsx-runtime");
@@ -3975,8 +3982,8 @@ var AutocompleteSelect = (props) => {
3975
3982
  };
3976
3983
 
3977
3984
  // src/NestedMenu/NestedMenu.tsx
3978
- var import_react31 = require("react");
3979
- var import_react32 = require("motion/react");
3985
+ var import_react32 = require("react");
3986
+ var import_react33 = require("motion/react");
3980
3987
  var import_downshift9 = require("downshift");
3981
3988
 
3982
3989
  // src/reducers/nestedMenuStateReducer.tsx
@@ -4004,7 +4011,7 @@ var nestedMenuStateReducer = (_state, actionAndChanges) => {
4004
4011
  };
4005
4012
 
4006
4013
  // src/NestedMenu/NestedMenuContext.tsx
4007
- var import_react26 = require("react");
4014
+ var import_react27 = require("react");
4008
4015
  var import_jsx_runtime27 = require("react/jsx-runtime");
4009
4016
  var defaultNestedMenuContext = {
4010
4017
  selectedMenuPath: [],
@@ -4022,7 +4029,7 @@ var defaultNestedMenuContext = {
4022
4029
  },
4023
4030
  animationSpeed: MOTION_DURATION_FAST
4024
4031
  };
4025
- var NestedMenuContext = (0, import_react26.createContext)(
4032
+ var NestedMenuContext = (0, import_react27.createContext)(
4026
4033
  defaultNestedMenuContext
4027
4034
  );
4028
4035
  var NestedMenuProvider = ({
@@ -4032,7 +4039,7 @@ var NestedMenuProvider = ({
4032
4039
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(NestedMenuContext.Provider, { value: nestedMenuProps, children });
4033
4040
  };
4034
4041
  var useNestedMenuContext = () => {
4035
- const nestedMenuContextValue = (0, import_react26.useContext)(NestedMenuContext);
4042
+ const nestedMenuContextValue = (0, import_react27.useContext)(NestedMenuContext);
4036
4043
  if (nestedMenuContextValue === null) {
4037
4044
  throw new Error(
4038
4045
  "useNestedMenuContext must be used within a <NestedMenuContext.Provider />"
@@ -4042,7 +4049,7 @@ var useNestedMenuContext = () => {
4042
4049
  };
4043
4050
 
4044
4051
  // src/NestedMenu/NestedMenuContent.tsx
4045
- var import_react27 = require("react");
4052
+ var import_react28 = require("react");
4046
4053
  var import_seeds_react_utilities3 = require("@sproutsocial/seeds-react-utilities");
4047
4054
 
4048
4055
  // src/NestedMenu/NestedMenuItem.tsx
@@ -4083,10 +4090,10 @@ var NestedMenuContent = ({
4083
4090
  }) => {
4084
4091
  const { highlightedIndex, items } = useMenuContentContext();
4085
4092
  const { setSelectedMenuId, selectedMenuPath, goBack } = useNestedMenuContext();
4086
- const internalRef = (0, import_react27.useRef)(null);
4093
+ const internalRef = (0, import_react28.useRef)(null);
4087
4094
  const innerRef = (0, import_seeds_react_utilities3.mergeRefs)(internalRef, innerRefProp);
4088
4095
  const contentProps = children ? { children } : { menuItems, MenuItemComponent };
4089
- (0, import_react27.useEffect)(() => {
4096
+ (0, import_react28.useEffect)(() => {
4090
4097
  internalRef?.current?.focus();
4091
4098
  }, []);
4092
4099
  const onKeyDown = (e) => {
@@ -4124,7 +4131,7 @@ NestedMenuContent.__MENU_PRIMITIVE_TYPE = "MenuContent";
4124
4131
  // src/NestedMenu/NestedMenuHeader.tsx
4125
4132
  var import_seeds_react_button2 = require("@sproutsocial/seeds-react-button");
4126
4133
  var import_seeds_react_icon6 = require("@sproutsocial/seeds-react-icon");
4127
- var import_react28 = require("motion/react");
4134
+ var import_react29 = require("motion/react");
4128
4135
  var import_jsx_runtime30 = require("react/jsx-runtime");
4129
4136
  var NestedMenuHeader = ({
4130
4137
  backArrowLabel,
@@ -4135,8 +4142,8 @@ var NestedMenuHeader = ({
4135
4142
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
4136
4143
  MenuHeader,
4137
4144
  {
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,
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,
4140
4147
  {
4141
4148
  initial: { opacity: 0 },
4142
4149
  animate: { opacity: 1 },
@@ -4154,7 +4161,7 @@ var NestedMenuHeader = ({
4154
4161
  };
4155
4162
 
4156
4163
  // src/NestedMenu/NestedMenuRoot.tsx
4157
- var import_react29 = __toESM(require("react"));
4164
+ var import_react30 = __toESM(require("react"));
4158
4165
  var import_jsx_runtime31 = require("react/jsx-runtime");
4159
4166
  var NestedMenuRoot = ({
4160
4167
  children,
@@ -4163,7 +4170,7 @@ var NestedMenuRoot = ({
4163
4170
  }) => {
4164
4171
  const menuContext = useMenu(contextProps);
4165
4172
  const { setActiveMenuContext, selectedMenuPath } = useNestedMenuContext();
4166
- import_react29.default.useEffect(() => {
4173
+ import_react30.default.useEffect(() => {
4167
4174
  setActiveMenuContext(menuContext);
4168
4175
  }, [
4169
4176
  selectedMenuPath[selectedMenuPath.length - 1],
@@ -4174,10 +4181,10 @@ var NestedMenuRoot = ({
4174
4181
  };
4175
4182
 
4176
4183
  // src/NestedMenu/NestedMenuPopout.tsx
4177
- var import_react30 = require("motion/react");
4184
+ var import_react31 = require("motion/react");
4178
4185
  var import_styled_components14 = __toESM(require("styled-components"));
4179
4186
  var import_jsx_runtime32 = require("react/jsx-runtime");
4180
- var StyledDiv = (0, import_styled_components14.default)(import_react30.motion.div)`
4187
+ var StyledDiv = (0, import_styled_components14.default)(import_react31.motion.div)`
4181
4188
  overflow: hidden;
4182
4189
  `;
4183
4190
  var NestedMenuPopout = ({
@@ -4229,9 +4236,9 @@ var NestedMenu = ({
4229
4236
  const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
4230
4237
  isCombobox: false
4231
4238
  });
4232
- const uniqueId = (0, import_react31.useId)();
4239
+ const uniqueId = (0, import_react32.useId)();
4233
4240
  const nestedMenuId = externalNestedMenuId ?? `nested-menu-${uniqueId}`;
4234
- const [hasLoadedOnce, setHasLoadedOnce] = (0, import_react31.useState)(false);
4241
+ const [hasLoadedOnce, setHasLoadedOnce] = (0, import_react32.useState)(false);
4235
4242
  const useSelectReturnProps = (0, import_downshift9.useSelect)({
4236
4243
  ...defaultDownshiftProps.select,
4237
4244
  id: nestedMenuId,
@@ -4247,7 +4254,7 @@ var NestedMenu = ({
4247
4254
  ...useSelectReturnProps,
4248
4255
  ...restDefaults
4249
4256
  };
4250
- (0, import_react31.useEffect)(() => {
4257
+ (0, import_react32.useEffect)(() => {
4251
4258
  if (!useSelectReturnProps.isOpen) {
4252
4259
  setHasLoadedOnce(false);
4253
4260
  } else {
@@ -4265,15 +4272,15 @@ var NestedMenu = ({
4265
4272
  onIsOpenChange: onNestedIsOpenChange
4266
4273
  };
4267
4274
  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);
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);
4272
4279
  const setSelectedMenuId = (id) => {
4273
4280
  setIsAdding(true);
4274
4281
  setSelectedMenuPath((currentPath) => [...currentPath, id]);
4275
4282
  };
4276
- (0, import_react31.useEffect)(() => {
4283
+ (0, import_react32.useEffect)(() => {
4277
4284
  if (selectedMenuPath.length > 0) {
4278
4285
  const newMenuId = selectedMenuPath[selectedMenuPath.length - 1];
4279
4286
  setCurrentMenuId(newMenuId);
@@ -4367,8 +4374,8 @@ var NestedMenu = ({
4367
4374
  initialIsOpen: true,
4368
4375
  children: (
4369
4376
  // Handles the smooth animating of the content
4370
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react32.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
4371
- import_react32.motion.div,
4377
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react33.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
4378
+ import_react33.motion.div,
4372
4379
  {
4373
4380
  variants: contentVariants,
4374
4381
  initial: "arrive",
@@ -4416,8 +4423,8 @@ var NestedMenu = ({
4416
4423
  NestedMenuPopout,
4417
4424
  {
4418
4425
  content: MenuComponent && // Handles the rerender of the component
4419
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react32.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4420
- import_react32.motion.div,
4426
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react33.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4427
+ import_react33.motion.div,
4421
4428
  {
4422
4429
  variants: menuVariants,
4423
4430
  initial: "arrive",