Wizard: do not show validation error on parent module

This commit is contained in:
Ilya Kirillov
2020-03-26 10:08:55 +03:00
parent 393af3669f
commit eb958100ac
3 changed files with 9 additions and 3 deletions
@@ -140,7 +140,9 @@ private class CellRenderer(private val context: Context, renderErrors: Boolean)
if (renderErrors) {
if (setting is Module) context.read {
val validationResult = setting.validator.validate(this, setting)
setError(validationResult as? ValidationResult.ValidationError)
val error = validationResult.safeAs<ValidationResult.ValidationError>()
?.takeIf { it.target === setting }
setError(error)
} else {
setError(null)
}
@@ -78,6 +78,10 @@ sealed class ValidationResult {
}
}
fun <V> SettingValidator<V>.withTarget(target: Any) = SettingValidator<V> { value ->
this.validate(value).withTarget(target)
}
infix fun ValidationResult.isSpecificError(error: ValidationResult.ValidationError) =
this is ValidationResult.ValidationError && messages.firstOrNull() == error.messages.firstOrNull()
@@ -44,9 +44,9 @@ class Module(
val kind: ModuleKind
get() = configurator.moduleKind
override val validator = moduleNameValidator and
override val validator = (moduleNameValidator and
moduleConfiguratorValidator and
moduleTemplateValidator and
moduleTemplateValidator).withTarget(this) and
subModulesValidator
var subModules = subModules