@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
29 lines • 4.18 kB
JavaScript
import { NG_VALIDATORS } from '@angular/forms';
import { Directive, Input } from '@angular/core';
import { isUndefined, isFinite } from 'lodash-es';
import * as i0 from "@angular/core";
export class MaxValidationDirective {
constructor() {
this.max = '';
}
validate(control) {
const parsedMax = typeof this.max === 'number' ? this.max : parseFloat(this.max);
if (isUndefined(control.value) || !isFinite(parsedMax)) {
return null;
}
const valid = !(control.value > parsedMax);
return valid ? null : { max: { max: parsedMax, actual: control.value } };
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MaxValidationDirective, selector: "[max]", inputs: { max: "max" }, providers: [{ provide: NG_VALIDATORS, useExisting: MaxValidationDirective, multi: true }], ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxValidationDirective, decorators: [{
type: Directive,
args: [{
selector: '[max]',
providers: [{ provide: NG_VALIDATORS, useExisting: MaxValidationDirective, multi: true }]
}]
}], propDecorators: { max: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LXZhbGlkYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9mb3Jtcy9tYXgtdmFsaWRhdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFNbEQsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQUtXLFFBQUcsR0FBb0IsRUFBRSxDQUFDO0tBV3BDO0lBVEMsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE1BQU0sU0FBUyxHQUFHLE9BQU8sSUFBSSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakYsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUMzRSxDQUFDOytHQVhVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHdEQUZ0QixDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzs0RkFFOUUsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxPQUFPO29CQUNqQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzFGOzhCQUVVLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNGaW5pdGUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWF4XScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IE1heFZhbGlkYXRpb25EaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1dXG59KVxuZXhwb3J0IGNsYXNzIE1heFZhbGlkYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuICBASW5wdXQoKSBtYXg6IHN0cmluZyB8IG51bWJlciA9ICcnO1xuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgICBjb25zdCBwYXJzZWRNYXggPSB0eXBlb2YgdGhpcy5tYXggPT09ICdudW1iZXInID8gdGhpcy5tYXggOiBwYXJzZUZsb2F0KHRoaXMubWF4KTtcbiAgICBpZiAoaXNVbmRlZmluZWQoY29udHJvbC52YWx1ZSkgfHwgIWlzRmluaXRlKHBhcnNlZE1heCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkID0gIShjb250cm9sLnZhbHVlID4gcGFyc2VkTWF4KTtcbiAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogeyBtYXg6IHsgbWF4OiBwYXJzZWRNYXgsIGFjdHVhbDogY29udHJvbC52YWx1ZSB9IH07XG4gIH1cbn1cbiJdfQ==