@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/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +33 -0
- package/dist/esm/index.js +19 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/index.js +38 -21
- package/dist/index.js.map +1 -1
- package/package.json +13 -13
- package/src/NestedMenu/NestedMenu.stories.tsx +94 -0
- package/src/NestedMenu/NestedMenu.tsx +2 -0
- package/src/NestedMenu/NestedMenuPopout.tsx +18 -1
- package/src/NestedMenu/__tests__/NestedMenu.test.tsx +83 -0
package/dist/index.js
CHANGED
|
@@ -2369,8 +2369,8 @@ var AutocompleteSelect = (props) => {
|
|
|
2369
2369
|
};
|
|
2370
2370
|
|
|
2371
2371
|
// src/NestedMenu/NestedMenu.tsx
|
|
2372
|
-
var
|
|
2373
|
-
var
|
|
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("
|
|
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)(
|
|
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(() =>
|
|
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,
|
|
2623
|
-
(0,
|
|
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,
|
|
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,
|
|
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,
|
|
2684
|
-
const [activeMenuContext, setActiveMenuContext] = (0,
|
|
2685
|
-
const [currentMenuId, setCurrentMenuId] = (0,
|
|
2686
|
-
const [isAdding, setIsAdding] = (0,
|
|
2687
|
-
const popoutUpdateRef = (0,
|
|
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,
|
|
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)(
|
|
2787
|
-
|
|
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,
|
|
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)(
|
|
2839
|
-
|
|
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);
|