UNPKG

@vindev/particle

Version:

Angular Component Library using Tailwind

45 lines 5.21 kB
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==