Skip to content
Snippets Groups Projects
Commit 75b71f25 authored by jojohoch's avatar jojohoch
Browse files

Refactor error transform pipe

- Remove fallback of TranslationService to allow empty error messages
  that can still cause red borders
- Remove the case distinction for checkboxes, since the requiredTrue
  validator also sends required as errorKey and a special fallback text
  is no longer used
parent 57ad4b6e
No related branches found
No related tags found
No related merge requests found
{ {
"pageIndication": "Seite {{index}}", "pageIndication": "Seite {{index}}",
"close": "Schließen", "close": "Schließen",
"validators": {
"inputRequired": "Eingabe erforderlich",
"inputRequiredTrue": "Ankreuzen erforderlich",
"inputTooShort": "Eingabe zu kurz",
"inputTooLong": "Eingabe zu lang",
"wrongPattern": "Eingabe enthält falsche Zeichen"
},
"imageNotFound": "Bild nicht gefunden" "imageNotFound": "Bild nicht gefunden"
} }
import { Pipe, PipeTransform } from '@angular/core'; import { Pipe, PipeTransform } from '@angular/core';
import { ValidationErrors } from '@angular/forms'; import { ValidationErrors } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { UIElement } from '../../models/uI-element'; import { UIElement } from '../../models/uI-element';
@Pipe({ @Pipe({
name: 'errorTransform' name: 'errorTransform'
}) })
export class ErrorTransformPipe implements PipeTransform { export class ErrorTransformPipe implements PipeTransform {
constructor(private translateService: TranslateService) {}
transform(validationErrors: ValidationErrors, elementModel: UIElement): string { transform(validationErrors: ValidationErrors, elementModel: UIElement): string {
const validationMessages = this.getValidationMessages(elementModel); const validationMessages = this.getValidationMessages(elementModel);
let returnMessage = ''; let returnMessage = '';
...@@ -17,24 +14,15 @@ export class ErrorTransformPipe implements PipeTransform { ...@@ -17,24 +14,15 @@ export class ErrorTransformPipe implements PipeTransform {
if (returnMessage) { if (returnMessage) {
returnMessage += '; '; returnMessage += '; ';
} }
const messageKey = errorKey === 'required' && elementModel.type === 'checkbox' ? 'requiredTrue' : errorKey; returnMessage += validationMessages[errorKey];
returnMessage += validationMessages[messageKey];
}); });
return returnMessage; return returnMessage;
} }
private getValidationMessages(elementModel: UIElement): Record<string, string> { private getValidationMessages = (elementModel: UIElement): Record<string, string> => ({
return { required: elementModel.requiredWarnMessage as string,
required: elementModel.requiredWarnMessage || minlength: elementModel.minWarnMessage as string,
this.translateService.instant('validators.inputRequired'), maxlength: elementModel.maxWarnMessage as string,
requiredTrue: elementModel.requiredWarnMessage || pattern: elementModel.patternWarnMessage as string
this.translateService.instant('validators.inputRequiredTrue'), });
minlength: elementModel.minWarnMessage ||
this.translateService.instant('validators.inputTooShort'),
maxlength: elementModel.maxWarnMessage ||
this.translateService.instant('validators.inputTooLong'),
pattern: elementModel.patternWarnMessage ||
this.translateService.instant('validators.wrongPattern')
};
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment