@panneau/layout
Version:
Layout core for Panneau
78 lines (76 loc) • 2.76 kB
JavaScript
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);