@sproutsocial/seeds-react-menu 0.1.0 → 0.2.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 +17 -1
- package/dist/esm/index.js +209 -198
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +103 -37
- package/dist/index.d.ts +103 -37
- package/dist/index.js +239 -229
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
- package/src/ActionMenu/ActionMenu.feature +9 -3
- package/src/ActionMenu/ActionMenu.tsx +75 -42
- package/src/ActionMenu/__tests__/ActionMenu.test.tsx +36 -42
- package/src/ActionMenu/__tests__/ActionMenu.typetest.tsx +13 -13
- package/src/MenuContent/MenuContent.tsx +31 -1
- package/src/MenuContent/MenuContentTypes.ts +2 -2
- package/src/MenuContent/styles.tsx +10 -6
- package/src/MenuFooter/MenuFooter.feature +1 -1
- package/src/MenuFooter/MenuFooter.tsx +8 -0
- package/src/MenuFooter/__tests__/MenuFooter.test.tsx +53 -26
- package/src/MenuFooter/styles.tsx +1 -1
- package/src/MenuGroup/MenuGroup.feature +14 -26
- package/src/MenuGroup/MenuGroup.tsx +21 -1
- package/src/MenuGroup/__tests__/MenuGroup.test.tsx +40 -6
- package/src/MenuGroup/styles.tsx +4 -3
- package/src/MenuHeader/MenuHeader.tsx +16 -5
- package/src/MenuHeader/__tests__/MenuHeader.test.tsx +50 -6
- package/src/MenuHeader/styles.tsx +21 -22
- package/src/MenuItem/MenuItem.feature +66 -26
- package/src/MenuItem/MenuItem.tsx +35 -20
- package/src/MenuItem/MenuItemTypes.ts +13 -1
- package/src/MenuItem/__tests__/MenuItem.test.tsx +431 -154
- package/src/MenuItem/__tests__/MenuItem.typetest.tsx +57 -38
- package/src/MenuItem/styles.tsx +42 -3
- package/src/{MenuItemSelectable/MenuItemSelectable.tsx → MenuItem/useOptionProps.tsx} +31 -54
- package/src/MenuRoot/MenuRoot.tsx +12 -17
- package/src/MenuRoot/__tests__/MenuRoot.test.tsx +3 -3
- package/src/MenuRoot/__tests__/MenuRoot.typetest.tsx +10 -10
- package/src/MultiSelectMenu/MultiSelectMenu.tsx +8 -1
- package/src/MultiSelectMenu/__tests__/MultiSelectMenu.test.tsx +19 -19
- package/src/MultiSelectMenu/__tests__/MultiSelectMenu.typetest.tsx +10 -10
- package/src/SingleSelectMenu/SingleSelectMenu.feature +11 -0
- package/src/SingleSelectMenu/SingleSelectMenu.tsx +9 -0
- package/src/SingleSelectMenu/__tests__/SingleSelectMenu.test.tsx +11 -14
- package/src/SingleSelectMenu/__tests__/SingleSelectMenu.typetest.tsx +14 -14
- package/src/__tests__/Menu.test.tsx +20 -16
- package/src/hooks/useItemsFromChildren.tsx +1 -4
- package/src/index.ts +0 -1
- package/src/menuTestingUtils.tsx +7 -4
- package/src/MenuItemSelectable/MenuItemSelectable.feature +0 -99
- package/src/MenuItemSelectable/MenuItemSelectableTypes.ts +0 -15
- package/src/MenuItemSelectable/__tests__/MenuItemSelectable.test.tsx +0 -303
- package/src/MenuItemSelectable/__tests__/MenuItemSelectable.typetest.tsx +0 -56
- package/src/MenuItemSelectable/index.ts +0 -5
- package/src/MenuItemSelectable/styles.tsx +0 -21
package/dist/index.js
CHANGED
|
@@ -111,20 +111,19 @@ __export(src_exports, {
|
|
|
111
111
|
MenuGroup: () => MenuGroup,
|
|
112
112
|
MenuHeader: () => MenuHeader,
|
|
113
113
|
MenuItem: () => MenuItem,
|
|
114
|
+
MenuItemAction: () => MenuItemAction,
|
|
114
115
|
MenuItemContainer: () => MenuItemContainer,
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
MenuItemSelectableRow: () => MenuItemSelectableRow,
|
|
118
|
-
MenuItemSelectableText: () => MenuItemSelectableText,
|
|
116
|
+
MenuItemRow: () => MenuItemRow,
|
|
117
|
+
MenuItemText: () => MenuItemText,
|
|
119
118
|
MenuLabel: () => MenuLabel,
|
|
120
119
|
MenuProvider: () => MenuProvider,
|
|
121
120
|
MenuRoot: () => MenuRoot,
|
|
122
121
|
MenuToggleButton: () => MenuToggleButton,
|
|
123
122
|
MultiSelectMenu: () => MultiSelectMenu,
|
|
124
|
-
SelectionIndicator: () => SelectionIndicator,
|
|
125
123
|
SingleSelectMenu: () => SingleSelectMenu,
|
|
126
124
|
StyledMenuGroup: () => StyledMenuGroup,
|
|
127
125
|
StyledMenuGroupUl: () => StyledMenuGroupUl,
|
|
126
|
+
StyledMenuItem: () => StyledMenuItem,
|
|
128
127
|
StyledTitle: () => StyledTitle,
|
|
129
128
|
defaultUseSelectProps: () => defaultUseSelectProps,
|
|
130
129
|
useItemsFromChildren: () => useItemsFromChildren,
|
|
@@ -135,7 +134,7 @@ __export(src_exports, {
|
|
|
135
134
|
module.exports = __toCommonJS(src_exports);
|
|
136
135
|
|
|
137
136
|
// src/MenuItem/MenuItem.tsx
|
|
138
|
-
var
|
|
137
|
+
var import_react3 = require("react");
|
|
139
138
|
|
|
140
139
|
// src/MenuContext.tsx
|
|
141
140
|
var import_react = require("react");
|
|
@@ -184,15 +183,6 @@ var useMenuContext = () => {
|
|
|
184
183
|
return menuContextValue;
|
|
185
184
|
};
|
|
186
185
|
|
|
187
|
-
// src/constants.ts
|
|
188
|
-
var MENU_ITEM_ROLES = {
|
|
189
|
-
MENUITEM: "menuitem",
|
|
190
|
-
LISTITEM: "listitem",
|
|
191
|
-
OPTION: "option",
|
|
192
|
-
RADIO: "menuitemradio",
|
|
193
|
-
CHECKBOX: "menuitemcheckbox"
|
|
194
|
-
};
|
|
195
|
-
|
|
196
186
|
// src/MenuItem/styles.tsx
|
|
197
187
|
var import_styled_components2 = __toESM(require("styled-components"));
|
|
198
188
|
|
|
@@ -1741,17 +1731,35 @@ var highlightedStyles = import_styled_components2.css`
|
|
|
1741
1731
|
background-color: ${({ theme: theme2 }) => theme2.colors.listItem.background.hover};
|
|
1742
1732
|
`;
|
|
1743
1733
|
var MenuItemContainer = import_styled_components2.default.li`
|
|
1734
|
+
box-sizing: border-box;
|
|
1735
|
+
list-style-type: none;
|
|
1736
|
+
margin-left: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1737
|
+
margin-right: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1738
|
+
transition: all ${({ theme: theme2 }) => theme2.duration["fast"]};
|
|
1739
|
+
|
|
1740
|
+
&:first-child {
|
|
1741
|
+
margin-top: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1742
|
+
}
|
|
1743
|
+
|
|
1744
|
+
&:last-child {
|
|
1745
|
+
margin-bottom: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1746
|
+
}
|
|
1747
|
+
`;
|
|
1748
|
+
var StyledMenuItem = import_styled_components2.default.div`
|
|
1749
|
+
display: block;
|
|
1750
|
+
box-sizing: border-box;
|
|
1751
|
+
width: 100%;
|
|
1744
1752
|
border-radius: ${({ theme: theme2 }) => theme2.radii[500]};
|
|
1745
1753
|
background-color: ${({ theme: theme2 }) => theme2.colors.listItem.background.base};
|
|
1746
1754
|
border: 1px solid ${({ theme: theme2 }) => theme2.colors.listItem.background.base};
|
|
1747
1755
|
color: ${({ theme: theme2 }) => theme2.colors.text.body};
|
|
1748
1756
|
font-family: ${({ theme: theme2 }) => theme2.fontFamily};
|
|
1749
1757
|
font-weight: ${({ theme: theme2 }) => theme2.fontWeights.normal};
|
|
1758
|
+
text-align: left;
|
|
1759
|
+
text-decoration: none;
|
|
1750
1760
|
padding: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1751
|
-
list-style-type: none;
|
|
1752
1761
|
outline: 0;
|
|
1753
1762
|
${({ theme: theme2 }) => theme2.typography[200]};
|
|
1754
|
-
transition: all ${({ theme: theme2 }) => theme2.duration["fast"]};
|
|
1755
1763
|
|
|
1756
1764
|
/* Highlighted */
|
|
1757
1765
|
${({ $highlighted }) => $highlighted && highlightedStyles}
|
|
@@ -1793,170 +1801,162 @@ var MenuItemContainer = import_styled_components2.default.li`
|
|
|
1793
1801
|
${layout}
|
|
1794
1802
|
${space}
|
|
1795
1803
|
`;
|
|
1796
|
-
|
|
1797
|
-
// src/MenuItem/MenuItem.tsx
|
|
1798
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
1799
|
-
var MenuItem = ({
|
|
1800
|
-
id,
|
|
1801
|
-
children,
|
|
1802
|
-
role = "menuitem",
|
|
1803
|
-
label,
|
|
1804
|
-
onClick,
|
|
1805
|
-
onKeyDown,
|
|
1806
|
-
disabled: disabled2 = false,
|
|
1807
|
-
ref,
|
|
1808
|
-
color: color2,
|
|
1809
|
-
...props
|
|
1810
|
-
}) => {
|
|
1811
|
-
const { getItemProps, itemsMap, highlightedIndex, isListbox } = (0, import_react2.useContext)(MenuContext);
|
|
1812
|
-
const item = itemsMap[id] || { index: 0, id };
|
|
1813
|
-
const highlighted = highlightedIndex === item?.index;
|
|
1814
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1815
|
-
MenuItemContainer,
|
|
1816
|
-
{
|
|
1817
|
-
id,
|
|
1818
|
-
tabIndex: role !== MENU_ITEM_ROLES.LISTITEM && !disabled2 ? -1 : void 0,
|
|
1819
|
-
$highlighted: highlighted,
|
|
1820
|
-
...getItemProps?.({
|
|
1821
|
-
...isListbox ? {} : { role: "menuitem" },
|
|
1822
|
-
item,
|
|
1823
|
-
index: item.index,
|
|
1824
|
-
// This prop no longer supported in downshift
|
|
1825
|
-
// disabled,
|
|
1826
|
-
onClick,
|
|
1827
|
-
onKeyDown
|
|
1828
|
-
}),
|
|
1829
|
-
...props,
|
|
1830
|
-
children
|
|
1831
|
-
}
|
|
1832
|
-
);
|
|
1833
|
-
};
|
|
1834
|
-
|
|
1835
|
-
// src/MenuItemSelectable/MenuItemSelectable.tsx
|
|
1836
|
-
var import_react3 = require("react");
|
|
1837
|
-
var import_seeds_react_icon = require("@sproutsocial/seeds-react-icon");
|
|
1838
|
-
var import_seeds_react_checkbox2 = require("@sproutsocial/seeds-react-checkbox");
|
|
1839
|
-
var import_seeds_react_switch = require("@sproutsocial/seeds-react-switch");
|
|
1840
|
-
var import_seeds_react_radio = require("@sproutsocial/seeds-react-radio");
|
|
1841
|
-
var import_styled_components4 = require("styled-components");
|
|
1842
|
-
var import_seeds_react_box = require("@sproutsocial/seeds-react-box");
|
|
1843
|
-
|
|
1844
|
-
// src/MenuItemSelectable/styles.tsx
|
|
1845
|
-
var import_styled_components3 = __toESM(require("styled-components"));
|
|
1846
|
-
var MenuItemSelectableRow = import_styled_components3.default.div`
|
|
1804
|
+
var MenuItemRow = import_styled_components2.default.div`
|
|
1847
1805
|
display: flex;
|
|
1848
1806
|
align-items: center;
|
|
1849
1807
|
pointer-events: none;
|
|
1850
1808
|
`;
|
|
1851
|
-
var
|
|
1809
|
+
var MenuItemAction = import_styled_components2.default.div`
|
|
1852
1810
|
margin-right: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1853
1811
|
display: flex;
|
|
1854
1812
|
align-items: center;
|
|
1855
1813
|
justify-content: center;
|
|
1856
1814
|
flex-shrink: 0;
|
|
1857
1815
|
`;
|
|
1858
|
-
var
|
|
1816
|
+
var MenuItemText = import_styled_components2.default.div`
|
|
1859
1817
|
word-break: break-word;
|
|
1860
1818
|
flex-grow: 1;
|
|
1861
1819
|
min-width: 0;
|
|
1862
1820
|
`;
|
|
1863
1821
|
|
|
1864
|
-
// src/
|
|
1865
|
-
var
|
|
1822
|
+
// src/MenuItem/useOptionProps.tsx
|
|
1823
|
+
var import_react2 = require("react");
|
|
1824
|
+
var import_seeds_react_icon = require("@sproutsocial/seeds-react-icon");
|
|
1825
|
+
var import_seeds_react_checkbox2 = require("@sproutsocial/seeds-react-checkbox");
|
|
1826
|
+
var import_seeds_react_switch = require("@sproutsocial/seeds-react-switch");
|
|
1827
|
+
var import_seeds_react_radio = require("@sproutsocial/seeds-react-radio");
|
|
1828
|
+
var import_styled_components3 = require("styled-components");
|
|
1829
|
+
var import_seeds_react_box = require("@sproutsocial/seeds-react-box");
|
|
1830
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
1866
1831
|
var SelectionIndicator = ({
|
|
1867
1832
|
id,
|
|
1868
1833
|
inputType = "icon",
|
|
1869
1834
|
"aria-labelledby": labeledBy,
|
|
1870
1835
|
selected
|
|
1871
1836
|
}) => {
|
|
1872
|
-
const { space: space2 } = (0,
|
|
1837
|
+
const { space: space2 } = (0, import_styled_components3.useTheme)();
|
|
1873
1838
|
const inputStub = (e) => {
|
|
1874
1839
|
e.stopPropagation();
|
|
1875
1840
|
};
|
|
1876
1841
|
switch (inputType) {
|
|
1877
1842
|
case "checkbox":
|
|
1878
|
-
return /* @__PURE__ */ (0,
|
|
1843
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1879
1844
|
import_seeds_react_checkbox2.Checkbox,
|
|
1880
1845
|
{
|
|
1881
1846
|
onChange: () => {
|
|
1882
1847
|
},
|
|
1883
1848
|
checked: selected,
|
|
1884
1849
|
"aria-labelledby": labeledBy,
|
|
1885
|
-
id: `
|
|
1850
|
+
id: `MenuItem-${inputType}-${id}`
|
|
1886
1851
|
}
|
|
1887
1852
|
);
|
|
1888
1853
|
case "switch":
|
|
1889
|
-
return /* @__PURE__ */ (0,
|
|
1854
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1890
1855
|
import_seeds_react_switch.Switch,
|
|
1891
1856
|
{
|
|
1892
1857
|
onClick: inputStub,
|
|
1893
1858
|
checked: !!selected,
|
|
1894
1859
|
"aria-labelledby": labeledBy,
|
|
1895
|
-
id: `
|
|
1860
|
+
id: `MenuItem-${inputType}-${id}`
|
|
1896
1861
|
}
|
|
1897
1862
|
);
|
|
1898
1863
|
case "radio":
|
|
1899
|
-
return /* @__PURE__ */ (0,
|
|
1864
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1900
1865
|
import_seeds_react_radio.Radio,
|
|
1901
1866
|
{
|
|
1902
1867
|
checked: selected,
|
|
1903
|
-
id: `
|
|
1904
|
-
name: `
|
|
1868
|
+
id: `MenuItem-${inputType}-${id}`,
|
|
1869
|
+
name: `MenuItem-${inputType}`,
|
|
1905
1870
|
"aria-labelledby": labeledBy
|
|
1906
1871
|
}
|
|
1907
1872
|
);
|
|
1908
1873
|
case "icon":
|
|
1909
1874
|
if (selected) {
|
|
1910
|
-
return /* @__PURE__ */ (0,
|
|
1875
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_seeds_react_icon.Icon, { name: "check-solid", "aria-hidden": true, size: "small" });
|
|
1911
1876
|
} else {
|
|
1912
|
-
return /* @__PURE__ */ (0,
|
|
1877
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_seeds_react_box.Box, { width: space2["400"] });
|
|
1913
1878
|
}
|
|
1914
1879
|
default:
|
|
1915
1880
|
return null;
|
|
1916
1881
|
}
|
|
1917
1882
|
};
|
|
1918
|
-
var
|
|
1883
|
+
var useOptionProps = ({
|
|
1919
1884
|
id,
|
|
1920
1885
|
children,
|
|
1921
1886
|
inputType = "icon",
|
|
1922
|
-
|
|
1887
|
+
inputLabelId,
|
|
1923
1888
|
...props
|
|
1924
1889
|
}) => {
|
|
1925
|
-
const { selectedItem, selectedItems, isListbox } = (0,
|
|
1926
|
-
const selected = (0,
|
|
1890
|
+
const { selectedItem, selectedItems, isListbox } = (0, import_react2.useContext)(MenuContext);
|
|
1891
|
+
const selected = (0, import_react2.useMemo)(
|
|
1927
1892
|
() => selectedItem?.id === id || !!selectedItems?.find((item) => item?.id === id),
|
|
1928
1893
|
[selectedItem, selectedItems]
|
|
1929
1894
|
);
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1895
|
+
const label = inputLabelId || `menu-item-child-${id}`;
|
|
1896
|
+
return isListbox ? {
|
|
1897
|
+
active: selected,
|
|
1898
|
+
["aria-selected"]: selected,
|
|
1899
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(MenuItemRow, { children: [
|
|
1900
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MenuItemAction, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1901
|
+
SelectionIndicator,
|
|
1902
|
+
{
|
|
1903
|
+
id,
|
|
1904
|
+
"aria-labelledby": label,
|
|
1905
|
+
inputType,
|
|
1906
|
+
selected: !!selected
|
|
1907
|
+
}
|
|
1908
|
+
) }),
|
|
1909
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MenuItemText, { id: label, children })
|
|
1910
|
+
] }),
|
|
1911
|
+
...props
|
|
1912
|
+
} : {};
|
|
1913
|
+
};
|
|
1914
|
+
|
|
1915
|
+
// src/MenuItem/MenuItem.tsx
|
|
1916
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
1917
|
+
var MenuItem = ({
|
|
1918
|
+
id,
|
|
1919
|
+
children,
|
|
1920
|
+
onClick,
|
|
1921
|
+
onKeyDown,
|
|
1922
|
+
disabled: disabled2 = false,
|
|
1923
|
+
ref,
|
|
1924
|
+
href,
|
|
1925
|
+
color: color2,
|
|
1926
|
+
...props
|
|
1927
|
+
}) => {
|
|
1928
|
+
const { getItemProps, itemsMap, highlightedIndex, isListbox } = (0, import_react3.useContext)(MenuContext);
|
|
1929
|
+
const { ...optionProps } = useOptionProps({
|
|
1930
|
+
id,
|
|
1931
|
+
children,
|
|
1932
|
+
...props
|
|
1933
|
+
});
|
|
1934
|
+
const item = itemsMap[id] || { index: 0, id };
|
|
1935
|
+
const highlighted = highlightedIndex === item?.index;
|
|
1936
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MenuItemContainer, { role: "none", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1937
|
+
StyledMenuItem,
|
|
1938
1938
|
{
|
|
1939
|
-
active: selected,
|
|
1940
1939
|
id,
|
|
1941
|
-
|
|
1942
|
-
...
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1940
|
+
$highlighted: highlighted,
|
|
1941
|
+
...getItemProps?.({
|
|
1942
|
+
...isListbox ? {} : { role: "menuitem" },
|
|
1943
|
+
item,
|
|
1944
|
+
index: item.index,
|
|
1945
|
+
// This prop no longer supported in downshift
|
|
1946
|
+
// disabled,
|
|
1947
|
+
onClick,
|
|
1948
|
+
onKeyDown
|
|
1949
|
+
}),
|
|
1950
|
+
as: isListbox ? void 0 : href ? "a" : "button",
|
|
1951
|
+
href,
|
|
1952
|
+
children,
|
|
1953
|
+
...optionProps,
|
|
1954
|
+
...props
|
|
1955
1955
|
}
|
|
1956
|
-
);
|
|
1956
|
+
) });
|
|
1957
1957
|
};
|
|
1958
1958
|
|
|
1959
|
-
// src/
|
|
1959
|
+
// src/MenuItem/MenuItemTypes.ts
|
|
1960
1960
|
var INPUT_TYPES = {
|
|
1961
1961
|
CHECKBOX: "checkbox",
|
|
1962
1962
|
RADIO: "radio",
|
|
@@ -1968,8 +1968,8 @@ var INPUT_TYPES = {
|
|
|
1968
1968
|
var import_react4 = require("react");
|
|
1969
1969
|
|
|
1970
1970
|
// src/MenuHeader/styles.tsx
|
|
1971
|
-
var
|
|
1972
|
-
var MenuHeaderContainer =
|
|
1971
|
+
var import_styled_components4 = __toESM(require("styled-components"));
|
|
1972
|
+
var MenuHeaderContainer = import_styled_components4.default.div`
|
|
1973
1973
|
border-color: ${({ theme: theme2 }) => theme2.colors.container.border.base};
|
|
1974
1974
|
border-bottom-width: 1px;
|
|
1975
1975
|
border-bottom-style: solid;
|
|
@@ -1977,26 +1977,9 @@ var MenuHeaderContainer = import_styled_components5.default.div`
|
|
|
1977
1977
|
width: 100%;
|
|
1978
1978
|
font-size: ${({ theme: theme2 }) => theme2.typography[200].fontSize};
|
|
1979
1979
|
display: flex;
|
|
1980
|
+
flex-direction: column;
|
|
1980
1981
|
padding: ${({ theme: theme2 }) => theme2.space[350]} ${({ theme: theme2 }) => theme2.space[400]};
|
|
1981
1982
|
|
|
1982
|
-
> a {
|
|
1983
|
-
white-space: nowrap;
|
|
1984
|
-
}
|
|
1985
|
-
|
|
1986
|
-
&:first-child {
|
|
1987
|
-
flex-grow: 1;
|
|
1988
|
-
justify-self: start;
|
|
1989
|
-
}
|
|
1990
|
-
|
|
1991
|
-
&:last-child {
|
|
1992
|
-
flex-grow: 1;
|
|
1993
|
-
justify-self: end;
|
|
1994
|
-
}
|
|
1995
|
-
|
|
1996
|
-
${({ $leftAction, theme: theme2 }) => $leftAction && `
|
|
1997
|
-
padding-left: ${theme2.space[350]};
|
|
1998
|
-
`}
|
|
1999
|
-
|
|
2000
1983
|
${border}
|
|
2001
1984
|
${color}
|
|
2002
1985
|
${flexbox}
|
|
@@ -2005,23 +1988,40 @@ var MenuHeaderContainer = import_styled_components5.default.div`
|
|
|
2005
1988
|
${space}
|
|
2006
1989
|
${position}
|
|
2007
1990
|
`;
|
|
2008
|
-
var MenuTitleText =
|
|
1991
|
+
var MenuTitleText = import_styled_components4.default.h3`
|
|
2009
1992
|
color: ${({ theme: theme2 }) => theme2.colors.text.headline};
|
|
2010
1993
|
font-weight: ${({ theme: theme2 }) => theme2.fontWeights.bold};
|
|
2011
1994
|
margin: 0px;
|
|
2012
1995
|
flex-grow: 2;
|
|
2013
1996
|
justify-self: start;
|
|
2014
1997
|
|
|
1998
|
+
${({ theme: theme2 }) => theme2.typography[200]}
|
|
1999
|
+
|
|
2015
2000
|
${({ $leftAction, theme: theme2 }) => $leftAction && `
|
|
2016
2001
|
padding-left: ${theme2.space[350]};
|
|
2017
2002
|
`}
|
|
2018
|
-
|
|
2019
|
-
${({ theme: theme2 }) => theme2.typography[200]}
|
|
2020
2003
|
`;
|
|
2021
|
-
var MenuChildrenContainer =
|
|
2004
|
+
var MenuChildrenContainer = import_styled_components4.default.div`
|
|
2022
2005
|
grid-column: 1 / -1;
|
|
2023
2006
|
margin-top: ${({ theme: theme2 }) => theme2.space[300]};
|
|
2024
2007
|
`;
|
|
2008
|
+
var MenuHeaderFeatures = import_styled_components4.default.div`
|
|
2009
|
+
display: flex;
|
|
2010
|
+
|
|
2011
|
+
> a {
|
|
2012
|
+
white-space: nowrap;
|
|
2013
|
+
}
|
|
2014
|
+
|
|
2015
|
+
&:first-child {
|
|
2016
|
+
flex-grow: 1;
|
|
2017
|
+
justify-self: start;
|
|
2018
|
+
}
|
|
2019
|
+
|
|
2020
|
+
&:last-child {
|
|
2021
|
+
flex-grow: 1;
|
|
2022
|
+
justify-self: end;
|
|
2023
|
+
}
|
|
2024
|
+
`;
|
|
2025
2025
|
|
|
2026
2026
|
// src/MenuHeader/MenuHeader.tsx
|
|
2027
2027
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
@@ -2033,21 +2033,21 @@ var MenuHeader = ({
|
|
|
2033
2033
|
...rest
|
|
2034
2034
|
}) => {
|
|
2035
2035
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(MenuHeaderContainer, { $leftAction: !!leftAction, ...rest, children: [
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2036
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(MenuHeaderFeatures, { $leftAction: !!leftAction, children: [
|
|
2037
|
+
leftAction && leftAction,
|
|
2038
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuTitleText, { $leftAction: !!leftAction, children: title }),
|
|
2039
|
+
rightAction && rightAction
|
|
2040
|
+
] }),
|
|
2039
2041
|
children && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuChildrenContainer, { children })
|
|
2040
2042
|
] }) });
|
|
2041
2043
|
};
|
|
2042
2044
|
|
|
2043
2045
|
// src/MenuContent/styles.tsx
|
|
2044
|
-
var
|
|
2045
|
-
var
|
|
2046
|
+
var import_styled_components5 = __toESM(require("styled-components"));
|
|
2047
|
+
var import_react5 = require("motion/react");
|
|
2048
|
+
var StyledMenuContent = (0, import_styled_components5.default)(import_react5.motion.ul)`
|
|
2046
2049
|
margin: 0;
|
|
2047
|
-
padding:
|
|
2048
|
-
&:focus {
|
|
2049
|
-
${focusRing}
|
|
2050
|
-
}
|
|
2050
|
+
padding: 0;
|
|
2051
2051
|
`;
|
|
2052
2052
|
|
|
2053
2053
|
// src/MenuContent/MenuContent.tsx
|
|
@@ -2057,7 +2057,7 @@ var MenuContent = ({
|
|
|
2057
2057
|
children,
|
|
2058
2058
|
...rest
|
|
2059
2059
|
}) => {
|
|
2060
|
-
const { getToggleButtonProps } = useMenuContext();
|
|
2060
|
+
const { getToggleButtonProps, getMenuProps, isListbox } = useMenuContext();
|
|
2061
2061
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2062
2062
|
StyledMenuContent,
|
|
2063
2063
|
{
|
|
@@ -2066,6 +2066,13 @@ var MenuContent = ({
|
|
|
2066
2066
|
tabIndex: 0,
|
|
2067
2067
|
onKeyDown: getToggleButtonProps?.().onKeyDown,
|
|
2068
2068
|
"aria-activedescendant": getToggleButtonProps?.()["aria-activedescendant"],
|
|
2069
|
+
...getMenuProps?.(
|
|
2070
|
+
{
|
|
2071
|
+
...isListbox ? {} : { role: "menu" }
|
|
2072
|
+
},
|
|
2073
|
+
// Suppress ref error for now
|
|
2074
|
+
{ suppressRefError: true }
|
|
2075
|
+
),
|
|
2069
2076
|
...rest,
|
|
2070
2077
|
children
|
|
2071
2078
|
}
|
|
@@ -2073,13 +2080,13 @@ var MenuContent = ({
|
|
|
2073
2080
|
};
|
|
2074
2081
|
|
|
2075
2082
|
// src/MenuFooter/MenuFooter.tsx
|
|
2076
|
-
var
|
|
2083
|
+
var import_react6 = require("react");
|
|
2077
2084
|
|
|
2078
2085
|
// src/MenuFooter/styles.tsx
|
|
2079
|
-
var
|
|
2086
|
+
var import_styled_components6 = __toESM(require("styled-components"));
|
|
2080
2087
|
var import_seeds_react_box2 = require("@sproutsocial/seeds-react-box");
|
|
2081
|
-
var StyledMenuFooterBox = (0,
|
|
2082
|
-
padding: ${(p) => p.theme.space[
|
|
2088
|
+
var StyledMenuFooterBox = (0, import_styled_components6.default)(import_seeds_react_box2.Box)`
|
|
2089
|
+
padding: ${(p) => p.theme.space[400]};
|
|
2083
2090
|
border-top: 1px solid ${(p) => p.theme.colors.container.border.base};
|
|
2084
2091
|
`;
|
|
2085
2092
|
|
|
@@ -2090,19 +2097,19 @@ var MenuFooter = ({ children, ...rest }) => {
|
|
|
2090
2097
|
};
|
|
2091
2098
|
|
|
2092
2099
|
// src/MenuGroup/MenuGroup.tsx
|
|
2093
|
-
var
|
|
2100
|
+
var import_react9 = require("react");
|
|
2094
2101
|
|
|
2095
2102
|
// src/MenuGroup/styles.tsx
|
|
2096
|
-
var
|
|
2103
|
+
var import_styled_components9 = __toESM(require("styled-components"));
|
|
2097
2104
|
|
|
2098
2105
|
// ../seeds-react-text/dist/esm/index.js
|
|
2099
|
-
var
|
|
2106
|
+
var import_react7 = require("react");
|
|
2107
|
+
var import_styled_components7 = __toESM(require("styled-components"));
|
|
2100
2108
|
var import_styled_components8 = __toESM(require("styled-components"));
|
|
2101
|
-
var import_styled_components9 = __toESM(require("styled-components"));
|
|
2102
2109
|
var import_seeds_react_system_props = require("@sproutsocial/seeds-react-system-props");
|
|
2103
2110
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2104
|
-
var
|
|
2105
|
-
var Container =
|
|
2111
|
+
var import_react8 = require("react");
|
|
2112
|
+
var Container = import_styled_components8.default.span`
|
|
2106
2113
|
margin: 0;
|
|
2107
2114
|
padding-left: 0;
|
|
2108
2115
|
padding-right: 0;
|
|
@@ -2111,14 +2118,14 @@ var Container = import_styled_components9.default.span`
|
|
|
2111
2118
|
return props.isItalicized && "italic";
|
|
2112
2119
|
}};
|
|
2113
2120
|
|
|
2114
|
-
${(props) => props.truncated &&
|
|
2121
|
+
${(props) => props.truncated && import_styled_components8.css`
|
|
2115
2122
|
display: block;
|
|
2116
2123
|
overflow: hidden;
|
|
2117
2124
|
white-space: nowrap;
|
|
2118
2125
|
text-overflow: ellipsis;
|
|
2119
2126
|
`}
|
|
2120
2127
|
|
|
2121
|
-
${(props) => props.breakWord &&
|
|
2128
|
+
${(props) => props.breakWord && import_styled_components8.css`
|
|
2122
2129
|
word-break: break-word;
|
|
2123
2130
|
hyphens: auto;
|
|
2124
2131
|
`}
|
|
@@ -2130,34 +2137,34 @@ var Container = import_styled_components9.default.span`
|
|
|
2130
2137
|
${import_seeds_react_system_props.TYPOGRAPHY}
|
|
2131
2138
|
`;
|
|
2132
2139
|
var styles_default = Container;
|
|
2133
|
-
var Headline = (0,
|
|
2140
|
+
var Headline = (0, import_styled_components7.default)(styles_default)`
|
|
2134
2141
|
color: ${(props) => props.theme.colors.text.headline};
|
|
2135
2142
|
font-weight: ${(props) => props.theme.fontWeights.bold};
|
|
2136
2143
|
${(props) => props.theme.typography[400]}
|
|
2137
2144
|
`;
|
|
2138
|
-
var SubHeadline = (0,
|
|
2145
|
+
var SubHeadline = (0, import_styled_components7.default)(styles_default)`
|
|
2139
2146
|
color: ${(props) => props.theme.colors.text.headline};
|
|
2140
2147
|
font-weight: ${(props) => props.theme.fontWeights.bold};
|
|
2141
2148
|
${(props) => props.theme.typography[300]}
|
|
2142
2149
|
`;
|
|
2143
|
-
var SmallSubHeadline = (0,
|
|
2150
|
+
var SmallSubHeadline = (0, import_styled_components7.default)(styles_default)`
|
|
2144
2151
|
color: ${(props) => props.theme.colors.text.headline};
|
|
2145
2152
|
font-weight: ${(props) => props.theme.fontWeights.bold};
|
|
2146
2153
|
${(props) => props.theme.typography[200]}
|
|
2147
2154
|
`;
|
|
2148
|
-
var Byline = (0,
|
|
2155
|
+
var Byline = (0, import_styled_components7.default)(styles_default)`
|
|
2149
2156
|
color: ${(props) => props.theme.colors.text.subtext};
|
|
2150
2157
|
${(props) => props.theme.typography[200]}
|
|
2151
2158
|
`;
|
|
2152
|
-
var SmallByline = (0,
|
|
2159
|
+
var SmallByline = (0, import_styled_components7.default)(styles_default)`
|
|
2153
2160
|
color: ${(props) => props.theme.colors.text.subtext};
|
|
2154
2161
|
${(props) => props.theme.typography[100]}
|
|
2155
2162
|
`;
|
|
2156
|
-
var BodyCopy = (0,
|
|
2163
|
+
var BodyCopy = (0, import_styled_components7.default)(styles_default)`
|
|
2157
2164
|
color: ${(props) => props.theme.colors.text.body};
|
|
2158
2165
|
${(props) => props.theme.typography[300]}
|
|
2159
2166
|
`;
|
|
2160
|
-
var SmallBodyCopy = (0,
|
|
2167
|
+
var SmallBodyCopy = (0, import_styled_components7.default)(styles_default)`
|
|
2161
2168
|
color: ${(props) => props.theme.colors.text.body};
|
|
2162
2169
|
${(props) => props.theme.typography[200]}
|
|
2163
2170
|
`;
|
|
@@ -2193,13 +2200,14 @@ var Text_default = Text;
|
|
|
2193
2200
|
var src_default = Text_default;
|
|
2194
2201
|
|
|
2195
2202
|
// src/MenuGroup/styles.tsx
|
|
2196
|
-
var StyledMenuGroup =
|
|
2203
|
+
var StyledMenuGroup = import_styled_components9.default.li`
|
|
2197
2204
|
&:not(:last-child) {
|
|
2198
2205
|
border-bottom: 1px solid
|
|
2199
2206
|
${({ theme: theme2 }) => theme2.colors.container.border.base};
|
|
2200
2207
|
}
|
|
2201
2208
|
list-style: none;
|
|
2202
2209
|
margin: 0;
|
|
2210
|
+
|
|
2203
2211
|
${border}
|
|
2204
2212
|
${position}
|
|
2205
2213
|
${color}
|
|
@@ -2208,13 +2216,13 @@ var StyledMenuGroup = import_styled_components10.default.li`
|
|
|
2208
2216
|
${layout}
|
|
2209
2217
|
${space}
|
|
2210
2218
|
`;
|
|
2211
|
-
var StyledTitle = (0,
|
|
2212
|
-
margin: ${({ theme: theme2 }) => theme2.space[
|
|
2213
|
-
|
|
2219
|
+
var StyledTitle = (0, import_styled_components9.default)(src_default.SmallSubHeadline)`
|
|
2220
|
+
margin: ${({ theme: theme2 }) => theme2.space[400]} ${({ theme: theme2 }) => theme2.space[400]}
|
|
2221
|
+
0px ${({ theme: theme2 }) => theme2.space[400]};
|
|
2214
2222
|
`;
|
|
2215
|
-
var StyledMenuGroupUl =
|
|
2223
|
+
var StyledMenuGroupUl = import_styled_components9.default.ul`
|
|
2216
2224
|
margin: 0;
|
|
2217
|
-
padding:
|
|
2225
|
+
padding: 0;
|
|
2218
2226
|
`;
|
|
2219
2227
|
|
|
2220
2228
|
// src/MenuGroup/MenuGroup.tsx
|
|
@@ -2235,7 +2243,7 @@ var MenuGroup = ({
|
|
|
2235
2243
|
color: color2,
|
|
2236
2244
|
...rest,
|
|
2237
2245
|
children: [
|
|
2238
|
-
title && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledTitle, { as: titleAs, id: titleId, children: title }),
|
|
2246
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledTitle, { role: "heading", as: titleAs, id: titleId, children: title }),
|
|
2239
2247
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledMenuGroupUl, { children })
|
|
2240
2248
|
]
|
|
2241
2249
|
}
|
|
@@ -2243,24 +2251,24 @@ var MenuGroup = ({
|
|
|
2243
2251
|
};
|
|
2244
2252
|
|
|
2245
2253
|
// src/MenuRoot/MenuRoot.tsx
|
|
2246
|
-
var
|
|
2247
|
-
var
|
|
2254
|
+
var import_react10 = require("react");
|
|
2255
|
+
var import_styled_components10 = __toESM(require("styled-components"));
|
|
2248
2256
|
var import_seeds_react_popout = require("@sproutsocial/seeds-react-popout");
|
|
2249
2257
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
2250
|
-
var CustomPopoutContent = (0,
|
|
2258
|
+
var CustomPopoutContent = (0, import_styled_components10.default)(import_seeds_react_popout.Popout.Content)`
|
|
2251
2259
|
padding: 0;
|
|
2252
2260
|
margin-left: 0;
|
|
2253
2261
|
margin-right: 0;
|
|
2254
2262
|
`;
|
|
2255
2263
|
var MenuRoot = ({
|
|
2256
2264
|
children,
|
|
2257
|
-
|
|
2265
|
+
menuToggleElement,
|
|
2258
2266
|
popoutProps,
|
|
2259
2267
|
width: width2 = "300px",
|
|
2260
2268
|
...contextProps
|
|
2261
2269
|
}) => {
|
|
2262
|
-
const {
|
|
2263
|
-
const setIsOpen = (0,
|
|
2270
|
+
const { isOpen, openMenu, closeMenu } = contextProps;
|
|
2271
|
+
const setIsOpen = (0, import_react10.useCallback)(
|
|
2264
2272
|
(newIsOpen) => {
|
|
2265
2273
|
newIsOpen ? openMenu?.() : closeMenu?.();
|
|
2266
2274
|
},
|
|
@@ -2271,19 +2279,7 @@ var MenuRoot = ({
|
|
|
2271
2279
|
{
|
|
2272
2280
|
isOpen: !!isOpen,
|
|
2273
2281
|
setIsOpen,
|
|
2274
|
-
content: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CustomPopoutContent, { width: width2, children
|
|
2275
|
-
"div",
|
|
2276
|
-
{
|
|
2277
|
-
...getMenuProps?.(
|
|
2278
|
-
{
|
|
2279
|
-
...isListbox ? {} : { role: "menu" }
|
|
2280
|
-
},
|
|
2281
|
-
// Suppress ref error for now
|
|
2282
|
-
{ suppressRefError: true }
|
|
2283
|
-
),
|
|
2284
|
-
children
|
|
2285
|
-
}
|
|
2286
|
-
) }),
|
|
2282
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CustomPopoutContent, { width: width2, children }),
|
|
2287
2283
|
focusLockProps: {
|
|
2288
2284
|
// correct jerking motion when scrolling while the Popout is open
|
|
2289
2285
|
// returnFocus: false,
|
|
@@ -2291,13 +2287,13 @@ var MenuRoot = ({
|
|
|
2291
2287
|
},
|
|
2292
2288
|
disableWrapperAria: true,
|
|
2293
2289
|
...popoutProps,
|
|
2294
|
-
children:
|
|
2290
|
+
children: menuToggleElement
|
|
2295
2291
|
}
|
|
2296
2292
|
) });
|
|
2297
2293
|
};
|
|
2298
2294
|
|
|
2299
2295
|
// src/MenuLabel.tsx
|
|
2300
|
-
var
|
|
2296
|
+
var import_react11 = require("react");
|
|
2301
2297
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
2302
2298
|
var MenuLabel = ({ children, ...rest }) => {
|
|
2303
2299
|
const { getLabelProps } = useMenuContext();
|
|
@@ -2305,14 +2301,14 @@ var MenuLabel = ({ children, ...rest }) => {
|
|
|
2305
2301
|
};
|
|
2306
2302
|
|
|
2307
2303
|
// src/MenuToggleButton.tsx
|
|
2308
|
-
var
|
|
2304
|
+
var import_react12 = require("react");
|
|
2309
2305
|
var import_seeds_react_button = require("@sproutsocial/seeds-react-button");
|
|
2310
2306
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
2311
2307
|
var MenuToggleButton = ({
|
|
2312
2308
|
children,
|
|
2313
2309
|
...rest
|
|
2314
2310
|
}) => {
|
|
2315
|
-
const { getToggleButtonProps, isListbox, getDropdownProps } = (0,
|
|
2311
|
+
const { getToggleButtonProps, isListbox, getDropdownProps } = (0, import_react12.useContext)(MenuContext);
|
|
2316
2312
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2317
2313
|
import_seeds_react_button.Button,
|
|
2318
2314
|
{
|
|
@@ -2330,11 +2326,11 @@ var MenuToggleButton = ({
|
|
|
2330
2326
|
};
|
|
2331
2327
|
|
|
2332
2328
|
// src/ActionMenu/ActionMenu.tsx
|
|
2333
|
-
var
|
|
2329
|
+
var import_react14 = __toESM(require("react"));
|
|
2334
2330
|
var import_downshift2 = require("downshift");
|
|
2335
2331
|
|
|
2336
2332
|
// src/hooks/useItemsFromChildren.tsx
|
|
2337
|
-
var
|
|
2333
|
+
var import_react13 = __toESM(require("react"));
|
|
2338
2334
|
var walkAllChildren = (children, callback) => {
|
|
2339
2335
|
const walk = (element, parents2) => {
|
|
2340
2336
|
if (element === null || element === void 0)
|
|
@@ -2342,12 +2338,12 @@ var walkAllChildren = (children, callback) => {
|
|
|
2342
2338
|
callback(element, parents2);
|
|
2343
2339
|
const newParents = [...parents2, element];
|
|
2344
2340
|
const children2 = element.props?.children;
|
|
2345
|
-
|
|
2341
|
+
import_react13.default.Children.toArray(children2).forEach((child) => {
|
|
2346
2342
|
walk(child, newParents);
|
|
2347
2343
|
});
|
|
2348
2344
|
};
|
|
2349
2345
|
const parents = [];
|
|
2350
|
-
|
|
2346
|
+
import_react13.default.Children.toArray(children).forEach((child) => {
|
|
2351
2347
|
walk(child, parents);
|
|
2352
2348
|
});
|
|
2353
2349
|
};
|
|
@@ -2357,7 +2353,7 @@ var checkIfIsElement = (element, name) => {
|
|
|
2357
2353
|
var getAllMenuItems = (children) => {
|
|
2358
2354
|
const allMenuItems = [];
|
|
2359
2355
|
walkAllChildren(children, (element, parents) => {
|
|
2360
|
-
if (checkIfIsElement(element, "MenuItem")
|
|
2356
|
+
if (checkIfIsElement(element, "MenuItem")) {
|
|
2361
2357
|
allMenuItems.push({
|
|
2362
2358
|
element,
|
|
2363
2359
|
parents
|
|
@@ -2369,7 +2365,7 @@ var getAllMenuItems = (children) => {
|
|
|
2369
2365
|
var useItemsFromChildren = ({
|
|
2370
2366
|
children
|
|
2371
2367
|
}) => {
|
|
2372
|
-
const { allMenuItems, menuItemsMap } = (0,
|
|
2368
|
+
const { allMenuItems, menuItemsMap } = (0, import_react13.useMemo)(() => {
|
|
2373
2369
|
const allMenuItemElements = getAllMenuItems(children);
|
|
2374
2370
|
const menuItemsMap2 = {};
|
|
2375
2371
|
const allMenuItems2 = allMenuItemElements.map(
|
|
@@ -2417,37 +2413,50 @@ var itemToString = (item) => {
|
|
|
2417
2413
|
|
|
2418
2414
|
// src/ActionMenu/ActionMenu.tsx
|
|
2419
2415
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
2416
|
+
var handleStateChange = (changes, currentSelectedItem) => {
|
|
2417
|
+
if (!(changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter || changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton)) {
|
|
2418
|
+
return;
|
|
2419
|
+
}
|
|
2420
|
+
const selectedItem = changes.selectedItem || currentSelectedItem;
|
|
2421
|
+
if (!selectedItem)
|
|
2422
|
+
return;
|
|
2423
|
+
if (selectedItem.element?.props?.disabled) {
|
|
2424
|
+
return;
|
|
2425
|
+
}
|
|
2426
|
+
const isEnterKeyDown = changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter;
|
|
2427
|
+
const selectedItemProps = selectedItem.element?.props;
|
|
2428
|
+
if (selectedItemProps?.onClick) {
|
|
2429
|
+
const syntheticKeyboardEvent = new KeyboardEvent("keydown", {
|
|
2430
|
+
key: isEnterKeyDown ? "Enter" : " ",
|
|
2431
|
+
code: isEnterKeyDown ? "Enter" : "Space",
|
|
2432
|
+
bubbles: true,
|
|
2433
|
+
cancelable: true,
|
|
2434
|
+
view: window
|
|
2435
|
+
});
|
|
2436
|
+
selectedItemProps?.onClick?.(
|
|
2437
|
+
syntheticKeyboardEvent
|
|
2438
|
+
);
|
|
2439
|
+
}
|
|
2440
|
+
if (selectedItemProps?.href) {
|
|
2441
|
+
if (selectedItemProps.target) {
|
|
2442
|
+
window.open(selectedItemProps.href, selectedItemProps.target);
|
|
2443
|
+
} else {
|
|
2444
|
+
window.location.href = selectedItemProps?.href;
|
|
2445
|
+
}
|
|
2446
|
+
}
|
|
2447
|
+
};
|
|
2420
2448
|
var ActionMenu = ({
|
|
2421
2449
|
children,
|
|
2422
2450
|
stateReducer: externalStateReducer,
|
|
2423
2451
|
...useSelectProps
|
|
2424
2452
|
}) => {
|
|
2425
2453
|
const { allMenuItems, menuItemsMap } = useItemsFromChildren({ children });
|
|
2426
|
-
const
|
|
2427
|
-
const { selectedItem } = changes;
|
|
2428
|
-
if (selectedItem.element?.props?.disabled) {
|
|
2429
|
-
return;
|
|
2430
|
-
}
|
|
2431
|
-
if (changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter || changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton) {
|
|
2432
|
-
const isEnterKeyDown = changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter;
|
|
2433
|
-
const selectedItemProps = selectedItem.element?.props;
|
|
2434
|
-
const syntheticKeyboardEvent = new KeyboardEvent("keydown", {
|
|
2435
|
-
key: isEnterKeyDown ? "Enter" : " ",
|
|
2436
|
-
code: isEnterKeyDown ? "Enter" : "Space",
|
|
2437
|
-
bubbles: true,
|
|
2438
|
-
cancelable: true,
|
|
2439
|
-
view: window
|
|
2440
|
-
});
|
|
2441
|
-
selectedItemProps?.onClick?.(
|
|
2442
|
-
syntheticKeyboardEvent
|
|
2443
|
-
);
|
|
2444
|
-
}
|
|
2445
|
-
};
|
|
2454
|
+
const [currentSelectedItem, setCurrentSelectedItem] = import_react14.default.useState(null);
|
|
2446
2455
|
const { isOpen, ...useSelectReturnProps } = (0, import_downshift2.useSelect)({
|
|
2447
2456
|
...defaultUseSelectProps,
|
|
2448
2457
|
items: allMenuItems,
|
|
2449
2458
|
itemToString,
|
|
2450
|
-
|
|
2459
|
+
onStateChange: (changes) => handleStateChange(changes, currentSelectedItem),
|
|
2451
2460
|
stateReducer: (state, actionAndChanges) => {
|
|
2452
2461
|
let newState;
|
|
2453
2462
|
newState = useSelectStateReducer(state, actionAndChanges);
|
|
@@ -2458,6 +2467,9 @@ var ActionMenu = ({
|
|
|
2458
2467
|
},
|
|
2459
2468
|
...useSelectProps
|
|
2460
2469
|
});
|
|
2470
|
+
(0, import_react14.useEffect)(() => {
|
|
2471
|
+
setCurrentSelectedItem(useSelectReturnProps.selectedItem);
|
|
2472
|
+
}, [useSelectReturnProps.selectedItem]);
|
|
2461
2473
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2462
2474
|
MenuRoot,
|
|
2463
2475
|
{
|
|
@@ -2476,7 +2488,7 @@ var ActionMenu = ({
|
|
|
2476
2488
|
};
|
|
2477
2489
|
|
|
2478
2490
|
// src/SingleSelectMenu/SingleSelectMenu.tsx
|
|
2479
|
-
var
|
|
2491
|
+
var import_react15 = require("react");
|
|
2480
2492
|
var import_downshift3 = require("downshift");
|
|
2481
2493
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
2482
2494
|
var SingleSelectMenu = ({
|
|
@@ -2517,7 +2529,7 @@ var SingleSelectMenu = ({
|
|
|
2517
2529
|
};
|
|
2518
2530
|
|
|
2519
2531
|
// src/MultiSelectMenu/MultiSelectMenu.tsx
|
|
2520
|
-
var
|
|
2532
|
+
var import_react16 = require("react");
|
|
2521
2533
|
var import_downshift4 = require("downshift");
|
|
2522
2534
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
2523
2535
|
var selectReducerForMultiSelect = (state, actionAndChanges) => {
|
|
@@ -2587,7 +2599,6 @@ var MultiSelectMenu = ({
|
|
|
2587
2599
|
case import_downshift4.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
2588
2600
|
case import_downshift4.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
|
|
2589
2601
|
case import_downshift4.useSelect.stateChangeTypes.ItemClick:
|
|
2590
|
-
case import_downshift4.useSelect.stateChangeTypes.ToggleButtonBlur:
|
|
2591
2602
|
if (!newSelectedItem)
|
|
2592
2603
|
break;
|
|
2593
2604
|
if (selectedItems?.find((item) => item?.id === newSelectedItem.id)) {
|
|
@@ -2637,20 +2648,19 @@ var MultiSelectMenu = ({
|
|
|
2637
2648
|
MenuGroup,
|
|
2638
2649
|
MenuHeader,
|
|
2639
2650
|
MenuItem,
|
|
2651
|
+
MenuItemAction,
|
|
2640
2652
|
MenuItemContainer,
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
MenuItemSelectableRow,
|
|
2644
|
-
MenuItemSelectableText,
|
|
2653
|
+
MenuItemRow,
|
|
2654
|
+
MenuItemText,
|
|
2645
2655
|
MenuLabel,
|
|
2646
2656
|
MenuProvider,
|
|
2647
2657
|
MenuRoot,
|
|
2648
2658
|
MenuToggleButton,
|
|
2649
2659
|
MultiSelectMenu,
|
|
2650
|
-
SelectionIndicator,
|
|
2651
2660
|
SingleSelectMenu,
|
|
2652
2661
|
StyledMenuGroup,
|
|
2653
2662
|
StyledMenuGroupUl,
|
|
2663
|
+
StyledMenuItem,
|
|
2654
2664
|
StyledTitle,
|
|
2655
2665
|
defaultUseSelectProps,
|
|
2656
2666
|
useItemsFromChildren,
|