@sproutsocial/seeds-react-menu 0.1.0 → 0.2.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/.eslintignore +6 -0
- package/.eslintrc.js +6 -2
- package/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +23 -1
- package/dist/esm/index.js +243 -217
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +104 -38
- package/dist/index.d.ts +104 -38
- package/dist/index.js +272 -243
- package/dist/index.js.map +1 -1
- package/package.json +10 -7
- package/src/ActionMenu/ActionMenu.feature +9 -3
- package/src/ActionMenu/ActionMenu.tsx +76 -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 +3 -4
- package/src/MenuContent/styles.tsx +10 -6
- package/src/MenuContext.tsx +1 -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/MenuGroupTypes.ts +1 -0
- package/src/MenuGroup/__tests__/MenuGroup.test.tsx +41 -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/__tests__/MenuHeader.typetest.tsx +1 -0
- package/src/MenuHeader/styles.tsx +21 -22
- package/src/MenuItem/MenuItem.feature +66 -26
- package/src/MenuItem/MenuItem.tsx +39 -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 +44 -3
- package/src/{MenuItemSelectable/MenuItemSelectable.tsx → MenuItem/useOptionProps.tsx} +32 -54
- package/src/MenuRoot/MenuRoot.feature +20 -10
- package/src/MenuRoot/MenuRoot.tsx +14 -18
- package/src/MenuRoot/__tests__/MenuRoot.test.tsx +168 -34
- package/src/MenuRoot/__tests__/MenuRoot.typetest.tsx +10 -10
- package/src/MultiSelectMenu/MultiSelectMenu.feature +2 -13
- package/src/MultiSelectMenu/MultiSelectMenu.tsx +9 -1
- package/src/MultiSelectMenu/__tests__/MultiSelectMenu.test.tsx +154 -153
- package/src/MultiSelectMenu/__tests__/MultiSelectMenu.typetest.tsx +10 -10
- package/src/SingleSelectMenu/SingleSelectMenu.feature +11 -0
- package/src/SingleSelectMenu/SingleSelectMenu.tsx +10 -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 +2 -4
- package/src/index.ts +0 -1
- package/src/menuTestingUtils.tsx +7 -4
- package/tsconfig.json +1 -1
- 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
|
|
|
@@ -1739,19 +1729,39 @@ var highlightedStyles = import_styled_components2.css`
|
|
|
1739
1729
|
cursor: pointer;
|
|
1740
1730
|
border: 1px solid ${({ theme: theme2 }) => theme2.colors.listItem.border.base};
|
|
1741
1731
|
background-color: ${({ theme: theme2 }) => theme2.colors.listItem.background.hover};
|
|
1732
|
+
color: ${({ theme: theme2 }) => theme2.colors.text.body};
|
|
1733
|
+
text-decoration: none;
|
|
1742
1734
|
`;
|
|
1743
1735
|
var MenuItemContainer = import_styled_components2.default.li`
|
|
1736
|
+
box-sizing: border-box;
|
|
1737
|
+
list-style-type: none;
|
|
1738
|
+
margin-left: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1739
|
+
margin-right: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1740
|
+
transition: all ${({ theme: theme2 }) => theme2.duration["fast"]};
|
|
1741
|
+
|
|
1742
|
+
&:first-child {
|
|
1743
|
+
margin-top: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1744
|
+
}
|
|
1745
|
+
|
|
1746
|
+
&:last-child {
|
|
1747
|
+
margin-bottom: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1748
|
+
}
|
|
1749
|
+
`;
|
|
1750
|
+
var StyledMenuItem = import_styled_components2.default.div`
|
|
1751
|
+
display: block;
|
|
1752
|
+
box-sizing: border-box;
|
|
1753
|
+
width: 100%;
|
|
1744
1754
|
border-radius: ${({ theme: theme2 }) => theme2.radii[500]};
|
|
1745
1755
|
background-color: ${({ theme: theme2 }) => theme2.colors.listItem.background.base};
|
|
1746
1756
|
border: 1px solid ${({ theme: theme2 }) => theme2.colors.listItem.background.base};
|
|
1747
1757
|
color: ${({ theme: theme2 }) => theme2.colors.text.body};
|
|
1748
1758
|
font-family: ${({ theme: theme2 }) => theme2.fontFamily};
|
|
1749
1759
|
font-weight: ${({ theme: theme2 }) => theme2.fontWeights.normal};
|
|
1760
|
+
text-align: left;
|
|
1761
|
+
text-decoration: none;
|
|
1750
1762
|
padding: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1751
|
-
list-style-type: none;
|
|
1752
1763
|
outline: 0;
|
|
1753
1764
|
${({ theme: theme2 }) => theme2.typography[200]};
|
|
1754
|
-
transition: all ${({ theme: theme2 }) => theme2.duration["fast"]};
|
|
1755
1765
|
|
|
1756
1766
|
/* Highlighted */
|
|
1757
1767
|
${({ $highlighted }) => $highlighted && highlightedStyles}
|
|
@@ -1793,170 +1803,166 @@ var MenuItemContainer = import_styled_components2.default.li`
|
|
|
1793
1803
|
${layout}
|
|
1794
1804
|
${space}
|
|
1795
1805
|
`;
|
|
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`
|
|
1806
|
+
var MenuItemRow = import_styled_components2.default.div`
|
|
1847
1807
|
display: flex;
|
|
1848
1808
|
align-items: center;
|
|
1849
1809
|
pointer-events: none;
|
|
1850
1810
|
`;
|
|
1851
|
-
var
|
|
1811
|
+
var MenuItemAction = import_styled_components2.default.div`
|
|
1852
1812
|
margin-right: ${({ theme: theme2 }) => theme2.space[300]};
|
|
1853
1813
|
display: flex;
|
|
1854
1814
|
align-items: center;
|
|
1855
1815
|
justify-content: center;
|
|
1856
1816
|
flex-shrink: 0;
|
|
1857
1817
|
`;
|
|
1858
|
-
var
|
|
1818
|
+
var MenuItemText = import_styled_components2.default.div`
|
|
1859
1819
|
word-break: break-word;
|
|
1860
1820
|
flex-grow: 1;
|
|
1861
1821
|
min-width: 0;
|
|
1862
1822
|
`;
|
|
1863
1823
|
|
|
1864
|
-
// src/
|
|
1865
|
-
var
|
|
1824
|
+
// src/MenuItem/useOptionProps.tsx
|
|
1825
|
+
var import_react2 = require("react");
|
|
1826
|
+
var import_seeds_react_icon = require("@sproutsocial/seeds-react-icon");
|
|
1827
|
+
var import_seeds_react_checkbox2 = require("@sproutsocial/seeds-react-checkbox");
|
|
1828
|
+
var import_seeds_react_switch = require("@sproutsocial/seeds-react-switch");
|
|
1829
|
+
var import_seeds_react_radio = require("@sproutsocial/seeds-react-radio");
|
|
1830
|
+
var import_styled_components3 = require("styled-components");
|
|
1831
|
+
var import_seeds_react_box = require("@sproutsocial/seeds-react-box");
|
|
1832
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
1866
1833
|
var SelectionIndicator = ({
|
|
1867
1834
|
id,
|
|
1868
1835
|
inputType = "icon",
|
|
1869
1836
|
"aria-labelledby": labeledBy,
|
|
1870
1837
|
selected
|
|
1871
1838
|
}) => {
|
|
1872
|
-
const { space: space2 } = (0,
|
|
1839
|
+
const { space: space2 } = (0, import_styled_components3.useTheme)();
|
|
1873
1840
|
const inputStub = (e) => {
|
|
1874
1841
|
e.stopPropagation();
|
|
1875
1842
|
};
|
|
1876
1843
|
switch (inputType) {
|
|
1877
1844
|
case "checkbox":
|
|
1878
|
-
return /* @__PURE__ */ (0,
|
|
1845
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1879
1846
|
import_seeds_react_checkbox2.Checkbox,
|
|
1880
1847
|
{
|
|
1881
1848
|
onChange: () => {
|
|
1882
1849
|
},
|
|
1883
1850
|
checked: selected,
|
|
1884
1851
|
"aria-labelledby": labeledBy,
|
|
1885
|
-
id: `
|
|
1852
|
+
id: `MenuItem-${inputType}-${id}`
|
|
1886
1853
|
}
|
|
1887
1854
|
);
|
|
1888
1855
|
case "switch":
|
|
1889
|
-
return /* @__PURE__ */ (0,
|
|
1856
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1890
1857
|
import_seeds_react_switch.Switch,
|
|
1891
1858
|
{
|
|
1892
1859
|
onClick: inputStub,
|
|
1893
1860
|
checked: !!selected,
|
|
1894
1861
|
"aria-labelledby": labeledBy,
|
|
1895
|
-
id: `
|
|
1862
|
+
id: `MenuItem-${inputType}-${id}`
|
|
1896
1863
|
}
|
|
1897
1864
|
);
|
|
1898
1865
|
case "radio":
|
|
1899
|
-
return /* @__PURE__ */ (0,
|
|
1866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1900
1867
|
import_seeds_react_radio.Radio,
|
|
1901
1868
|
{
|
|
1902
1869
|
checked: selected,
|
|
1903
|
-
id: `
|
|
1904
|
-
name: `
|
|
1870
|
+
id: `MenuItem-${inputType}-${id}`,
|
|
1871
|
+
name: `MenuItem-${inputType}`,
|
|
1905
1872
|
"aria-labelledby": labeledBy
|
|
1906
1873
|
}
|
|
1907
1874
|
);
|
|
1908
1875
|
case "icon":
|
|
1909
1876
|
if (selected) {
|
|
1910
|
-
return /* @__PURE__ */ (0,
|
|
1877
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_seeds_react_icon.Icon, { name: "check-solid", "aria-hidden": true, size: "small" });
|
|
1911
1878
|
} else {
|
|
1912
|
-
return /* @__PURE__ */ (0,
|
|
1879
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_seeds_react_box.Box, { width: space2["400"] });
|
|
1913
1880
|
}
|
|
1914
1881
|
default:
|
|
1915
1882
|
return null;
|
|
1916
1883
|
}
|
|
1917
1884
|
};
|
|
1918
|
-
var
|
|
1885
|
+
var useOptionProps = ({
|
|
1919
1886
|
id,
|
|
1920
1887
|
children,
|
|
1921
1888
|
inputType = "icon",
|
|
1922
|
-
|
|
1889
|
+
inputLabelId,
|
|
1923
1890
|
...props
|
|
1924
1891
|
}) => {
|
|
1925
|
-
const { selectedItem, selectedItems, isListbox } = (0,
|
|
1926
|
-
const selected = (0,
|
|
1892
|
+
const { selectedItem, selectedItems, isListbox } = (0, import_react2.useContext)(MenuContext);
|
|
1893
|
+
const selected = (0, import_react2.useMemo)(
|
|
1927
1894
|
() => selectedItem?.id === id || !!selectedItems?.find((item) => item?.id === id),
|
|
1895
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1928
1896
|
[selectedItem, selectedItems]
|
|
1929
1897
|
);
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1898
|
+
const label = inputLabelId || `menu-item-child-${id}`;
|
|
1899
|
+
return isListbox ? {
|
|
1900
|
+
active: selected,
|
|
1901
|
+
["aria-selected"]: selected,
|
|
1902
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(MenuItemRow, { children: [
|
|
1903
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MenuItemAction, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1904
|
+
SelectionIndicator,
|
|
1905
|
+
{
|
|
1906
|
+
id,
|
|
1907
|
+
"aria-labelledby": label,
|
|
1908
|
+
inputType,
|
|
1909
|
+
selected: !!selected
|
|
1910
|
+
}
|
|
1911
|
+
) }),
|
|
1912
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MenuItemText, { id: label, children })
|
|
1913
|
+
] }),
|
|
1914
|
+
...props
|
|
1915
|
+
} : {};
|
|
1916
|
+
};
|
|
1917
|
+
|
|
1918
|
+
// src/MenuItem/MenuItem.tsx
|
|
1919
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
1920
|
+
var MenuItem = ({
|
|
1921
|
+
id,
|
|
1922
|
+
children,
|
|
1923
|
+
onClick,
|
|
1924
|
+
onKeyDown,
|
|
1925
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1926
|
+
disabled: disabled2 = false,
|
|
1927
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1928
|
+
ref,
|
|
1929
|
+
href,
|
|
1930
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1931
|
+
color: color2,
|
|
1932
|
+
...props
|
|
1933
|
+
}) => {
|
|
1934
|
+
const { getItemProps, itemsMap, highlightedIndex, isListbox } = (0, import_react3.useContext)(MenuContext);
|
|
1935
|
+
const { ...optionProps } = useOptionProps({
|
|
1936
|
+
id,
|
|
1937
|
+
children,
|
|
1938
|
+
...props
|
|
1939
|
+
});
|
|
1940
|
+
const item = itemsMap[id] || { index: 0, id };
|
|
1941
|
+
const highlighted = highlightedIndex === item?.index;
|
|
1942
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MenuItemContainer, { role: "none", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1943
|
+
StyledMenuItem,
|
|
1938
1944
|
{
|
|
1939
|
-
active: selected,
|
|
1940
1945
|
id,
|
|
1941
|
-
|
|
1942
|
-
...
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1946
|
+
$highlighted: highlighted,
|
|
1947
|
+
...getItemProps?.({
|
|
1948
|
+
...isListbox ? {} : { role: "menuitem" },
|
|
1949
|
+
item,
|
|
1950
|
+
index: item.index,
|
|
1951
|
+
// This prop no longer supported in downshift
|
|
1952
|
+
// disabled,
|
|
1953
|
+
onClick,
|
|
1954
|
+
onKeyDown
|
|
1955
|
+
}),
|
|
1956
|
+
as: isListbox ? void 0 : href ? "a" : "button",
|
|
1957
|
+
href,
|
|
1958
|
+
children,
|
|
1959
|
+
...optionProps,
|
|
1960
|
+
...props
|
|
1955
1961
|
}
|
|
1956
|
-
);
|
|
1962
|
+
) });
|
|
1957
1963
|
};
|
|
1958
1964
|
|
|
1959
|
-
// src/
|
|
1965
|
+
// src/MenuItem/MenuItemTypes.ts
|
|
1960
1966
|
var INPUT_TYPES = {
|
|
1961
1967
|
CHECKBOX: "checkbox",
|
|
1962
1968
|
RADIO: "radio",
|
|
@@ -1968,8 +1974,8 @@ var INPUT_TYPES = {
|
|
|
1968
1974
|
var import_react4 = require("react");
|
|
1969
1975
|
|
|
1970
1976
|
// src/MenuHeader/styles.tsx
|
|
1971
|
-
var
|
|
1972
|
-
var MenuHeaderContainer =
|
|
1977
|
+
var import_styled_components4 = __toESM(require("styled-components"));
|
|
1978
|
+
var MenuHeaderContainer = import_styled_components4.default.div`
|
|
1973
1979
|
border-color: ${({ theme: theme2 }) => theme2.colors.container.border.base};
|
|
1974
1980
|
border-bottom-width: 1px;
|
|
1975
1981
|
border-bottom-style: solid;
|
|
@@ -1977,26 +1983,9 @@ var MenuHeaderContainer = import_styled_components5.default.div`
|
|
|
1977
1983
|
width: 100%;
|
|
1978
1984
|
font-size: ${({ theme: theme2 }) => theme2.typography[200].fontSize};
|
|
1979
1985
|
display: flex;
|
|
1986
|
+
flex-direction: column;
|
|
1980
1987
|
padding: ${({ theme: theme2 }) => theme2.space[350]} ${({ theme: theme2 }) => theme2.space[400]};
|
|
1981
1988
|
|
|
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
1989
|
${border}
|
|
2001
1990
|
${color}
|
|
2002
1991
|
${flexbox}
|
|
@@ -2005,23 +1994,40 @@ var MenuHeaderContainer = import_styled_components5.default.div`
|
|
|
2005
1994
|
${space}
|
|
2006
1995
|
${position}
|
|
2007
1996
|
`;
|
|
2008
|
-
var MenuTitleText =
|
|
1997
|
+
var MenuTitleText = import_styled_components4.default.h3`
|
|
2009
1998
|
color: ${({ theme: theme2 }) => theme2.colors.text.headline};
|
|
2010
1999
|
font-weight: ${({ theme: theme2 }) => theme2.fontWeights.bold};
|
|
2011
2000
|
margin: 0px;
|
|
2012
2001
|
flex-grow: 2;
|
|
2013
2002
|
justify-self: start;
|
|
2014
2003
|
|
|
2004
|
+
${({ theme: theme2 }) => theme2.typography[200]}
|
|
2005
|
+
|
|
2015
2006
|
${({ $leftAction, theme: theme2 }) => $leftAction && `
|
|
2016
2007
|
padding-left: ${theme2.space[350]};
|
|
2017
2008
|
`}
|
|
2018
|
-
|
|
2019
|
-
${({ theme: theme2 }) => theme2.typography[200]}
|
|
2020
2009
|
`;
|
|
2021
|
-
var MenuChildrenContainer =
|
|
2010
|
+
var MenuChildrenContainer = import_styled_components4.default.div`
|
|
2022
2011
|
grid-column: 1 / -1;
|
|
2023
2012
|
margin-top: ${({ theme: theme2 }) => theme2.space[300]};
|
|
2024
2013
|
`;
|
|
2014
|
+
var MenuHeaderFeatures = import_styled_components4.default.div`
|
|
2015
|
+
display: flex;
|
|
2016
|
+
|
|
2017
|
+
> a {
|
|
2018
|
+
white-space: nowrap;
|
|
2019
|
+
}
|
|
2020
|
+
|
|
2021
|
+
&:first-child {
|
|
2022
|
+
flex-grow: 1;
|
|
2023
|
+
justify-self: start;
|
|
2024
|
+
}
|
|
2025
|
+
|
|
2026
|
+
&:last-child {
|
|
2027
|
+
flex-grow: 1;
|
|
2028
|
+
justify-self: end;
|
|
2029
|
+
}
|
|
2030
|
+
`;
|
|
2025
2031
|
|
|
2026
2032
|
// src/MenuHeader/MenuHeader.tsx
|
|
2027
2033
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
@@ -2033,21 +2039,21 @@ var MenuHeader = ({
|
|
|
2033
2039
|
...rest
|
|
2034
2040
|
}) => {
|
|
2035
2041
|
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
|
-
|
|
2042
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(MenuHeaderFeatures, { $leftAction: !!leftAction, children: [
|
|
2043
|
+
leftAction && leftAction,
|
|
2044
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuTitleText, { $leftAction: !!leftAction, children: title }),
|
|
2045
|
+
rightAction && rightAction
|
|
2046
|
+
] }),
|
|
2039
2047
|
children && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuChildrenContainer, { children })
|
|
2040
2048
|
] }) });
|
|
2041
2049
|
};
|
|
2042
2050
|
|
|
2043
2051
|
// src/MenuContent/styles.tsx
|
|
2044
|
-
var
|
|
2045
|
-
var
|
|
2052
|
+
var import_styled_components5 = __toESM(require("styled-components"));
|
|
2053
|
+
var import_react5 = require("motion/react");
|
|
2054
|
+
var StyledMenuContent = (0, import_styled_components5.default)(import_react5.motion.ul)`
|
|
2046
2055
|
margin: 0;
|
|
2047
|
-
padding:
|
|
2048
|
-
&:focus {
|
|
2049
|
-
${focusRing}
|
|
2050
|
-
}
|
|
2056
|
+
padding: 0;
|
|
2051
2057
|
`;
|
|
2052
2058
|
|
|
2053
2059
|
// src/MenuContent/MenuContent.tsx
|
|
@@ -2057,7 +2063,7 @@ var MenuContent = ({
|
|
|
2057
2063
|
children,
|
|
2058
2064
|
...rest
|
|
2059
2065
|
}) => {
|
|
2060
|
-
const { getToggleButtonProps } = useMenuContext();
|
|
2066
|
+
const { getToggleButtonProps, getMenuProps, isListbox } = useMenuContext();
|
|
2061
2067
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2062
2068
|
StyledMenuContent,
|
|
2063
2069
|
{
|
|
@@ -2066,6 +2072,13 @@ var MenuContent = ({
|
|
|
2066
2072
|
tabIndex: 0,
|
|
2067
2073
|
onKeyDown: getToggleButtonProps?.().onKeyDown,
|
|
2068
2074
|
"aria-activedescendant": getToggleButtonProps?.()["aria-activedescendant"],
|
|
2075
|
+
...getMenuProps?.(
|
|
2076
|
+
{
|
|
2077
|
+
...isListbox ? {} : { role: "menu" }
|
|
2078
|
+
},
|
|
2079
|
+
// Suppress ref error for now
|
|
2080
|
+
{ suppressRefError: true }
|
|
2081
|
+
),
|
|
2069
2082
|
...rest,
|
|
2070
2083
|
children
|
|
2071
2084
|
}
|
|
@@ -2073,13 +2086,13 @@ var MenuContent = ({
|
|
|
2073
2086
|
};
|
|
2074
2087
|
|
|
2075
2088
|
// src/MenuFooter/MenuFooter.tsx
|
|
2076
|
-
var
|
|
2089
|
+
var import_react6 = require("react");
|
|
2077
2090
|
|
|
2078
2091
|
// src/MenuFooter/styles.tsx
|
|
2079
|
-
var
|
|
2092
|
+
var import_styled_components6 = __toESM(require("styled-components"));
|
|
2080
2093
|
var import_seeds_react_box2 = require("@sproutsocial/seeds-react-box");
|
|
2081
|
-
var StyledMenuFooterBox = (0,
|
|
2082
|
-
padding: ${(p) => p.theme.space[
|
|
2094
|
+
var StyledMenuFooterBox = (0, import_styled_components6.default)(import_seeds_react_box2.Box)`
|
|
2095
|
+
padding: ${(p) => p.theme.space[400]};
|
|
2083
2096
|
border-top: 1px solid ${(p) => p.theme.colors.container.border.base};
|
|
2084
2097
|
`;
|
|
2085
2098
|
|
|
@@ -2090,19 +2103,19 @@ var MenuFooter = ({ children, ...rest }) => {
|
|
|
2090
2103
|
};
|
|
2091
2104
|
|
|
2092
2105
|
// src/MenuGroup/MenuGroup.tsx
|
|
2093
|
-
var
|
|
2106
|
+
var import_react9 = require("react");
|
|
2094
2107
|
|
|
2095
2108
|
// src/MenuGroup/styles.tsx
|
|
2096
|
-
var
|
|
2109
|
+
var import_styled_components9 = __toESM(require("styled-components"));
|
|
2097
2110
|
|
|
2098
2111
|
// ../seeds-react-text/dist/esm/index.js
|
|
2099
|
-
var
|
|
2112
|
+
var import_react7 = require("react");
|
|
2113
|
+
var import_styled_components7 = __toESM(require("styled-components"));
|
|
2100
2114
|
var import_styled_components8 = __toESM(require("styled-components"));
|
|
2101
|
-
var import_styled_components9 = __toESM(require("styled-components"));
|
|
2102
2115
|
var import_seeds_react_system_props = require("@sproutsocial/seeds-react-system-props");
|
|
2103
2116
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2104
|
-
var
|
|
2105
|
-
var Container =
|
|
2117
|
+
var import_react8 = require("react");
|
|
2118
|
+
var Container = import_styled_components8.default.span`
|
|
2106
2119
|
margin: 0;
|
|
2107
2120
|
padding-left: 0;
|
|
2108
2121
|
padding-right: 0;
|
|
@@ -2111,14 +2124,14 @@ var Container = import_styled_components9.default.span`
|
|
|
2111
2124
|
return props.isItalicized && "italic";
|
|
2112
2125
|
}};
|
|
2113
2126
|
|
|
2114
|
-
${(props) => props.truncated &&
|
|
2127
|
+
${(props) => props.truncated && import_styled_components8.css`
|
|
2115
2128
|
display: block;
|
|
2116
2129
|
overflow: hidden;
|
|
2117
2130
|
white-space: nowrap;
|
|
2118
2131
|
text-overflow: ellipsis;
|
|
2119
2132
|
`}
|
|
2120
2133
|
|
|
2121
|
-
${(props) => props.breakWord &&
|
|
2134
|
+
${(props) => props.breakWord && import_styled_components8.css`
|
|
2122
2135
|
word-break: break-word;
|
|
2123
2136
|
hyphens: auto;
|
|
2124
2137
|
`}
|
|
@@ -2130,34 +2143,34 @@ var Container = import_styled_components9.default.span`
|
|
|
2130
2143
|
${import_seeds_react_system_props.TYPOGRAPHY}
|
|
2131
2144
|
`;
|
|
2132
2145
|
var styles_default = Container;
|
|
2133
|
-
var Headline = (0,
|
|
2146
|
+
var Headline = (0, import_styled_components7.default)(styles_default)`
|
|
2134
2147
|
color: ${(props) => props.theme.colors.text.headline};
|
|
2135
2148
|
font-weight: ${(props) => props.theme.fontWeights.bold};
|
|
2136
2149
|
${(props) => props.theme.typography[400]}
|
|
2137
2150
|
`;
|
|
2138
|
-
var SubHeadline = (0,
|
|
2151
|
+
var SubHeadline = (0, import_styled_components7.default)(styles_default)`
|
|
2139
2152
|
color: ${(props) => props.theme.colors.text.headline};
|
|
2140
2153
|
font-weight: ${(props) => props.theme.fontWeights.bold};
|
|
2141
2154
|
${(props) => props.theme.typography[300]}
|
|
2142
2155
|
`;
|
|
2143
|
-
var SmallSubHeadline = (0,
|
|
2156
|
+
var SmallSubHeadline = (0, import_styled_components7.default)(styles_default)`
|
|
2144
2157
|
color: ${(props) => props.theme.colors.text.headline};
|
|
2145
2158
|
font-weight: ${(props) => props.theme.fontWeights.bold};
|
|
2146
2159
|
${(props) => props.theme.typography[200]}
|
|
2147
2160
|
`;
|
|
2148
|
-
var Byline = (0,
|
|
2161
|
+
var Byline = (0, import_styled_components7.default)(styles_default)`
|
|
2149
2162
|
color: ${(props) => props.theme.colors.text.subtext};
|
|
2150
2163
|
${(props) => props.theme.typography[200]}
|
|
2151
2164
|
`;
|
|
2152
|
-
var SmallByline = (0,
|
|
2165
|
+
var SmallByline = (0, import_styled_components7.default)(styles_default)`
|
|
2153
2166
|
color: ${(props) => props.theme.colors.text.subtext};
|
|
2154
2167
|
${(props) => props.theme.typography[100]}
|
|
2155
2168
|
`;
|
|
2156
|
-
var BodyCopy = (0,
|
|
2169
|
+
var BodyCopy = (0, import_styled_components7.default)(styles_default)`
|
|
2157
2170
|
color: ${(props) => props.theme.colors.text.body};
|
|
2158
2171
|
${(props) => props.theme.typography[300]}
|
|
2159
2172
|
`;
|
|
2160
|
-
var SmallBodyCopy = (0,
|
|
2173
|
+
var SmallBodyCopy = (0, import_styled_components7.default)(styles_default)`
|
|
2161
2174
|
color: ${(props) => props.theme.colors.text.body};
|
|
2162
2175
|
${(props) => props.theme.typography[200]}
|
|
2163
2176
|
`;
|
|
@@ -2175,31 +2188,45 @@ var Text = ({ fontSize: fontSize2, children, qa, color: color2, ...rest }) => {
|
|
|
2175
2188
|
}
|
|
2176
2189
|
);
|
|
2177
2190
|
};
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
Text.
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
Text.
|
|
2190
|
-
|
|
2191
|
-
|
|
2191
|
+
var withTextLogic = (Component) => {
|
|
2192
|
+
return ({ children, ...props }) => {
|
|
2193
|
+
const qaText = typeof children === "string" ? children : void 0;
|
|
2194
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Component, { "data-qa-text": qaText, ...props, children });
|
|
2195
|
+
};
|
|
2196
|
+
};
|
|
2197
|
+
var HeadlineWithLogic = withTextLogic(Headline);
|
|
2198
|
+
HeadlineWithLogic.displayName = "Text.Headline";
|
|
2199
|
+
Text.Headline = HeadlineWithLogic;
|
|
2200
|
+
var SubHeadlineWithLogic = withTextLogic(SubHeadline);
|
|
2201
|
+
SubHeadlineWithLogic.displayName = "Text.SubHeadline";
|
|
2202
|
+
Text.SubHeadline = SubHeadlineWithLogic;
|
|
2203
|
+
var SmallSubHeadlineWithLogic = withTextLogic(SmallSubHeadline);
|
|
2204
|
+
SmallSubHeadlineWithLogic.displayName = "Text.SmallSubHeadline";
|
|
2205
|
+
Text.SmallSubHeadline = SmallSubHeadlineWithLogic;
|
|
2206
|
+
var BylineWithLogic = withTextLogic(Byline);
|
|
2207
|
+
BylineWithLogic.displayName = "Text.Byline";
|
|
2208
|
+
Text.Byline = BylineWithLogic;
|
|
2209
|
+
var SmallBylineWithLogic = withTextLogic(SmallByline);
|
|
2210
|
+
SmallBylineWithLogic.displayName = "Text.SmallByline";
|
|
2211
|
+
Text.SmallByline = SmallBylineWithLogic;
|
|
2212
|
+
var BodyCopyWithLogic = withTextLogic(BodyCopy);
|
|
2213
|
+
BodyCopyWithLogic.displayName = "Text.BodyCopy";
|
|
2214
|
+
Text.BodyCopy = BodyCopyWithLogic;
|
|
2215
|
+
var SmallBodyCopyWithLogic = withTextLogic(SmallBodyCopy);
|
|
2216
|
+
SmallBodyCopyWithLogic.displayName = "Text.SmallBodyCopy";
|
|
2217
|
+
Text.SmallBodyCopy = SmallBodyCopyWithLogic;
|
|
2192
2218
|
var Text_default = Text;
|
|
2193
2219
|
var src_default = Text_default;
|
|
2194
2220
|
|
|
2195
2221
|
// src/MenuGroup/styles.tsx
|
|
2196
|
-
var StyledMenuGroup =
|
|
2222
|
+
var StyledMenuGroup = import_styled_components9.default.li`
|
|
2197
2223
|
&:not(:last-child) {
|
|
2198
2224
|
border-bottom: 1px solid
|
|
2199
2225
|
${({ theme: theme2 }) => theme2.colors.container.border.base};
|
|
2200
2226
|
}
|
|
2201
2227
|
list-style: none;
|
|
2202
2228
|
margin: 0;
|
|
2229
|
+
|
|
2203
2230
|
${border}
|
|
2204
2231
|
${position}
|
|
2205
2232
|
${color}
|
|
@@ -2208,13 +2235,13 @@ var StyledMenuGroup = import_styled_components10.default.li`
|
|
|
2208
2235
|
${layout}
|
|
2209
2236
|
${space}
|
|
2210
2237
|
`;
|
|
2211
|
-
var StyledTitle = (0,
|
|
2212
|
-
margin: ${({ theme: theme2 }) => theme2.space[
|
|
2213
|
-
|
|
2238
|
+
var StyledTitle = (0, import_styled_components9.default)(src_default.SmallSubHeadline)`
|
|
2239
|
+
margin: ${({ theme: theme2 }) => theme2.space[400]} ${({ theme: theme2 }) => theme2.space[400]}
|
|
2240
|
+
0px ${({ theme: theme2 }) => theme2.space[400]};
|
|
2214
2241
|
`;
|
|
2215
|
-
var StyledMenuGroupUl =
|
|
2242
|
+
var StyledMenuGroupUl = import_styled_components9.default.ul`
|
|
2216
2243
|
margin: 0;
|
|
2217
|
-
padding:
|
|
2244
|
+
padding: 0;
|
|
2218
2245
|
`;
|
|
2219
2246
|
|
|
2220
2247
|
// src/MenuGroup/MenuGroup.tsx
|
|
@@ -2235,7 +2262,7 @@ var MenuGroup = ({
|
|
|
2235
2262
|
color: color2,
|
|
2236
2263
|
...rest,
|
|
2237
2264
|
children: [
|
|
2238
|
-
title && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledTitle, { as: titleAs, id: titleId, children: title }),
|
|
2265
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledTitle, { role: "heading", as: titleAs, id: titleId, children: title }),
|
|
2239
2266
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledMenuGroupUl, { children })
|
|
2240
2267
|
]
|
|
2241
2268
|
}
|
|
@@ -2243,24 +2270,24 @@ var MenuGroup = ({
|
|
|
2243
2270
|
};
|
|
2244
2271
|
|
|
2245
2272
|
// src/MenuRoot/MenuRoot.tsx
|
|
2246
|
-
var
|
|
2247
|
-
var
|
|
2273
|
+
var import_react10 = require("react");
|
|
2274
|
+
var import_styled_components10 = __toESM(require("styled-components"));
|
|
2248
2275
|
var import_seeds_react_popout = require("@sproutsocial/seeds-react-popout");
|
|
2249
2276
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
2250
|
-
var CustomPopoutContent = (0,
|
|
2277
|
+
var CustomPopoutContent = (0, import_styled_components10.default)(import_seeds_react_popout.Popout.Content)`
|
|
2251
2278
|
padding: 0;
|
|
2252
2279
|
margin-left: 0;
|
|
2253
2280
|
margin-right: 0;
|
|
2254
2281
|
`;
|
|
2255
2282
|
var MenuRoot = ({
|
|
2256
2283
|
children,
|
|
2257
|
-
|
|
2284
|
+
menuToggleElement,
|
|
2258
2285
|
popoutProps,
|
|
2259
2286
|
width: width2 = "300px",
|
|
2260
2287
|
...contextProps
|
|
2261
2288
|
}) => {
|
|
2262
|
-
const {
|
|
2263
|
-
const setIsOpen = (0,
|
|
2289
|
+
const { isOpen, openMenu, closeMenu } = contextProps;
|
|
2290
|
+
const setIsOpen = (0, import_react10.useCallback)(
|
|
2264
2291
|
(newIsOpen) => {
|
|
2265
2292
|
newIsOpen ? openMenu?.() : closeMenu?.();
|
|
2266
2293
|
},
|
|
@@ -2271,19 +2298,7 @@ var MenuRoot = ({
|
|
|
2271
2298
|
{
|
|
2272
2299
|
isOpen: !!isOpen,
|
|
2273
2300
|
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
|
-
) }),
|
|
2301
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CustomPopoutContent, { width: width2, children }),
|
|
2287
2302
|
focusLockProps: {
|
|
2288
2303
|
// correct jerking motion when scrolling while the Popout is open
|
|
2289
2304
|
// returnFocus: false,
|
|
@@ -2291,13 +2306,13 @@ var MenuRoot = ({
|
|
|
2291
2306
|
},
|
|
2292
2307
|
disableWrapperAria: true,
|
|
2293
2308
|
...popoutProps,
|
|
2294
|
-
children:
|
|
2309
|
+
children: menuToggleElement
|
|
2295
2310
|
}
|
|
2296
2311
|
) });
|
|
2297
2312
|
};
|
|
2298
2313
|
|
|
2299
2314
|
// src/MenuLabel.tsx
|
|
2300
|
-
var
|
|
2315
|
+
var import_react11 = require("react");
|
|
2301
2316
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
2302
2317
|
var MenuLabel = ({ children, ...rest }) => {
|
|
2303
2318
|
const { getLabelProps } = useMenuContext();
|
|
@@ -2305,14 +2320,14 @@ var MenuLabel = ({ children, ...rest }) => {
|
|
|
2305
2320
|
};
|
|
2306
2321
|
|
|
2307
2322
|
// src/MenuToggleButton.tsx
|
|
2308
|
-
var
|
|
2323
|
+
var import_react12 = require("react");
|
|
2309
2324
|
var import_seeds_react_button = require("@sproutsocial/seeds-react-button");
|
|
2310
2325
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
2311
2326
|
var MenuToggleButton = ({
|
|
2312
2327
|
children,
|
|
2313
2328
|
...rest
|
|
2314
2329
|
}) => {
|
|
2315
|
-
const { getToggleButtonProps, isListbox, getDropdownProps } = (0,
|
|
2330
|
+
const { getToggleButtonProps, isListbox, getDropdownProps } = (0, import_react12.useContext)(MenuContext);
|
|
2316
2331
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2317
2332
|
import_seeds_react_button.Button,
|
|
2318
2333
|
{
|
|
@@ -2330,11 +2345,11 @@ var MenuToggleButton = ({
|
|
|
2330
2345
|
};
|
|
2331
2346
|
|
|
2332
2347
|
// src/ActionMenu/ActionMenu.tsx
|
|
2333
|
-
var
|
|
2348
|
+
var import_react14 = __toESM(require("react"));
|
|
2334
2349
|
var import_downshift2 = require("downshift");
|
|
2335
2350
|
|
|
2336
2351
|
// src/hooks/useItemsFromChildren.tsx
|
|
2337
|
-
var
|
|
2352
|
+
var import_react13 = __toESM(require("react"));
|
|
2338
2353
|
var walkAllChildren = (children, callback) => {
|
|
2339
2354
|
const walk = (element, parents2) => {
|
|
2340
2355
|
if (element === null || element === void 0)
|
|
@@ -2342,12 +2357,12 @@ var walkAllChildren = (children, callback) => {
|
|
|
2342
2357
|
callback(element, parents2);
|
|
2343
2358
|
const newParents = [...parents2, element];
|
|
2344
2359
|
const children2 = element.props?.children;
|
|
2345
|
-
|
|
2360
|
+
import_react13.default.Children.toArray(children2).forEach((child) => {
|
|
2346
2361
|
walk(child, newParents);
|
|
2347
2362
|
});
|
|
2348
2363
|
};
|
|
2349
2364
|
const parents = [];
|
|
2350
|
-
|
|
2365
|
+
import_react13.default.Children.toArray(children).forEach((child) => {
|
|
2351
2366
|
walk(child, parents);
|
|
2352
2367
|
});
|
|
2353
2368
|
};
|
|
@@ -2357,7 +2372,7 @@ var checkIfIsElement = (element, name) => {
|
|
|
2357
2372
|
var getAllMenuItems = (children) => {
|
|
2358
2373
|
const allMenuItems = [];
|
|
2359
2374
|
walkAllChildren(children, (element, parents) => {
|
|
2360
|
-
if (checkIfIsElement(element, "MenuItem")
|
|
2375
|
+
if (checkIfIsElement(element, "MenuItem")) {
|
|
2361
2376
|
allMenuItems.push({
|
|
2362
2377
|
element,
|
|
2363
2378
|
parents
|
|
@@ -2369,7 +2384,7 @@ var getAllMenuItems = (children) => {
|
|
|
2369
2384
|
var useItemsFromChildren = ({
|
|
2370
2385
|
children
|
|
2371
2386
|
}) => {
|
|
2372
|
-
const { allMenuItems, menuItemsMap } = (0,
|
|
2387
|
+
const { allMenuItems, menuItemsMap } = (0, import_react13.useMemo)(() => {
|
|
2373
2388
|
const allMenuItemElements = getAllMenuItems(children);
|
|
2374
2389
|
const menuItemsMap2 = {};
|
|
2375
2390
|
const allMenuItems2 = allMenuItemElements.map(
|
|
@@ -2417,37 +2432,50 @@ var itemToString = (item) => {
|
|
|
2417
2432
|
|
|
2418
2433
|
// src/ActionMenu/ActionMenu.tsx
|
|
2419
2434
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
2435
|
+
var handleStateChange = (changes, currentSelectedItem) => {
|
|
2436
|
+
if (!(changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter || changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton)) {
|
|
2437
|
+
return;
|
|
2438
|
+
}
|
|
2439
|
+
const selectedItem = changes.selectedItem || currentSelectedItem;
|
|
2440
|
+
if (!selectedItem)
|
|
2441
|
+
return;
|
|
2442
|
+
if (selectedItem.element?.props?.disabled) {
|
|
2443
|
+
return;
|
|
2444
|
+
}
|
|
2445
|
+
const isEnterKeyDown = changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter;
|
|
2446
|
+
const selectedItemProps = selectedItem.element?.props;
|
|
2447
|
+
if (selectedItemProps?.onClick) {
|
|
2448
|
+
const syntheticKeyboardEvent = new KeyboardEvent("keydown", {
|
|
2449
|
+
key: isEnterKeyDown ? "Enter" : " ",
|
|
2450
|
+
code: isEnterKeyDown ? "Enter" : "Space",
|
|
2451
|
+
bubbles: true,
|
|
2452
|
+
cancelable: true,
|
|
2453
|
+
view: window
|
|
2454
|
+
});
|
|
2455
|
+
selectedItemProps?.onClick?.(
|
|
2456
|
+
syntheticKeyboardEvent
|
|
2457
|
+
);
|
|
2458
|
+
}
|
|
2459
|
+
if (selectedItemProps?.href) {
|
|
2460
|
+
if (selectedItemProps.target) {
|
|
2461
|
+
window.open(selectedItemProps.href, selectedItemProps.target);
|
|
2462
|
+
} else {
|
|
2463
|
+
window.location.href = selectedItemProps?.href;
|
|
2464
|
+
}
|
|
2465
|
+
}
|
|
2466
|
+
};
|
|
2420
2467
|
var ActionMenu = ({
|
|
2421
2468
|
children,
|
|
2422
2469
|
stateReducer: externalStateReducer,
|
|
2423
2470
|
...useSelectProps
|
|
2424
2471
|
}) => {
|
|
2425
2472
|
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
|
-
};
|
|
2473
|
+
const [currentSelectedItem, setCurrentSelectedItem] = import_react14.default.useState(null);
|
|
2446
2474
|
const { isOpen, ...useSelectReturnProps } = (0, import_downshift2.useSelect)({
|
|
2447
2475
|
...defaultUseSelectProps,
|
|
2448
2476
|
items: allMenuItems,
|
|
2449
2477
|
itemToString,
|
|
2450
|
-
|
|
2478
|
+
onStateChange: (changes) => handleStateChange(changes, currentSelectedItem),
|
|
2451
2479
|
stateReducer: (state, actionAndChanges) => {
|
|
2452
2480
|
let newState;
|
|
2453
2481
|
newState = useSelectStateReducer(state, actionAndChanges);
|
|
@@ -2458,6 +2486,9 @@ var ActionMenu = ({
|
|
|
2458
2486
|
},
|
|
2459
2487
|
...useSelectProps
|
|
2460
2488
|
});
|
|
2489
|
+
(0, import_react14.useEffect)(() => {
|
|
2490
|
+
setCurrentSelectedItem(useSelectReturnProps.selectedItem);
|
|
2491
|
+
}, [useSelectReturnProps.selectedItem]);
|
|
2461
2492
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2462
2493
|
MenuRoot,
|
|
2463
2494
|
{
|
|
@@ -2476,7 +2507,7 @@ var ActionMenu = ({
|
|
|
2476
2507
|
};
|
|
2477
2508
|
|
|
2478
2509
|
// src/SingleSelectMenu/SingleSelectMenu.tsx
|
|
2479
|
-
var
|
|
2510
|
+
var import_react15 = require("react");
|
|
2480
2511
|
var import_downshift3 = require("downshift");
|
|
2481
2512
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
2482
2513
|
var SingleSelectMenu = ({
|
|
@@ -2517,7 +2548,7 @@ var SingleSelectMenu = ({
|
|
|
2517
2548
|
};
|
|
2518
2549
|
|
|
2519
2550
|
// src/MultiSelectMenu/MultiSelectMenu.tsx
|
|
2520
|
-
var
|
|
2551
|
+
var import_react16 = require("react");
|
|
2521
2552
|
var import_downshift4 = require("downshift");
|
|
2522
2553
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
2523
2554
|
var selectReducerForMultiSelect = (state, actionAndChanges) => {
|
|
@@ -2587,7 +2618,6 @@ var MultiSelectMenu = ({
|
|
|
2587
2618
|
case import_downshift4.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
2588
2619
|
case import_downshift4.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
|
|
2589
2620
|
case import_downshift4.useSelect.stateChangeTypes.ItemClick:
|
|
2590
|
-
case import_downshift4.useSelect.stateChangeTypes.ToggleButtonBlur:
|
|
2591
2621
|
if (!newSelectedItem)
|
|
2592
2622
|
break;
|
|
2593
2623
|
if (selectedItems?.find((item) => item?.id === newSelectedItem.id)) {
|
|
@@ -2637,20 +2667,19 @@ var MultiSelectMenu = ({
|
|
|
2637
2667
|
MenuGroup,
|
|
2638
2668
|
MenuHeader,
|
|
2639
2669
|
MenuItem,
|
|
2670
|
+
MenuItemAction,
|
|
2640
2671
|
MenuItemContainer,
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
MenuItemSelectableRow,
|
|
2644
|
-
MenuItemSelectableText,
|
|
2672
|
+
MenuItemRow,
|
|
2673
|
+
MenuItemText,
|
|
2645
2674
|
MenuLabel,
|
|
2646
2675
|
MenuProvider,
|
|
2647
2676
|
MenuRoot,
|
|
2648
2677
|
MenuToggleButton,
|
|
2649
2678
|
MultiSelectMenu,
|
|
2650
|
-
SelectionIndicator,
|
|
2651
2679
|
SingleSelectMenu,
|
|
2652
2680
|
StyledMenuGroup,
|
|
2653
2681
|
StyledMenuGroupUl,
|
|
2682
|
+
StyledMenuItem,
|
|
2654
2683
|
StyledTitle,
|
|
2655
2684
|
defaultUseSelectProps,
|
|
2656
2685
|
useItemsFromChildren,
|