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,
};