@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
41 lines • 5.51 kB
JavaScript
import { NG_VALIDATORS } from '@angular/forms';
import { Directive, Input } from '@angular/core';
import { ValidationPattern } from './validation-pattern';
import * as i0 from "@angular/core";
export class DefaultValidationDirective {
constructor() {
this.c8yDefaultValidation = '';
}
validate(control) {
if (!control.value) {
return null;
}
const validation = ValidationPattern.get(this.c8yDefaultValidation);
if (!validation) {
throw new Error(`Pattern ${this.c8yDefaultValidation} not found.`);
}
let valid = true;
if (validation.pattern) {
valid = validation.pattern.test(control.value);
}
if (validation.maxLength) {
valid = control.value.length < validation.maxLength;
}
if (validation.minLength) {
valid = control.value.length >= validation.minLength;
}
return valid ? null : { [this.c8yDefaultValidation]: true };
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: { c8yDefaultValidation: "c8yDefaultValidation" }, providers: [{ provide: NG_VALIDATORS, useExisting: DefaultValidationDirective, multi: true }], ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultValidationDirective, decorators: [{
type: Directive,
args: [{
selector: '[c8yDefaultValidation]',
providers: [{ provide: NG_VALIDATORS, useExisting: DefaultValidationDirective, multi: true }]
}]
}], propDecorators: { c8yDefaultValidation: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12YWxpZGF0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZm9ybXMvZGVmYXVsdC12YWxpZGF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUE4QixNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU16RCxNQUFNLE9BQU8sMEJBQTBCO0lBSnZDO1FBS1cseUJBQW9CLEdBQUcsRUFBRSxDQUFDO0tBdUJwQztJQXJCQyxRQUFRLENBQUMsT0FBd0I7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsb0JBQW9CLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7UUFDdEQsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUQsQ0FBQzsrR0F2QlUsMEJBQTBCO21HQUExQiwwQkFBMEIsMkdBRjFCLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7OzRGQUVsRiwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUM5Rjs4QkFFVSxvQkFBb0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOR19WQUxJREFUT1JTLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRpb25QYXR0ZXJuIH0gZnJvbSAnLi92YWxpZGF0aW9uLXBhdHRlcm4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYzh5RGVmYXVsdFZhbGlkYXRpb25dJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogRGVmYXVsdFZhbGlkYXRpb25EaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1dXG59KVxuZXhwb3J0IGNsYXNzIERlZmF1bHRWYWxpZGF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgYzh5RGVmYXVsdFZhbGlkYXRpb24gPSAnJztcblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IFZhbGlkYXRpb25QYXR0ZXJuLmdldCh0aGlzLmM4eURlZmF1bHRWYWxpZGF0aW9uKTtcbiAgICBpZiAoIXZhbGlkYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0dGVybiAke3RoaXMuYzh5RGVmYXVsdFZhbGlkYXRpb259IG5vdCBmb3VuZC5gKTtcbiAgICB9XG5cbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgIGlmICh2YWxpZGF0aW9uLnBhdHRlcm4pIHtcbiAgICAgIHZhbGlkID0gdmFsaWRhdGlvbi5wYXR0ZXJuLnRlc3QoY29udHJvbC52YWx1ZSk7XG4gICAgfVxuICAgIGlmICh2YWxpZGF0aW9uLm1heExlbmd0aCkge1xuICAgICAgdmFsaWQgPSBjb250cm9sLnZhbHVlLmxlbmd0aCA8IHZhbGlkYXRpb24ubWF4TGVuZ3RoO1xuICAgIH1cbiAgICBpZiAodmFsaWRhdGlvbi5taW5MZW5ndGgpIHtcbiAgICAgIHZhbGlkID0gY29udHJvbC52YWx1ZS5sZW5ndGggPj0gdmFsaWRhdGlvbi5taW5MZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiB7IFt0aGlzLmM4eURlZmF1bHRWYWxpZGF0aW9uXTogdHJ1ZSB9O1xuICB9XG59XG4iXX0=