UNPKG

@react-form-fields/core

Version:

Material UI Form Fields

40 lines 2 kB
"use strict"; 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