import React from 'react'; import PropTypes from 'prop-types'; import { MaterialIcon } from '../material-icon/MaterialIcon.jsx'; import './NavigationMenuList.scss'; // TODO: Improve components. function NavigationMenuListItem(props) { let children = []; const attr = props.itemAttr || {}; if (void 0 === attr.className) { attr.className = ''; } else if (attr.className) { attr.className += ' '; } let textPosIndex = props.text ? (!props.icon || 'right' === props.iconPos ? 0 : 1) : -1; let iconPosIndex = props.icon ? (props.text && 'right' === props.iconPos ? 1 : 0) : -1; if (-1 < textPosIndex) { children[textPosIndex] = {props.text}; } if (-1 < iconPosIndex) { children[iconPosIndex] = ( {} ); } switch (props.itemType) { case 'link': children = ( {children} ); attr.className += 'link-item' + (props.active ? ' active' : ''); break; case 'button': case 'open-subpage': children = ( ); break; case 'label': children = ( ); attr.className = 'label-item'; break; case 'div': children = (
{props.text || null}
); break; } if ('' !== attr.className) { attr.className = ' ' + attr.className; } attr.className = attr.className.trim(); return
  • {children}
  • ; } NavigationMenuListItem.propTypes = { itemType: PropTypes.oneOf(['link', 'open-subpage', 'button', 'label', 'div']), link: PropTypes.string, icon: PropTypes.string, iconPos: PropTypes.oneOf(['left', 'right']), text: PropTypes.string, active: PropTypes.bool, divAttr: PropTypes.object, buttonAttr: PropTypes.object, itemAttr: PropTypes.object, linkAttr: PropTypes.object, }; NavigationMenuListItem.defaultProps = { itemType: 'link', iconPos: 'left', active: !1, }; export function NavigationMenuList(props) { const menuItems = props.items.map((item, index) => ); return menuItems.length ? (
    ) : null; } NavigationMenuList.propTypes = { removeVerticalPadding: PropTypes.bool, items: PropTypes.arrayOf(PropTypes.shape(NavigationMenuListItem.propTypes)).isRequired, }; NavigationMenuList.defaultProps = { removeVerticalPadding: false, };