diff --git a/MVMCoreUI/FormUIHelpers/FormValidator.swift b/MVMCoreUI/FormUIHelpers/FormValidator.swift index 3aa50030..b01c7ad4 100644 --- a/MVMCoreUI/FormUIHelpers/FormValidator.swift +++ b/MVMCoreUI/FormUIHelpers/FormValidator.swift @@ -44,6 +44,29 @@ import MVMCore if let fieldKey = field.fieldKey { fields[fieldKey] = field } + // add internal validators if needed + if let field = field as? any FormFieldInternalValidatableProtocol { + addInternalRules(field) + } + } + + /// Adds additional Rules that are from another source + private func addInternalRules(_ field: any FormFieldInternalValidatableProtocol) { + if let internalRules = field.internalRules, !internalRules.isEmpty { + + //find the group + if let formGroup = formRules?.first(where: {$0.groupName == field.groupName}) { + formGroup.rules.append(contentsOf: internalRules) + } else { + //create the new group + let formGroup = FormGroupRule(field.groupName, internalRules, []) + if var formRules { + formRules.append(formGroup) + } else { + formRules = [formGroup] + } + } + } } /// Adds the form action to the validator. @@ -72,7 +95,6 @@ import MVMCore if let validator = delegate?.formValidator { validator.delegate = delegate validator.insert(item) - // TODO: Temporary hacks, rewrite architecture to support this. _ = validator.validate() }