@sproutsocial/seeds-react-menu 1.7.6 → 1.7.8

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
@@ -2369,8 +2369,8 @@ var AutocompleteSelect = (props) => {
2369
2369
  };
2370
2370
 
2371
2371
  // src/NestedMenu/NestedMenu.tsx
2372
- var import_react30 = require("react");
2373
- var import_react31 = require("motion/react");
2372
+ var import_react31 = require("react");
2373
+ var import_react32 = require("motion/react");
2374
2374
  var import_downshift9 = require("downshift");
2375
2375
  var import_lodash = __toESM(require("lodash.uniqueid"));
2376
2376
 
@@ -2573,10 +2573,12 @@ var NestedMenuRoot = ({
2573
2573
  };
2574
2574
 
2575
2575
  // src/NestedMenu/NestedMenuPopout.tsx
2576
- var import_react29 = require("motion/react");
2576
+ var import_react29 = require("react");
2577
+ var import_react30 = require("motion/react");
2577
2578
  var import_styled_components12 = __toESM(require("styled-components"));
2579
+ var import_seeds_react_utilities4 = require("@sproutsocial/seeds-react-utilities");
2578
2580
  var import_jsx_runtime32 = require("react/jsx-runtime");
2579
- var StyledDiv = (0, import_styled_components12.default)(import_react29.motion.div)`
2581
+ var StyledDiv = (0, import_styled_components12.default)(import_react30.motion.div)`
2580
2582
  overflow: hidden;
2581
2583
  `;
2582
2584
  var NestedMenuPopout = ({
@@ -2584,6 +2586,8 @@ var NestedMenuPopout = ({
2584
2586
  menuToggleElement,
2585
2587
  width,
2586
2588
  onClose,
2589
+ toggleElementRef,
2590
+ focusLockProps,
2587
2591
  ...popoutProps
2588
2592
  }) => {
2589
2593
  const { activeMenuContext, rootMenuContextProps, resetSelectedMenuPath } = useNestedMenuContext();
@@ -2593,13 +2597,20 @@ var NestedMenuPopout = ({
2593
2597
  lockPlacement: true,
2594
2598
  onClose: () => {
2595
2599
  onClose?.();
2596
- setTimeout(() => resetSelectedMenuPath?.(), 100);
2600
+ setTimeout(() => {
2601
+ toggleElementRef.current?.focus();
2602
+ resetSelectedMenuPath?.();
2603
+ }, 200);
2597
2604
  },
2598
2605
  isOpen: !!rootMenuContextProps.isOpen,
2599
2606
  openMenu: rootMenuContextProps.openMenu,
2600
2607
  closeMenu: rootMenuContextProps.closeMenu,
2601
2608
  width,
2602
2609
  content: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(StyledDiv, { layout: "position", children: typeof content === "function" ? content(props) : content }),
2610
+ focusLockProps: {
2611
+ crossFrame: false,
2612
+ ...focusLockProps
2613
+ },
2603
2614
  ...popoutProps,
2604
2615
  children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2605
2616
  MenuToggleProvider,
@@ -2607,7 +2618,11 @@ var NestedMenuPopout = ({
2607
2618
  menuContext: {
2608
2619
  ...activeMenuContext,
2609
2620
  ...rootMenuContextProps,
2610
- ...toggleProps
2621
+ ...toggleProps,
2622
+ ref: (0, import_seeds_react_utilities4.mergeRefs)(
2623
+ toggleProps.ref,
2624
+ toggleElementRef
2625
+ )
2611
2626
  },
2612
2627
  children: menuToggleElement
2613
2628
  }
@@ -2619,8 +2634,8 @@ var NestedMenuPopout = ({
2619
2634
  // src/NestedMenu/NestedMenu.tsx
2620
2635
  var import_jsx_runtime33 = require("react/jsx-runtime");
2621
2636
  var useId = () => {
2622
- const [id, setId] = (0, import_react30.useState)();
2623
- (0, import_react30.useEffect)(() => {
2637
+ const [id, setId] = (0, import_react31.useState)();
2638
+ (0, import_react31.useEffect)(() => {
2624
2639
  const uId = (0, import_lodash.default)();
2625
2640
  setId(uId);
2626
2641
  }, []);
@@ -2646,7 +2661,7 @@ var NestedMenu = ({
2646
2661
  });
2647
2662
  const uniqueId2 = useId();
2648
2663
  const nestedMenuId = externalNestedMenuId ?? `nested-menu-${uniqueId2}`;
2649
- const [hasLoadedOnce, setHasLoadedOnce] = (0, import_react30.useState)(false);
2664
+ const [hasLoadedOnce, setHasLoadedOnce] = (0, import_react31.useState)(false);
2650
2665
  const useSelectReturnProps = (0, import_downshift9.useSelect)({
2651
2666
  ...defaultDownshiftProps.select,
2652
2667
  id: nestedMenuId,
@@ -2662,7 +2677,7 @@ var NestedMenu = ({
2662
2677
  ...useSelectReturnProps,
2663
2678
  ...restDefaults
2664
2679
  };
2665
- (0, import_react30.useEffect)(() => {
2680
+ (0, import_react31.useEffect)(() => {
2666
2681
  if (!useSelectReturnProps.isOpen) {
2667
2682
  setHasLoadedOnce(false);
2668
2683
  } else {
@@ -2680,16 +2695,17 @@ var NestedMenu = ({
2680
2695
  onIsOpenChange: onNestedIsOpenChange
2681
2696
  };
2682
2697
  rootMenuContextProps.getMenuProps?.({}, { suppressRefError: true });
2683
- const [selectedMenuPath, setSelectedMenuPath] = (0, import_react30.useState)([initialMenuId]);
2684
- const [activeMenuContext, setActiveMenuContext] = (0, import_react30.useState)(defaultMenuContext);
2685
- const [currentMenuId, setCurrentMenuId] = (0, import_react30.useState)(initialMenuId);
2686
- const [isAdding, setIsAdding] = (0, import_react30.useState)(false);
2687
- const popoutUpdateRef = (0, import_react30.useRef)();
2698
+ const [selectedMenuPath, setSelectedMenuPath] = (0, import_react31.useState)([initialMenuId]);
2699
+ const [activeMenuContext, setActiveMenuContext] = (0, import_react31.useState)(defaultMenuContext);
2700
+ const [currentMenuId, setCurrentMenuId] = (0, import_react31.useState)(initialMenuId);
2701
+ const [isAdding, setIsAdding] = (0, import_react31.useState)(false);
2702
+ const popoutUpdateRef = (0, import_react31.useRef)();
2703
+ const toggleElementRef = (0, import_react31.useRef)(null);
2688
2704
  const setSelectedMenuId = (id) => {
2689
2705
  setIsAdding(true);
2690
2706
  setSelectedMenuPath((currentPath) => [...currentPath, id]);
2691
2707
  };
2692
- (0, import_react30.useEffect)(() => {
2708
+ (0, import_react31.useEffect)(() => {
2693
2709
  if (selectedMenuPath.length > 0) {
2694
2710
  const newMenuId = selectedMenuPath[selectedMenuPath.length - 1];
2695
2711
  setCurrentMenuId(newMenuId);
@@ -2783,8 +2799,8 @@ var NestedMenu = ({
2783
2799
  initialIsOpen: true,
2784
2800
  children: (
2785
2801
  // Handles the smooth animating of the content
2786
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react31.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2787
- import_react31.motion.div,
2802
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react32.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2803
+ import_react32.motion.div,
2788
2804
  {
2789
2805
  variants: contentVariants,
2790
2806
  initial: "arrive",
@@ -2814,7 +2830,7 @@ var NestedMenu = ({
2814
2830
  ),
2815
2831
  ...restMenuProps
2816
2832
  };
2817
- (0, import_react30.useEffect)(() => {
2833
+ (0, import_react31.useEffect)(() => {
2818
2834
  popoutUpdateRef.current?.();
2819
2835
  }, [nestedMenuProps.children]);
2820
2836
  return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
@@ -2835,8 +2851,8 @@ var NestedMenu = ({
2835
2851
  NestedMenuPopout,
2836
2852
  {
2837
2853
  content: MenuComponent && // Handles the rerender of the component
2838
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react31.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2839
- import_react31.motion.div,
2854
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react32.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2855
+ import_react32.motion.div,
2840
2856
  {
2841
2857
  variants: menuVariants,
2842
2858
  initial: "arrive",
@@ -2849,6 +2865,7 @@ var NestedMenu = ({
2849
2865
  ) }),
2850
2866
  menuToggleElement,
2851
2867
  width,
2868
+ toggleElementRef,
2852
2869
  scheduleUpdateRef: (callback) => {
2853
2870
  popoutUpdateRef.current = callback;
2854
2871
  externalPopoutUpdateRef?.(callback);