Skip to content

Commit 8a8a172

Browse files
authored
IBX-10471: [Inputs] Inputs Validators Base (#14)
1 parent aca3f70 commit 8a8a172

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import BaseValidator from '../../validators/BaseValidator';
2+
3+
export interface ValidationResult {
4+
isValid: boolean;
5+
messages: string[];
6+
}
7+
8+
export const validateInput = <T>(value: T, validators: BaseValidator<T>[]): ValidationResult => {
9+
const errors = validators.reduce((errorsAcc: string[], validator) => {
10+
if (!validator.validate(value)) {
11+
return [...errorsAcc, validator.getErrorMessage()];
12+
}
13+
14+
return errorsAcc;
15+
}, []);
16+
17+
return { isValid: !errors.length, messages: errors };
18+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { TranslatorType } from '@ids-context/Translator';
2+
3+
export default abstract class BaseValidator<T> {
4+
protected _translator: TranslatorType;
5+
6+
constructor(translator: TranslatorType) {
7+
this._translator = translator;
8+
}
9+
10+
abstract getErrorMessage(): string;
11+
12+
abstract validate(value: T): boolean;
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import BaseValidator from './BaseValidator';
2+
3+
export default class IsEmptyStringValidator extends BaseValidator<string> {
4+
getErrorMessage(): string {
5+
const Translator = this._translator;
6+
7+
return Translator.trans(/*@Desc("This field cannot be empty.")*/ 'ibexa.validators.is_empty_string');
8+
}
9+
10+
validate(value: string): boolean {
11+
return value.trim() !== '';
12+
}
13+
}

0 commit comments

Comments
 (0)