@react-form-fields/core
Version:
Material UI Form Fields
40 lines • 2 kB
JavaScript
;
var _this = this;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = require("react");
var ConfigProvider_1 = require("./ConfigProvider");
var context_1 = require("./validator/context");
var ValidationContext = React.memo(React.forwardRef(function (props, ref) {
var fields = React.useMemo(function () { return ({}); }, []);
var context = React.useMemo(function () {
return {
register: function (field, data) { return fields[field] = data; },
unregister: function (field) { return delete fields[field]; },
};
}, []);
React.useImperativeHandle(ref, function () { return ({
isValid: function (formSubmitted) {
if (formSubmitted === void 0) { formSubmitted = true; }
return tslib_1.__awaiter(_this, void 0, void 0, function () {
var values, statuses;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
values = Object.values(fields);
values.forEach(function (v) { return v.onSubmitChange(formSubmitted); });
return [4 /*yield*/, Promise.all(values.map(function (f) { return f.isValid; }))];
case 1:
statuses = _a.sent();
return [2 /*return*/, statuses.every(function (isValid) { return isValid; })];
}
});
});
},
reset: function () { return Object.values(fields).forEach(function (f) { return f.onResetRequested(); }); }
}); }, []);
return (React.createElement(ConfigProvider_1.default, { value: props.config },
React.createElement(context_1.FieldValidationContext.Provider, { value: context }, props.children)));
}));
exports.default = ValidationContext;
//# sourceMappingURL=ValidationContext.js.map