UNPKG

react-form-tools

Version:

Form components with validation for React + Baobab

86 lines (63 loc) 2.78 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 _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _mixins = require('../mixins'); var _baobabReactMixins = require('baobab-react-mixins'); var _reactAddonsPureRenderMixin = require('react-addons-pure-render-mixin'); var _reactAddonsPureRenderMixin2 = _interopRequireDefault(_reactAddonsPureRenderMixin); var _baobabPropTypes = require('baobab-prop-types'); var _baobabPropTypes2 = _interopRequireDefault(_baobabPropTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _react2.default.createClass({ displayName: 'MultipleCheckBox', mixins: [_baobabReactMixins.BranchMixin, _mixins.FormComponentMixin, _mixins.ComponentActionsMixin, _reactAddonsPureRenderMixin2.default], propTypes: { value: _react2.default.PropTypes.any.isRequired, cursor: _baobabPropTypes2.default.cursor, onChange: _react2.default.PropTypes.func }, getDefaultProps: function getDefaultProps() { return { onChange: _lodash2.default.identity }; }, cursors: function cursors(props, context) { return { value: this.getCursor(props, context) }; }, onChange: function onChange(event) { var _this = this; var wasChecked = this.isChecked(); var isChecked = event.target.checked; if (isChecked === wasChecked) { return; } var value = isChecked ? _lodash2.default.concat(this.state.value, this.props.value) : _lodash2.default.without(this.state.value, this.props.value); this.setValue(value, function () { _this.setDirtyState(); _this.props.onChange(event, { value: isChecked, previousValue: !isChecked }); }); }, isChecked: function isChecked() { return _lodash2.default.includes(this.state.value, this.props.value); }, render: function render() { var props = { type: 'checkbox', onChange: this.onChange, checked: this.isChecked() }; var restProps = _lodash2.default.omit(this.props, ['value', 'cursor', 'onChange']); return _react2.default.createElement('input', _extends({}, restProps, props, { ref: 'input' })); } });