@vindev/particle
Version:
Angular Component Library using Tailwind
45 lines • 5.21 kB
JavaScript
import { Directive, Input } from '@angular/core';
import * as i0 from "@angular/core";
export function ValidatorMixin(Base = class {
}) {
class Validator extends Base {
constructor() {
super(...arguments);
this._validators = [];
this.errorMessages = [];
}
set validators(validators) {
const validArray = Array.isArray(validators);
const validFunctions = validArray &&
validators.filter((validator) => typeof validator === 'function');
if (validFunctions) {
this._validators = validFunctions;
}
}
get validators() {
return this._validators;
}
validate(item) {
const validationResults = this._validators.map((validator) => validator(item));
const failed = validationResults.filter(String.isString);
if (failed.length) {
this.errorMessages = failed;
}
else {
this.resetErrors();
}
}
resetErrors() {
this.errorMessages = [];
}
}
Validator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: Validator, deps: null, target: i0.ɵɵFactoryTarget.Directive });
Validator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: Validator, inputs: { validators: "validators" }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: Validator, decorators: [{
type: Directive
}], propDecorators: { validators: [{
type: Input
}] } });
return Validator;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLm1peGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wYXJ0aWNsZS1saWIvc3JjL2xpYi9zaGFyZWQvbWl4aW5zL3ZhbGlkYXRvci5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLakQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsT0FBVTtDQUFlO0lBRXpCLE1BQ00sU0FBVSxTQUFRLElBQUk7UUFENUI7O1lBRUUsZ0JBQVcsR0FBb0IsRUFBRSxDQUFDO1lBQ2xDLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1NBa0M5QjtRQWhDQyxJQUFhLFVBQVUsQ0FBQyxVQUEyQjtZQUNqRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sY0FBYyxHQUNsQixVQUFVO2dCQUNWLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sU0FBUyxLQUFLLFVBQVUsQ0FBQyxDQUFDO1lBRXBFLElBQUksY0FBYyxFQUFFO2dCQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQzthQUNuQztRQUNILENBQUM7UUFFRCxJQUFJLFVBQVU7WUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUIsQ0FBQztRQUVELFFBQVEsQ0FBQyxJQUFPO1lBQ2QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQzNELFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDaEIsQ0FBQztZQUVGLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFhLENBQUM7WUFFckUsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDO1FBRUQsV0FBVztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQzFCLENBQUM7OzBHQW5DRyxTQUFTOzhGQUFULFNBQVM7K0ZBQVQsU0FBUztzQkFEZCxTQUFTO2tDQUtLLFVBQVU7MEJBQXRCLEtBQUs7O0lBaUNSLE9BQU8sU0FBUyxDQUFDO0NBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3InO1xyXG5cclxuZXhwb3J0IHR5cGUgVFZhbGlkYXRvcjxUPiA9IChpdGVtOiBUKSA9PiBzdHJpbmcgfCB0cnVlO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRvck1peGluPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcjx7fT4sIEk+KFxyXG4gIEJhc2U6IFQgPSBjbGFzcyB7fSBhcyBhbnlcclxuKSB7XHJcbiAgQERpcmVjdGl2ZSgpXHJcbiAgY2xhc3MgVmFsaWRhdG9yIGV4dGVuZHMgQmFzZSB7XHJcbiAgICBfdmFsaWRhdG9yczogVFZhbGlkYXRvcjxJPltdID0gW107XHJcbiAgICBlcnJvck1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHNldCB2YWxpZGF0b3JzKHZhbGlkYXRvcnM6IFRWYWxpZGF0b3I8ST5bXSkge1xyXG4gICAgICBjb25zdCB2YWxpZEFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWxpZGF0b3JzKTtcclxuICAgICAgY29uc3QgdmFsaWRGdW5jdGlvbnMgPVxyXG4gICAgICAgIHZhbGlkQXJyYXkgJiZcclxuICAgICAgICB2YWxpZGF0b3JzLmZpbHRlcigodmFsaWRhdG9yKSA9PiB0eXBlb2YgdmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKTtcclxuXHJcbiAgICAgIGlmICh2YWxpZEZ1bmN0aW9ucykge1xyXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSB2YWxpZEZ1bmN0aW9ucztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWxpZGF0b3JzKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGF0ZShpdGVtOiBJKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHRzID0gdGhpcy5fdmFsaWRhdG9ycy5tYXAoKHZhbGlkYXRvcikgPT5cclxuICAgICAgICB2YWxpZGF0b3IoaXRlbSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IGZhaWxlZCA9IHZhbGlkYXRpb25SZXN1bHRzLmZpbHRlcihTdHJpbmcuaXNTdHJpbmcpIGFzIHN0cmluZ1tdO1xyXG5cclxuICAgICAgaWYgKGZhaWxlZC5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBmYWlsZWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNldEVycm9ycygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRFcnJvcnMoKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gVmFsaWRhdG9yO1xyXG59XHJcbiJdfQ==