UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

63 lines 8.17 kB
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==