moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
64 lines • 4.83 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, Input } from '@angular/core';
import { NG_VALIDATORS } from '@angular/forms';
// Local function
/**
* @param {?} control
* @param {?} dupList
* @return {?}
*/
function checkForDuplicates(control, dupList) {
// Duplicate check
if (dupList && dupList.length) {
/** @type {?} */
const duplicate = dupList.find((/**
* @param {?} x
* @return {?}
*/
x => x === control.value));
return (duplicate ? { 'duplicate': true } : null);
}
return null;
}
// TODO: Need to confirm this works with reactive forms
/**
* @param {?} dupList
* @return {?}
*/
export function commonDuplicateCheck(dupList) {
return (/**
* @param {?} control
* @return {?}
*/
(control) => {
return checkForDuplicates(control, dupList);
});
}
export class DuplicateCheckDirective {
/**
* @param {?} control
* @return {?}
*/
validate(control) {
return checkForDuplicates(control, this.dupList);
}
}
DuplicateCheckDirective.decorators = [
{ type: Directive, args: [{
selector: '[commonDuplicateCheck]',
providers: [
{ provide: NG_VALIDATORS, useExisting: DuplicateCheckDirective, multi: true }
]
},] }
];
DuplicateCheckDirective.propDecorators = {
dupList: [{ type: Input }]
};
if (false) {
/** @type {?} */
DuplicateCheckDirective.prototype.dupList;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVwbGljYXRlLWNoZWNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21vaC1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZHVwbGljYXRlLWNoZWNrL2R1cGxpY2F0ZS1jaGVjay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBZ0MsYUFBYSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFHeEYsU0FBUyxrQkFBa0IsQ0FBRSxPQUF3QixFQUN4QixPQUFpQjtJQUM1QyxrQkFBa0I7SUFDbEIsSUFBSyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRzs7Y0FFM0IsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJOzs7O1FBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLEtBQUssRUFBRTtRQUMxRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakQ7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7Ozs7OztBQUdELE1BQU0sVUFBVSxvQkFBb0IsQ0FBRSxPQUFpQjtJQUVyRDs7OztJQUFPLENBQUUsT0FBd0IsRUFBc0MsRUFBRTtRQUN2RSxPQUFPLGtCQUFrQixDQUFFLE9BQU8sRUFBRSxPQUFPLENBQUUsQ0FBQztJQUNoRCxDQUFDLEVBQUM7QUFDSixDQUFDO0FBUUQsTUFBTSxPQUFPLHVCQUF1Qjs7Ozs7SUFJbEMsUUFBUSxDQUFFLE9BQXdCO1FBQ2xDLE9BQU8sa0JBQWtCLENBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUUsQ0FBQztJQUNuRCxDQUFDOzs7WUFaRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsU0FBUyxFQUFFO29CQUNULEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztpQkFDMUU7YUFDSjs7O3NCQUdFLEtBQUs7Ozs7SUFBTiwwQ0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8vIExvY2FsIGZ1bmN0aW9uXHJcbmZ1bmN0aW9uIGNoZWNrRm9yRHVwbGljYXRlcyggY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cExpc3Q6IHN0cmluZ1tdICk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCB7XHJcbiAgLy8gRHVwbGljYXRlIGNoZWNrXHJcbiAgaWYgKCBkdXBMaXN0ICYmIGR1cExpc3QubGVuZ3RoICkge1xyXG5cclxuICBjb25zdCBkdXBsaWNhdGUgPSBkdXBMaXN0LmZpbmQoIHggPT4geCA9PT0gY29udHJvbC52YWx1ZSApO1xyXG4gIHJldHVybiAoZHVwbGljYXRlID8geyAnZHVwbGljYXRlJzogdHJ1ZSB9IDogbnVsbCk7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vLyBUT0RPOiBOZWVkIHRvIGNvbmZpcm0gdGhpcyB3b3JrcyB3aXRoIHJlYWN0aXZlIGZvcm1zXHJcbmV4cG9ydCBmdW5jdGlvbiBjb21tb25EdXBsaWNhdGVDaGVjayggZHVwTGlzdDogc3RyaW5nW10gKTogVmFsaWRhdG9yRm4ge1xyXG5cclxuICByZXR1cm4gKCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcclxuICAgIHJldHVybiBjaGVja0ZvckR1cGxpY2F0ZXMoIGNvbnRyb2wsIGR1cExpc3QgKTtcclxuICB9O1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tjb21tb25EdXBsaWNhdGVDaGVja10nLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBEdXBsaWNhdGVDaGVja0RpcmVjdGl2ZSwgbXVsdGk6IHRydWV9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEdXBsaWNhdGVDaGVja0RpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcblxyXG4gIEBJbnB1dCgpIGR1cExpc3Q6IHN0cmluZ1tdO1xyXG5cclxuICB2YWxpZGF0ZSggY29udHJvbDogQWJzdHJhY3RDb250cm9sICk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHwgbnVsbCB7XHJcbiAgcmV0dXJuIGNoZWNrRm9yRHVwbGljYXRlcyggY29udHJvbCwgdGhpcy5kdXBMaXN0ICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==