terra-consumer-nav
Version:
A responsive container that neatly displays logo, quicklinks, navlinks and profile.
106 lines (76 loc) • 2.96 kB
JavaScript
'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;