1. function validateFormConfig(config) {
  2. if (!config || typeof config !== 'object') {
  3. console.error("Invalid config: Config must be an object.");
  4. return false;
  5. }
  6. // Check for required fields
  7. if (!config.formId || typeof config.formId !== 'string') {
  8. console.error("Invalid config: formId is required and must be a string.");
  9. return false;
  10. }
  11. if (!config.fields || !Array.isArray(config.fields)) {
  12. console.error("Invalid config: fields is required and must be an array.");
  13. return false;
  14. }
  15. for (const fieldConfig of config.fields) {
  16. if (typeof fieldConfig !== 'object' || !fieldConfig.name || typeof fieldConfig.name !== 'string') {
  17. console.error("Invalid config: Each field must be an object with a 'name' property (string).");
  18. return false;
  19. }
  20. if (!fieldConfig.type || typeof fieldConfig.type !== 'string') {
  21. console.error("Invalid config: Each field must have a 'type' property (string).");
  22. return false;
  23. }
  24. if (!fieldConfig.required && (fieldConfig.required !== true && fieldConfig.required !== false)) {
  25. console.error("Invalid config: Each field 'required' property must be a boolean.");
  26. return false;
  27. }
  28. if (fieldConfig.validationRegex && typeof fieldConfig.validationRegex !== 'string') {
  29. console.error("Invalid config: validationRegex must be a string.");
  30. return false;
  31. }
  32. }
  33. //Check for valid types (basic sanity check)
  34. const validTypes = ['text', 'email', 'number', 'password', 'textarea', 'select'];
  35. for (const fieldConfig of config.fields) {
  36. if (!validTypes.includes(fieldConfig.type)) {
  37. console.warn(`Warning: Invalid field type '${fieldConfig.type}'. Allowed types are: ${validTypes.join(', ')}`);
  38. }
  39. }
  40. return true; // Config is valid
  41. }

Add your comment