wix-style-react
Version:
wix-style-react
97 lines (89 loc) • 2.53 kB
JavaScript
import SideMenuDrill from './index';
import React, { Children } from 'react';
import styles from './DrillView.scss';
import Navigation from '../core/navigation';
import PropTypes from 'prop-types';
import NavigationLink from '../core/navigation/Link';
import NavigationBackLink from '../core/navigation/BackLink';
import NavigationCategory from '../core/navigation/Category';
var SubMenu = function SubMenu(_ref) {
var children = _ref.children,
title = _ref.title,
isOpen = _ref.isOpen,
isActive = _ref.isActive,
onSelectHandler = _ref.onSelectHandler,
onBackHandler = _ref.onBackHandler,
backLabel = _ref.backLabel,
showCategory = _ref.showCategory,
badge = _ref.badge,
linkDataHook = _ref.linkDataHook,
disabled = _ref.disabled;
if (!isOpen) {
return React.createElement(
NavigationLink,
{
isActive: isActive,
onClick: onSelectHandler,
badge: badge,
withArrow: !badge,
'data-hook': linkDataHook,
disabled: disabled
},
title
);
}
var wrappedNavigation = Children.map(children, function (child) {
if (child.type === SideMenuDrill.Navigation) {
return React.createElement(
'div',
{ className: styles.openSubMenu },
React.createElement(
NavigationBackLink,
{ onBackHandler: onBackHandler },
backLabel
),
showCategory && React.createElement(
NavigationCategory,
null,
title
),
React.createElement(
Navigation,
null,
child.props.children
)
);
}
return child;
});
return React.createElement(
'div',
{ className: styles.subMenu, 'data-hook': 'menu-drill-sub-menu' },
wrappedNavigation
);
};
SubMenu.defaultProps = {
isActive: false,
isOpen: false,
onSelectHandler: function onSelectHandler() {},
onBackHandler: function onBackHandler() {},
backLabel: 'Back',
showCategory: true,
linkDataHook: 'menu-drill-sub-menu-link',
disabled: false
};
SubMenu.propTypes = {
menuKey: PropTypes.string.isRequired,
title: PropTypes.node.isRequired,
isActive: PropTypes.bool,
isOpen: PropTypes.bool,
onSelectHandler: PropTypes.func,
onBackHandler: PropTypes.func,
backLabel: PropTypes.node,
showCategory: PropTypes.bool,
badge: PropTypes.node,
linkDataHook: PropTypes.string,
children: PropTypes.node.isRequired,
disabled: PropTypes.bool
};
export default SubMenu;