@sproutsocial/seeds-react-menu 0.4.0 → 0.5.0
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 +35 -0
- package/dist/esm/index.js +221 -137
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +126 -101
- package/dist/index.d.ts +126 -101
- package/dist/index.js +236 -151
- package/dist/index.js.map +1 -1
- package/package.json +12 -12
- package/src/ActionMenu/ActionMenu.tsx +10 -3
- package/src/ActionMenu/ActionMenuTypes.ts +10 -6
- package/src/ActionMenu/__tests__/ActionMenu.test.tsx +0 -22
- package/src/ActionMenu/__tests__/ActionMenu.typetest.tsx +32 -3
- package/src/Autocomplete/Autocomplete.stories.tsx +24 -0
- package/src/Autocomplete/Autocomplete.tsx +10 -4
- package/src/Autocomplete/AutocompleteTypes.ts +6 -3
- package/src/Autocomplete/__tests__/Autocomplete.typetest.tsx +34 -3
- package/src/MenuContent/MenuContent.tsx +14 -1
- package/src/MenuContent/MenuContentTypes.ts +5 -5
- package/src/MenuContent/__tests__/MenuContent.typetest.tsx +17 -1
- package/src/MenuGroup/MenuGroup.feature +6 -6
- package/src/MenuGroup/MenuGroup.tsx +2 -1
- package/src/MenuGroup/MenuGroupTypes.ts +4 -6
- package/src/MenuGroup/__tests__/MenuGroup.typetest.tsx +23 -4
- package/src/MenuItem/MenuItem.tsx +0 -1
- package/src/MultiSelectMenu/MultiSelectMenu.tsx +10 -3
- package/src/MultiSelectMenu/MultiSelectMenuTypes.ts +8 -6
- package/src/MultiSelectMenu/__tests__/MultiSelectMenu.test.tsx +0 -43
- package/src/MultiSelectMenu/__tests__/MultiSelectMenu.typetest.tsx +29 -2
- package/src/SingleSelectMenu/SingleSelectMenu.tsx +10 -3
- package/src/SingleSelectMenu/SingleSelectMenuTypes.ts +7 -5
- package/src/SingleSelectMenu/__tests__/SingleSelectMenu.typetest.tsx +32 -2
- package/src/__tests__/Menu.test.tsx +38 -0
- package/src/hooks/useMenuChildren.tsx +210 -0
- package/src/index.ts +1 -1
- package/src/types.ts +26 -1
- package/src/hooks/useItemsFromChildren.tsx +0 -131
package/dist/index.js
CHANGED
|
@@ -128,16 +128,14 @@ __export(index_exports, {
|
|
|
128
128
|
StyledMenuItem: () => StyledMenuItem,
|
|
129
129
|
StyledTitle: () => StyledTitle,
|
|
130
130
|
defaultUseSelectProps: () => defaultUseSelectProps,
|
|
131
|
-
|
|
131
|
+
mapMenuItems: () => mapMenuItems,
|
|
132
132
|
useMenu: () => useMenu,
|
|
133
|
+
useMenuChildren: () => useMenuChildren,
|
|
133
134
|
useMenuContext: () => useMenuContext,
|
|
134
135
|
useSelectStateReducer: () => useSelectStateReducer
|
|
135
136
|
});
|
|
136
137
|
module.exports = __toCommonJS(index_exports);
|
|
137
138
|
|
|
138
|
-
// src/MenuItem/MenuItem.tsx
|
|
139
|
-
var import_react3 = require("react");
|
|
140
|
-
|
|
141
139
|
// src/MenuContext.tsx
|
|
142
140
|
var import_react = require("react");
|
|
143
141
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1960,7 +1958,7 @@ var INPUT_TYPES = {
|
|
|
1960
1958
|
};
|
|
1961
1959
|
|
|
1962
1960
|
// src/MenuHeader/MenuHeader.tsx
|
|
1963
|
-
var
|
|
1961
|
+
var import_react3 = require("react");
|
|
1964
1962
|
|
|
1965
1963
|
// src/MenuHeader/styles.tsx
|
|
1966
1964
|
var import_styled_components4 = __toESM(require("styled-components"));
|
|
@@ -2039,21 +2037,179 @@ var MenuHeader = ({
|
|
|
2039
2037
|
|
|
2040
2038
|
// src/MenuContent/styles.tsx
|
|
2041
2039
|
var import_styled_components5 = __toESM(require("styled-components"));
|
|
2042
|
-
var
|
|
2043
|
-
var StyledMenuContent = (0, import_styled_components5.default)(
|
|
2040
|
+
var import_react4 = require("motion/react");
|
|
2041
|
+
var StyledMenuContent = (0, import_styled_components5.default)(import_react4.motion.ul)`
|
|
2044
2042
|
margin: 0;
|
|
2045
2043
|
padding: 0;
|
|
2046
2044
|
`;
|
|
2047
2045
|
|
|
2048
|
-
// src/
|
|
2046
|
+
// src/hooks/useMenuChildren.tsx
|
|
2047
|
+
var import_react5 = __toESM(require("react"));
|
|
2049
2048
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
2049
|
+
var walkAllChildren = (children, callback) => {
|
|
2050
|
+
const walk = (element, parents2) => {
|
|
2051
|
+
if (element === null || element === void 0) return;
|
|
2052
|
+
callback(element, parents2);
|
|
2053
|
+
const newParents = [...parents2, element];
|
|
2054
|
+
const children2 = element.props?.children;
|
|
2055
|
+
import_react5.default.Children.toArray(children2).forEach((child) => {
|
|
2056
|
+
walk(child, newParents);
|
|
2057
|
+
});
|
|
2058
|
+
};
|
|
2059
|
+
const parents = [];
|
|
2060
|
+
import_react5.default.Children.toArray(children).forEach((child) => {
|
|
2061
|
+
walk(child, parents);
|
|
2062
|
+
});
|
|
2063
|
+
};
|
|
2064
|
+
var getComponentName = (element) => {
|
|
2065
|
+
if (element && typeof element === "object" && "type" in element && typeof element.type !== "string" && typeof element.type.name === "string") {
|
|
2066
|
+
return element.type.name;
|
|
2067
|
+
}
|
|
2068
|
+
};
|
|
2069
|
+
var getAllMenuItems = (children) => {
|
|
2070
|
+
const orderedElements = [];
|
|
2071
|
+
walkAllChildren(children, (element) => {
|
|
2072
|
+
switch (getComponentName(element)) {
|
|
2073
|
+
case "MenuItem":
|
|
2074
|
+
orderedElements.push({
|
|
2075
|
+
type: "item",
|
|
2076
|
+
element
|
|
2077
|
+
});
|
|
2078
|
+
break;
|
|
2079
|
+
case "MenuGroup":
|
|
2080
|
+
orderedElements.push({
|
|
2081
|
+
type: "group",
|
|
2082
|
+
element
|
|
2083
|
+
});
|
|
2084
|
+
break;
|
|
2085
|
+
case "MenuContent":
|
|
2086
|
+
orderedElements.push({
|
|
2087
|
+
type: "content",
|
|
2088
|
+
element
|
|
2089
|
+
});
|
|
2090
|
+
break;
|
|
2091
|
+
default:
|
|
2092
|
+
break;
|
|
2093
|
+
}
|
|
2094
|
+
});
|
|
2095
|
+
return { orderedElements };
|
|
2096
|
+
};
|
|
2097
|
+
var mapMenuItems = ({
|
|
2098
|
+
items,
|
|
2099
|
+
MenuItemComponent
|
|
2100
|
+
}) => {
|
|
2101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: items.map((menuItem) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(MenuItemComponent, { ...menuItem }, menuItem.id)) });
|
|
2102
|
+
};
|
|
2103
|
+
var useMenuChildren = ({
|
|
2104
|
+
children: childrenProp,
|
|
2105
|
+
items,
|
|
2106
|
+
MenuItemComponent = MenuItem
|
|
2107
|
+
}) => {
|
|
2108
|
+
const { allMenuItems, menuItemsMap, children } = (0, import_react5.useMemo)(() => {
|
|
2109
|
+
let children2 = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, {});
|
|
2110
|
+
let index = 0;
|
|
2111
|
+
const menuItemsMap2 = {};
|
|
2112
|
+
const allMenuItems2 = [];
|
|
2113
|
+
if (items && items.length) {
|
|
2114
|
+
items.forEach((menuItem) => {
|
|
2115
|
+
const item = {
|
|
2116
|
+
id: menuItem.id,
|
|
2117
|
+
index: index++,
|
|
2118
|
+
disabled: menuItem.disabled,
|
|
2119
|
+
menuItemProps: menuItem
|
|
2120
|
+
};
|
|
2121
|
+
allMenuItems2.push(item);
|
|
2122
|
+
menuItemsMap2[`${item.id}`] = item;
|
|
2123
|
+
});
|
|
2124
|
+
children2 = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(MenuContent, { children: mapMenuItems({ items, MenuItemComponent }) });
|
|
2125
|
+
} else if (childrenProp) {
|
|
2126
|
+
children2 = childrenProp;
|
|
2127
|
+
const { orderedElements } = getAllMenuItems(childrenProp);
|
|
2128
|
+
orderedElements.forEach(({ type, element }) => {
|
|
2129
|
+
if (type === "content") {
|
|
2130
|
+
const menuContent = element;
|
|
2131
|
+
const items2 = menuContent.props.items;
|
|
2132
|
+
if (items2) {
|
|
2133
|
+
items2.forEach((menuItem) => {
|
|
2134
|
+
const item = {
|
|
2135
|
+
id: menuItem.id,
|
|
2136
|
+
index: index++,
|
|
2137
|
+
children: menuItem.children,
|
|
2138
|
+
disabled: menuItem.disabled,
|
|
2139
|
+
menuItemProps: menuItem
|
|
2140
|
+
};
|
|
2141
|
+
allMenuItems2.push(item);
|
|
2142
|
+
menuItemsMap2[`${item.id}`] = item;
|
|
2143
|
+
});
|
|
2144
|
+
}
|
|
2145
|
+
} else if (type === "group") {
|
|
2146
|
+
const menuGroup = element;
|
|
2147
|
+
const items2 = menuGroup.props.items;
|
|
2148
|
+
if (items2) {
|
|
2149
|
+
items2.forEach((menuItem) => {
|
|
2150
|
+
const item = {
|
|
2151
|
+
id: menuItem.id,
|
|
2152
|
+
index: index++,
|
|
2153
|
+
children: menuItem.children,
|
|
2154
|
+
disabled: menuItem.disabled,
|
|
2155
|
+
menuItemProps: menuItem,
|
|
2156
|
+
menuGroupProps: element.props
|
|
2157
|
+
};
|
|
2158
|
+
allMenuItems2.push(item);
|
|
2159
|
+
menuItemsMap2[`${item.id}`] = item;
|
|
2160
|
+
});
|
|
2161
|
+
} else if (menuGroup.props.children) {
|
|
2162
|
+
let children3 = menuGroup.props.children;
|
|
2163
|
+
if (!Array.isArray(children3)) {
|
|
2164
|
+
children3 = [children3];
|
|
2165
|
+
}
|
|
2166
|
+
children3.forEach((menuItem) => {
|
|
2167
|
+
const item = {
|
|
2168
|
+
id: menuItem.props.id,
|
|
2169
|
+
index: index++,
|
|
2170
|
+
children: menuItem.props.children,
|
|
2171
|
+
disabled: menuItem.props.disabled,
|
|
2172
|
+
menuItemProps: menuItem.props,
|
|
2173
|
+
menuGroupProps: element.props
|
|
2174
|
+
};
|
|
2175
|
+
allMenuItems2.push(item);
|
|
2176
|
+
menuItemsMap2[`${item.id}`] = item;
|
|
2177
|
+
});
|
|
2178
|
+
}
|
|
2179
|
+
} else {
|
|
2180
|
+
if (menuItemsMap2[`${element.props.id}`]) return;
|
|
2181
|
+
const menuItem = element;
|
|
2182
|
+
const item = {
|
|
2183
|
+
id: menuItem.props.id,
|
|
2184
|
+
index: index++,
|
|
2185
|
+
disabled: menuItem.props.disabled,
|
|
2186
|
+
menuItemProps: menuItem.props
|
|
2187
|
+
};
|
|
2188
|
+
allMenuItems2.push(item);
|
|
2189
|
+
menuItemsMap2[`${item.id}`] = item;
|
|
2190
|
+
}
|
|
2191
|
+
});
|
|
2192
|
+
}
|
|
2193
|
+
return { allMenuItems: allMenuItems2, menuItemsMap: menuItemsMap2, children: children2 };
|
|
2194
|
+
}, [childrenProp, items, MenuItemComponent]);
|
|
2195
|
+
return { allMenuItems, menuItemsMap, children };
|
|
2196
|
+
};
|
|
2197
|
+
|
|
2198
|
+
// src/MenuContent/MenuContent.tsx
|
|
2199
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
2050
2200
|
var MenuContent = ({
|
|
2051
2201
|
id = "menu_content",
|
|
2052
|
-
children,
|
|
2202
|
+
children: childrenProp,
|
|
2203
|
+
items,
|
|
2204
|
+
MenuItemComponent = MenuItem,
|
|
2053
2205
|
...rest
|
|
2054
2206
|
}) => {
|
|
2055
2207
|
const { getToggleButtonProps, getMenuProps, isListbox } = useMenuContext();
|
|
2056
|
-
|
|
2208
|
+
const children = childrenProp || !items || !items.length ? childrenProp : mapMenuItems({ items, MenuItemComponent });
|
|
2209
|
+
if (!children) {
|
|
2210
|
+
return null;
|
|
2211
|
+
}
|
|
2212
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2057
2213
|
StyledMenuContent,
|
|
2058
2214
|
{
|
|
2059
2215
|
autoFocus: true,
|
|
@@ -2086,9 +2242,9 @@ var StyledMenuFooterBox = (0, import_styled_components6.default)(import_seeds_re
|
|
|
2086
2242
|
`;
|
|
2087
2243
|
|
|
2088
2244
|
// src/MenuFooter/MenuFooter.tsx
|
|
2089
|
-
var
|
|
2245
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2090
2246
|
var MenuFooter = ({ children, ...rest }) => {
|
|
2091
|
-
return /* @__PURE__ */ (0,
|
|
2247
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(StyledMenuFooterBox, { ...rest, children });
|
|
2092
2248
|
};
|
|
2093
2249
|
|
|
2094
2250
|
// src/MenuGroup/MenuGroup.tsx
|
|
@@ -2102,7 +2258,7 @@ var import_react7 = require("react");
|
|
|
2102
2258
|
var import_styled_components7 = __toESM(require("styled-components"));
|
|
2103
2259
|
var import_styled_components8 = __toESM(require("styled-components"));
|
|
2104
2260
|
var import_seeds_react_system_props = require("@sproutsocial/seeds-react-system-props");
|
|
2105
|
-
var
|
|
2261
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
2106
2262
|
var import_react8 = require("react");
|
|
2107
2263
|
var Container = import_styled_components8.default.span`
|
|
2108
2264
|
margin: 0;
|
|
@@ -2163,7 +2319,7 @@ var SmallBodyCopy = (0, import_styled_components7.default)(styles_default)`
|
|
|
2163
2319
|
`;
|
|
2164
2320
|
var Text = ({ fontSize: fontSize2, children, qa, color: color2, ...rest }) => {
|
|
2165
2321
|
const qaText = typeof children === "string" ? children : void 0;
|
|
2166
|
-
return /* @__PURE__ */ (0,
|
|
2322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2167
2323
|
styles_default,
|
|
2168
2324
|
{
|
|
2169
2325
|
typeScale: fontSize2,
|
|
@@ -2178,7 +2334,7 @@ var Text = ({ fontSize: fontSize2, children, qa, color: color2, ...rest }) => {
|
|
|
2178
2334
|
var withTextLogic = (Component) => {
|
|
2179
2335
|
return ({ children, ...props }) => {
|
|
2180
2336
|
const qaText = typeof children === "string" ? children : void 0;
|
|
2181
|
-
return /* @__PURE__ */ (0,
|
|
2337
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Component, { "data-qa-text": qaText, ...props, children });
|
|
2182
2338
|
};
|
|
2183
2339
|
};
|
|
2184
2340
|
var HeadlineWithLogic = withTextLogic(Headline);
|
|
@@ -2232,7 +2388,7 @@ var StyledMenuGroupUl = import_styled_components9.default.ul`
|
|
|
2232
2388
|
`;
|
|
2233
2389
|
|
|
2234
2390
|
// src/MenuGroup/MenuGroup.tsx
|
|
2235
|
-
var
|
|
2391
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
2236
2392
|
var MenuGroup = ({
|
|
2237
2393
|
titleAs = "h3",
|
|
2238
2394
|
children: childrenProp,
|
|
@@ -2245,11 +2401,11 @@ var MenuGroup = ({
|
|
|
2245
2401
|
...rest
|
|
2246
2402
|
}) => {
|
|
2247
2403
|
const titleId = `menu-group-title-${Math.random().toString(36).slice(2, 11)}`;
|
|
2248
|
-
const children = childrenProp || !items || !items.length ? childrenProp :
|
|
2404
|
+
const children = childrenProp || !items || !items.length ? childrenProp : mapMenuItems({ items, MenuItemComponent });
|
|
2249
2405
|
if (!children) {
|
|
2250
2406
|
return null;
|
|
2251
2407
|
}
|
|
2252
|
-
return /* @__PURE__ */ (0,
|
|
2408
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
2253
2409
|
StyledMenuGroup,
|
|
2254
2410
|
{
|
|
2255
2411
|
role: "group",
|
|
@@ -2259,8 +2415,8 @@ var MenuGroup = ({
|
|
|
2259
2415
|
color: color2,
|
|
2260
2416
|
...rest,
|
|
2261
2417
|
children: [
|
|
2262
|
-
title && /* @__PURE__ */ (0,
|
|
2263
|
-
/* @__PURE__ */ (0,
|
|
2418
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(StyledTitle, { role: "heading", as: titleAs, id: titleId, children: title }),
|
|
2419
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(StyledMenuGroupUl, { children })
|
|
2264
2420
|
]
|
|
2265
2421
|
}
|
|
2266
2422
|
);
|
|
@@ -2270,7 +2426,7 @@ var MenuGroup = ({
|
|
|
2270
2426
|
var import_react10 = require("react");
|
|
2271
2427
|
var import_styled_components10 = __toESM(require("styled-components"));
|
|
2272
2428
|
var import_seeds_react_popout = require("@sproutsocial/seeds-react-popout");
|
|
2273
|
-
var
|
|
2429
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
2274
2430
|
var CustomPopoutContent = (0, import_styled_components10.default)(import_seeds_react_popout.Popout.Content)`
|
|
2275
2431
|
padding: 0;
|
|
2276
2432
|
margin-left: 0;
|
|
@@ -2290,13 +2446,13 @@ var MenuRoot = ({
|
|
|
2290
2446
|
},
|
|
2291
2447
|
[openMenu, closeMenu]
|
|
2292
2448
|
);
|
|
2293
|
-
return /* @__PURE__ */ (0,
|
|
2449
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuProvider, { menuProps: contextProps, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2294
2450
|
import_seeds_react_popout.Popout,
|
|
2295
2451
|
{
|
|
2296
2452
|
menuPopout: true,
|
|
2297
2453
|
isOpen: !!isOpen,
|
|
2298
2454
|
setIsOpen,
|
|
2299
|
-
content: /* @__PURE__ */ (0,
|
|
2455
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CustomPopoutContent, { width: width2, children }),
|
|
2300
2456
|
focusLockProps: {
|
|
2301
2457
|
// correct jerking motion when scrolling while the Popout is open
|
|
2302
2458
|
// returnFocus: false,
|
|
@@ -2313,22 +2469,22 @@ var MenuRoot = ({
|
|
|
2313
2469
|
// src/MenuLabel.tsx
|
|
2314
2470
|
var import_react11 = require("react");
|
|
2315
2471
|
var import_seeds_react_label = require("@sproutsocial/seeds-react-label");
|
|
2316
|
-
var
|
|
2472
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
2317
2473
|
var MenuLabel = ({ children, ...rest }) => {
|
|
2318
2474
|
const { getLabelProps } = useMenuContext();
|
|
2319
|
-
return /* @__PURE__ */ (0,
|
|
2475
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_seeds_react_label.Label, { htmlFor: "fallback_menu_label", ...getLabelProps?.(), ...rest, children });
|
|
2320
2476
|
};
|
|
2321
2477
|
|
|
2322
2478
|
// src/MenuToggleButton.tsx
|
|
2323
2479
|
var import_react12 = require("react");
|
|
2324
2480
|
var import_seeds_react_button = require("@sproutsocial/seeds-react-button");
|
|
2325
|
-
var
|
|
2481
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
2326
2482
|
var MenuToggleButton = ({
|
|
2327
2483
|
children,
|
|
2328
2484
|
...rest
|
|
2329
2485
|
}) => {
|
|
2330
2486
|
const { getToggleButtonProps, isListbox, getDropdownProps } = (0, import_react12.useContext)(MenuContext);
|
|
2331
|
-
return /* @__PURE__ */ (0,
|
|
2487
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2332
2488
|
import_seeds_react_button.Button,
|
|
2333
2489
|
{
|
|
2334
2490
|
appearance: "secondary",
|
|
@@ -2345,104 +2501,8 @@ var MenuToggleButton = ({
|
|
|
2345
2501
|
};
|
|
2346
2502
|
|
|
2347
2503
|
// src/ActionMenu/ActionMenu.tsx
|
|
2348
|
-
var import_react14 = __toESM(require("react"));
|
|
2349
|
-
var import_downshift2 = require("downshift");
|
|
2350
|
-
|
|
2351
|
-
// src/hooks/useItemsFromChildren.tsx
|
|
2352
2504
|
var import_react13 = __toESM(require("react"));
|
|
2353
|
-
var
|
|
2354
|
-
const walk = (element, parents2) => {
|
|
2355
|
-
if (element === null || element === void 0) return;
|
|
2356
|
-
callback(element, parents2);
|
|
2357
|
-
const newParents = [...parents2, element];
|
|
2358
|
-
const children2 = element.props?.children;
|
|
2359
|
-
import_react13.default.Children.toArray(children2).forEach((child) => {
|
|
2360
|
-
walk(child, newParents);
|
|
2361
|
-
});
|
|
2362
|
-
};
|
|
2363
|
-
const parents = [];
|
|
2364
|
-
import_react13.default.Children.toArray(children).forEach((child) => {
|
|
2365
|
-
walk(child, parents);
|
|
2366
|
-
});
|
|
2367
|
-
};
|
|
2368
|
-
var checkIfIsElement = (element, name) => {
|
|
2369
|
-
return !!(element && typeof element === "object" && "type" in element && typeof element.type !== "string" && typeof element.type.name === "string" && element.type.name === name);
|
|
2370
|
-
};
|
|
2371
|
-
var getAllMenuItems = (children) => {
|
|
2372
|
-
const orderedElements = [];
|
|
2373
|
-
walkAllChildren(children, (element) => {
|
|
2374
|
-
if (checkIfIsElement(element, "MenuItem")) {
|
|
2375
|
-
orderedElements.push({
|
|
2376
|
-
type: "item",
|
|
2377
|
-
element
|
|
2378
|
-
});
|
|
2379
|
-
} else if (checkIfIsElement(element, "MenuGroup")) {
|
|
2380
|
-
orderedElements.push({
|
|
2381
|
-
type: "group",
|
|
2382
|
-
element
|
|
2383
|
-
});
|
|
2384
|
-
}
|
|
2385
|
-
});
|
|
2386
|
-
return { orderedElements };
|
|
2387
|
-
};
|
|
2388
|
-
var useItemsFromChildren = ({
|
|
2389
|
-
children
|
|
2390
|
-
}) => {
|
|
2391
|
-
const { allMenuItems, menuItemsMap } = (0, import_react13.useMemo)(() => {
|
|
2392
|
-
const { orderedElements } = getAllMenuItems(children);
|
|
2393
|
-
const menuItemsMap2 = {};
|
|
2394
|
-
const allMenuItems2 = [];
|
|
2395
|
-
let index = 0;
|
|
2396
|
-
orderedElements.forEach(({ type, element }) => {
|
|
2397
|
-
if (type === "group") {
|
|
2398
|
-
const menuGroup = element;
|
|
2399
|
-
const items = menuGroup.props.items;
|
|
2400
|
-
if (items) {
|
|
2401
|
-
items.forEach((menuItem) => {
|
|
2402
|
-
const item = {
|
|
2403
|
-
id: menuItem.id,
|
|
2404
|
-
index: index++,
|
|
2405
|
-
disabled: menuItem.disabled,
|
|
2406
|
-
menuItemProps: menuItem,
|
|
2407
|
-
menuGroupProps: element.props
|
|
2408
|
-
};
|
|
2409
|
-
allMenuItems2.push(item);
|
|
2410
|
-
menuItemsMap2[`${item.id}`] = item;
|
|
2411
|
-
});
|
|
2412
|
-
} else if (menuGroup.props.children) {
|
|
2413
|
-
let children2 = menuGroup.props.children;
|
|
2414
|
-
if (!Array.isArray(children2)) {
|
|
2415
|
-
children2 = [children2];
|
|
2416
|
-
}
|
|
2417
|
-
children2.forEach((menuItem) => {
|
|
2418
|
-
const item = {
|
|
2419
|
-
id: menuItem.props.id,
|
|
2420
|
-
index: index++,
|
|
2421
|
-
disabled: menuItem.props.disabled,
|
|
2422
|
-
menuItemProps: menuItem.props,
|
|
2423
|
-
menuGroupProps: element.props
|
|
2424
|
-
};
|
|
2425
|
-
allMenuItems2.push(item);
|
|
2426
|
-
menuItemsMap2[`${item.id}`] = item;
|
|
2427
|
-
});
|
|
2428
|
-
}
|
|
2429
|
-
} else {
|
|
2430
|
-
if (menuItemsMap2[`${element.props.id}`]) return;
|
|
2431
|
-
const menuItem = element;
|
|
2432
|
-
const item = {
|
|
2433
|
-
id: menuItem.props.id,
|
|
2434
|
-
index: index++,
|
|
2435
|
-
disabled: menuItem.props.disabled,
|
|
2436
|
-
menuItemProps: menuItem.props
|
|
2437
|
-
};
|
|
2438
|
-
allMenuItems2.push(item);
|
|
2439
|
-
menuItemsMap2[`${item.id}`] = item;
|
|
2440
|
-
}
|
|
2441
|
-
});
|
|
2442
|
-
return { allMenuItems: allMenuItems2, menuItemsMap: menuItemsMap2 };
|
|
2443
|
-
}, [children]);
|
|
2444
|
-
return { allMenuItems, menuItemsMap };
|
|
2445
|
-
};
|
|
2505
|
+
var import_downshift2 = require("downshift");
|
|
2446
2506
|
|
|
2447
2507
|
// src/reducers/useSelectStateReducer.tsx
|
|
2448
2508
|
var import_downshift = require("downshift");
|
|
@@ -2472,7 +2532,7 @@ var itemToString = (item) => {
|
|
|
2472
2532
|
};
|
|
2473
2533
|
|
|
2474
2534
|
// src/ActionMenu/ActionMenu.tsx
|
|
2475
|
-
var
|
|
2535
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
2476
2536
|
var handleStateChange = (changes, currentSelectedItem) => {
|
|
2477
2537
|
if (!(changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter || changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton)) {
|
|
2478
2538
|
return;
|
|
@@ -2505,12 +2565,18 @@ var handleStateChange = (changes, currentSelectedItem) => {
|
|
|
2505
2565
|
}
|
|
2506
2566
|
};
|
|
2507
2567
|
var ActionMenu = ({
|
|
2508
|
-
children,
|
|
2568
|
+
children: childrenProp,
|
|
2569
|
+
items,
|
|
2570
|
+
MenuItemComponent = MenuItem,
|
|
2509
2571
|
stateReducer: externalStateReducer,
|
|
2510
2572
|
...useSelectProps
|
|
2511
2573
|
}) => {
|
|
2512
|
-
const { allMenuItems, menuItemsMap } =
|
|
2513
|
-
|
|
2574
|
+
const { allMenuItems, menuItemsMap, children } = useMenuChildren({
|
|
2575
|
+
children: childrenProp,
|
|
2576
|
+
items,
|
|
2577
|
+
MenuItemComponent
|
|
2578
|
+
});
|
|
2579
|
+
const [currentSelectedItem, setCurrentSelectedItem] = import_react13.default.useState(null);
|
|
2514
2580
|
const { isOpen, ...useSelectReturnProps } = (0, import_downshift2.useSelect)({
|
|
2515
2581
|
...defaultUseSelectProps,
|
|
2516
2582
|
items: allMenuItems,
|
|
@@ -2526,10 +2592,10 @@ var ActionMenu = ({
|
|
|
2526
2592
|
},
|
|
2527
2593
|
...useSelectProps
|
|
2528
2594
|
});
|
|
2529
|
-
(0,
|
|
2595
|
+
(0, import_react13.useEffect)(() => {
|
|
2530
2596
|
setCurrentSelectedItem(useSelectReturnProps.selectedItem);
|
|
2531
2597
|
}, [useSelectReturnProps.selectedItem]);
|
|
2532
|
-
return /* @__PURE__ */ (0,
|
|
2598
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2533
2599
|
MenuRoot,
|
|
2534
2600
|
{
|
|
2535
2601
|
...{
|
|
@@ -2547,15 +2613,21 @@ var ActionMenu = ({
|
|
|
2547
2613
|
};
|
|
2548
2614
|
|
|
2549
2615
|
// src/SingleSelectMenu/SingleSelectMenu.tsx
|
|
2550
|
-
var
|
|
2616
|
+
var import_react14 = require("react");
|
|
2551
2617
|
var import_downshift3 = require("downshift");
|
|
2552
|
-
var
|
|
2618
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
2553
2619
|
var SingleSelectMenu = ({
|
|
2554
|
-
children,
|
|
2620
|
+
children: childrenProp,
|
|
2555
2621
|
stateReducer: externalStateReducer,
|
|
2622
|
+
items,
|
|
2623
|
+
MenuItemComponent = MenuItem,
|
|
2556
2624
|
...useSelectProps
|
|
2557
2625
|
}) => {
|
|
2558
|
-
const { allMenuItems, menuItemsMap } =
|
|
2626
|
+
const { allMenuItems, menuItemsMap, children } = useMenuChildren({
|
|
2627
|
+
children: childrenProp,
|
|
2628
|
+
items,
|
|
2629
|
+
MenuItemComponent
|
|
2630
|
+
});
|
|
2559
2631
|
const { isOpen, ...useSelectReturnProps } = (0, import_downshift3.useSelect)({
|
|
2560
2632
|
...defaultUseSelectProps,
|
|
2561
2633
|
items: allMenuItems,
|
|
@@ -2570,7 +2642,7 @@ var SingleSelectMenu = ({
|
|
|
2570
2642
|
},
|
|
2571
2643
|
...useSelectProps
|
|
2572
2644
|
});
|
|
2573
|
-
return /* @__PURE__ */ (0,
|
|
2645
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2574
2646
|
MenuRoot,
|
|
2575
2647
|
{
|
|
2576
2648
|
...{
|
|
@@ -2588,9 +2660,9 @@ var SingleSelectMenu = ({
|
|
|
2588
2660
|
};
|
|
2589
2661
|
|
|
2590
2662
|
// src/MultiSelectMenu/MultiSelectMenu.tsx
|
|
2591
|
-
var
|
|
2663
|
+
var import_react15 = require("react");
|
|
2592
2664
|
var import_downshift4 = require("downshift");
|
|
2593
|
-
var
|
|
2665
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
2594
2666
|
var selectReducerForMultiSelect = (state, actionAndChanges) => {
|
|
2595
2667
|
const { changes, type } = actionAndChanges;
|
|
2596
2668
|
switch (type) {
|
|
@@ -2610,14 +2682,20 @@ var selectReducerForMultiSelect = (state, actionAndChanges) => {
|
|
|
2610
2682
|
return changes;
|
|
2611
2683
|
};
|
|
2612
2684
|
var MultiSelectMenu = ({
|
|
2613
|
-
children,
|
|
2685
|
+
children: childrenProp,
|
|
2686
|
+
items,
|
|
2687
|
+
MenuItemComponent = MenuItem,
|
|
2614
2688
|
stateReducer: externalStateReducer,
|
|
2615
2689
|
getA11yMultiStatusMessage,
|
|
2616
2690
|
onMultiSelectStateChange,
|
|
2617
2691
|
multiSelectStateReducer,
|
|
2618
2692
|
...useSelectProps
|
|
2619
2693
|
}) => {
|
|
2620
|
-
const { allMenuItems, menuItemsMap } =
|
|
2694
|
+
const { allMenuItems, menuItemsMap, children } = useMenuChildren({
|
|
2695
|
+
children: childrenProp,
|
|
2696
|
+
items,
|
|
2697
|
+
MenuItemComponent
|
|
2698
|
+
});
|
|
2621
2699
|
const multiSelectOverrides = Object.entries({
|
|
2622
2700
|
...useSelectProps,
|
|
2623
2701
|
getA11yStatusMessage: getA11yMultiStatusMessage,
|
|
@@ -2677,7 +2755,7 @@ var MultiSelectMenu = ({
|
|
|
2677
2755
|
},
|
|
2678
2756
|
...useSelectProps
|
|
2679
2757
|
});
|
|
2680
|
-
return /* @__PURE__ */ (0,
|
|
2758
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2681
2759
|
MenuRoot,
|
|
2682
2760
|
{
|
|
2683
2761
|
...{
|
|
@@ -2704,7 +2782,7 @@ var MultiSelectMenu = ({
|
|
|
2704
2782
|
};
|
|
2705
2783
|
|
|
2706
2784
|
// src/Autocomplete/Autocomplete.tsx
|
|
2707
|
-
var
|
|
2785
|
+
var import_react16 = __toESM(require("react"));
|
|
2708
2786
|
var import_downshift6 = require("downshift");
|
|
2709
2787
|
|
|
2710
2788
|
// src/reducers/useComboboxStateReducer.tsx
|
|
@@ -2730,16 +2808,22 @@ var defaultUseComboboxProps = {
|
|
|
2730
2808
|
};
|
|
2731
2809
|
|
|
2732
2810
|
// src/Autocomplete/Autocomplete.tsx
|
|
2733
|
-
var
|
|
2811
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
2734
2812
|
var Autocomplete = ({
|
|
2735
|
-
children,
|
|
2813
|
+
children: childrenProp,
|
|
2736
2814
|
stateReducer: externalStateReducer,
|
|
2815
|
+
items: itemsProp,
|
|
2816
|
+
MenuItemComponent = MenuItem,
|
|
2737
2817
|
itemToString: itemToString2 = itemToString,
|
|
2738
2818
|
getIsItemVisible = (item, inputValue) => itemToString2(item).toLowerCase().startsWith(inputValue.toLowerCase()),
|
|
2739
2819
|
...useComboboxProps
|
|
2740
2820
|
}) => {
|
|
2741
|
-
const { allMenuItems } =
|
|
2742
|
-
|
|
2821
|
+
const { allMenuItems, children } = useMenuChildren({
|
|
2822
|
+
children: childrenProp,
|
|
2823
|
+
items: itemsProp,
|
|
2824
|
+
MenuItemComponent
|
|
2825
|
+
});
|
|
2826
|
+
const [items, setItems] = import_react16.default.useState(allMenuItems);
|
|
2743
2827
|
const { isOpen, ...useComboboxReturnProps } = (0, import_downshift6.useCombobox)({
|
|
2744
2828
|
...defaultUseComboboxProps,
|
|
2745
2829
|
items,
|
|
@@ -2765,7 +2849,7 @@ var Autocomplete = ({
|
|
|
2765
2849
|
},
|
|
2766
2850
|
...useComboboxProps
|
|
2767
2851
|
});
|
|
2768
|
-
return /* @__PURE__ */ (0,
|
|
2852
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2769
2853
|
MenuRoot,
|
|
2770
2854
|
{
|
|
2771
2855
|
...{
|
|
@@ -2785,9 +2869,9 @@ var Autocomplete = ({
|
|
|
2785
2869
|
};
|
|
2786
2870
|
|
|
2787
2871
|
// src/Autocomplete/AutocompleteInput.tsx
|
|
2788
|
-
var
|
|
2872
|
+
var import_react17 = require("react");
|
|
2789
2873
|
var import_seeds_react_input = require("@sproutsocial/seeds-react-input");
|
|
2790
|
-
var
|
|
2874
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
2791
2875
|
var AutocompleteInput = ({
|
|
2792
2876
|
onKeyDown,
|
|
2793
2877
|
onChange,
|
|
@@ -2797,8 +2881,8 @@ var AutocompleteInput = ({
|
|
|
2797
2881
|
inputProps,
|
|
2798
2882
|
...rest
|
|
2799
2883
|
}) => {
|
|
2800
|
-
const { getInputProps, inputValue } = (0,
|
|
2801
|
-
return /* @__PURE__ */ (0,
|
|
2884
|
+
const { getInputProps, inputValue } = (0, import_react17.useContext)(MenuContext);
|
|
2885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
2802
2886
|
import_seeds_react_input.Input,
|
|
2803
2887
|
{
|
|
2804
2888
|
id: "autocomplete_input",
|
|
@@ -2848,8 +2932,9 @@ var AutocompleteInput = ({
|
|
|
2848
2932
|
StyledMenuItem,
|
|
2849
2933
|
StyledTitle,
|
|
2850
2934
|
defaultUseSelectProps,
|
|
2851
|
-
|
|
2935
|
+
mapMenuItems,
|
|
2852
2936
|
useMenu,
|
|
2937
|
+
useMenuChildren,
|
|
2853
2938
|
useMenuContext,
|
|
2854
2939
|
useSelectStateReducer
|
|
2855
2940
|
});
|