UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

45 lines 5.75 kB
import { Directive, Input } from '@angular/core'; import { NG_VALIDATORS } from '@angular/forms'; import { find, get, isEqualWith } from 'lodash-es'; import * as i0 from "@angular/core"; export function uniqueInCollectionByPathValidator(collection, path, comparator) { return (control) => { const match = find(collection, element => isEqualWith(get(element, path), control.value, comparator)); return !!match && !!control.value ? { uniqueByPath: { key: path, value: get(match, path) } } : null; }; } export class UniqueInCollectionByPathValidationDirective { validate(control) { return uniqueInCollectionByPathValidator(this.collection, this.path, this.comparator)(control); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UniqueInCollectionByPathValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: UniqueInCollectionByPathValidationDirective, selector: "[uniqueByPath]", inputs: { collection: "collection", path: "path", comparator: "comparator" }, providers: [ { provide: NG_VALIDATORS, useExisting: UniqueInCollectionByPathValidationDirective, multi: true } ], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UniqueInCollectionByPathValidationDirective, decorators: [{ type: Directive, args: [{ selector: '[uniqueByPath]', providers: [ { provide: NG_VALIDATORS, useExisting: UniqueInCollectionByPathValidationDirective, multi: true } ] }] }], propDecorators: { collection: [{ type: Input }], path: [{ type: Input }], comparator: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLWluLWNvbGxlY3Rpb24tYnktcGF0aC12YWxpZGF0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZm9ybXMvdW5pcXVlLWluLWNvbGxlY3Rpb24tYnktcGF0aC12YWxpZGF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBRUwsYUFBYSxFQUlkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVuRCxNQUFNLFVBQVUsaUNBQWlDLENBQy9DLFVBQTRCLEVBQzVCLElBQVksRUFDWixVQUE4QztJQUU5QyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQ3ZDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQzNELENBQUM7UUFFRixPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLO1lBQy9CLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUMxRCxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVlELE1BQU0sT0FBTywyQ0FBMkM7SUFLdEQsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE9BQU8saUNBQWlDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRyxDQUFDOytHQVBVLDJDQUEyQzttR0FBM0MsMkNBQTJDLHVIQVIzQztZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsMkNBQTJDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7OzRGQUVVLDJDQUEyQztrQkFWdkQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsNkNBQTZDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFFVSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBOR19WQUxJREFUT1JTLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbmQsIGdldCwgaXNFcXVhbFdpdGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlSW5Db2xsZWN0aW9uQnlQYXRoVmFsaWRhdG9yKFxuICBjb2xsZWN0aW9uOiBJdGVyYWJsZTxvYmplY3Q+LFxuICBwYXRoOiBzdHJpbmcsXG4gIGNvbXBhcmF0b3I/OiAodmFsMTogYW55LCB2YWwyOiBhbnkpID0+IGJvb2xlYW5cbik6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgbWF0Y2ggPSBmaW5kKGNvbGxlY3Rpb24sIGVsZW1lbnQgPT5cbiAgICAgIGlzRXF1YWxXaXRoKGdldChlbGVtZW50LCBwYXRoKSwgY29udHJvbC52YWx1ZSwgY29tcGFyYXRvcilcbiAgICApO1xuXG4gICAgcmV0dXJuICEhbWF0Y2ggJiYgISFjb250cm9sLnZhbHVlXG4gICAgICA/IHsgdW5pcXVlQnlQYXRoOiB7IGtleTogcGF0aCwgdmFsdWU6IGdldChtYXRjaCwgcGF0aCkgfSB9XG4gICAgICA6IG51bGw7XG4gIH07XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t1bmlxdWVCeVBhdGhdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBVbmlxdWVJbkNvbGxlY3Rpb25CeVBhdGhWYWxpZGF0aW9uRGlyZWN0aXZlLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVW5pcXVlSW5Db2xsZWN0aW9uQnlQYXRoVmFsaWRhdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gIEBJbnB1dCgpIGNvbGxlY3Rpb246IEl0ZXJhYmxlPG9iamVjdD47XG4gIEBJbnB1dCgpIHBhdGg6IHN0cmluZztcbiAgQElucHV0KCkgY29tcGFyYXRvcjogKHZhbDE6IGFueSwgdmFsMjogYW55KSA9PiBib29sZWFuO1xuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdW5pcXVlSW5Db2xsZWN0aW9uQnlQYXRoVmFsaWRhdG9yKHRoaXMuY29sbGVjdGlvbiwgdGhpcy5wYXRoLCB0aGlzLmNvbXBhcmF0b3IpKGNvbnRyb2wpO1xuICB9XG59XG4iXX0=