UNPKG

react-hooks-dynamic-form

Version:
80 lines (79 loc) 2.92 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var field_1 = require("./field"); /** * Generate form data by normalizing fields settings array * @param fields Array field settings * @param remoteValues fields values from parent */ exports.generateFormData = function (fields, defaultSettings, remoteValues) { var allFields = fields.reduce(function (acc, field) { return acc.concat(field.type === "fieldset" ? field.children || [] : field); }, []); return allFields.reduce(function (acc, fieldSettings) { var _a; // Precheck fieldSettings var name = fieldSettings.name; if (!name) { return acc; } // Merge default all fields settings with specific field settings var errorMessagesSettings = Object.assign({}, defaultSettings && defaultSettings.errorMessages, fieldSettings.errorMessages); var field = new field_1.Field(__assign(__assign(__assign(__assign({}, defaultSettings), fieldSettings), { errorMessages: errorMessagesSettings }), (remoteValues && remoteValues[name] ? { value: remoteValues[name] } : {}))); return __assign(__assign({}, acc), (_a = {}, _a[field.name] = field, _a)); }, {}); }; /** * Update formData object with modified field value * @param formData current form data object * @param fieldName field name * @param newValue field new value * @returns updated formData */ exports.updateFormField = function (formData, fieldName, newValue) { if (!formData[fieldName]) { return formData; } var field = formData[fieldName]; field.setInputValue(newValue); if (field.validateOnChange) { field.validate(formData); } // Immutable to allow update return __assign({}, formData); }; /** * Validate field, update field state (pristine, error) * @param fieldName field name * @param formData current form data object * @returns updated formData */ exports.validateField = function (formData, fieldName) { formData[fieldName].validate(formData); return __assign({}, formData); }; /** * Validate form, update form state * @param formData current form data object */ exports.validateForm = function (formData) { var isValid = true; for (var _i = 0, _a = Object.values(formData); _i < _a.length; _i++) { var field = _a[_i]; isValid = isValid && field.validate(formData); } return { isValid: isValid, // Immutable to allow update updatedData: __assign({}, formData), }; };