@shopify/react-form
Version:
Manage react forms tersely and safely-typed with no magic using React hooks.
45 lines (44 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = require("react");
var utilities_1 = require("../utilities");
function useValidateAll(fieldBag) {
return react_1.useCallback(function () {
var e_1, _a;
var fields = Object.values(fieldBag);
var errors = [];
function validate(field) {
var message = field.runValidation();
if (message) {
errors.push({ message: message });
}
}
function validateDictionary(fields) {
Object.values(fields).forEach(validate);
}
try {
for (var fields_1 = tslib_1.__values(fields), fields_1_1 = fields_1.next(); !fields_1_1.done; fields_1_1 = fields_1.next()) {
var item = fields_1_1.value;
if (utilities_1.isField(item)) {
validate(item);
}
else if (Array.isArray(item)) {
item.map(validateDictionary);
}
else {
validateDictionary(item);
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (fields_1_1 && !fields_1_1.done && (_a = fields_1.return)) _a.call(fields_1);
}
finally { if (e_1) throw e_1.error; }
}
return errors;
}, [fieldBag]);
}
exports.useValidateAll = useValidateAll;