UNPKG

terra-consumer-nav

Version:

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

106 lines (76 loc) 2.96 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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 _terraToggle = require('terra-toggle'); var _terraToggle2 = _interopRequireDefault(_terraToggle); var _terraArrange = require('terra-arrange'); var _terraArrange2 = _interopRequireDefault(_terraArrange); var _IconChevronDown = require('terra-icon/lib/icon/IconChevronDown'); var _IconChevronDown2 = _interopRequireDefault(_IconChevronDown); var _IconChevronUp = require('terra-icon/lib/icon/IconChevronUp'); var _IconChevronUp2 = _interopRequireDefault(_IconChevronUp); var _NavToggler = require('./NavToggler.scss'); var _NavToggler2 = _interopRequireDefault(_NavToggler); 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 cx = _bind2.default.bind(_NavToggler2.default); var propTypes = { /** * Element to be displayed on top of the button that opens the toggle content. */ header: _propTypes2.default.element, /** * Function callback when the toggle component is clicked. */ handleToggle: _propTypes2.default.func.isRequired, /** * Whether or not the content should be toggled open or not. */ isOpen: _propTypes2.default.bool, /** * Items to be displayed within the toggler. */ children: _propTypes2.default.node }; var defaultProps = { isOpen: false }; var NavToggler = function NavToggler(_ref) { var header = _ref.header, handleToggle = _ref.handleToggle, isOpen = _ref.isOpen, children = _ref.children, customProps = _objectWithoutProperties(_ref, ['header', 'handleToggle', 'isOpen', 'children']); var toggleIcon = isOpen ? _react2.default.createElement(_IconChevronUp2.default, null) : _react2.default.createElement(_IconChevronDown2.default, null); return _react2.default.createElement( 'div', customProps, _react2.default.createElement( 'button', { className: cx('toggle-header'), onClick: function onClick() { return handleToggle(!isOpen); } }, _react2.default.createElement(_terraArrange2.default, { alignFill: 'stretch', alignFitEnd: 'center', fill: header, fitEnd: toggleIcon }) ), _react2.default.createElement( _terraToggle2.default, { isOpen: isOpen, isAnimated: true, className: cx('toggler') }, children ) ); }; NavToggler.propTypes = propTypes; NavToggler.defaultProps = defaultProps; exports.default = NavToggler;