@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
82 lines • 11.6 kB
JavaScript
import { Directive, forwardRef, Input } from '@angular/core';
import { SmeInternalFormFieldComponent } from '../form-field/form-field.component';
import { FormValidatorBase } from './base-validator';
import { SME_VALIDATORS } from './sme-validator';
import * as i0 from "@angular/core";
/**
* Provider for the FormFieldValidatorDirective directive
*/
export const MATCH_FIELD_VALIDATOR = {
provide: SME_VALIDATORS,
useExisting: forwardRef(() => MatchFieldValidatorDirective),
multi: true
};
/**
* A Directive that marks a field as invalid if it does not exactly match the value of another field
*/
export class MatchFieldValidatorDirective extends FormValidatorBase {
/**
* Instantiates a new instance of MachineNameValidatorDirective
*/
constructor() {
super();
/**
* Internal placeholder for smeMatchField
*/
this.internalSmeMatchField = null;
}
/**
* Indicates that field that this field should exactly match
*/
get smeMatchField() { return this.internalSmeMatchField; }
set smeMatchField(value) {
if (this.matchFieldValueSubscription && !this.matchFieldValueSubscription.closed) {
this.matchFieldValueSubscription.unsubscribe();
this.matchFieldValueSubscription = null;
}
this.internalSmeMatchField = value;
if (value && value.ngModel) {
this.matchFieldValueSubscription = value.ngModel.valueChanges.subscribe(() => this.revalidate());
}
this.revalidate();
}
/**
* Angular Destruction handler
*/
ngOnDestroy() {
if (this.matchFieldValueSubscription && !this.matchFieldValueSubscription.closed) {
this.matchFieldValueSubscription.unsubscribe();
}
}
/**
* Implementation of Validator interface.
* Validates the value of the field attached to this control matches the value of @see smeMatchField exactly
* @param c The FormControl attached to this element
* @return null when valid, otherwise returns a validation object
*/
validate(c) {
const alerts = super.validate(c) || {};
if (!MsftSme.isNullOrUndefined(this.smeMatchField) && c.value !== this.smeMatchField.value) {
const strings = MsftSme.self().Resources.strings;
const fieldName = this.smeMatchField.label || this.smeMatchField.ngModel.name;
alerts['smeMatchField.noMatch'] = {
message: strings.MsftSmeShell.Angular.Common.Form.Validation.MatchField.noMatch.format(fieldName)
};
}
return this.alertsOrNull(alerts);
}
}
/** @nocollapse */ MatchFieldValidatorDirective.ɵfac = function MatchFieldValidatorDirective_Factory(t) { return new (t || MatchFieldValidatorDirective)(); };
/** @nocollapse */ MatchFieldValidatorDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MatchFieldValidatorDirective, selectors: [["sme-form-field", "smeMatchField", "", "formControlName", ""], ["sme-form-field", "smeMatchField", "", "formControl", ""], ["sme-form-field", "smeMatchField", "", "ngModel", ""]], inputs: { smeMatchField: "smeMatchField" }, features: [i0.ɵɵProvidersFeature([MATCH_FIELD_VALIDATOR]), i0.ɵɵInheritDefinitionFeature] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MatchFieldValidatorDirective, [{
type: Directive,
args: [{
// eslint-disable-next-line max-len
selector: 'sme-form-field[smeMatchField][formControlName],sme-form-field[smeMatchField][formControl],sme-form-field[smeMatchField][ngModel]',
providers: [MATCH_FIELD_VALIDATOR]
}]
}], function () { return []; }, { smeMatchField: [{
type: Input,
args: ['smeMatchField']
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZm9ybS92YWxpZGF0b3JzL21hdGNoLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBSXhGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBbUI7SUFDakQsT0FBTyxFQUFFLGNBQWM7SUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztJQUMzRCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7R0FFRztBQU1ILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxpQkFBaUI7SUEwQi9EOztPQUVHO0lBQ0g7UUFBZ0IsS0FBSyxFQUFFLENBQUM7UUFSeEI7O1dBRUc7UUFDSywwQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFLWixDQUFDO0lBM0IxQjs7T0FFRztJQUNILElBQ1csYUFBYSxLQUF5QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDckcsSUFBVyxhQUFhLENBQUMsS0FBeUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsMkJBQTJCLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFO1lBQzlFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3hCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDcEc7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQWNEOztPQUVHO0lBQ0ksV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLDJCQUEyQixJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRTtZQUM5RSxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEQ7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsQ0FBYztRQUMxQixNQUFNLE1BQU0sR0FBcUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtZQUN4RixNQUFNLE9BQU8sR0FBWSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDOUUsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUc7Z0JBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7YUFDcEcsQ0FBQztTQUNMO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OzJIQXhEUSw0QkFBNEI7OEdBQTVCLDRCQUE0QixnUkFGMUIsQ0FBQyxxQkFBcUIsQ0FBQzt1RkFFekIsNEJBQTRCO2NBTHhDLFNBQVM7ZUFBQztnQkFDUCxtQ0FBbUM7Z0JBQ25DLFFBQVEsRUFBRSxrSUFBa0k7Z0JBQzVJLFNBQVMsRUFBRSxDQUFDLHFCQUFxQixDQUFDO2FBQ3JDO3NDQU9jLGFBQWE7a0JBRHZCLEtBQUs7bUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgU3RhdGljUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdHJpbmdzIH0gZnJvbSAnLi4vLi4vLi4vZ2VuZXJhdGVkL3N0cmluZ3MnO1xyXG5pbXBvcnQgeyBTbWVJbnRlcm5hbEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uQWxlcnRzIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1hbGVydC92YWxpZGF0aW9uLWFsZXJ0JztcclxuaW1wb3J0IHsgRm9ybVZhbGlkYXRvckJhc2UgfSBmcm9tICcuL2Jhc2UtdmFsaWRhdG9yJztcclxuaW1wb3J0IHsgU01FX1ZBTElEQVRPUlMgfSBmcm9tICcuL3NtZS12YWxpZGF0b3InO1xyXG5cclxuLyoqXHJcbiAqIFByb3ZpZGVyIGZvciB0aGUgRm9ybUZpZWxkVmFsaWRhdG9yRGlyZWN0aXZlIGRpcmVjdGl2ZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IE1BVENIX0ZJRUxEX1ZBTElEQVRPUjogU3RhdGljUHJvdmlkZXIgPSB7XHJcbiAgICBwcm92aWRlOiBTTUVfVkFMSURBVE9SUyxcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdGNoRmllbGRWYWxpZGF0b3JEaXJlY3RpdmUpLFxyXG4gICAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbi8qKlxyXG4gKiBBIERpcmVjdGl2ZSB0aGF0IG1hcmtzIGEgZmllbGQgYXMgaW52YWxpZCBpZiBpdCBkb2VzIG5vdCBleGFjdGx5IG1hdGNoIHRoZSB2YWx1ZSBvZiBhbm90aGVyIGZpZWxkXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXHJcbiAgICBzZWxlY3RvcjogJ3NtZS1mb3JtLWZpZWxkW3NtZU1hdGNoRmllbGRdW2Zvcm1Db250cm9sTmFtZV0sc21lLWZvcm0tZmllbGRbc21lTWF0Y2hGaWVsZF1bZm9ybUNvbnRyb2xdLHNtZS1mb3JtLWZpZWxkW3NtZU1hdGNoRmllbGRdW25nTW9kZWxdJyxcclxuICAgIHByb3ZpZGVyczogW01BVENIX0ZJRUxEX1ZBTElEQVRPUl1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGNoRmllbGRWYWxpZGF0b3JEaXJlY3RpdmUgZXh0ZW5kcyBGb3JtVmFsaWRhdG9yQmFzZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCBmaWVsZCB0aGF0IHRoaXMgZmllbGQgc2hvdWxkIGV4YWN0bHkgbWF0Y2hcclxuICAgICAqL1xyXG4gICAgQElucHV0KCdzbWVNYXRjaEZpZWxkJylcclxuICAgIHB1YmxpYyBnZXQgc21lTWF0Y2hGaWVsZCgpOiBTbWVJbnRlcm5hbEZvcm1GaWVsZENvbXBvbmVudDxhbnk+IHsgcmV0dXJuIHRoaXMuaW50ZXJuYWxTbWVNYXRjaEZpZWxkOyB9XHJcbiAgICBwdWJsaWMgc2V0IHNtZU1hdGNoRmllbGQodmFsdWU6IFNtZUludGVybmFsRm9ybUZpZWxkQ29tcG9uZW50PGFueT4pIHtcclxuICAgICAgICBpZiAodGhpcy5tYXRjaEZpZWxkVmFsdWVTdWJzY3JpcHRpb24gJiYgIXRoaXMubWF0Y2hGaWVsZFZhbHVlU3Vic2NyaXB0aW9uLmNsb3NlZCkge1xyXG4gICAgICAgICAgICB0aGlzLm1hdGNoRmllbGRWYWx1ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm1hdGNoRmllbGRWYWx1ZVN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxTbWVNYXRjaEZpZWxkID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLm5nTW9kZWwpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaEZpZWxkVmFsdWVTdWJzY3JpcHRpb24gPSB2YWx1ZS5uZ01vZGVsLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZXZhbGlkYXRlKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJldmFsaWRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1hdGNoRmllbGRWYWx1ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW50ZXJuYWwgcGxhY2Vob2xkZXIgZm9yIHNtZU1hdGNoRmllbGRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbnRlcm5hbFNtZU1hdGNoRmllbGQgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5zdGFudGlhdGVzIGEgbmV3IGluc3RhbmNlIG9mIE1hY2hpbmVOYW1lVmFsaWRhdG9yRGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFyIERlc3RydWN0aW9uIGhhbmRsZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1hdGNoRmllbGRWYWx1ZVN1YnNjcmlwdGlvbiAmJiAhdGhpcy5tYXRjaEZpZWxkVmFsdWVTdWJzY3JpcHRpb24uY2xvc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWF0Y2hGaWVsZFZhbHVlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgVmFsaWRhdG9yIGludGVyZmFjZS5cclxuICAgICAqIFZhbGlkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkIGF0dGFjaGVkIHRvIHRoaXMgY29udHJvbCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiBAc2VlIHNtZU1hdGNoRmllbGQgZXhhY3RseVxyXG4gICAgICogQHBhcmFtIGMgVGhlIEZvcm1Db250cm9sIGF0dGFjaGVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICogQHJldHVybiBudWxsIHdoZW4gdmFsaWQsIG90aGVyd2lzZSByZXR1cm5zIGEgdmFsaWRhdGlvbiBvYmplY3RcclxuICAgICAqL1xyXG4gICAgcHVibGljIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkFsZXJ0cyB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0czogVmFsaWRhdGlvbkFsZXJ0cyA9IHN1cGVyLnZhbGlkYXRlKGMpIHx8IHt9O1xyXG4gICAgICAgIGlmICghTXNmdFNtZS5pc051bGxPclVuZGVmaW5lZCh0aGlzLnNtZU1hdGNoRmllbGQpICYmIGMudmFsdWUgIT09IHRoaXMuc21lTWF0Y2hGaWVsZC52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHJpbmdzID0gPFN0cmluZ3M+TXNmdFNtZS5zZWxmKCkuUmVzb3VyY2VzLnN0cmluZ3M7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IHRoaXMuc21lTWF0Y2hGaWVsZC5sYWJlbCB8fCB0aGlzLnNtZU1hdGNoRmllbGQubmdNb2RlbC5uYW1lO1xyXG4gICAgICAgICAgICBhbGVydHNbJ3NtZU1hdGNoRmllbGQubm9NYXRjaCddID0ge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uRm9ybS5WYWxpZGF0aW9uLk1hdGNoRmllbGQubm9NYXRjaC5mb3JtYXQoZmllbGROYW1lKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydHNPck51bGwoYWxlcnRzKTtcclxuICAgIH1cclxufVxyXG4iXX0=