formsy-react/release/formsy-react.min.js

1 line
10 KiB
JavaScript

!function t(i,n,e){function r(o,u){if(!n[o]){if(!i[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var d=n[o]={exports:{}};i[o][0].call(d.exports,function(t){var n=i[o][1][t];return r(n?n:t)},d,d.exports,t,i,n,e)}return n[o].exports}for(var s="function"==typeof require&&require,o=0;o<e.length;o++)r(e[o]);return r}({1:[function(t,i){(function(n){var e=n.React||t("react"),r={},s=t("./validationRules.js"),o=t("./utils.js"),u=t("./Mixin.js"),a={};r.Mixin=u,r.defaults=function(t){a=t},r.addValidationRule=function(t,i){s[t]=i},r.Form=e.createClass({displayName:"Form",getInitialState:function(){return{isValid:!0,isSubmitting:!1,canChange:!1}},getDefaultProps:function(){return{onSuccess:function(){},onError:function(){},onSubmit:function(){},onValidSubmit:function(){},onInvalidSubmit:function(){},onSubmitted:function(){},onValid:function(){},onInvalid:function(){},onChange:function(){},validationErrors:null}},componentWillMount:function(){this.inputs={},this.model={}},componentDidMount:function(){this.validateForm()},componentWillUpdate:function(){var t=Object.keys(this.inputs);setTimeout(function(){if(this.isMounted()){this.props.validationErrors&&this.setInputValidationErrors(this.props.validationErrors);var i=Object.keys(this.inputs);o.arraysDiffer(t,i)&&this.validateForm()}}.bind(this),0)},submit:function(t){t.preventDefault(),this.setFormPristine(!1),this.updateModel();var i=this.mapModel();this.props.onSubmit(i,this.resetModel,this.updateInputsWithError),this.state.isValid?this.props.onValidSubmit(i,this.resetModel,this.updateInputsWithError):this.props.onInvalidSubmit(i,this.resetModel,this.updateInputsWithError)},mapModel:function(){return this.props.mapping?this.props.mapping(this.model):this.model},updateModel:function(){Object.keys(this.inputs).forEach(function(t){var i=this.inputs[t];this.model[t]=i.state._value}.bind(this))},resetModel:function(){Object.keys(this.inputs).forEach(function(t){this.inputs[t].resetValue()}.bind(this)),this.validateForm()},setInputValidationErrors:function(t){Object.keys(this.inputs).forEach(function(i){var n=this.inputs[i],e=[{_isValid:!(i in t),_serverError:t[i]}];n.setState.apply(n,e)}.bind(this))},updateInputsWithError:function(t){Object.keys(t).forEach(function(i){var n=this.inputs[i];if(!n)throw new Error("You are trying to update an input that does not exists. Verify errors object with input names. "+JSON.stringify(t));var e=[{_isValid:!1,_validationError:t[i]}];n.setState.apply(n,e)}.bind(this))},traverseChildrenAndRegisterInputs:function(t){return"object"!=typeof t||null===t?t:e.Children.map(t,function(t){return"object"!=typeof t||null===t?t:t.props&&t.props.name?e.cloneElement(t,{_attachToForm:this.attachToForm,_detachFromForm:this.detachFromForm,_validate:this.validate,_isFormDisabled:this.isFormDisabled,_isValidValue:function(t,i){return this.runValidation(t,i).isValid}.bind(this)},t.props&&t.props.children):e.cloneElement(t,{},this.traverseChildrenAndRegisterInputs(t.props&&t.props.children))},this)},isFormDisabled:function(){return this.props.disabled},getCurrentValues:function(){return Object.keys(this.inputs).reduce(function(t,i){var n=this.inputs[i];return t[i]=n.state._value,t}.bind(this),{})},setFormPristine:function(t){var i=this.inputs,n=Object.keys(i);n.forEach(function(n){var e=i[n];e.setState({_isPristine:t})}.bind(this))},validate:function(t){this.state.canChange&&this.props.onChange(this.getCurrentValues());var i=this.runValidation(t);t.setState({_isValid:i.isValid,_isRequired:i.isRequired,_validationError:i.error},this.validateForm)},runValidation:function(t,i){var n=this.getCurrentValues(),e=t.props.validationErrors,r=t.props.validationError;i=2===arguments.length?i:t.state._value;var s=this.runRules(i,n,t._validations),o=this.runRules(i,n,t._requiredValidations);"function"==typeof t.validate&&(s.failed=t.validate()?[]:["failed"]);var u=Object.keys(t._requiredValidations).length?!!o.success.length:!1,a=!(s.failed.length||this.props.validationErrors&&this.props.validationErrors[t.props.name]);return{isRequired:u,isValid:a,error:function(){return a&&!u?"":s.errors.length?s.errors[0]:this.props.validationErrors&&this.props.validationErrors[t.props.name]?this.props.validationErrors[t.props.name]:u?e[o.success[0]]||null:a?void 0:e[s.failed[0]]||r}.call(this)}},runRules:function(t,i,n){var e={errors:[],failed:[],success:[]};return Object.keys(n).length&&Object.keys(n).forEach(function(r){if(s[r]&&"function"==typeof n[r])throw new Error("Formsy does not allow you to override default validations: "+r);if(!s[r]&&"function"!=typeof n[r])throw new Error("Formsy does not have the validation rule: "+r);if("function"==typeof n[r]){var o=n[r](i,t);return"string"==typeof o?(e.errors.push(o),e.failed.push(r)):o||e.failed.push(r),void 0}if("function"!=typeof n[r]){var o=s[r](i,t,n[r]);return"string"==typeof o?(e.errors.push(o),e.failed.push(r)):o?e.success.push(r):e.failed.push(r),void 0}return e.success.push(r)}),e},validateForm:function(){var t=!0,i=this.inputs,n=Object.keys(i),e=function(){n.forEach(function(n){i[n].state._isValid||(t=!1)}.bind(this)),this.setState({isValid:t}),t?this.props.onValid():this.props.onInvalid(),this.setState({canChange:!0})}.bind(this);n.forEach(function(t,r){var s=i[t],o=this.runValidation(s);s.setState({_isValid:o.isValid,_isRequired:o.isRequired,_validationError:o.error},r===n.length-1?e:null)}.bind(this)),!n.length&&this.isMounted()&&this.setState({canChange:!0})},attachToForm:function(t){this.inputs[t.props.name]=t,this.model[t.props.name]=t.state._value,this.validate(t)},detachFromForm:function(t){delete this.inputs[t.props.name],delete this.model[t.props.name]},render:function(){return e.DOM.form({onSubmit:this.submit,className:this.props.className},this.traverseChildrenAndRegisterInputs(this.props.children))}}),n.exports||n.module||n.define&&n.define.amd||(n.Formsy=r),i.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./Mixin.js":2,"./utils.js":3,"./validationRules.js":4,react:"react"}],2:[function(t,i){var n=function(t){return"string"==typeof t?t.split(/\,(?![^{\[]*[}\]])/g).reduce(function(t,i){var n=i.split(":"),e=n.shift();if(n=n.map(function(t){try{return JSON.parse(t)}catch(i){return t}}),n.length>1)throw new Error("Formsy does not support multiple args on string validations. Use object format of validations instead.");return t[e]=n[0]||!0,t},{}):t||{}};i.exports={getInitialState:function(){return{_value:this.props.value,_isRequired:!1,_isValid:!0,_isPristine:!0,_pristineValue:this.props.value,_validationError:""}},getDefaultProps:function(){return{validationError:"",validationErrors:{}}},componentWillMount:function(){var t=function(){this.setValidations(this.props.validations,this.props.required),this.props._attachToForm(this)}.bind(this);if(!this.props.name)throw new Error("Form Input requires a name property when used");return this.props._attachToForm?(t(),void 0):setTimeout(function(){if(this.isMounted()){if(!this.props._attachToForm)throw new Error("Form Mixin requires component to be nested in a Form");t()}}.bind(this),0)},componentWillReceiveProps:function(t){this.setValidations(t.validations,t.required)},componentDidUpdate:function(t){var i=function(){return this.props.value!==t.value&&this.state._value===t.value}.bind(this);(t.validations!==this.props.validations||i())&&this.setValue(this.props.value)},componentWillUnmount:function(){this.props._detachFromForm(this)},setValidations:function(t,i){this._validations=n(t)||{},this._requiredValidations=i===!0?{isDefaultRequiredValue:!0}:n(i)},setValue:function(t){this.setState({_value:t,_isPristine:!1},function(){this.props._validate(this)}.bind(this))},resetValue:function(){this.setState({_value:this.state._pristineValue,_isPristine:!0},function(){this.props._validate(this)})},getValue:function(){return this.state._value},hasValue:function(){return""!==this.state._value},getErrorMessage:function(){return!this.isValid()||this.showRequired()?this.state._validationError:null},isFormDisabled:function(){return this.props._isFormDisabled()},isValid:function(){return this.state._isValid},isPristine:function(){return this.state._isPristine},isRequired:function(){return!!this.props.required},showRequired:function(){return this.state._isRequired},showError:function(){return!this.showRequired()&&!this.isValid()},isValidValue:function(t){return this.props._isValidValue.call(null,this,t)}}},{}],3:[function(t,i){i.exports={arraysDiffer:function(t,i){var n=!1;return t.length!==i.length?n=!0:t.forEach(function(t,e){t!==i[e]&&(n=!0)}),n}}},{}],4:[function(t,i){i.exports={isDefaultRequiredValue:function(t,i){return void 0===i||""===i},hasValue:function(t,i){return void 0!==i},matchRegexp:function(t,i,n){return void 0!==i&&!!i.match(n)},isUndefined:function(t,i){return void 0===i},isEmptyString:function(t,i){return""===i},isEmail:function(t,i){return!i||i.match(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i)},isTrue:function(t,i){return i===!0},isFalse:function(t,i){return i===!1},isNumeric:function(t,i){if("number"==typeof i)return!0;var n=void 0!==i&&i.match(/[-+]?(\d*[.])?\d+/);return n?n[0]==i:!1},isAlpha:function(t,i){return!i||i.match(/^[a-zA-Z]+$/)},isWords:function(t,i){return!i||i.match(/^[a-zA-Z\s]+$/)},isSpecialWords:function(t,i){return!i||i.match(/^[a-zA-Z\s\u00C0-\u017F]+$/)},isLength:function(t,i,n){return void 0!==i&&i.length===n},equals:function(t,i,n){return i==n},equalsField:function(t,i,n){return i==t[n]},maxLength:function(t,i,n){return void 0!==i&&i.length<=n},minLength:function(t,i,n){return void 0!==i&&i.length>=n}}},{}]},{},[1]);