UNPKG

@panneau/layout

Version:
78 lines (76 loc) 2.76 kB
import _extends from "@babel/runtime/helpers/extends"; import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import isObject from 'lodash/isObject'; import isArray from 'lodash/isArray'; import { FormattedMessage } from 'react-intl'; import { Link } from 'react-router-dom'; import { PropTypes as PanneauPropTypes, withUrlGenerator } from '@panneau/core'; var propTypes = { urlGenerator: PanneauPropTypes.urlGenerator, link: PropTypes.string, linkRoute: PropTypes.string, label: PanneauPropTypes.label, external: PropTypes.bool, isDropdown: PropTypes.bool, hasDropdown: PropTypes.bool, className: PropTypes.string, onClick: PropTypes.func }; var defaultProps = { urlGenerator: null, link: null, linkRoute: null, label: null, external: false, isDropdown: false, hasDropdown: false, className: null, onClick: null }; var NavbarLink = function NavbarLink(_ref) { var urlGenerator = _ref.urlGenerator, link = _ref.link, linkRoute = _ref.linkRoute, external = _ref.external, label = _ref.label, isDropdown = _ref.isDropdown, hasDropdown = _ref.hasDropdown, className = _ref.className, onClick = _ref.onClick; var inner = /*#__PURE__*/React.createElement(Fragment, null, isObject(label) && typeof label.id !== 'undefined' ? /*#__PURE__*/React.createElement(FormattedMessage, label || null) : label || '', hasDropdown ? ' ' : null, hasDropdown ? /*#__PURE__*/React.createElement("span", { className: "caret" }) : null); var linkClassNames = classNames(_defineProperty({ 'nav-link': !isDropdown, 'dropdown-item': isDropdown, 'dropdown-toggle': hasDropdown }, className, className !== null)); var dropdownProps = hasDropdown ? { role: 'button', 'data-toggle': 'dropdown', 'aria-haspopup': 'true', 'aria-expanded': 'false' } : null; var finalLinkRoute = linkRoute !== null && urlGenerator ? urlGenerator.route.apply(urlGenerator, _toConsumableArray(isArray(linkRoute) ? linkRoute : [linkRoute])) : null; var finalLink = link || finalLinkRoute || '#'; return external ? /*#__PURE__*/React.createElement("a", _extends({ href: finalLink, className: linkClassNames }, dropdownProps, { onClick: onClick }), inner) : /*#__PURE__*/React.createElement(Link, _extends({ to: { pathname: finalLink }, className: linkClassNames }, dropdownProps, { onClick: onClick }), inner); }; NavbarLink.propTypes = propTypes; NavbarLink.defaultProps = defaultProps; export default withUrlGenerator()(NavbarLink);