UNPKG

terra-consumer-nav

Version:

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

110 lines (81 loc) 2.98 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 _bind = require('classnames/bind'); var _bind2 = _interopRequireDefault(_bind); var _terraCard = require('terra-card'); var _terraCard2 = _interopRequireDefault(_terraCard); var _NavLogo = require('./NavLogo.scss'); var _NavLogo2 = _interopRequireDefault(_NavLogo); var _SmartLink = require('../smart-link/SmartLink'); var _SmartLink2 = _interopRequireDefault(_SmartLink); 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 = { /** * The url of the logo to be shown. */ url: _propTypes2.default.string, /** * The alternate text that is read by screen readers are displayed if the image fails to load. */ altText: _propTypes2.default.string, /** * Whether or not the logo should be placed on top of a white card. */ isCard: _propTypes2.default.bool, /** * Props for a smartlink */ link: _propTypes2.default.shape({ url: _propTypes2.default.string.isRequired, isExternal: _propTypes2.default.bool }) }; var defaultProps = { altText: 'Client Logo', isCard: false }; var cx = _bind2.default.bind(_NavLogo2.default); var NavLogo = function NavLogo(_ref) { var url = _ref.url, altText = _ref.altText, isCard = _ref.isCard, link = _ref.link, customProps = _objectWithoutProperties(_ref, ['url', 'altText', 'isCard', 'link']); var imgProps = _extends({ className: cx('img') }, url ? { src: url, alt: altText } : { children: altText }); var LogoElement = url ? 'img' : 'p'; var imgTag = _react2.default.createElement(LogoElement, imgProps); var imgContent = link ? _react2.default.createElement( _SmartLink2.default, link, imgTag, ' ' ) : imgTag; var body = isCard && !!url ? _react2.default.createElement( _terraCard2.default.Body, null, ' ', imgContent, ' ' ) : imgContent; var domNode = isCard && !!url ? _terraCard2.default : 'div'; var logoClassNames = cx('logo-container', customProps.className); return _react2.default.createElement(domNode, _extends({}, customProps, { className: logoClassNames }), body); }; NavLogo.propTypes = propTypes; NavLogo.defaultProps = defaultProps; exports.default = NavLogo;