UNPKG

@panneau/layout

Version:
73 lines (69 loc) 2.41 kB
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;