@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
63 lines • 8.17 kB
JavaScript
import { Directive, forwardRef, Input } from '@angular/core';
import { FormValidatorBase } from './base-validator';
import { SME_VALIDATORS } from './sme-validator';
import * as i0 from "@angular/core";
/**
* Provider for the FormFieldValidatorDirective directive
*/
export const REQUIRED_TRIMMED_VALIDATOR = {
provide: SME_VALIDATORS,
useExisting: forwardRef(() => RequiredTrimmedValidatorDirective),
multi: true
};
/**
* A Directive that marks a field as invalid if it is null or empty after being trimmed
*/
export class RequiredTrimmedValidatorDirective extends FormValidatorBase {
/**
* Instantiates a new instance of RequiredTrimmedValidatorDirective
*/
constructor() {
super();
/**
* Internal placeholder for requiredTrimmed
*/
this.internalRequiredTrimmed = true;
}
/**
* Indicates that this validator should be run
*/
get requiredTrimmed() { return this.internalRequiredTrimmed; }
set requiredTrimmed(value) {
// warn if value is undefined or truthy and not 'false' string
this.internalRequiredTrimmed = MsftSme.isUndefined(value) || (!!value && `${value}` !== 'false');
this.revalidate();
}
/**
* Implementation of Validator interface.
* Validates that the control contains a value other than null or whitespace
* @param c The FormControl attached to this element
* @return null when valid, otherwise returns a validation object
*/
validate(c) {
if (this.requiredTrimmed && MsftSme.isNullOrWhiteSpace(`${c.value}`)) {
// return an object similar to angular alert object.
return { required: true };
}
return null;
}
}
/** @nocollapse */ RequiredTrimmedValidatorDirective.ɵfac = function RequiredTrimmedValidatorDirective_Factory(t) { return new (t || RequiredTrimmedValidatorDirective)(); };
/** @nocollapse */ RequiredTrimmedValidatorDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: RequiredTrimmedValidatorDirective, selectors: [["sme-form-field", "smeRequiredTrimmed", "", "formControlName", ""], ["sme-form-field", "smeRequiredTrimmed", "", "formControl", ""], ["sme-form-field", "smeRequiredTrimmed", "", "ngModel", ""]], inputs: { requiredTrimmed: ["smeRequiredTrimmed", "requiredTrimmed"] }, features: [i0.ɵɵProvidersFeature([REQUIRED_TRIMMED_VALIDATOR]), i0.ɵɵInheritDefinitionFeature] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RequiredTrimmedValidatorDirective, [{
type: Directive,
args: [{
// eslint-disable-next-line max-len
selector: 'sme-form-field[smeRequiredTrimmed][formControlName],sme-form-field[smeRequiredTrimmed][formControl],sme-form-field[smeRequiredTrimmed][ngModel]',
providers: [REQUIRED_TRIMMED_VALIDATOR]
}]
}], function () { return []; }, { requiredTrimmed: [{
type: Input,
args: ['smeRequiredTrimmed']
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtdHJpbW1lZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9mb3JtL3ZhbGlkYXRvcnMvcmVxdWlyZWQtdHJpbW1lZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUc3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRWpEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQW1CO0lBQ3RELE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUNBQWlDLENBQUM7SUFDaEUsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8saUNBQWtDLFNBQVEsaUJBQWlCO0lBa0JwRTs7T0FFRztJQUNIO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFUWjs7V0FFRztRQUNLLDRCQUF1QixHQUFHLElBQUksQ0FBQztJQU92QyxDQUFDO0lBckJEOztPQUVHO0lBQ0gsSUFDVyxlQUFlLEtBQWMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0lBQzlFLElBQVcsZUFBZSxDQUFDLEtBQWM7UUFDckMsOERBQThEO1FBQzlELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBY0Q7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsQ0FBYztRQUMxQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDbEUsb0RBQW9EO1lBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDN0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOztxSUFyQ1EsaUNBQWlDO21IQUFqQyxpQ0FBaUMsMlRBRi9CLENBQUMsMEJBQTBCLENBQUM7dUZBRTlCLGlDQUFpQztjQUw3QyxTQUFTO2VBQUM7Z0JBQ1AsbUNBQW1DO2dCQUNuQyxRQUFRLEVBQUUsaUpBQWlKO2dCQUMzSixTQUFTLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQzthQUMxQztzQ0FPYyxlQUFlO2tCQUR6QixLQUFLO21CQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIFN0YXRpY1Byb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uQWxlcnRzIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1hbGVydC92YWxpZGF0aW9uLWFsZXJ0JztcclxuaW1wb3J0IHsgRm9ybVZhbGlkYXRvckJhc2UgfSBmcm9tICcuL2Jhc2UtdmFsaWRhdG9yJztcclxuaW1wb3J0IHsgU01FX1ZBTElEQVRPUlMgfSBmcm9tICcuL3NtZS12YWxpZGF0b3InO1xyXG5cclxuLyoqXHJcbiAqIFByb3ZpZGVyIGZvciB0aGUgRm9ybUZpZWxkVmFsaWRhdG9yRGlyZWN0aXZlIGRpcmVjdGl2ZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX1RSSU1NRURfVkFMSURBVE9SOiBTdGF0aWNQcm92aWRlciA9IHtcclxuICAgIHByb3ZpZGU6IFNNRV9WQUxJREFUT1JTLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmVxdWlyZWRUcmltbWVkVmFsaWRhdG9yRGlyZWN0aXZlKSxcclxuICAgIG11bHRpOiB0cnVlXHJcbn07XHJcblxyXG4vKipcclxuICogQSBEaXJlY3RpdmUgdGhhdCBtYXJrcyBhIGZpZWxkIGFzIGludmFsaWQgaWYgaXQgaXMgbnVsbCBvciBlbXB0eSBhZnRlciBiZWluZyB0cmltbWVkXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXHJcbiAgICBzZWxlY3RvcjogJ3NtZS1mb3JtLWZpZWxkW3NtZVJlcXVpcmVkVHJpbW1lZF1bZm9ybUNvbnRyb2xOYW1lXSxzbWUtZm9ybS1maWVsZFtzbWVSZXF1aXJlZFRyaW1tZWRdW2Zvcm1Db250cm9sXSxzbWUtZm9ybS1maWVsZFtzbWVSZXF1aXJlZFRyaW1tZWRdW25nTW9kZWxdJyxcclxuICAgIHByb3ZpZGVyczogW1JFUVVJUkVEX1RSSU1NRURfVkFMSURBVE9SXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVxdWlyZWRUcmltbWVkVmFsaWRhdG9yRGlyZWN0aXZlIGV4dGVuZHMgRm9ybVZhbGlkYXRvckJhc2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoYXQgdGhpcyB2YWxpZGF0b3Igc2hvdWxkIGJlIHJ1blxyXG4gICAgICovXHJcbiAgICBASW5wdXQoJ3NtZVJlcXVpcmVkVHJpbW1lZCcpXHJcbiAgICBwdWJsaWMgZ2V0IHJlcXVpcmVkVHJpbW1lZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuaW50ZXJuYWxSZXF1aXJlZFRyaW1tZWQ7IH1cclxuICAgIHB1YmxpYyBzZXQgcmVxdWlyZWRUcmltbWVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgLy8gd2FybiBpZiB2YWx1ZSBpcyB1bmRlZmluZWQgb3IgdHJ1dGh5IGFuZCBub3QgJ2ZhbHNlJyBzdHJpbmdcclxuICAgICAgICB0aGlzLmludGVybmFsUmVxdWlyZWRUcmltbWVkID0gTXNmdFNtZS5pc1VuZGVmaW5lZCh2YWx1ZSkgfHwgKCEhdmFsdWUgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJyk7XHJcbiAgICAgICAgdGhpcy5yZXZhbGlkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnRlcm5hbCBwbGFjZWhvbGRlciBmb3IgcmVxdWlyZWRUcmltbWVkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW50ZXJuYWxSZXF1aXJlZFRyaW1tZWQgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5zdGFudGlhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFJlcXVpcmVkVHJpbW1lZFZhbGlkYXRvckRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgVmFsaWRhdG9yIGludGVyZmFjZS5cclxuICAgICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBjb250cm9sIGNvbnRhaW5zIGEgdmFsdWUgb3RoZXIgdGhhbiBudWxsIG9yIHdoaXRlc3BhY2VcclxuICAgICAqIEBwYXJhbSBjIFRoZSBGb3JtQ29udHJvbCBhdHRhY2hlZCB0byB0aGlzIGVsZW1lbnRcclxuICAgICAqIEByZXR1cm4gbnVsbCB3aGVuIHZhbGlkLCBvdGhlcndpc2UgcmV0dXJucyBhIHZhbGlkYXRpb24gb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZShjOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25BbGVydHMgfCBudWxsIHtcclxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlZFRyaW1tZWQgJiYgTXNmdFNtZS5pc051bGxPcldoaXRlU3BhY2UoYCR7Yy52YWx1ZX1gKSkge1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gYW4gb2JqZWN0IHNpbWlsYXIgdG8gYW5ndWxhciBhbGVydCBvYmplY3QuXHJcbiAgICAgICAgICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==