UNPKG

elemental

Version:
65 lines (50 loc) 1.83 kB
'use strict'; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _react = require('react'); var _react2 = _interopRequireDefault(_react); module.exports = _react2['default'].createClass({ displayName: 'SegmentedControl', propTypes: { className: _react2['default'].PropTypes.string, equalWidthSegments: _react2['default'].PropTypes.bool, onChange: _react2['default'].PropTypes.func.isRequired, options: _react2['default'].PropTypes.array.isRequired, type: _react2['default'].PropTypes.oneOf(['default', 'muted', 'danger', 'info', 'primary', 'success', 'warning']), value: _react2['default'].PropTypes.string }, getDefaultProps: function getDefaultProps() { return { type: 'default' }; }, onChange: function onChange(value) { this.props.onChange(value); }, render: function render() { var _this = this; var componentClassName = (0, _classnames2['default'])('SegmentedControl', 'SegmentedControl--' + this.props.type, { 'SegmentedControl--equal-widths': this.props.equalWidthSegments }, this.props.className); var options = this.props.options.map(function (op) { var buttonClassName = (0, _classnames2['default'])('SegmentedControl__button', { 'is-selected': op.value === _this.props.value }); return _react2['default'].createElement( 'span', { key: 'option-' + op.value, className: 'SegmentedControl__item' }, _react2['default'].createElement( 'button', { type: 'button', onClick: _this.onChange.bind(_this, op.value), className: buttonClassName }, op.label ) ); }); return _react2['default'].createElement( 'div', { className: componentClassName }, options ); } });