a-plus-forms
Advanced tools
Comparing version 0.4.1 to 0.5.0
@@ -1,2 +0,2 @@ | ||
"use strict"; | ||
'use strict'; | ||
@@ -7,2 +7,4 @@ Object.defineProperty(exports, "__esModule", { | ||
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; }; | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
@@ -29,2 +31,62 @@ | ||
exports.default = ValidationError; | ||
exports.default = ValidationError; | ||
var extractErrorsFor = exports.extractErrorsFor = function extractErrorsFor(field, options) { | ||
var _field$context$APFErr = field.context.APFError, | ||
APFError = _field$context$APFErr === undefined ? {} : _field$context$APFErr; | ||
var _field$props = field.props, | ||
propsError = _field$props.error, | ||
name = _field$props.name; | ||
var error = propsError || APFError[name]; | ||
if (error && typeof error !== 'string') { | ||
// nested errors | ||
var nestedErrors = error; | ||
if (options.nested) { | ||
nestedErrors = _extends({}, error); | ||
// filter out the existing nested fields | ||
var _field$stateManager$s = field.stateManager.strategy.fields, | ||
_fields = _field$stateManager$s === undefined ? [] : _field$stateManager$s; | ||
for (var i = 0; i < _fields.length; i++) { | ||
var _name = _fields[i].name; | ||
if (_name) delete nestedErrors[_name]; | ||
} | ||
} | ||
return nestedErrorToString(nestedErrors); | ||
} | ||
return error; | ||
}; | ||
function nestedErrorToString(errors) { | ||
var messages = []; | ||
var keys = Object.keys(errors); | ||
for (var i = 0; i < keys.length; i++) { | ||
var error = errors[keys[i]]; | ||
if (error && typeof error !== 'string') { | ||
error = nestedErrorToString(error); | ||
} | ||
messages.push((keys[i] + ' ' + error).trim()); | ||
} | ||
return humanizeMessages(messages); | ||
} | ||
function humanizeMessages(list) { | ||
var lastMessage = list.pop(); | ||
if (list.length > 0) { | ||
return list.join(', ') + ', and ' + lastMessage; | ||
} | ||
return lastMessage; | ||
} |
@@ -29,2 +29,4 @@ 'use strict'; | ||
var _error = require('./error'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -157,15 +159,3 @@ | ||
get: function get() { | ||
var _context$APFError = this.context.APFError, | ||
APFError = _context$APFError === undefined ? {} : _context$APFError; | ||
var _props3 = this.props, | ||
propsError = _props3.error, | ||
name = _props3.name; | ||
var error = propsError || APFError[name]; | ||
if (options.nested && typeof error !== 'string') { | ||
return error && error[''] || null; // delegate to the sub-fields | ||
} | ||
return error; | ||
return (0, _error.extractErrorsFor)(this, options); | ||
} | ||
@@ -172,0 +162,0 @@ }, { |
@@ -34,2 +34,4 @@ 'use strict'; | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
@@ -64,3 +66,3 @@ | ||
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Form.__proto__ || Object.getPrototypeOf(Form)).call.apply(_ref2, [this].concat(args))), _this), _this.state = { errors: null, dirty: false }, _this.onChange = function (value) { | ||
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Form.__proto__ || Object.getPrototypeOf(Form)).call.apply(_ref2, [this].concat(args))), _this), _this.state = { errors: null, dirty: false, disabled: false }, _this.onChange = function (value) { | ||
_this.props.onChange(value); | ||
@@ -79,11 +81,4 @@ | ||
var result = _this.props.onSubmit(_this.value); | ||
if (isPromisish(result)) { | ||
result.catch(function (error) { | ||
if (error instanceof _error2.default) { | ||
_this.handleErrors(error.errors); | ||
} else { | ||
throw error; | ||
} | ||
}); | ||
_this.waitForServerResponse(result); | ||
} | ||
@@ -123,2 +118,57 @@ } | ||
}, { | ||
key: 'waitForServerResponse', | ||
value: function () { | ||
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(request) { | ||
return regeneratorRuntime.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
this.setState({ disabled: true }); | ||
_context.prev = 1; | ||
_context.next = 4; | ||
return request; | ||
case 4: | ||
_context.next = 13; | ||
break; | ||
case 6: | ||
_context.prev = 6; | ||
_context.t0 = _context['catch'](1); | ||
if (!(_context.t0 instanceof _error2.default)) { | ||
_context.next = 12; | ||
break; | ||
} | ||
this.handleErrors(_context.t0.errors); | ||
_context.next = 13; | ||
break; | ||
case 12: | ||
throw _context.t0; | ||
case 13: | ||
_context.prev = 13; | ||
this.setState({ disabled: false }); | ||
this.forceUpdate(); | ||
return _context.finish(13); | ||
case 17: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, this, [[1, 6, 13, 17]]); | ||
})); | ||
function waitForServerResponse(_x) { | ||
return _ref3.apply(this, arguments); | ||
} | ||
return waitForServerResponse; | ||
}() | ||
}, { | ||
key: 'validate', | ||
@@ -148,3 +198,4 @@ value: function validate() { | ||
errors = _state.errors, | ||
dirty = _state.dirty; | ||
dirty = _state.dirty, | ||
disabled = _state.disabled; | ||
@@ -163,3 +214,3 @@ | ||
'form', | ||
{ onSubmit: this.onSubmit, noValidate: true }, | ||
{ onSubmit: this.onSubmit, noValidate: true, disabled: disabled }, | ||
children | ||
@@ -166,0 +217,0 @@ ) |
@@ -101,2 +101,3 @@ 'use strict'; | ||
this.fields.push(field); | ||
this.component.forceUpdate(); // re-render in case of errors were re-picked up | ||
@@ -103,0 +104,0 @@ if (field.name && field.name in this.seedValues) { |
@@ -6,3 +6,3 @@ 'use strict'; | ||
}); | ||
exports.default = exports.config = exports.optionizer = exports.trimmer = exports.Radios = exports.Select = exports.Slider = exports.Checkbox = exports.Textarea = exports.HiddenInput = exports.PasswordInput = exports.NumberInput = exports.SearchInput = exports.EmailInput = exports.TextInput = exports.ValidatorProvider = exports.LayoutProvider = exports.Error = exports.Form = exports.field = undefined; | ||
exports.default = exports.config = exports.optionizer = exports.trimmer = exports.Radios = exports.Select = exports.Slider = exports.Checkbox = exports.Textarea = exports.HiddenInput = exports.PasswordInput = exports.NumberInput = exports.SearchInput = exports.PhoneInput = exports.EmailInput = exports.TextInput = exports.ValidatorProvider = exports.LayoutProvider = exports.Error = exports.Form = exports.field = undefined; | ||
@@ -37,2 +37,6 @@ var _field2 = require('./core/field'); | ||
var _phone = require('./inputs/phone'); | ||
var _phone2 = _interopRequireDefault(_phone); | ||
var _search = require('./inputs/search'); | ||
@@ -95,2 +99,3 @@ | ||
exports.EmailInput = _email2.default; | ||
exports.PhoneInput = _phone2.default; | ||
exports.SearchInput = _search2.default; | ||
@@ -97,0 +102,0 @@ exports.NumberInput = _number2.default; |
{ | ||
"name": "a-plus-forms", | ||
"version": "0.4.1", | ||
"version": "0.5.0", | ||
"description": "A+ forms. Would use again", | ||
@@ -5,0 +5,0 @@ "files": [ |
100580
26
1567