@panneau/layout
Version:
Layout core for Panneau
73 lines (69 loc) • 2.41 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["items", "position", "className", "onClickItem"];
/* eslint-disable react/no-array-index-key */
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import get from 'lodash/get';
import { PropTypes as PanneauPropTypes } from '@panneau/core';
import NavbarLink from './NavbarLink';
import NavbarDivider from './NavbarDivider';
var propTypes = {
link: PropTypes.string,
label: PanneauPropTypes.label,
items: PropTypes.arrayOf(PropTypes.shape({
type: PropTypes.string,
label: PanneauPropTypes.label
})),
position: PropTypes.oneOf(['left', 'center', 'right']),
className: PropTypes.string,
onClick: PropTypes.func,
onClickItem: PropTypes.func
};
var defaultProps = {
link: null,
label: null,
items: null,
position: 'left',
className: null,
onClick: null,
onClickItem: null
};
var NavbarItem = function NavbarItem(_ref) {
var items = _ref.items,
position = _ref.position,
className = _ref.className,
onClickItem = _ref.onClickItem,
linkProps = _objectWithoutProperties(_ref, _excluded);
var hasDropdown = items !== null && items.length > 0;
return /*#__PURE__*/React.createElement("li", {
className: classNames(['nav-item', _defineProperty({
dropdown: hasDropdown
}, className, className !== null)])
}, /*#__PURE__*/React.createElement(NavbarLink, _extends({}, linkProps, {
hasDropdown: hasDropdown
})), hasDropdown ? /*#__PURE__*/React.createElement("div", {
className: classNames(['dropdown-menu', {
'dropdown-menu-right': position === 'right'
}])
}, items.map(function (it, index) {
return get(it, 'type', 'item') === 'divider' ? /*#__PURE__*/React.createElement(NavbarDivider, {
key: "item-".concat(index),
isDropdown: true
}) : /*#__PURE__*/React.createElement(NavbarLink, _extends({
key: "item-".concat(index)
}, it, {
isDropdown: true,
onClick: function onClick(e) {
if (onClickItem !== null) {
onClickItem(e, it, index);
}
}
}));
})) : null);
};
NavbarItem.propTypes = propTypes;
NavbarItem.defaultProps = defaultProps;
export default NavbarItem;