@sproutsocial/seeds-react-menu 1.2.0 → 1.2.1

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.d.mts CHANGED
@@ -122,7 +122,7 @@ interface TypeMenuProviderProps {
122
122
  menuContext: TypeMenuContext;
123
123
  }
124
124
  interface TypeMenuToggleContext extends TypeMenuContext {
125
- ref?: (arg0: React__default.ElementRef<any> | HTMLElement) => void;
125
+ ref?: React__default.RefObject<any> | ((arg0: React__default.ElementRef<any> | HTMLElement) => void);
126
126
  toggle?: () => void;
127
127
  show?: () => void;
128
128
  hide?: () => void;
package/dist/index.d.ts CHANGED
@@ -122,7 +122,7 @@ interface TypeMenuProviderProps {
122
122
  menuContext: TypeMenuContext;
123
123
  }
124
124
  interface TypeMenuToggleContext extends TypeMenuContext {
125
- ref?: (arg0: React__default.ElementRef<any> | HTMLElement) => void;
125
+ ref?: React__default.RefObject<any> | ((arg0: React__default.ElementRef<any> | HTMLElement) => void);
126
126
  toggle?: () => void;
127
127
  show?: () => void;
128
128
  hide?: () => void;
package/dist/index.js CHANGED
@@ -2603,9 +2603,10 @@ var MenuGroup = ({
2603
2603
  MenuGroup.__MENU_PRIMITIVE_TYPE = "MenuGroup";
2604
2604
 
2605
2605
  // src/MenuRoot/MenuRoot.tsx
2606
- var import_react10 = require("react");
2606
+ var import_react10 = __toESM(require("react"));
2607
2607
  var import_styled_components10 = __toESM(require("styled-components"));
2608
2608
  var import_seeds_react_popout = require("@sproutsocial/seeds-react-popout");
2609
+ var import_seeds_react_utilities = require("@sproutsocial/seeds-react-utilities");
2609
2610
 
2610
2611
  // ../../seeds-design-tokens/seeds-motion/dist/seeds-motion-unitless.esm.js
2611
2612
  var MOTION_DURATION_FAST = 0.15;
@@ -2682,7 +2683,7 @@ var MenuRoot = ({
2682
2683
  children,
2683
2684
  menuToggleElement,
2684
2685
  popoutProps: { placement = "bottom", focusLockProps, ...popoutProps } = {},
2685
- width: width2 = "300px",
2686
+ width: width2,
2686
2687
  ...contextProps
2687
2688
  }) => {
2688
2689
  const {
@@ -2691,14 +2692,22 @@ var MenuRoot = ({
2691
2692
  closeMenu,
2692
2693
  inputValue,
2693
2694
  hiddenItemsCount = 0,
2694
- items
2695
+ items,
2696
+ getMenuProps
2695
2697
  } = contextProps;
2696
- const setIsOpen = (0, import_react10.useCallback)(
2697
- (newIsOpen) => {
2698
- newIsOpen ? openMenu?.() : closeMenu?.();
2699
- },
2700
- [openMenu, closeMenu]
2701
- );
2698
+ const toggleElementRef = import_react10.default.useRef(null);
2699
+ const [finalWidth, setFinalWidth] = import_react10.default.useState();
2700
+ const min_width = 200;
2701
+ (0, import_react10.useLayoutEffect)(() => {
2702
+ if (width2) {
2703
+ setFinalWidth(width2);
2704
+ } else if (toggleElementRef.current?.offsetWidth) {
2705
+ const toggleWidth = toggleElementRef.current.offsetWidth;
2706
+ setFinalWidth(Math.max(toggleWidth, min_width));
2707
+ } else {
2708
+ setFinalWidth(min_width);
2709
+ }
2710
+ }, [width2, toggleElementRef.current?.offsetWidth]);
2702
2711
  (0, import_react10.useEffect)(() => {
2703
2712
  if (!inputValue) return;
2704
2713
  if (items && hiddenItemsCount >= items.length && isOpen) {
@@ -2706,6 +2715,7 @@ var MenuRoot = ({
2706
2715
  }
2707
2716
  }, [hiddenItemsCount, items?.length, isOpen, inputValue]);
2708
2717
  const menuContext = useMenu(contextProps);
2718
+ getMenuProps?.({}, { suppressRefError: true });
2709
2719
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2710
2720
  MenuPopout,
2711
2721
  {
@@ -2714,8 +2724,22 @@ var MenuRoot = ({
2714
2724
  openMenu,
2715
2725
  closeMenu,
2716
2726
  content: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuContentProvider, { menuContext, children }),
2727
+ width: finalWidth,
2717
2728
  ...popoutProps,
2718
- children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuToggleProvider, { menuContext: { ...menuContext, ...toggleProps }, children: menuToggleElement })
2729
+ children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2730
+ MenuToggleProvider,
2731
+ {
2732
+ menuContext: {
2733
+ ...menuContext,
2734
+ ...toggleProps,
2735
+ ref: (0, import_seeds_react_utilities.mergeRefs)(
2736
+ toggleProps.ref,
2737
+ toggleElementRef
2738
+ )
2739
+ },
2740
+ children: menuToggleElement
2741
+ }
2742
+ )
2719
2743
  }
2720
2744
  );
2721
2745
  };
@@ -3017,7 +3041,7 @@ var MenuSearchTokenInput = ({
3017
3041
  var import_react17 = __toESM(require("react"));
3018
3042
  var import_seeds_react_icon2 = require("@sproutsocial/seeds-react-icon");
3019
3043
  var import_seeds_react_box3 = require("@sproutsocial/seeds-react-box");
3020
- var import_seeds_react_utilities = require("@sproutsocial/seeds-react-utilities");
3044
+ var import_seeds_react_utilities2 = require("@sproutsocial/seeds-react-utilities");
3021
3045
  var import_jsx_runtime16 = require("react/jsx-runtime");
3022
3046
  var SubmenuItemTrigger = ({
3023
3047
  id,
@@ -3026,7 +3050,7 @@ var SubmenuItemTrigger = ({
3026
3050
  ...rest
3027
3051
  }) => {
3028
3052
  const { getToggleButtonProps, getDropdownProps, ref, ariaProps } = useMenuToggleContext();
3029
- const toggleRef = ref && innerRef ? (0, import_seeds_react_utilities.mergeRefs)([ref, innerRef].filter(Boolean)) : ref || innerRef;
3053
+ const toggleRef = ref && innerRef ? (0, import_seeds_react_utilities2.mergeRefs)([ref, innerRef].filter(Boolean)) : ref || innerRef;
3030
3054
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
3031
3055
  MenuItem,
3032
3056
  {
@@ -4018,7 +4042,7 @@ var useNestedMenuContext = () => {
4018
4042
 
4019
4043
  // src/NestedMenu/NestedMenuContent.tsx
4020
4044
  var import_react29 = require("react");
4021
- var import_seeds_react_utilities2 = require("@sproutsocial/seeds-react-utilities");
4045
+ var import_seeds_react_utilities3 = require("@sproutsocial/seeds-react-utilities");
4022
4046
 
4023
4047
  // src/NestedMenu/NestedMenuItem.tsx
4024
4048
  var import_seeds_react_icon5 = require("@sproutsocial/seeds-react-icon");
@@ -4059,7 +4083,7 @@ var NestedMenuContent = ({
4059
4083
  const { highlightedIndex, items } = useMenuContentContext();
4060
4084
  const { setSelectedMenuId, selectedMenuPath, goBack } = useNestedMenuContext();
4061
4085
  const internalRef = (0, import_react29.useRef)(null);
4062
- const innerRef = (0, import_seeds_react_utilities2.mergeRefs)(internalRef, innerRefProp);
4086
+ const innerRef = (0, import_seeds_react_utilities3.mergeRefs)(internalRef, innerRefProp);
4063
4087
  const contentProps = children ? { children } : { menuItems, MenuItemComponent };
4064
4088
  (0, import_react29.useEffect)(() => {
4065
4089
  internalRef?.current?.focus();
@@ -4239,6 +4263,7 @@ var NestedMenu = ({
4239
4263
  id: nestedMenuId,
4240
4264
  onIsOpenChange: onNestedIsOpenChange
4241
4265
  };
4266
+ rootMenuContextProps.getMenuProps?.({}, { suppressRefError: true });
4242
4267
  const [selectedMenuPath, setSelectedMenuPath] = (0, import_react33.useState)([initialMenuId]);
4243
4268
  const [activeMenuContext, setActiveMenuContext] = (0, import_react33.useState)(defaultMenuContext);
4244
4269
  const [currentMenuId, setCurrentMenuId] = (0, import_react33.useState)(initialMenuId);