1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
!function t(i,s,r){function e(o,u){if(!s[o]){if(!i[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(n)return n(o,!0);var h=new Error("Cannot find module '"+o+"'");throw h.code="MODULE_NOT_FOUND",h}var d=s[o]={exports:{}};i[o][0].call(d.exports,function(t){var s=i[o][1][t];return e(s?s:t)},d,d.exports,t,i,s,r)}return s[o].exports}for(var n="function"==typeof require&&require,o=0;o<r.length;o++)e(r[o]);return e}({1:[function(t,i){(function(s){var r=s.React||t("react"),e={},n=t("./validationRules.js"),o=t("./utils.js"),u=t("./Mixin.js"),a={};e.Mixin=u,e.defaults=function(t){a=t},e.addValidationRule=function(t,i){n[t]=i},e.Form=r.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={},this.registerInputs(this.props.children)},componentDidMount:function(){this.validateForm()},componentWillUpdate:function(){var t=Object.keys(this.inputs);setTimeout(function(){if(this.isMounted()){this.registerInputs(this.props.children),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){if(t.preventDefault(),this.setFormPristine(!1),!this.props.url){this.updateModel();var i=this.mapModel();return this.props.onSubmit(i,this.resetModel,this.updateInputsWithError),this.state.isValid?this.props.onValidSubmit(i,this.resetModel):this.props.onInvalidSubmit(i,this.resetModel),void 0}this.updateModel(),this.setState({isSubmitting:!0}),this.props.onSubmit(this.mapModel(),this.resetModel,this.updateInputsWithError);var s=Object.keys(this.props.headers).length&&this.props.headers||a.headers||{},r=this.props.method&&o.ajax[this.props.method.toLowerCase()]?this.props.method.toLowerCase():"post";o.ajax[r](this.props.url,this.mapModel(),this.props.contentType||a.contentType||"json",s).then(function(t){this.props.onSuccess(t),this.props.onSubmitted()}.bind(this)).catch(this.failSubmit)},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 s=this.inputs[i],r=[{_isValid:!(i in t),_serverError:t[i]}];s.setState.apply(s,r)}.bind(this))},updateInputsWithError:function(t){Object.keys(t).forEach(function(i){var s=this.inputs[i];if(!s)throw new Error("You are trying to update an input that does not exists. Verify errors object with input names. "+JSON.stringify(t));var r=[{_isValid:!1,_serverError:t[i]}];s.setState.apply(s,r)}.bind(this))},failSubmit:function(t){this.updateInputsWithError(t),this.setState({isSubmitting:!1}),this.props.onError(t),this.props.onSubmitted()},registerInputs:function(t){r.Children.forEach(t,function(t){t&&t.props&&t.props.name&&(t.props._attachToForm=this.attachToForm,t.props._detachFromForm=this.detachFromForm,t.props._validate=this.validate,t.props._isFormDisabled=this.isFormDisabled,t.props._isValidValue=function(t,i){return this.runValidation(t,i).isValid}.bind(this)),t&&t.props&&t.props.children&&this.registerInputs(t.props.children)}.bind(this))},isFormDisabled:function(){return this.props.disabled},getCurrentValues:function(){return Object.keys(this.inputs).reduce(function(t,i){var s=this.inputs[i];return t[i]=s.state._value,t}.bind(this),{})},setFormPristine:function(t){var i=this.inputs,s=Object.keys(i);s.forEach(function(s){var r=i[s];r.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 s=this.getCurrentValues(),r=t.props.validationErrors,e=t.props.validationError;i=2===arguments.length?i:t.state._value;var n=this.runRules(i,s,t._validations),o=this.runRules(i,s,t._requiredValidations);"function"==typeof t.validate&&(n.failed=t.validate()?[]:["failed"]);var u=Object.keys(t._requiredValidations).length?!!o.success.length:!1,a=!(n.failed.length||this.props.validationErrors&&this.props.validationErrors[t.props.name]);return{isRequired:u,isValid:a,error:function(){return a&&!u?"":n.errors.length?n.errors[0]:this.props.validationErrors&&this.props.validationErrors[t.props.name]?this.props.validationErrors[t.props.name]:u?r[o.success[0]]||null:a?void 0:r[n.failed[0]]||e}.call(this)}},runRules:function(t,i,s){var r={errors:[],failed:[],success:[]};return Object.keys(s).length&&Object.keys(s).forEach(function(e){if(n[e]&&"function"==typeof s[e])throw new Error("Formsy does not allow you to override default validations: "+e);if(!n[e]&&"function"!=typeof s[e])throw new Error("Formsy does not have the validation rule: "+e);if("function"==typeof s[e]){var o=s[e](i,t);return"string"==typeof o?(r.errors.push(o),r.failed.push(e)):o||r.failed.push(e),void 0}if("function"!=typeof s[e]){var o=n[e](i,t,s[e]);return"string"==typeof o?(r.errors.push(o),r.failed.push(e)):o?r.success.push(e):r.failed.push(e),void 0}return r.success.push(e)}),r},validateForm:function(){var t=!0,i=this.inputs,s=Object.keys(i),r=function(){s.forEach(function(s){i[s].state._isValid||(t=!1)}.bind(this)),this.setState({isValid:t}),t?this.props.onValid():this.props.onInvalid(),this.setState({canChange:!0})}.bind(this);s.forEach(function(t,e){var n=i[t],o=this.runValidation(n);n.setState({_isValid:o.isValid,_isRequired:o.isRequired,_validationError:o.error},e===s.length-1?r:null)}.bind(this)),!s.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 r.DOM.form({onSubmit:this.submit,className:this.props.className},this.props.children)}}),s.exports||s.module||s.define&&s.define.amd||(s.Formsy=e),i.exports=e}).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 s=function(t){return"string"==typeof t?t.split(/\,(?![^{\[]*[}\]])/g).reduce(function(t,i){var s=i.split(":"),r=s.shift();if(s=s.map(function(t){try{return JSON.parse(t)}catch(i){return t}}),s.length>1)throw new Error("Formsy does not support multiple args on string validations. Use object format of validations instead.");return t[r]=s[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){t._attachToForm=this.props._attachToForm,t._detachFromForm=this.props._detachFromForm,t._validate=this.props._validate,t._isValidValue=this.props._isValidValue,t._isFormDisabled=this.props._isFormDisabled,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=s(t)||{},this._requiredValidations=i===!0?{isDefaultRequiredValue:!0}:s(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 s=!1;return t.length!==i.length?s=!0:t.forEach(function(t,r){t!==i[r]&&(s=!0)}),s}}},{}],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,s){return void 0!==i&&!!i.match(s)},isUndefined:function(t,i){return void 0===i},isEmptyString:function(t,i){return""===i},isEmail:function(t,i){return void 0!==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 s=void 0!==i&&i.match(/[-+]?(\d*[.])?\d+/);return s?s[0]==i:!1},isAlpha:function(t,i){return void 0!==i&&i.match(/^[a-zA-Z]+$/)},isWords:function(t,i){return void 0!==i&&i.match(/^[a-zA-Z\s]+$/)},isSpecialWords:function(t,i){return void 0!==i&&i.match(/^[a-zA-Z\s\u00C0-\u017F]+$/)},isLength:function(t,i,s){return void 0!==i&&i.length===s},equals:function(t,i,s){return i==s},equalsField:function(t,i,s){return i==t[s]},maxLength:function(t,i,s){return void 0!==i&&i.length<=s},minLength:function(t,i,s){return void 0!==i&&i.length>=s}}},{}]},{},[1]); |