diff --git a/package.json b/package.json index ccd92a3..d74bf42 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,12 @@ "validation", "react-component" ], + "dependencies": { + "form-data-to-object": "^0.1.0" + }, + "peerDependencies": { + "react": "^0.14.0-beta1" + }, "devDependencies": { "babel": "^5.6.4", "babel-core": "^5.1.11", diff --git a/src/Mixin.js b/src/Mixin.js index df655d7..d615fc7 100644 --- a/src/Mixin.js +++ b/src/Mixin.js @@ -140,10 +140,11 @@ module.exports = { return this.state._value !== ''; }, getErrorMessage: function () { - return this.getErrorMessages() && this.getErrorMessages()[0]; + var messages = this.getErrorMessages(); + return messages.length ? messages[0] : null; }, getErrorMessages: function () { - return !this.isValid() || this.showRequired() ? (this.state._externalError || this.state._validationError) : null; + return !this.isValid() || this.showRequired() ? (this.state._externalError || this.state._validationError || []) : []; }, isFormDisabled: function () { return this.context.formsy.isFormDisabled(); diff --git a/src/main.js b/src/main.js index 4218979..8c2e345 100644 --- a/src/main.js +++ b/src/main.js @@ -321,11 +321,17 @@ Formsy.Form = React.createClass({ } if (isRequired) { - return [validationErrors[requiredResults.success[0]]] || null; + var error = validationErrors[requiredResults.success[0]]; + return error ? [error] : null; } - if (!isValid) { - return [validationError]; + if (validationResults.failed.length) { + return validationResults.failed.map(function(failed) { + return validationErrors[failed] ? validationErrors[failed] : validationError; + }).filter(function(x, pos, arr) { + // Remove duplicates + return arr.indexOf(x) === pos; + }); } }.call(this))