@sproutsocial/seeds-react-menu 1.0.0 → 1.1.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/.turbo/turbo-build.log +86 -10
- package/CHANGELOG.md +38 -0
- package/dist/esm/index.js +506 -123
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +45 -16
- package/dist/index.d.ts +45 -16
- package/dist/index.js +570 -181
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/src/ActionMenu/ActionMenu.tsx +4 -3
- package/src/ActionMenu/ActionMenuTypes.ts +5 -4
- package/src/ActionMenu/__tests__/ActionMenu.test.tsx +1 -1
- package/src/Autocomplete/Autocomplete.stories.tsx +95 -32
- package/src/Autocomplete/AutocompleteTypes.ts +5 -2
- package/src/Autocomplete/MultiAutocomplete.tsx +3 -2
- package/src/Autocomplete/SingleAutocomplete.tsx +3 -3
- package/src/Autocomplete/index.ts +1 -0
- package/src/ListboxToggleButton.tsx +65 -0
- package/src/Menu.tsx +50 -0
- package/src/MenuContent/MenuContentTypes.ts +1 -2
- package/src/MenuContent/styles.tsx +2 -9
- package/src/MenuGroup/__tests__/MenuGroup.test.tsx +1 -1
- package/src/MenuItem/__tests__/MenuItem.test.tsx +1 -3
- package/src/MenuRoot/MenuRoot.tsx +95 -15
- package/src/MultiSelectMenu/MultiSelectMenu.stories.tsx +0 -1
- package/src/MultiSelectMenu/MultiSelectMenu.tsx +3 -2
- package/src/MultiSelectMenu/MultiSelectMenuTypes.ts +5 -3
- package/src/NestedMenu/NestedMenu.feature +1 -1
- package/src/NestedMenu/NestedMenu.stories.tsx +17 -7
- package/src/NestedMenu/NestedMenu.tsx +217 -43
- package/src/NestedMenu/NestedMenuContent.tsx +1 -1
- package/src/NestedMenu/NestedMenuContext.tsx +16 -0
- package/src/NestedMenu/NestedMenuHeader.tsx +19 -6
- package/src/NestedMenu/NestedMenuPopout.tsx +55 -0
- package/src/NestedMenu/NestedMenuRoot.tsx +27 -0
- package/src/NestedMenu/NestedMenuTypes.ts +3 -2
- package/src/NestedMenu/__tests__/NestedMenu.test.tsx +210 -19
- package/src/SingleSelectMenu/SingleSelectMenu.stories.tsx +0 -1
- package/src/SingleSelectMenu/SingleSelectMenu.tsx +3 -2
- package/src/SingleSelectMenu/SingleSelectMenuTypes.ts +5 -3
- package/src/__tests__/Menu.test.tsx +1 -1
- package/src/index.ts +1 -0
- package/src/storybookUtilities/menu-storybook-components.tsx +11 -31
- package/src/types.ts +5 -1
package/dist/index.js
CHANGED
|
@@ -106,7 +106,10 @@ __export(index_exports, {
|
|
|
106
106
|
ActionMenu: () => ActionMenu,
|
|
107
107
|
Autocomplete: () => Autocomplete,
|
|
108
108
|
AutocompleteInput: () => AutocompleteInput,
|
|
109
|
+
AutocompleteTokenInput: () => AutocompleteTokenInput,
|
|
110
|
+
CustomPopoutContent: () => CustomPopoutContent,
|
|
109
111
|
INPUT_TYPES: () => INPUT_TYPES,
|
|
112
|
+
ListboxToggleButton: () => ListboxToggleButton,
|
|
110
113
|
MenuContent: () => MenuContent,
|
|
111
114
|
MenuContentContext: () => MenuContentContext,
|
|
112
115
|
MenuContentProvider: () => MenuContentProvider,
|
|
@@ -121,7 +124,9 @@ __export(index_exports, {
|
|
|
121
124
|
MenuItemRow: () => MenuItemRow,
|
|
122
125
|
MenuItemText: () => MenuItemText,
|
|
123
126
|
MenuLabel: () => MenuLabel,
|
|
127
|
+
MenuPopout: () => MenuPopout,
|
|
124
128
|
MenuRoot: () => MenuRoot,
|
|
129
|
+
MenuRootNoPopout: () => MenuRootNoPopout,
|
|
125
130
|
MenuSearchInput: () => MenuSearchInput,
|
|
126
131
|
MenuSearchTokenInput: () => MenuSearchTokenInput,
|
|
127
132
|
MenuToggleButton: () => MenuToggleButton,
|
|
@@ -136,6 +141,7 @@ __export(index_exports, {
|
|
|
136
141
|
NestedMenuItem: () => NestedMenuItem,
|
|
137
142
|
NestedMenuProvider: () => NestedMenuProvider,
|
|
138
143
|
SingleSelectMenu: () => SingleSelectMenu,
|
|
144
|
+
StyledListboxToggleButton: () => StyledListboxToggleButton,
|
|
139
145
|
StyledMenuGroup: () => StyledMenuGroup,
|
|
140
146
|
StyledMenuGroupUl: () => StyledMenuGroupUl,
|
|
141
147
|
StyledMenuItem: () => StyledMenuItem,
|
|
@@ -2173,14 +2179,14 @@ var MenuHeader = ({
|
|
|
2173
2179
|
|
|
2174
2180
|
// src/MenuContent/styles.tsx
|
|
2175
2181
|
var import_styled_components5 = __toESM(require("styled-components"));
|
|
2176
|
-
var
|
|
2177
|
-
var StyledMenuContent = (0, import_styled_components5.default)(import_react4.motion.ul)`
|
|
2182
|
+
var StyledMenuContent = import_styled_components5.default.ul`
|
|
2178
2183
|
margin: 0;
|
|
2179
2184
|
padding: 0;
|
|
2185
|
+
outline: none;
|
|
2180
2186
|
`;
|
|
2181
2187
|
|
|
2182
2188
|
// src/hooks/useMenuChildren.tsx
|
|
2183
|
-
var
|
|
2189
|
+
var import_react4 = __toESM(require("react"));
|
|
2184
2190
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
2185
2191
|
var walkAllChildren = (children, callback) => {
|
|
2186
2192
|
const walk = (element, parents2) => {
|
|
@@ -2188,12 +2194,12 @@ var walkAllChildren = (children, callback) => {
|
|
|
2188
2194
|
callback(element, parents2);
|
|
2189
2195
|
const newParents = [...parents2, element];
|
|
2190
2196
|
const children2 = element.props?.children;
|
|
2191
|
-
|
|
2197
|
+
import_react4.default.Children.toArray(children2).forEach((child) => {
|
|
2192
2198
|
walk(child, newParents);
|
|
2193
2199
|
});
|
|
2194
2200
|
};
|
|
2195
2201
|
const parents = [];
|
|
2196
|
-
|
|
2202
|
+
import_react4.default.Children.toArray(children).forEach((child) => {
|
|
2197
2203
|
walk(child, parents);
|
|
2198
2204
|
});
|
|
2199
2205
|
};
|
|
@@ -2328,7 +2334,7 @@ var useMenuChildren = ({
|
|
|
2328
2334
|
menuItems,
|
|
2329
2335
|
MenuItemComponent
|
|
2330
2336
|
}) => {
|
|
2331
|
-
const { allMenuItems, menuItemsMap, children } = (0,
|
|
2337
|
+
const { allMenuItems, menuItemsMap, children } = (0, import_react4.useMemo)(() => {
|
|
2332
2338
|
let children2 = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, {});
|
|
2333
2339
|
const menuItemsMap2 = {};
|
|
2334
2340
|
const allMenuItems2 = [];
|
|
@@ -2351,7 +2357,7 @@ var useMenuChildren = ({
|
|
|
2351
2357
|
};
|
|
2352
2358
|
|
|
2353
2359
|
// src/MenuContent/MenuContent.tsx
|
|
2354
|
-
var
|
|
2360
|
+
var import_react5 = require("react");
|
|
2355
2361
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
2356
2362
|
var MenuContent = ({
|
|
2357
2363
|
id = "menu_content",
|
|
@@ -2368,7 +2374,7 @@ var MenuContent = ({
|
|
|
2368
2374
|
if (!children) {
|
|
2369
2375
|
return null;
|
|
2370
2376
|
}
|
|
2371
|
-
const handleKeyDown = (0,
|
|
2377
|
+
const handleKeyDown = (0, import_react5.useCallback)(
|
|
2372
2378
|
(e) => {
|
|
2373
2379
|
toggleButtonProps?.["onKeyDown"]?.(e);
|
|
2374
2380
|
onKeyDown?.(e);
|
|
@@ -2398,7 +2404,7 @@ var MenuContent = ({
|
|
|
2398
2404
|
MenuContent.__MENU_PRIMITIVE_TYPE = "MenuContent";
|
|
2399
2405
|
|
|
2400
2406
|
// src/MenuFooter/MenuFooter.tsx
|
|
2401
|
-
var
|
|
2407
|
+
var import_react6 = require("react");
|
|
2402
2408
|
|
|
2403
2409
|
// src/MenuFooter/styles.tsx
|
|
2404
2410
|
var import_styled_components6 = __toESM(require("styled-components"));
|
|
@@ -2415,18 +2421,18 @@ var MenuFooter = ({ children, ...rest }) => {
|
|
|
2415
2421
|
};
|
|
2416
2422
|
|
|
2417
2423
|
// src/MenuGroup/MenuGroup.tsx
|
|
2418
|
-
var
|
|
2424
|
+
var import_react9 = require("react");
|
|
2419
2425
|
|
|
2420
2426
|
// src/MenuGroup/styles.tsx
|
|
2421
2427
|
var import_styled_components9 = __toESM(require("styled-components"));
|
|
2422
2428
|
|
|
2423
2429
|
// ../seeds-react-text/dist/esm/index.js
|
|
2424
|
-
var
|
|
2430
|
+
var import_react7 = require("react");
|
|
2425
2431
|
var import_styled_components7 = __toESM(require("styled-components"));
|
|
2426
2432
|
var import_styled_components8 = __toESM(require("styled-components"));
|
|
2427
2433
|
var import_seeds_react_system_props = require("@sproutsocial/seeds-react-system-props");
|
|
2428
2434
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
2429
|
-
var
|
|
2435
|
+
var import_react8 = require("react");
|
|
2430
2436
|
var Container = import_styled_components8.default.span`
|
|
2431
2437
|
margin: 0;
|
|
2432
2438
|
padding-left: 0;
|
|
@@ -2592,15 +2598,81 @@ var MenuGroup = ({
|
|
|
2592
2598
|
MenuGroup.__MENU_PRIMITIVE_TYPE = "MenuGroup";
|
|
2593
2599
|
|
|
2594
2600
|
// src/MenuRoot/MenuRoot.tsx
|
|
2595
|
-
var
|
|
2601
|
+
var import_react10 = require("react");
|
|
2596
2602
|
var import_styled_components10 = __toESM(require("styled-components"));
|
|
2597
2603
|
var import_seeds_react_popout = require("@sproutsocial/seeds-react-popout");
|
|
2604
|
+
|
|
2605
|
+
// ../../seeds-design-tokens/seeds-motion/dist/seeds-motion-unitless.esm.js
|
|
2606
|
+
var MOTION_DURATION_FAST = 0.15;
|
|
2607
|
+
|
|
2608
|
+
// src/MenuRoot/MenuRoot.tsx
|
|
2598
2609
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
2599
2610
|
var CustomPopoutContent = (0, import_styled_components10.default)(import_seeds_react_popout.Popout.Content)`
|
|
2600
2611
|
padding: 0;
|
|
2601
2612
|
margin-left: 0;
|
|
2602
2613
|
margin-right: 0;
|
|
2603
2614
|
`;
|
|
2615
|
+
var menuAnimationConfig = {
|
|
2616
|
+
initial: {
|
|
2617
|
+
scale: 0,
|
|
2618
|
+
opacity: 0,
|
|
2619
|
+
originX: 0,
|
|
2620
|
+
originY: 0
|
|
2621
|
+
},
|
|
2622
|
+
animate: {
|
|
2623
|
+
opacity: 1,
|
|
2624
|
+
scale: 1,
|
|
2625
|
+
originX: 0,
|
|
2626
|
+
originY: 0,
|
|
2627
|
+
transition: {
|
|
2628
|
+
type: "tween",
|
|
2629
|
+
duration: MOTION_DURATION_FAST,
|
|
2630
|
+
ease: "circOut"
|
|
2631
|
+
}
|
|
2632
|
+
},
|
|
2633
|
+
exit: {
|
|
2634
|
+
opacity: 0,
|
|
2635
|
+
scale: 1,
|
|
2636
|
+
transition: {
|
|
2637
|
+
type: "tween",
|
|
2638
|
+
duration: MOTION_DURATION_FAST,
|
|
2639
|
+
ease: "circIn"
|
|
2640
|
+
}
|
|
2641
|
+
}
|
|
2642
|
+
};
|
|
2643
|
+
var MenuPopout = ({
|
|
2644
|
+
content,
|
|
2645
|
+
width: width2 = "300px",
|
|
2646
|
+
isOpen,
|
|
2647
|
+
openMenu,
|
|
2648
|
+
closeMenu,
|
|
2649
|
+
focusLockProps,
|
|
2650
|
+
...popoutProps
|
|
2651
|
+
}) => {
|
|
2652
|
+
const setIsOpen = (0, import_react10.useCallback)(
|
|
2653
|
+
(newIsOpen) => {
|
|
2654
|
+
newIsOpen ? openMenu?.() : closeMenu?.();
|
|
2655
|
+
},
|
|
2656
|
+
[openMenu, closeMenu]
|
|
2657
|
+
);
|
|
2658
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2659
|
+
import_seeds_react_popout.Popout,
|
|
2660
|
+
{
|
|
2661
|
+
isOpen: !!isOpen,
|
|
2662
|
+
setIsOpen,
|
|
2663
|
+
content: (props) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CustomPopoutContent, { width: popoutProps.fullWidth ? "initial" : width2, children: typeof content === "function" ? content(props) : content }),
|
|
2664
|
+
focusLockProps: {
|
|
2665
|
+
// correct jerking motion when scrolling while the Popout is open
|
|
2666
|
+
// returnFocus: false,
|
|
2667
|
+
crossFrame: false,
|
|
2668
|
+
...focusLockProps
|
|
2669
|
+
},
|
|
2670
|
+
disableWrapperAria: true,
|
|
2671
|
+
animationConfig: menuAnimationConfig,
|
|
2672
|
+
...popoutProps
|
|
2673
|
+
}
|
|
2674
|
+
);
|
|
2675
|
+
};
|
|
2604
2676
|
var MenuRoot = ({
|
|
2605
2677
|
children,
|
|
2606
2678
|
menuToggleElement,
|
|
@@ -2616,13 +2688,13 @@ var MenuRoot = ({
|
|
|
2616
2688
|
hiddenItemsCount = 0,
|
|
2617
2689
|
items
|
|
2618
2690
|
} = contextProps;
|
|
2619
|
-
const setIsOpen = (0,
|
|
2691
|
+
const setIsOpen = (0, import_react10.useCallback)(
|
|
2620
2692
|
(newIsOpen) => {
|
|
2621
2693
|
newIsOpen ? openMenu?.() : closeMenu?.();
|
|
2622
2694
|
},
|
|
2623
2695
|
[openMenu, closeMenu]
|
|
2624
2696
|
);
|
|
2625
|
-
(0,
|
|
2697
|
+
(0, import_react10.useEffect)(() => {
|
|
2626
2698
|
if (!inputValue) return;
|
|
2627
2699
|
if (items && hiddenItemsCount >= items.length && isOpen) {
|
|
2628
2700
|
closeMenu?.();
|
|
@@ -2630,28 +2702,29 @@ var MenuRoot = ({
|
|
|
2630
2702
|
}, [hiddenItemsCount, items?.length, isOpen, inputValue]);
|
|
2631
2703
|
const menuContext = useMenu(contextProps);
|
|
2632
2704
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2633
|
-
|
|
2705
|
+
MenuPopout,
|
|
2634
2706
|
{
|
|
2635
|
-
menuPopout: true,
|
|
2636
2707
|
placement,
|
|
2637
2708
|
isOpen: !!isOpen,
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
// correct jerking motion when scrolling while the Popout is open
|
|
2642
|
-
// returnFocus: false,
|
|
2643
|
-
crossFrame: false,
|
|
2644
|
-
...focusLockProps
|
|
2645
|
-
},
|
|
2646
|
-
disableWrapperAria: true,
|
|
2709
|
+
openMenu,
|
|
2710
|
+
closeMenu,
|
|
2711
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuContentProvider, { menuContext, children }),
|
|
2647
2712
|
...popoutProps,
|
|
2648
2713
|
children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuToggleProvider, { menuContext: { ...menuContext, ...toggleProps }, children: menuToggleElement })
|
|
2649
2714
|
}
|
|
2650
2715
|
);
|
|
2651
2716
|
};
|
|
2717
|
+
var MenuRootNoPopout = ({
|
|
2718
|
+
children,
|
|
2719
|
+
menuToggleElement,
|
|
2720
|
+
...contextProps
|
|
2721
|
+
}) => {
|
|
2722
|
+
const menuContext = useMenu(contextProps);
|
|
2723
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuContentProvider, { menuContext, children });
|
|
2724
|
+
};
|
|
2652
2725
|
|
|
2653
2726
|
// src/MenuLabel.tsx
|
|
2654
|
-
var
|
|
2727
|
+
var import_react11 = require("react");
|
|
2655
2728
|
var import_seeds_react_label = require("@sproutsocial/seeds-react-label");
|
|
2656
2729
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
2657
2730
|
var MenuLabel = ({ children, ...rest }) => {
|
|
@@ -2660,7 +2733,7 @@ var MenuLabel = ({ children, ...rest }) => {
|
|
|
2660
2733
|
};
|
|
2661
2734
|
|
|
2662
2735
|
// src/MenuToggleButton/MenuToggleButton.tsx
|
|
2663
|
-
var
|
|
2736
|
+
var import_react12 = require("react");
|
|
2664
2737
|
var import_seeds_react_button = require("@sproutsocial/seeds-react-button");
|
|
2665
2738
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
2666
2739
|
var MenuToggleButton = ({
|
|
@@ -2686,11 +2759,11 @@ var MenuToggleButton = ({
|
|
|
2686
2759
|
};
|
|
2687
2760
|
|
|
2688
2761
|
// src/MenuSearchInput/MenuSearchInput.tsx
|
|
2689
|
-
var
|
|
2762
|
+
var import_react14 = __toESM(require("react"));
|
|
2690
2763
|
var import_seeds_react_input = require("@sproutsocial/seeds-react-input");
|
|
2691
2764
|
|
|
2692
2765
|
// src/hooks/useItemFiltering.tsx
|
|
2693
|
-
var
|
|
2766
|
+
var import_react13 = __toESM(require("react"));
|
|
2694
2767
|
|
|
2695
2768
|
// src/utils/downshiftDefaults.ts
|
|
2696
2769
|
var itemToString = (item) => {
|
|
@@ -2710,8 +2783,8 @@ var useItemFiltering = ({
|
|
|
2710
2783
|
getShouldFilter = defaultGetShouldFilter,
|
|
2711
2784
|
setHiddenItemsMap: setHiddenItemsMapProp
|
|
2712
2785
|
}) => {
|
|
2713
|
-
const [hiddenItemsMap, setHiddenItemsMap] =
|
|
2714
|
-
const updateFilteredItems =
|
|
2786
|
+
const [hiddenItemsMap, setHiddenItemsMap] = import_react13.default.useState({});
|
|
2787
|
+
const updateFilteredItems = import_react13.default.useCallback(
|
|
2715
2788
|
({ inputValue }) => {
|
|
2716
2789
|
const newHiddenItems = getShouldFilter({ inputValue }) ? allMenuItems.reduce((map, item) => {
|
|
2717
2790
|
const isItemVisible = getIsItemVisible(item, inputValue);
|
|
@@ -2748,11 +2821,11 @@ var MenuSearchInput = ({
|
|
|
2748
2821
|
getIsItemVisible,
|
|
2749
2822
|
setHiddenItemsMap
|
|
2750
2823
|
});
|
|
2751
|
-
|
|
2824
|
+
import_react14.default.useEffect(() => {
|
|
2752
2825
|
updateFilteredItems({ inputValue: restInputProps.value || "" });
|
|
2753
2826
|
}, [isOpen, restInputProps.value]);
|
|
2754
2827
|
const toggleButtonProps = getToggleButtonProps?.() || {};
|
|
2755
|
-
const handleKeyDown =
|
|
2828
|
+
const handleKeyDown = import_react14.default.useCallback(
|
|
2756
2829
|
(e) => {
|
|
2757
2830
|
if (e.key === " ") return;
|
|
2758
2831
|
toggleButtonProps.onKeyDown?.(e);
|
|
@@ -2779,7 +2852,7 @@ var MenuSearchInput = ({
|
|
|
2779
2852
|
};
|
|
2780
2853
|
|
|
2781
2854
|
// src/MenuTokenInput.tsx
|
|
2782
|
-
var
|
|
2855
|
+
var import_react15 = __toESM(require("react"));
|
|
2783
2856
|
var import_styled_components11 = __toESM(require("styled-components"));
|
|
2784
2857
|
var import_seeds_react_token_input = require("@sproutsocial/seeds-react-token-input");
|
|
2785
2858
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
@@ -2812,7 +2885,7 @@ var MenuTokenInput = ({
|
|
|
2812
2885
|
removeSelectedItem,
|
|
2813
2886
|
setActiveIndex,
|
|
2814
2887
|
selectedItems = []
|
|
2815
|
-
} =
|
|
2888
|
+
} = import_react15.default.useContext(MenuContext);
|
|
2816
2889
|
const removeToken = (tokenId) => {
|
|
2817
2890
|
const tokenToRemove = selectedItems?.find((item) => item.id === tokenId);
|
|
2818
2891
|
tokenToRemove && removeSelectedItem?.(tokenToRemove);
|
|
@@ -2866,7 +2939,7 @@ var MenuTokenInput = ({
|
|
|
2866
2939
|
};
|
|
2867
2940
|
|
|
2868
2941
|
// src/MenuSearchTokenInput/MenuSearchTokenInput.tsx
|
|
2869
|
-
var
|
|
2942
|
+
var import_react16 = __toESM(require("react"));
|
|
2870
2943
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
2871
2944
|
var MenuSearchTokenInput = ({
|
|
2872
2945
|
getIsItemVisible,
|
|
@@ -2890,10 +2963,10 @@ var MenuSearchTokenInput = ({
|
|
|
2890
2963
|
setHiddenItemsMap
|
|
2891
2964
|
});
|
|
2892
2965
|
const controlledValue = value || inputPropsValue !== void 0 ? `${inputPropsValue}` : void 0;
|
|
2893
|
-
const [internalValue, setInternalValue] =
|
|
2966
|
+
const [internalValue, setInternalValue] = import_react16.default.useState(
|
|
2894
2967
|
controlledValue || ""
|
|
2895
2968
|
);
|
|
2896
|
-
const updateFilteredState =
|
|
2969
|
+
const updateFilteredState = import_react16.default.useCallback(
|
|
2897
2970
|
// defaults to an empty string if no value is passed
|
|
2898
2971
|
(value2 = "") => {
|
|
2899
2972
|
setInternalValue(value2);
|
|
@@ -2901,14 +2974,14 @@ var MenuSearchTokenInput = ({
|
|
|
2901
2974
|
},
|
|
2902
2975
|
[updateFilteredItems]
|
|
2903
2976
|
);
|
|
2904
|
-
|
|
2977
|
+
import_react16.default.useEffect(() => {
|
|
2905
2978
|
updateFilteredState(controlledValue);
|
|
2906
2979
|
}, [controlledValue]);
|
|
2907
|
-
|
|
2980
|
+
import_react16.default.useEffect(() => {
|
|
2908
2981
|
updateFilteredState(controlledValue);
|
|
2909
2982
|
}, [isOpen]);
|
|
2910
2983
|
const toggleButtonProps = getToggleButtonProps?.() || {};
|
|
2911
|
-
const handleKeyDown =
|
|
2984
|
+
const handleKeyDown = import_react16.default.useCallback(
|
|
2912
2985
|
(e) => {
|
|
2913
2986
|
if (e.key === " ") return;
|
|
2914
2987
|
toggleButtonProps.onKeyDown?.(e);
|
|
@@ -2936,7 +3009,7 @@ var MenuSearchTokenInput = ({
|
|
|
2936
3009
|
};
|
|
2937
3010
|
|
|
2938
3011
|
// src/SubmenuItem/SubmenuItem.tsx
|
|
2939
|
-
var
|
|
3012
|
+
var import_react17 = __toESM(require("react"));
|
|
2940
3013
|
var import_seeds_react_icon2 = require("@sproutsocial/seeds-react-icon");
|
|
2941
3014
|
var import_seeds_react_box3 = require("@sproutsocial/seeds-react-box");
|
|
2942
3015
|
var import_seeds_react_utilities = require("@sproutsocial/seeds-react-utilities");
|
|
@@ -2998,17 +3071,17 @@ var SubmenuItem = ({
|
|
|
2998
3071
|
itemsMap,
|
|
2999
3072
|
isOpen: parentIsOpen
|
|
3000
3073
|
} = useMenuContentContext();
|
|
3001
|
-
const [submenuIsFocused, setSubmenuIsFocused] =
|
|
3002
|
-
const [submenuIsOpen, setSubmenuIsOpen] =
|
|
3003
|
-
const [submenuIsActive, setSubmenuIsActive] =
|
|
3004
|
-
const submenuItemRef =
|
|
3005
|
-
const submenuRef =
|
|
3074
|
+
const [submenuIsFocused, setSubmenuIsFocused] = import_react17.default.useState(false);
|
|
3075
|
+
const [submenuIsOpen, setSubmenuIsOpen] = import_react17.default.useState(false);
|
|
3076
|
+
const [submenuIsActive, setSubmenuIsActive] = import_react17.default.useState(false);
|
|
3077
|
+
const submenuItemRef = import_react17.default.useRef(null);
|
|
3078
|
+
const submenuRef = import_react17.default.useRef(null);
|
|
3006
3079
|
const menuContent = menuItems ? getChildrenFromMenuItems({ menuItems, MenuItemComponent }) : menuChildren;
|
|
3007
3080
|
const item = itemsMap[id] || {
|
|
3008
3081
|
index: 0,
|
|
3009
3082
|
id
|
|
3010
3083
|
};
|
|
3011
|
-
|
|
3084
|
+
import_react17.default.useEffect(() => {
|
|
3012
3085
|
if (highlightedIndex === item.index) {
|
|
3013
3086
|
!submenuIsOpen && setSubmenuIsOpen(true);
|
|
3014
3087
|
} else if (submenuIsOpen && highlightedIndex !== -1) {
|
|
@@ -3016,7 +3089,7 @@ var SubmenuItem = ({
|
|
|
3016
3089
|
setSubmenuIsActive(false);
|
|
3017
3090
|
}
|
|
3018
3091
|
}, [highlightedIndex, item.index, submenuIsOpen, setSubmenuIsOpen]);
|
|
3019
|
-
const onSubmenuStateChange =
|
|
3092
|
+
const onSubmenuStateChange = import_react17.default.useCallback(
|
|
3020
3093
|
(state) => {
|
|
3021
3094
|
if (state.isOpen !== void 0) {
|
|
3022
3095
|
setSubmenuIsOpen(state.isOpen);
|
|
@@ -3060,7 +3133,7 @@ var SubmenuItem = ({
|
|
|
3060
3133
|
onMenuItemClick();
|
|
3061
3134
|
}
|
|
3062
3135
|
};
|
|
3063
|
-
|
|
3136
|
+
import_react17.default.useEffect(() => {
|
|
3064
3137
|
if (document && document.body) {
|
|
3065
3138
|
document.body.addEventListener("click", onBodyClick, {
|
|
3066
3139
|
capture: true
|
|
@@ -3126,12 +3199,49 @@ var SubmenuItem = ({
|
|
|
3126
3199
|
};
|
|
3127
3200
|
SubmenuItem.__MENU_PRIMITIVE_TYPE = "MenuItem";
|
|
3128
3201
|
|
|
3202
|
+
// src/ListboxToggleButton.tsx
|
|
3203
|
+
var import_styled_components12 = __toESM(require("styled-components"));
|
|
3204
|
+
var import_seeds_react_icon3 = require("@sproutsocial/seeds-react-icon");
|
|
3205
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
3206
|
+
var StyledListboxToggleButton = (0, import_styled_components12.default)(
|
|
3207
|
+
MenuToggleButton
|
|
3208
|
+
)`
|
|
3209
|
+
${(props) => props.invalid && import_styled_components12.css`
|
|
3210
|
+
border-color: ${(props2) => props2.theme.colors.form.border.error};
|
|
3211
|
+
`}
|
|
3212
|
+
`;
|
|
3213
|
+
var StyledChevron = import_styled_components12.default.div`
|
|
3214
|
+
margin-left: ${({ theme: theme2 }) => theme2.space[300]};
|
|
3215
|
+
${({ $isOpen }) => $isOpen && `
|
|
3216
|
+
transform: rotate(-180deg);
|
|
3217
|
+
`}
|
|
3218
|
+
transition: transform 0.15s;
|
|
3219
|
+
|
|
3220
|
+
${({ invalid }) => invalid && import_styled_components12.css`
|
|
3221
|
+
color: ${(props) => props.theme.colors.icon.error};
|
|
3222
|
+
`}
|
|
3223
|
+
`;
|
|
3224
|
+
var StyledInnerButton = import_styled_components12.default.div`
|
|
3225
|
+
display: flex;
|
|
3226
|
+
justify-content: space-between;
|
|
3227
|
+
`;
|
|
3228
|
+
var ListboxToggleButton = ({
|
|
3229
|
+
children,
|
|
3230
|
+
...buttonProps
|
|
3231
|
+
}) => {
|
|
3232
|
+
const { isOpen } = useMenuToggleContext();
|
|
3233
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(StyledListboxToggleButton, { appearance: "secondary", ...buttonProps, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(StyledInnerButton, { children: [
|
|
3234
|
+
children,
|
|
3235
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(StyledChevron, { $isOpen: isOpen, invalid: buttonProps.invalid, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_seeds_react_icon3.Icon, { name: "chevron-down-outline", fixedWidth: true, "aria-hidden": true }) })
|
|
3236
|
+
] }) });
|
|
3237
|
+
};
|
|
3238
|
+
|
|
3129
3239
|
// src/ActionMenu/ActionMenu.tsx
|
|
3130
|
-
var
|
|
3240
|
+
var import_react19 = __toESM(require("react"));
|
|
3131
3241
|
var import_downshift3 = require("downshift");
|
|
3132
3242
|
|
|
3133
3243
|
// src/hooks/useDownshiftDefaults.tsx
|
|
3134
|
-
var
|
|
3244
|
+
var import_react18 = __toESM(require("react"));
|
|
3135
3245
|
|
|
3136
3246
|
// src/reducers/useComboboxStateReducer.tsx
|
|
3137
3247
|
var import_downshift = require("downshift");
|
|
@@ -3255,12 +3365,12 @@ var useDownshiftDefaults = ({
|
|
|
3255
3365
|
isMulti = false,
|
|
3256
3366
|
multiSelectProps = {}
|
|
3257
3367
|
} = {}) => {
|
|
3258
|
-
const [hiddenItemsMap, setHiddenItemsMap] =
|
|
3259
|
-
const hiddenItemsCount =
|
|
3368
|
+
const [hiddenItemsMap, setHiddenItemsMap] = import_react18.default.useState({});
|
|
3369
|
+
const hiddenItemsCount = import_react18.default.useMemo(
|
|
3260
3370
|
() => Object.keys(hiddenItemsMap).filter(Boolean).length,
|
|
3261
3371
|
[hiddenItemsMap]
|
|
3262
3372
|
);
|
|
3263
|
-
const isItemDisabled =
|
|
3373
|
+
const isItemDisabled = import_react18.default.useCallback(
|
|
3264
3374
|
(item) => Boolean(item.disabled || hiddenItemsMap[item.id]),
|
|
3265
3375
|
[hiddenItemsMap]
|
|
3266
3376
|
);
|
|
@@ -3291,7 +3401,7 @@ var useDownshiftDefaults = ({
|
|
|
3291
3401
|
};
|
|
3292
3402
|
|
|
3293
3403
|
// src/ActionMenu/ActionMenu.tsx
|
|
3294
|
-
var
|
|
3404
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
3295
3405
|
var handleStateChange = (changes, currentSelectedItem) => {
|
|
3296
3406
|
if (!(changes.type === import_downshift3.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter || changes.type === import_downshift3.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton)) {
|
|
3297
3407
|
return;
|
|
@@ -3328,6 +3438,7 @@ var ActionMenu = ({
|
|
|
3328
3438
|
menuItems,
|
|
3329
3439
|
MenuItemComponent,
|
|
3330
3440
|
stateReducer: externalStateReducer,
|
|
3441
|
+
MenuRootComponent = MenuRoot,
|
|
3331
3442
|
...useSelectProps
|
|
3332
3443
|
}) => {
|
|
3333
3444
|
const { allMenuItems, menuItemsMap, children } = useMenuChildren({
|
|
@@ -3338,7 +3449,7 @@ var ActionMenu = ({
|
|
|
3338
3449
|
const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
|
|
3339
3450
|
isCombobox: false
|
|
3340
3451
|
});
|
|
3341
|
-
const [currentSelectedItem, setCurrentSelectedItem] =
|
|
3452
|
+
const [currentSelectedItem, setCurrentSelectedItem] = import_react19.default.useState(null);
|
|
3342
3453
|
const { isOpen, ...useSelectReturnProps } = (0, import_downshift3.useSelect)({
|
|
3343
3454
|
...defaultDownshiftProps.select,
|
|
3344
3455
|
items: allMenuItems,
|
|
@@ -3350,11 +3461,11 @@ var ActionMenu = ({
|
|
|
3350
3461
|
),
|
|
3351
3462
|
...useSelectProps
|
|
3352
3463
|
});
|
|
3353
|
-
(0,
|
|
3464
|
+
(0, import_react19.useEffect)(() => {
|
|
3354
3465
|
setCurrentSelectedItem(useSelectReturnProps.selectedItem);
|
|
3355
3466
|
}, [useSelectReturnProps.selectedItem]);
|
|
3356
|
-
return /* @__PURE__ */ (0,
|
|
3357
|
-
|
|
3467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
3468
|
+
MenuRootComponent,
|
|
3358
3469
|
{
|
|
3359
3470
|
...{
|
|
3360
3471
|
isListbox: false,
|
|
@@ -3372,14 +3483,15 @@ var ActionMenu = ({
|
|
|
3372
3483
|
};
|
|
3373
3484
|
|
|
3374
3485
|
// src/SingleSelectMenu/SingleSelectMenu.tsx
|
|
3375
|
-
var
|
|
3486
|
+
var import_react20 = require("react");
|
|
3376
3487
|
var import_downshift4 = require("downshift");
|
|
3377
|
-
var
|
|
3488
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
3378
3489
|
var SingleSelectMenu = ({
|
|
3379
3490
|
children: childrenProp,
|
|
3380
3491
|
stateReducer: externalStateReducer,
|
|
3381
3492
|
menuItems,
|
|
3382
3493
|
MenuItemComponent,
|
|
3494
|
+
MenuRootComponent = MenuRoot,
|
|
3383
3495
|
...useSelectProps
|
|
3384
3496
|
}) => {
|
|
3385
3497
|
const { allMenuItems, menuItemsMap, children } = useMenuChildren({
|
|
@@ -3400,8 +3512,8 @@ var SingleSelectMenu = ({
|
|
|
3400
3512
|
),
|
|
3401
3513
|
...useSelectProps
|
|
3402
3514
|
});
|
|
3403
|
-
return /* @__PURE__ */ (0,
|
|
3404
|
-
|
|
3515
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3516
|
+
MenuRootComponent,
|
|
3405
3517
|
{
|
|
3406
3518
|
...{
|
|
3407
3519
|
isListbox: true,
|
|
@@ -3419,15 +3531,16 @@ var SingleSelectMenu = ({
|
|
|
3419
3531
|
};
|
|
3420
3532
|
|
|
3421
3533
|
// src/MultiSelectMenu/MultiSelectMenu.tsx
|
|
3422
|
-
var
|
|
3534
|
+
var import_react21 = require("react");
|
|
3423
3535
|
var import_downshift5 = require("downshift");
|
|
3424
|
-
var
|
|
3536
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
3425
3537
|
var MultiSelectMenu = ({
|
|
3426
3538
|
children: childrenProp,
|
|
3427
3539
|
menuItems,
|
|
3428
3540
|
MenuItemComponent,
|
|
3429
3541
|
onSelectedItemChange: externalOnSelectedItemChange,
|
|
3430
3542
|
stateReducer: externalStateReducer,
|
|
3543
|
+
MenuRootComponent = MenuRoot,
|
|
3431
3544
|
getA11yMultiStatusMessage,
|
|
3432
3545
|
onMultiSelectStateChange,
|
|
3433
3546
|
multiSelectStateReducer,
|
|
@@ -3493,8 +3606,8 @@ var MultiSelectMenu = ({
|
|
|
3493
3606
|
},
|
|
3494
3607
|
...useSelectProps
|
|
3495
3608
|
});
|
|
3496
|
-
return /* @__PURE__ */ (0,
|
|
3497
|
-
|
|
3609
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3610
|
+
MenuRootComponent,
|
|
3498
3611
|
{
|
|
3499
3612
|
...{
|
|
3500
3613
|
isListbox: true,
|
|
@@ -3521,16 +3634,17 @@ var MultiSelectMenu = ({
|
|
|
3521
3634
|
};
|
|
3522
3635
|
|
|
3523
3636
|
// src/Autocomplete/Autocomplete.tsx
|
|
3524
|
-
var
|
|
3637
|
+
var import_react24 = require("react");
|
|
3525
3638
|
|
|
3526
3639
|
// src/Autocomplete/SingleAutocomplete.tsx
|
|
3527
|
-
var
|
|
3640
|
+
var import_react22 = require("react");
|
|
3528
3641
|
var import_downshift6 = require("downshift");
|
|
3529
|
-
var
|
|
3642
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
3530
3643
|
var SingleAutocomplete = ({
|
|
3531
3644
|
children: childrenProp,
|
|
3532
3645
|
stateReducer: externalStateReducer,
|
|
3533
3646
|
menuItems,
|
|
3647
|
+
MenuRootComponent = MenuRoot,
|
|
3534
3648
|
MenuItemComponent,
|
|
3535
3649
|
itemToString: itemToString2 = itemToString,
|
|
3536
3650
|
getIsItemVisible,
|
|
@@ -3559,8 +3673,8 @@ var SingleAutocomplete = ({
|
|
|
3559
3673
|
),
|
|
3560
3674
|
...useComboboxProps
|
|
3561
3675
|
});
|
|
3562
|
-
return /* @__PURE__ */ (0,
|
|
3563
|
-
|
|
3676
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3677
|
+
MenuRootComponent,
|
|
3564
3678
|
{
|
|
3565
3679
|
...{
|
|
3566
3680
|
isListbox: true,
|
|
@@ -3581,14 +3695,15 @@ var SingleAutocomplete = ({
|
|
|
3581
3695
|
};
|
|
3582
3696
|
|
|
3583
3697
|
// src/Autocomplete/MultiAutocomplete.tsx
|
|
3584
|
-
var
|
|
3698
|
+
var import_react23 = __toESM(require("react"));
|
|
3585
3699
|
var import_downshift7 = require("downshift");
|
|
3586
|
-
var
|
|
3700
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
3587
3701
|
var MultiAutocomplete = ({
|
|
3588
3702
|
children: childrenProp,
|
|
3589
3703
|
stateReducer: externalStateReducer,
|
|
3590
3704
|
menuItems,
|
|
3591
3705
|
MenuItemComponent,
|
|
3706
|
+
MenuRootComponent = MenuRoot,
|
|
3592
3707
|
itemToString: itemToString2 = itemToString,
|
|
3593
3708
|
itemToKey: itemToKey3 = itemToKey,
|
|
3594
3709
|
getIsItemVisible = getDefaultGetIsItemVisible(itemToString2),
|
|
@@ -3606,15 +3721,15 @@ var MultiAutocomplete = ({
|
|
|
3606
3721
|
menuItems,
|
|
3607
3722
|
MenuItemComponent
|
|
3608
3723
|
});
|
|
3609
|
-
const [selectedItems, setSelectedItems] =
|
|
3610
|
-
const [selectedItemIds, setSelectedItemIds] =
|
|
3611
|
-
const getIsItemVisibleMulti =
|
|
3724
|
+
const [selectedItems, setSelectedItems] = import_react23.default.useState(initialSelectedItems);
|
|
3725
|
+
const [selectedItemIds, setSelectedItemIds] = import_react23.default.useState(getSelectedItemIds(initialSelectedItems));
|
|
3726
|
+
const getIsItemVisibleMulti = import_react23.default.useCallback(
|
|
3612
3727
|
(item, inputValue) => {
|
|
3613
3728
|
return (showSelectedItemsInDropdown || !selectedItemIds[item.id]) && getIsItemVisible(item, inputValue);
|
|
3614
3729
|
},
|
|
3615
3730
|
[selectedItemIds, showSelectedItemsInDropdown, getIsItemVisible]
|
|
3616
3731
|
);
|
|
3617
|
-
const getShouldFilterMulti =
|
|
3732
|
+
const getShouldFilterMulti = import_react23.default.useCallback(
|
|
3618
3733
|
(args) => {
|
|
3619
3734
|
return !showSelectedItemsInDropdown && Object.keys(selectedItemIds).length > 0 || defaultGetShouldFilter(args);
|
|
3620
3735
|
},
|
|
@@ -3638,7 +3753,7 @@ var MultiAutocomplete = ({
|
|
|
3638
3753
|
getShouldFilter: getShouldFilterMulti,
|
|
3639
3754
|
setHiddenItemsMap
|
|
3640
3755
|
});
|
|
3641
|
-
|
|
3756
|
+
import_react23.default.useEffect(() => {
|
|
3642
3757
|
updateFilteredItems({ inputValue: "" });
|
|
3643
3758
|
}, [selectedItemIds]);
|
|
3644
3759
|
const useMultipleSelectionReturnProps = (0, import_downshift7.useMultipleSelection)({
|
|
@@ -3687,8 +3802,8 @@ var MultiAutocomplete = ({
|
|
|
3687
3802
|
},
|
|
3688
3803
|
...useComboboxProps
|
|
3689
3804
|
});
|
|
3690
|
-
return /* @__PURE__ */ (0,
|
|
3691
|
-
|
|
3805
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
3806
|
+
MenuRootComponent,
|
|
3692
3807
|
{
|
|
3693
3808
|
...{
|
|
3694
3809
|
isListbox: true,
|
|
@@ -3716,21 +3831,21 @@ var MultiAutocomplete = ({
|
|
|
3716
3831
|
};
|
|
3717
3832
|
|
|
3718
3833
|
// src/Autocomplete/Autocomplete.tsx
|
|
3719
|
-
var
|
|
3834
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
3720
3835
|
var Autocomplete = ({
|
|
3721
3836
|
multiSelect,
|
|
3722
3837
|
...rest
|
|
3723
3838
|
}) => {
|
|
3724
3839
|
if (multiSelect) {
|
|
3725
|
-
return /* @__PURE__ */ (0,
|
|
3840
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(MultiAutocomplete, { ...rest });
|
|
3726
3841
|
}
|
|
3727
|
-
return /* @__PURE__ */ (0,
|
|
3842
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SingleAutocomplete, { ...rest });
|
|
3728
3843
|
};
|
|
3729
3844
|
|
|
3730
3845
|
// src/Autocomplete/AutocompleteInput.tsx
|
|
3731
|
-
var
|
|
3846
|
+
var import_react25 = require("react");
|
|
3732
3847
|
var import_seeds_react_input2 = require("@sproutsocial/seeds-react-input");
|
|
3733
|
-
var
|
|
3848
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
3734
3849
|
var AutocompleteInput = ({
|
|
3735
3850
|
onKeyDown,
|
|
3736
3851
|
onChange,
|
|
@@ -3741,7 +3856,7 @@ var AutocompleteInput = ({
|
|
|
3741
3856
|
...rest
|
|
3742
3857
|
}) => {
|
|
3743
3858
|
const { getInputComponentProps, inputValue, ref, ariaProps } = useMenuToggleContext();
|
|
3744
|
-
return /* @__PURE__ */ (0,
|
|
3859
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
3745
3860
|
import_seeds_react_input2.Input,
|
|
3746
3861
|
{
|
|
3747
3862
|
id: "autocomplete_input",
|
|
@@ -3765,59 +3880,54 @@ var AutocompleteInput = ({
|
|
|
3765
3880
|
);
|
|
3766
3881
|
};
|
|
3767
3882
|
|
|
3768
|
-
// src/
|
|
3769
|
-
var
|
|
3770
|
-
|
|
3771
|
-
// src/NestedMenu/NestedMenuContext.tsx
|
|
3772
|
-
var import_react27 = require("react");
|
|
3773
|
-
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
3774
|
-
var defaultNestedMenuContext = {
|
|
3775
|
-
selectedMenuPath: [],
|
|
3776
|
-
setSelectedMenuId: () => {
|
|
3777
|
-
},
|
|
3778
|
-
setSelectedMenuPath: () => {
|
|
3779
|
-
},
|
|
3780
|
-
goBack: () => {
|
|
3781
|
-
}
|
|
3782
|
-
};
|
|
3783
|
-
var NestedMenuContext = (0, import_react27.createContext)(
|
|
3784
|
-
defaultNestedMenuContext
|
|
3785
|
-
);
|
|
3786
|
-
var NestedMenuProvider = ({
|
|
3787
|
-
children,
|
|
3788
|
-
...nestedMenuProps
|
|
3789
|
-
}) => {
|
|
3790
|
-
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(NestedMenuContext.Provider, { value: nestedMenuProps, children });
|
|
3791
|
-
};
|
|
3792
|
-
var useNestedMenuContext = () => {
|
|
3793
|
-
const nestedMenuContextValue = (0, import_react27.useContext)(NestedMenuContext);
|
|
3794
|
-
if (nestedMenuContextValue === null) {
|
|
3795
|
-
throw new Error(
|
|
3796
|
-
"useNestedMenuContext must be used within a <NestedMenuContext.Provider />"
|
|
3797
|
-
);
|
|
3798
|
-
}
|
|
3799
|
-
return nestedMenuContextValue;
|
|
3800
|
-
};
|
|
3801
|
-
|
|
3802
|
-
// src/NestedMenu/NestedMenuHeader.tsx
|
|
3803
|
-
var import_seeds_react_button2 = require("@sproutsocial/seeds-react-button");
|
|
3804
|
-
var import_seeds_react_icon3 = require("@sproutsocial/seeds-react-icon");
|
|
3883
|
+
// src/Autocomplete/AutocompleteTokenInput.tsx
|
|
3884
|
+
var import_react26 = require("react");
|
|
3805
3885
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3806
|
-
var
|
|
3807
|
-
|
|
3808
|
-
|
|
3886
|
+
var AutocompleteTokenInput = ({
|
|
3887
|
+
onKeyDown,
|
|
3888
|
+
onChange,
|
|
3889
|
+
onInput,
|
|
3890
|
+
onBlur,
|
|
3891
|
+
onClick,
|
|
3892
|
+
inputProps,
|
|
3893
|
+
getTokenProps,
|
|
3894
|
+
...rest
|
|
3809
3895
|
}) => {
|
|
3810
|
-
const {
|
|
3811
|
-
|
|
3896
|
+
const {
|
|
3897
|
+
getInputComponentProps,
|
|
3898
|
+
getDropdownProps,
|
|
3899
|
+
inputValue,
|
|
3900
|
+
isOpen,
|
|
3901
|
+
ref,
|
|
3902
|
+
ariaProps
|
|
3903
|
+
} = useMenuToggleContext();
|
|
3812
3904
|
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
3813
|
-
|
|
3905
|
+
MenuTokenInput,
|
|
3814
3906
|
{
|
|
3815
|
-
|
|
3816
|
-
|
|
3907
|
+
id: "autocomplete_input",
|
|
3908
|
+
name: "autocomplete_input",
|
|
3909
|
+
...getInputComponentProps({
|
|
3910
|
+
...getDropdownProps?.({ ref, preventKeyAction: isOpen }) || { ref },
|
|
3911
|
+
onKeyDown,
|
|
3912
|
+
onChange,
|
|
3913
|
+
onInput,
|
|
3914
|
+
onBlur,
|
|
3915
|
+
onClick,
|
|
3916
|
+
value: inputValue,
|
|
3917
|
+
refKey: "innerRef",
|
|
3918
|
+
inputProps,
|
|
3919
|
+
...ariaProps
|
|
3920
|
+
}),
|
|
3921
|
+
...rest
|
|
3817
3922
|
}
|
|
3818
3923
|
);
|
|
3819
3924
|
};
|
|
3820
3925
|
|
|
3926
|
+
// src/NestedMenu/NestedMenu.tsx
|
|
3927
|
+
var import_react32 = require("react");
|
|
3928
|
+
var import_react33 = require("motion/react");
|
|
3929
|
+
var import_downshift9 = require("downshift");
|
|
3930
|
+
|
|
3821
3931
|
// src/reducers/nestedMenuStateReducer.tsx
|
|
3822
3932
|
var import_downshift8 = require("downshift");
|
|
3823
3933
|
var nestedMenuStateReducer = (_state, actionAndChanges) => {
|
|
@@ -3842,14 +3952,52 @@ var nestedMenuStateReducer = (_state, actionAndChanges) => {
|
|
|
3842
3952
|
}
|
|
3843
3953
|
};
|
|
3844
3954
|
|
|
3955
|
+
// src/NestedMenu/NestedMenuContext.tsx
|
|
3956
|
+
var import_react27 = require("react");
|
|
3957
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
3958
|
+
var defaultNestedMenuContext = {
|
|
3959
|
+
selectedMenuPath: [],
|
|
3960
|
+
setSelectedMenuId: () => {
|
|
3961
|
+
},
|
|
3962
|
+
setSelectedMenuPath: () => {
|
|
3963
|
+
},
|
|
3964
|
+
resetSelectedMenuPath: () => {
|
|
3965
|
+
},
|
|
3966
|
+
goBack: () => {
|
|
3967
|
+
},
|
|
3968
|
+
rootMenuContextProps: {},
|
|
3969
|
+
activeMenuContext: defaultMenuContext,
|
|
3970
|
+
setActiveMenuContext: () => {
|
|
3971
|
+
},
|
|
3972
|
+
animationSpeed: MOTION_DURATION_FAST
|
|
3973
|
+
};
|
|
3974
|
+
var NestedMenuContext = (0, import_react27.createContext)(
|
|
3975
|
+
defaultNestedMenuContext
|
|
3976
|
+
);
|
|
3977
|
+
var NestedMenuProvider = ({
|
|
3978
|
+
children,
|
|
3979
|
+
...nestedMenuProps
|
|
3980
|
+
}) => {
|
|
3981
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(NestedMenuContext.Provider, { value: nestedMenuProps, children });
|
|
3982
|
+
};
|
|
3983
|
+
var useNestedMenuContext = () => {
|
|
3984
|
+
const nestedMenuContextValue = (0, import_react27.useContext)(NestedMenuContext);
|
|
3985
|
+
if (nestedMenuContextValue === null) {
|
|
3986
|
+
throw new Error(
|
|
3987
|
+
"useNestedMenuContext must be used within a <NestedMenuContext.Provider />"
|
|
3988
|
+
);
|
|
3989
|
+
}
|
|
3990
|
+
return nestedMenuContextValue;
|
|
3991
|
+
};
|
|
3992
|
+
|
|
3845
3993
|
// src/NestedMenu/NestedMenuContent.tsx
|
|
3846
3994
|
var import_react28 = require("react");
|
|
3847
|
-
var
|
|
3995
|
+
var import_seeds_react_utilities2 = require("@sproutsocial/seeds-react-utilities");
|
|
3848
3996
|
|
|
3849
3997
|
// src/NestedMenu/NestedMenuItem.tsx
|
|
3850
3998
|
var import_seeds_react_icon4 = require("@sproutsocial/seeds-react-icon");
|
|
3851
3999
|
var import_seeds_react_box4 = require("@sproutsocial/seeds-react-box");
|
|
3852
|
-
var
|
|
4000
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
3853
4001
|
var NestedMenuItem = ({
|
|
3854
4002
|
children,
|
|
3855
4003
|
childMenuId,
|
|
@@ -3863,15 +4011,15 @@ var NestedMenuItem = ({
|
|
|
3863
4011
|
setSelectedMenuId?.(childMenuId);
|
|
3864
4012
|
}
|
|
3865
4013
|
} : {};
|
|
3866
|
-
return /* @__PURE__ */ (0,
|
|
4014
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(MenuItem, { ...onClickProps, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_seeds_react_box4.Box, { display: "flex", justifyContent: "space-between", children: [
|
|
3867
4015
|
children,
|
|
3868
|
-
childMenuId && /* @__PURE__ */ (0,
|
|
4016
|
+
childMenuId && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(MenuItemActionRight, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_seeds_react_icon4.Icon, { name: "arrow-right-outline" }) })
|
|
3869
4017
|
] }) });
|
|
3870
4018
|
};
|
|
3871
4019
|
NestedMenuItem.__MENU_PRIMITIVE_TYPE = "MenuItem";
|
|
3872
4020
|
|
|
3873
4021
|
// src/NestedMenu/NestedMenuContent.tsx
|
|
3874
|
-
var
|
|
4022
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
3875
4023
|
var NestedMenuContent = ({
|
|
3876
4024
|
innerRef: innerRefProp = null,
|
|
3877
4025
|
onKeyDown: onKeyDownProp,
|
|
@@ -3883,7 +4031,7 @@ var NestedMenuContent = ({
|
|
|
3883
4031
|
const { highlightedIndex, items } = useMenuContentContext();
|
|
3884
4032
|
const { setSelectedMenuId, selectedMenuPath, goBack } = useNestedMenuContext();
|
|
3885
4033
|
const internalRef = (0, import_react28.useRef)(null);
|
|
3886
|
-
const innerRef = (0,
|
|
4034
|
+
const innerRef = (0, import_seeds_react_utilities2.mergeRefs)(internalRef, innerRefProp);
|
|
3887
4035
|
const contentProps = children ? { children } : { menuItems, MenuItemComponent };
|
|
3888
4036
|
(0, import_react28.useEffect)(() => {
|
|
3889
4037
|
internalRef?.current?.focus();
|
|
@@ -3908,7 +4056,7 @@ var NestedMenuContent = ({
|
|
|
3908
4056
|
break;
|
|
3909
4057
|
}
|
|
3910
4058
|
};
|
|
3911
|
-
return /* @__PURE__ */ (0,
|
|
4059
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3912
4060
|
MenuContent,
|
|
3913
4061
|
{
|
|
3914
4062
|
onKeyDown,
|
|
@@ -3920,82 +4068,317 @@ var NestedMenuContent = ({
|
|
|
3920
4068
|
};
|
|
3921
4069
|
NestedMenuContent.__MENU_PRIMITIVE_TYPE = "MenuContent";
|
|
3922
4070
|
|
|
4071
|
+
// src/NestedMenu/NestedMenuHeader.tsx
|
|
4072
|
+
var import_seeds_react_button2 = require("@sproutsocial/seeds-react-button");
|
|
4073
|
+
var import_seeds_react_icon5 = require("@sproutsocial/seeds-react-icon");
|
|
4074
|
+
var import_react29 = require("motion/react");
|
|
4075
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
4076
|
+
var NestedMenuHeader = ({
|
|
4077
|
+
backArrowLabel,
|
|
4078
|
+
...props
|
|
4079
|
+
}) => {
|
|
4080
|
+
const { goBack, selectedMenuPath, animationSpeed } = useNestedMenuContext();
|
|
4081
|
+
const showBackArrow = selectedMenuPath.length > 1;
|
|
4082
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
4083
|
+
MenuHeader,
|
|
4084
|
+
{
|
|
4085
|
+
leftAction: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react29.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
4086
|
+
import_react29.motion.div,
|
|
4087
|
+
{
|
|
4088
|
+
initial: { opacity: 0 },
|
|
4089
|
+
animate: { opacity: 1 },
|
|
4090
|
+
exit: {
|
|
4091
|
+
opacity: 0,
|
|
4092
|
+
transition: { duration: animationSpeed }
|
|
4093
|
+
},
|
|
4094
|
+
children: showBackArrow ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_seeds_react_button2.Button, { onClick: goBack, ariaLabel: backArrowLabel, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_seeds_react_icon5.Icon, { name: "arrow-left" }) }) : void 0
|
|
4095
|
+
},
|
|
4096
|
+
`${selectedMenuPath}-header--button`
|
|
4097
|
+
) }),
|
|
4098
|
+
...props
|
|
4099
|
+
}
|
|
4100
|
+
);
|
|
4101
|
+
};
|
|
4102
|
+
|
|
4103
|
+
// src/NestedMenu/NestedMenuRoot.tsx
|
|
4104
|
+
var import_react30 = __toESM(require("react"));
|
|
4105
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
4106
|
+
var NestedMenuRoot = ({
|
|
4107
|
+
children,
|
|
4108
|
+
menuToggleElement,
|
|
4109
|
+
...contextProps
|
|
4110
|
+
}) => {
|
|
4111
|
+
const menuContext = useMenu(contextProps);
|
|
4112
|
+
const { setActiveMenuContext, selectedMenuPath } = useNestedMenuContext();
|
|
4113
|
+
import_react30.default.useEffect(() => {
|
|
4114
|
+
setActiveMenuContext(menuContext);
|
|
4115
|
+
}, [
|
|
4116
|
+
selectedMenuPath[selectedMenuPath.length - 1],
|
|
4117
|
+
menuContext.selectedItem,
|
|
4118
|
+
menuContext.selectedItems?.length
|
|
4119
|
+
]);
|
|
4120
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(MenuContentProvider, { menuContext, children });
|
|
4121
|
+
};
|
|
4122
|
+
|
|
4123
|
+
// src/NestedMenu/NestedMenuPopout.tsx
|
|
4124
|
+
var import_react31 = require("motion/react");
|
|
4125
|
+
var import_styled_components13 = __toESM(require("styled-components"));
|
|
4126
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
4127
|
+
var StyledDiv = (0, import_styled_components13.default)(import_react31.motion.div)`
|
|
4128
|
+
overflow: hidden;
|
|
4129
|
+
`;
|
|
4130
|
+
var NestedMenuPopout = ({
|
|
4131
|
+
content,
|
|
4132
|
+
menuToggleElement,
|
|
4133
|
+
width: width2,
|
|
4134
|
+
...popoutProps
|
|
4135
|
+
}) => {
|
|
4136
|
+
const { activeMenuContext, rootMenuContextProps, resetSelectedMenuPath } = useNestedMenuContext();
|
|
4137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4138
|
+
MenuPopout,
|
|
4139
|
+
{
|
|
4140
|
+
...popoutProps,
|
|
4141
|
+
onClose: () => setTimeout(() => resetSelectedMenuPath?.(), 100),
|
|
4142
|
+
isOpen: !!rootMenuContextProps.isOpen,
|
|
4143
|
+
openMenu: rootMenuContextProps.openMenu,
|
|
4144
|
+
closeMenu: rootMenuContextProps.closeMenu,
|
|
4145
|
+
width: width2,
|
|
4146
|
+
content: (props) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(StyledDiv, { layout: "position", children: typeof content === "function" ? content(props) : content }),
|
|
4147
|
+
children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4148
|
+
MenuToggleProvider,
|
|
4149
|
+
{
|
|
4150
|
+
menuContext: {
|
|
4151
|
+
...activeMenuContext,
|
|
4152
|
+
...rootMenuContextProps,
|
|
4153
|
+
...toggleProps
|
|
4154
|
+
},
|
|
4155
|
+
children: menuToggleElement
|
|
4156
|
+
}
|
|
4157
|
+
)
|
|
4158
|
+
}
|
|
4159
|
+
);
|
|
4160
|
+
};
|
|
4161
|
+
|
|
3923
4162
|
// src/NestedMenu/NestedMenu.tsx
|
|
3924
|
-
var
|
|
4163
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
3925
4164
|
var NestedMenu = ({
|
|
3926
4165
|
initialMenuId,
|
|
3927
4166
|
menus,
|
|
3928
4167
|
onBackButtonClick,
|
|
3929
4168
|
backArrowLabel,
|
|
3930
|
-
menuToggleElement
|
|
4169
|
+
menuToggleElement,
|
|
4170
|
+
popoutProps = {},
|
|
4171
|
+
width: width2 = "300px",
|
|
4172
|
+
stateReducer: rootExternalStateReducer,
|
|
4173
|
+
id: externalNestedMenuId,
|
|
4174
|
+
...useSelectProps
|
|
3931
4175
|
}) => {
|
|
3932
|
-
const
|
|
3933
|
-
|
|
4176
|
+
const { defaultDownshiftProps, ...restDefaults } = useDownshiftDefaults({
|
|
4177
|
+
isCombobox: false
|
|
4178
|
+
});
|
|
4179
|
+
const uniqueId = (0, import_react32.useId)();
|
|
4180
|
+
const nestedMenuId = externalNestedMenuId ?? `nested-menu-${uniqueId}`;
|
|
4181
|
+
const [hasLoadedOnce, setHasLoadedOnce] = (0, import_react32.useState)(false);
|
|
4182
|
+
const useSelectReturnProps = (0, import_downshift9.useSelect)({
|
|
4183
|
+
...defaultDownshiftProps.select,
|
|
4184
|
+
id: nestedMenuId,
|
|
4185
|
+
items: [],
|
|
4186
|
+
stateReducer: reduceReducers(
|
|
4187
|
+
defaultDownshiftProps.select.stateReducer,
|
|
4188
|
+
rootExternalStateReducer
|
|
4189
|
+
),
|
|
4190
|
+
...useSelectProps
|
|
4191
|
+
});
|
|
4192
|
+
const rootMenuContextProps = {
|
|
4193
|
+
...useSelectProps,
|
|
4194
|
+
...useSelectReturnProps,
|
|
4195
|
+
...restDefaults
|
|
4196
|
+
};
|
|
4197
|
+
(0, import_react32.useEffect)(() => {
|
|
4198
|
+
if (!useSelectReturnProps.isOpen) {
|
|
4199
|
+
setHasLoadedOnce(false);
|
|
4200
|
+
} else {
|
|
4201
|
+
!hasLoadedOnce && setHasLoadedOnce(true);
|
|
4202
|
+
}
|
|
4203
|
+
}, [useSelectReturnProps.isOpen]);
|
|
4204
|
+
const onNestedIsOpenChange = ({
|
|
4205
|
+
isOpen: newIsOpen
|
|
4206
|
+
}) => {
|
|
4207
|
+
!newIsOpen && useSelectReturnProps.closeMenu?.();
|
|
4208
|
+
};
|
|
4209
|
+
const nestedMenuPropsFromRoot = {
|
|
4210
|
+
// The selected menu needs to receive this id so that the toggle element can be properly associated with it.
|
|
4211
|
+
id: nestedMenuId,
|
|
4212
|
+
onIsOpenChange: onNestedIsOpenChange
|
|
4213
|
+
};
|
|
4214
|
+
const [selectedMenuPath, setSelectedMenuPath] = (0, import_react32.useState)([initialMenuId]);
|
|
4215
|
+
const [activeMenuContext, setActiveMenuContext] = (0, import_react32.useState)(defaultMenuContext);
|
|
4216
|
+
const [currentMenuId, setCurrentMenuId] = (0, import_react32.useState)(initialMenuId);
|
|
4217
|
+
const [isAdding, setIsAdding] = (0, import_react32.useState)(false);
|
|
3934
4218
|
const setSelectedMenuId = (id) => {
|
|
4219
|
+
setIsAdding(true);
|
|
3935
4220
|
setSelectedMenuPath((currentPath) => [...currentPath, id]);
|
|
3936
4221
|
};
|
|
4222
|
+
(0, import_react32.useEffect)(() => {
|
|
4223
|
+
if (selectedMenuPath.length > 0) {
|
|
4224
|
+
const newMenuId = selectedMenuPath[selectedMenuPath.length - 1];
|
|
4225
|
+
setCurrentMenuId(newMenuId);
|
|
4226
|
+
}
|
|
4227
|
+
}, [selectedMenuPath.join("-")]);
|
|
4228
|
+
const resetSelectedMenuPath = () => {
|
|
4229
|
+
setSelectedMenuPath([initialMenuId]);
|
|
4230
|
+
setCurrentMenuId(initialMenuId);
|
|
4231
|
+
};
|
|
3937
4232
|
const goBack = () => {
|
|
4233
|
+
setIsAdding(false);
|
|
3938
4234
|
setSelectedMenuPath((currentPath) => currentPath.slice(0, -1));
|
|
3939
|
-
onBackButtonClick?.(
|
|
4235
|
+
onBackButtonClick?.(currentMenuId);
|
|
3940
4236
|
};
|
|
3941
4237
|
const {
|
|
3942
4238
|
MenuComponent,
|
|
3943
4239
|
menuProps,
|
|
3944
4240
|
MenuHeaderComponent = NestedMenuHeader,
|
|
3945
4241
|
menuHeaderProps = {}
|
|
3946
|
-
} = menus[
|
|
4242
|
+
} = menus[currentMenuId] || {};
|
|
3947
4243
|
const {
|
|
3948
4244
|
children,
|
|
3949
4245
|
menuItems,
|
|
3950
4246
|
MenuItemComponent,
|
|
3951
4247
|
stateReducer: externalStateReducer,
|
|
3952
|
-
|
|
3953
|
-
...props
|
|
4248
|
+
...restMenuProps
|
|
3954
4249
|
} = menuProps || {};
|
|
3955
4250
|
const stateReducer = reduceReducers(
|
|
3956
4251
|
nestedMenuStateReducer,
|
|
3957
4252
|
externalStateReducer
|
|
3958
4253
|
);
|
|
3959
|
-
const
|
|
3960
|
-
|
|
3961
|
-
|
|
3962
|
-
|
|
3963
|
-
|
|
3964
|
-
|
|
3965
|
-
}
|
|
4254
|
+
const animationSpeed = MOTION_DURATION_FAST;
|
|
4255
|
+
const contentVariants = {
|
|
4256
|
+
arrive: (custom = { hasLoadedOnce: false, isAdding: false }) => ({
|
|
4257
|
+
opacity: 0,
|
|
4258
|
+
// Start from left if is first render of root, else use default
|
|
4259
|
+
x: !custom?.hasLoadedOnce ? "200%" : custom?.isAdding ? "200%" : "-200%"
|
|
4260
|
+
}),
|
|
4261
|
+
enter: (custom = { hasLoadedOnce: false }) => ({
|
|
4262
|
+
opacity: 1,
|
|
4263
|
+
x: 0,
|
|
4264
|
+
transition: {
|
|
4265
|
+
type: "tween",
|
|
4266
|
+
duration: animationSpeed,
|
|
4267
|
+
ease: "circOut",
|
|
4268
|
+
delay: !custom.hasLoadedOnce ? animationSpeed : 0
|
|
4269
|
+
}
|
|
4270
|
+
}),
|
|
4271
|
+
leave: (custom = { hasLoadedOnce: false, isAdding: false }) => ({
|
|
4272
|
+
opacity: 0,
|
|
4273
|
+
x: custom?.isAdding ? "-200%" : "200%",
|
|
4274
|
+
transition: {
|
|
4275
|
+
type: "tween",
|
|
4276
|
+
duration: animationSpeed,
|
|
4277
|
+
ease: "circIn"
|
|
4278
|
+
}
|
|
4279
|
+
})
|
|
4280
|
+
};
|
|
4281
|
+
const menuVariants = {
|
|
4282
|
+
arrive: (custom = { hasLoadedOnce: false, isAdding: false }) => ({
|
|
4283
|
+
opacity: 0,
|
|
4284
|
+
// Start from left if is first render of root, else use default
|
|
4285
|
+
x: !custom?.hasLoadedOnce ? "200%" : custom?.isAdding ? "200%" : "-200%"
|
|
4286
|
+
}),
|
|
4287
|
+
enter: (custom = { hasLoadedOnce: false }) => ({
|
|
4288
|
+
opacity: 1,
|
|
4289
|
+
x: 0,
|
|
4290
|
+
transition: {
|
|
4291
|
+
type: "tween",
|
|
4292
|
+
duration: animationSpeed,
|
|
4293
|
+
ease: "circOut",
|
|
4294
|
+
delay: !custom.hasLoadedOnce ? animationSpeed : 0
|
|
4295
|
+
}
|
|
4296
|
+
}),
|
|
4297
|
+
leave: (custom = { hasLoadedOnce: false, isAdding: false }) => ({
|
|
4298
|
+
opacity: 0,
|
|
4299
|
+
x: custom?.isAdding ? "-200%" : "200%",
|
|
4300
|
+
transition: {
|
|
4301
|
+
type: "tween",
|
|
4302
|
+
duration: animationSpeed,
|
|
4303
|
+
ease: "circIn"
|
|
4304
|
+
}
|
|
4305
|
+
})
|
|
3966
4306
|
};
|
|
3967
4307
|
const nestedMenuProps = {
|
|
4308
|
+
...nestedMenuPropsFromRoot,
|
|
3968
4309
|
menuToggleElement,
|
|
3969
4310
|
stateReducer,
|
|
3970
|
-
|
|
3971
|
-
|
|
3972
|
-
|
|
3973
|
-
|
|
3974
|
-
|
|
4311
|
+
MenuRootComponent: NestedMenuRoot,
|
|
4312
|
+
// This ensures that onNestedIsOpenChange will be triggered if the selected menu attempts to close itself.
|
|
4313
|
+
initialIsOpen: true,
|
|
4314
|
+
children: (
|
|
4315
|
+
// Handles the smooth animating of the content
|
|
4316
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react33.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
4317
|
+
import_react33.motion.div,
|
|
3975
4318
|
{
|
|
3976
|
-
|
|
3977
|
-
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
|
|
3983
|
-
|
|
3984
|
-
|
|
3985
|
-
|
|
3986
|
-
|
|
3987
|
-
|
|
3988
|
-
|
|
3989
|
-
|
|
4319
|
+
variants: contentVariants,
|
|
4320
|
+
initial: "arrive",
|
|
4321
|
+
animate: "enter",
|
|
4322
|
+
exit: "leave",
|
|
4323
|
+
custom: { isAdding, hasLoadedOnce },
|
|
4324
|
+
children: [
|
|
4325
|
+
MenuHeaderComponent && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
4326
|
+
MenuHeaderComponent,
|
|
4327
|
+
{
|
|
4328
|
+
backArrowLabel,
|
|
4329
|
+
...menuHeaderProps
|
|
4330
|
+
}
|
|
4331
|
+
),
|
|
4332
|
+
children && children,
|
|
4333
|
+
menuItems && !children && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
4334
|
+
NestedMenuContent,
|
|
4335
|
+
{
|
|
4336
|
+
menuItems,
|
|
4337
|
+
MenuItemComponent: MenuItemComponent ?? NestedMenuItem
|
|
4338
|
+
}
|
|
4339
|
+
)
|
|
4340
|
+
]
|
|
4341
|
+
},
|
|
4342
|
+
currentMenuId
|
|
4343
|
+
) })
|
|
4344
|
+
),
|
|
4345
|
+
...restMenuProps
|
|
3990
4346
|
};
|
|
3991
|
-
return /* @__PURE__ */ (0,
|
|
4347
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
3992
4348
|
NestedMenuProvider,
|
|
3993
4349
|
{
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
4350
|
+
...{
|
|
4351
|
+
selectedMenuPath,
|
|
4352
|
+
setSelectedMenuPath,
|
|
4353
|
+
setSelectedMenuId,
|
|
4354
|
+
resetSelectedMenuPath,
|
|
4355
|
+
goBack,
|
|
4356
|
+
rootMenuContextProps,
|
|
4357
|
+
activeMenuContext,
|
|
4358
|
+
setActiveMenuContext,
|
|
4359
|
+
animationSpeed
|
|
4360
|
+
},
|
|
4361
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
4362
|
+
NestedMenuPopout,
|
|
4363
|
+
{
|
|
4364
|
+
content: MenuComponent && // Handles the rerender of the component
|
|
4365
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react33.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
4366
|
+
import_react33.motion.div,
|
|
4367
|
+
{
|
|
4368
|
+
variants: menuVariants,
|
|
4369
|
+
initial: "arrive",
|
|
4370
|
+
animate: "enter",
|
|
4371
|
+
exit: "leave",
|
|
4372
|
+
custom: { isAdding, hasLoadedOnce },
|
|
4373
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MenuComponent, { ...nestedMenuProps })
|
|
4374
|
+
},
|
|
4375
|
+
`${currentMenuId}-content`
|
|
4376
|
+
) }),
|
|
4377
|
+
menuToggleElement,
|
|
4378
|
+
width: width2,
|
|
4379
|
+
...popoutProps
|
|
4380
|
+
}
|
|
4381
|
+
)
|
|
3999
4382
|
}
|
|
4000
4383
|
);
|
|
4001
4384
|
};
|
|
@@ -4004,7 +4387,10 @@ var NestedMenu = ({
|
|
|
4004
4387
|
ActionMenu,
|
|
4005
4388
|
Autocomplete,
|
|
4006
4389
|
AutocompleteInput,
|
|
4390
|
+
AutocompleteTokenInput,
|
|
4391
|
+
CustomPopoutContent,
|
|
4007
4392
|
INPUT_TYPES,
|
|
4393
|
+
ListboxToggleButton,
|
|
4008
4394
|
MenuContent,
|
|
4009
4395
|
MenuContentContext,
|
|
4010
4396
|
MenuContentProvider,
|
|
@@ -4019,7 +4405,9 @@ var NestedMenu = ({
|
|
|
4019
4405
|
MenuItemRow,
|
|
4020
4406
|
MenuItemText,
|
|
4021
4407
|
MenuLabel,
|
|
4408
|
+
MenuPopout,
|
|
4022
4409
|
MenuRoot,
|
|
4410
|
+
MenuRootNoPopout,
|
|
4023
4411
|
MenuSearchInput,
|
|
4024
4412
|
MenuSearchTokenInput,
|
|
4025
4413
|
MenuToggleButton,
|
|
@@ -4034,6 +4422,7 @@ var NestedMenu = ({
|
|
|
4034
4422
|
NestedMenuItem,
|
|
4035
4423
|
NestedMenuProvider,
|
|
4036
4424
|
SingleSelectMenu,
|
|
4425
|
+
StyledListboxToggleButton,
|
|
4037
4426
|
StyledMenuGroup,
|
|
4038
4427
|
StyledMenuGroupUl,
|
|
4039
4428
|
StyledMenuItem,
|