@guardian/threads
Version:
21 lines • 1.21 kB
JavaScript
import React, { Children, useState } from 'react';
import { MenuItem } from './MenuItem';
import { MdExpandMore, MdExpandLess } from 'react-icons/md';
import styles from './Menu.module.css';
export var MenuGroup = function (_a) {
var defaultOpen = _a.defaultOpen, children = _a.children, expandable = _a.expandable, label = _a.label, control = _a.control;
var _b = useState(!!defaultOpen), open = _b[0], setOpen = _b[1];
var wrappedControl = undefined;
if (control) {
wrappedControl = React.cloneElement(control, {
onClick: function (ev) {
ev.stopPropagation();
control.props.onClick();
},
});
}
return (React.createElement(React.Fragment, null,
React.createElement(MenuItem, { label: label, icon: open && expandable ? React.createElement(MdExpandLess, null) : React.createElement(MdExpandMore, null), onClick: function () { return setOpen(!open); }, control: wrappedControl }),
open && expandable && (React.createElement("ul", { className: styles.nested }, Children.map(children, function (item) { return (React.createElement("li", null, item)); })))));
};
//# sourceMappingURL=MenuGroup.js.map