UNPKG

terra-consumer-nav

Version:

A responsive container that neatly displays logo, quicklinks, navlinks and profile.

74 lines (58 loc) 2.41 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _reactRouterDom = require('react-router-dom'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var propTypes = { url: _propTypes2.default.string.isRequired, target: _propTypes2.default.string, isExternal: _propTypes2.default.bool, activeClass: _propTypes2.default.string, handleClick: _propTypes2.default.func, children: _propTypes2.default.node.isRequired }; var defaultProps = { isExternal: false, target: '_self', handleClick: function handleClick() {} }; var SmartLink = function SmartLink(_ref) { var url = _ref.url, target = _ref.target, isExternal = _ref.isExternal, activeClass = _ref.activeClass, handleClick = _ref.handleClick, children = _ref.children, customProps = _objectWithoutProperties(_ref, ['url', 'target', 'isExternal', 'activeClass', 'handleClick', 'children']); if (isExternal || target === '_blank') { return _react2.default.createElement( 'a', _extends({}, customProps, { onClick: handleClick, target: target, href: url }), children ); } var a = document.createElement('a'); a.href = url; // fix for pathname quirk in IE : http://stackoverflow.com/questions/956233/javascript-pathname-ie-quirk var linkPath = a.pathname[0] === '/' ? a.pathname : '/' + a.pathname; return _react2.default.createElement( _reactRouterDom.NavLink, _extends({}, customProps, { exact: true, activeClassName: activeClass, to: linkPath, onClick: handleClick }), children ); }; SmartLink.propTypes = propTypes; SmartLink.defaultProps = defaultProps; exports.default = SmartLink;