UNPKG

formsy-react-bootstrap

Version:

Integration of formsy validation with bootstrap

130 lines (106 loc) 4.22 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 Input = _react2.default.createClass({ displayName: 'Input', mixins: [_formsyReact2.default.Mixin, _mixins2.default], propTypes: { type: _react2.default.PropTypes.oneOf(['color', 'date', 'datetime', 'datetime-local', 'email', 'hidden', 'month', 'number', 'password', 'range', 'search', 'tel', 'text', 'time', 'url', 'week']), addonBefore: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.node]), addonAfter: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.node]), errorFeedback: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.bool, _react2.default.PropTypes.node]), successFeedback: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.bool, _react2.default.PropTypes.node]), warningFeedback: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.bool, _react2.default.PropTypes.node]), buttonBefore: _react2.default.PropTypes.node, buttonAfter: _react2.default.PropTypes.node }, changeValue: function changeValue(event) { this.setValue(event.currentTarget.value); }, renderElement: function renderElement() { var _this = this; return _react2.default.createElement(_reactBootstrap.FormControl, _extends({ ref: function ref(c) { return _this.element = c; } }, propUtilities.cleanProps(this.props), { onChange: this.changeValue, value: this.getValue(), disabled: this.props.disabled })); }, renderInputGroup: function renderInputGroup(element) { return _react2.default.createElement( _reactBootstrap.InputGroup, null, this.renderAddon(this.props.addonBefore), this.renderButton(this.props.buttonBefore), element, this.renderAddon(this.props.addonAfter), this.renderButton(this.props.buttonAfter) ); }, renderAddon: function renderAddon(addon) { if (!addon) { return false; } return _react2.default.createElement( _reactBootstrap.InputGroup.Addon, null, addon ); }, renderButton: function renderButton(button) { if (!button) { return false; } return _react2.default.createElement( _reactBootstrap.InputGroup.Button, null, _react2.default.createElement( _reactBootstrap.Button, null, button ) ); }, renderFeedback: function renderFeedback() { if (this.props.errorFeedback && this.getValidationState() === 'error') { return _react2.default.createElement( _reactBootstrap.FormControl.Feedback, null, this.props.errorFeedback ); } else if (this.props.successFeedback && this.getValidationState() === 'success') { return _react2.default.createElement( _reactBootstrap.FormControl.Feedback, null, this.props.successFeedback ); } else if (this.props.warningFeedback && this.getValidationState() === 'warning') { return _react2.default.createElement( _reactBootstrap.FormControl.Feedback, null, this.props.warningFeedback ); } else { return false; } }, render: function render() { if (this.props.type === 'hidden' || this.props.elementOnly) { return this.renderElement(); } var Layout = this.getLayout(); return _react2.default.createElement(Layout.Input, { element: this }); } }); module.exports = Input;