function validateFormConfig(config) {
if (!config || typeof config !== 'object') {
console.error("Invalid config: Config must be an object.");
return false;
}
// Check for required fields
if (!config.formId || typeof config.formId !== 'string') {
console.error("Invalid config: formId is required and must be a string.");
return false;
}
if (!config.fields || !Array.isArray(config.fields)) {
console.error("Invalid config: fields is required and must be an array.");
return false;
}
for (const fieldConfig of config.fields) {
if (typeof fieldConfig !== 'object' || !fieldConfig.name || typeof fieldConfig.name !== 'string') {
console.error("Invalid config: Each field must be an object with a 'name' property (string).");
return false;
}
if (!fieldConfig.type || typeof fieldConfig.type !== 'string') {
console.error("Invalid config: Each field must have a 'type' property (string).");
return false;
}
if (!fieldConfig.required && (fieldConfig.required !== true && fieldConfig.required !== false)) {
console.error("Invalid config: Each field 'required' property must be a boolean.");
return false;
}
if (fieldConfig.validationRegex && typeof fieldConfig.validationRegex !== 'string') {
console.error("Invalid config: validationRegex must be a string.");
return false;
}
}
//Check for valid types (basic sanity check)
const validTypes = ['text', 'email', 'number', 'password', 'textarea', 'select'];
for (const fieldConfig of config.fields) {
if (!validTypes.includes(fieldConfig.type)) {
console.warn(`Warning: Invalid field type '${fieldConfig.type}'. Allowed types are: ${validTypes.join(', ')}`);
}
}
return true; // Config is valid
}
Add your comment