Skip to content

Commit 6ac16cc

Browse files
committed
IBX-10471: [Inputs] Inputs Validators Base
1 parent 39338c9 commit 6ac16cc

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default abstract class BaseValidator {
2+
abstract getErrorMessage(): string;
3+
4+
abstract validate(_value: unknown): boolean;
5+
}
6+
7+
export type BaseValidatorType = typeof BaseValidator;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import BaseValidator from './BaseValidator';
2+
3+
export default class IsEmptyStringValidator extends BaseValidator {
4+
getErrorMessage(): string {
5+
return /*@Desc("This field cannot be empty.")*/ 'ibexa.validators.is_empty_string'; // TODO: Use translation service when available
6+
}
7+
8+
validate(value: string): boolean {
9+
return value.trim() !== '';
10+
}
11+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import BaseValidator from './BaseValidator';
2+
3+
export default class ValidatorManager {
4+
private _validators: BaseValidator[];
5+
6+
constructor(validators: BaseValidator[] = []) {
7+
this._validators = validators;
8+
}
9+
10+
addValidator(validator: BaseValidator): void {
11+
this._validators.push(validator);
12+
}
13+
14+
removeValidator(validator: BaseValidator): void {
15+
this._validators = this._validators.filter((savedValidator) => savedValidator !== validator);
16+
}
17+
18+
validate(value: unknown) {
19+
const errors = this._validators
20+
.filter((validator: BaseValidator) => !validator.validate(value))
21+
.map((validator: BaseValidator) => validator.getErrorMessage());
22+
23+
return { isValid: !errors.length, messages: errors };
24+
}
25+
}
26+
27+
export type ValidatorManagerType = InstanceType<typeof ValidatorManager>;

0 commit comments

Comments
 (0)