UNPKG

formsy-react-bootstrap

Version:

Integration of formsy validation with bootstrap

109 lines (86 loc) 3.12 kB
'use strict'; 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 _formsyReact = require('formsy-react'); var _formsyReact2 = _interopRequireDefault(_formsyReact); var _mixins = require('./mixins'); var _mixins2 = _interopRequireDefault(_mixins); var _reactBootstrap = require('react-bootstrap'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var propUtilities = require('./propUtilities'); var Checkbox = _react2.default.createClass({ displayName: 'Checkbox', mixins: [_formsyReact2.default.Mixin, _mixins2.default], propTypes: { name: _react2.default.PropTypes.string.isRequired, options: _react2.default.PropTypes.array }, changeValue: function changeValue(event) { var target = event.currentTarget; this.setValue(target.checked); this.props.onChange(this.props.name, target.checked); }, changeCheckbox: function changeCheckbox() { var _this = this; var value = []; this.props.options.forEach(function (option, key) { if (_this['element-' + key].checked) { value.push(option.value); } }); this.setValue(value); this.props.onChange(this.props.name, value); }, getRowLabel: function getRowLabel() { return this.props.rowLabel; }, renderElement: function renderElement() { var _this2 = this; if (this.props.options) { var controls = this.props.options.map(function (checkbox, key) { var checked = _this2.getValue() ? _this2.getValue().indexOf(checkbox.value) !== -1 : false; var disabled = _this2.isFormDisabled() || checkbox.disabled || _this2.props.disabled; return _react2.default.createElement( _reactBootstrap.Checkbox, _extends({ inputRef: function inputRef(c) { return _this2['element-' + key] = c; }, checked: checked, value: checkbox.value, onChange: _this2.changeCheckbox, disabled: disabled, key: key }, _this2.props.inline ? { inline: true } : {}), checkbox.label ); }); return controls; } return _react2.default.createElement( _reactBootstrap.Checkbox, _extends({ ref: function ref(c) { return _this2.element = c; } }, propUtilities.cleanProps(this.props), { onChange: this.changeValue, checked: this.getValue() === true }), this.props.label ); }, render: function render() { if (this.props.elementOnly) return _react2.default.createElement( 'span', null, ' ', this.renderElement(), ' ' ); var Layout = this.getLayout(); return _react2.default.createElement(Layout.Checkbox, { element: this }); } }); module.exports = Checkbox;