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