ango-react-components
Version:
44 lines (43 loc) • 1.8 kB
JavaScript
import React, { createContext, useState } from "react";
import classNames from "classnames";
export var MenuContext = createContext({ index: '0' });
var Menu = function (props) {
var className = props.className, mode = props.mode, style = props.style, children = props.children, defaultIndex = props.defaultIndex, onSelect = props.onSelect, defaultOpenSumMenus = props.defaultOpenSumMenus;
var _a = useState(defaultIndex), currentActive = _a[0], setActive = _a[1];
var classes = classNames('ango-menu', className, {
'menu-vertical': mode === 'vertical',
'menu-horizontal': mode !== 'vertical'
});
var handleClick = function (index) {
setActive(index);
if (onSelect) {
onSelect(index);
}
};
var passedContext = {
index: currentActive || '0',
onSelect: handleClick,
mode: mode,
defaultOpenSumMenus: defaultOpenSumMenus
};
var renderChildren = function () {
return React.Children.map(children, function (child, index) {
var childElement = child;
var displayName = childElement.type.displayName;
if (displayName === 'MenuItem' || displayName === 'SubMenu') {
return React.cloneElement(childElement, { index: index.toString() });
}
else {
console.log('Warning: child is not a MenuItem');
}
});
};
return (React.createElement("ul", { className: classes, style: style, "data-testid": 'test-menu' },
React.createElement(MenuContext.Provider, { value: passedContext }, renderChildren())));
};
Menu.defaultProps = {
defaultIndex: '0',
mode: 'horizontal',
defaultOpenSumMenus: []
};
export default Menu;