UNPKG

@bi8/am-dyn-form

Version:

ng update @angular/cli yarn add @angular/cli

123 lines 16.9 kB
import { FormControl, Validators } from "@angular/forms"; export class DynFormControl extends FormControl { constructor(options = {}, validator, asyncValidator) { super(options.defaultValue != undefined ? options.defaultValue : null, validator, asyncValidator); this.config = {}; this.key = options.key || ''; if (options) { this.config.required = options.required != undefined ? options.required : false; this.config.hint = options.hint; this.config.placeholder = options.placeholder; this.config.dir = options.dir || 'ltr'; this.config.messages = options.messages || []; this.config.useDefaultErrorMessages = options.useDefaultErrorMessages || false; this.config.loadFn = options.loadFn || null; this.config.disable = options.disable || false; this.config.appearance = options.appearance || 'standard'; this.config.compact = options.compact === undefined ? true : options.compact; if (this.config.loadFn) { this.loadValue(options.defaultValue, this.config.loadFn, { onlySelf: true }); } if (this.config.disable) { this.disable({ onlySelf: true }); } if (validator) { if (validator instanceof Array) { for (let v of validator) { if (v == Validators.required) { this.config.required = true; break; } } } else if (validator == Validators.required) { this.config.required = true; } } } } removeRequired() { this.config.required = false; this.removeValidator(Validators.required); this.updateValueAndValidity(); } addRequired() { this.config.required = true; this.setValidator(Validators.required); this.updateValueAndValidity(); } isRequired() { return this.isValidator(Validators.required); } isValidator(validator) { if (!this.validator) { return false; } if (this.validator instanceof Array) { return this.validator.find(v => v == validator) != undefined; } else { return this.validator = validator; } } setValidator(validator) { if (!this.isValidator(validator)) { if (this.validator instanceof Array) { return this.validator.push(validator); } else { return this.validator = validator; } } } removeValidator(validator) { if (this.isValidator(validator)) { if (this.validator instanceof Array) { this.setValidators(this.validator.filter(v => v != validator)); } else { this.setValidators([]); } } } setLogicalError(message) { this.logicalErrorMessage = message; this.markAsTouched(); let errors = this.errors; if (!errors) { errors = {}; } errors.logical = true; this.setErrors(errors); } clearLogicalError() { this.logicalErrorMessage = null; if (this.errors) { this.errors.logical = false; this.setErrors(this.errors); } } activateValidators() { } setValue(value, options) { if (options && options.loadFn) { options.loadFn(value).subscribe((result) => { super.setValue(result, options); }); } else { if (value == null) { super.setValue('', options); } else { super.setValue(value, options); } } } loadValue(param, loadFn, options) { loadFn(param).subscribe((result) => { super.setValue(result, options); }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluLWZvcm0tY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BiaTgvYW0tZHluLWZvcm0vIiwic291cmNlcyI6WyJhcHAvbW9kdWxlcy9hbS1keW4tZm9ybS9keW4tZm9ybS1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQWlDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBU3RGLE1BQU0sT0FBZ0IsY0FBZSxTQUFRLFdBQVc7SUFVdEQsWUFBWSxVQWNSLEVBQUUsRUFBRSxTQUE4QyxFQUFFLGNBQTZEO1FBQ25ILEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQXJCcEcsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQXNCZixJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksT0FBTyxFQUFDO1lBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNoRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1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WUFDNUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUMsRUFBRTtnQkFDeEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO2dCQUNqQixLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNoQztTQUNGO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVLEVBQUUsTUFBMEIsRUFBRSxPQUtqRDtRQUNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUMsRUFBRTtZQUNoQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Rm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXJGbjxBLCBUPiB7XHJcbiAgKHZhbHVlOiBBKSA6IE9ic2VydmFibGU8VD5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRFlOX0ZJRUxEX0FQUEVBUkFOQ0UgPSAnbGVnYWN5JyB8ICdzdGFuZGFyZCcgfCAnZmlsbCcgfCAnb3V0bGluZSdcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEeW5Gb3JtQ29udHJvbCBleHRlbmRzIEZvcm1Db250cm9sIHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIGNvbmZpZzogYW55ID0ge307XHJcblxyXG4gIGxvZ2ljYWxFcnJvck1lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgdkNhY2hlOiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHtcclxuICAgIGRlZmF1bHRWYWx1ZT86IGFueSxcclxuICAgIGtleT86IHN0cmluZywgICAgICAgICAgIC8vIHRoZSBrZXkgb2YgdGhpcyBmaWVsZCAodXNlZCBhcyByZWZlcmVuY2UgYW5kIHRvIGxvb2t1cCBsYW5ndWFnZSBsYWJlbHMsIGV0YylcclxuICAgIHJlcXVpcmVkPzogYm9vbGVhbiwgICAgIC8vIGlmIHRoaXMgZmllbGQgaXMgcmVxdWlyZWQgb3Igbm90XHJcbiAgICBkaXI/IDogc3RyaW5nLCAgICAgICAgICAvLyB0aGUgZmllbGQgZGlyZWN0aW9uIChydGwsIGx0cilcclxuICAgIGhpbnQ/IDogc3RyaW5nLFxyXG4gICAgcGxhY2Vob2xkZXI/IDogc3RyaW5nLFxyXG4gICAgbWVzc2FnZXM/IDogYW55W10sXHJcbiAgICB1c2VEZWZhdWx0RXJyb3JNZXNzYWdlcz86IGJvb2xlYW4sXHJcbiAgICBsb2FkRm4/OiBMb2FkZXJGbjxhbnksIGFueT4sXHJcbiAgICBkaXNhYmxlPzogYm9vbGVhbixcclxuICAgIGFwcGVhcmFuY2U/OiBEWU5fRklFTERfQVBQRUFSQU5DRVxyXG4gICAgY29tcGFjdD86IGJvb2xlYW5cclxuXHJcbiAgfSA9IHt9LCB2YWxpZGF0b3I/OiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW10gfCBudWxsLCBhc3luY1ZhbGlkYXRvcj86IEFzeW5jVmFsaWRhdG9yRm4gfCBBc3luY1ZhbGlkYXRvckZuW10gfCBudWxsKSB7XHJcbiAgICBzdXBlcihvcHRpb25zLmRlZmF1bHRWYWx1ZSAhPSB1bmRlZmluZWQgPyBvcHRpb25zLmRlZmF1bHRWYWx1ZSA6IG51bGwsIHZhbGlkYXRvciwgYXN5bmNWYWxpZGF0b3IpO1xyXG4gICAgdGhpcy5rZXkgPSBvcHRpb25zLmtleSB8fCAnJztcclxuICAgIGlmIChvcHRpb25zKXtcclxuICAgICAgdGhpcy5jb25maWcucmVxdWlyZWQgPSBvcHRpb25zLnJlcXVpcmVkICE9IHVuZGVmaW5lZCA/IG9wdGlvbnMucmVxdWlyZWQgOiBmYWxzZTtcclxuICAgICAgdGhpcy5jb25maWcuaGludCA9IG9wdGlvbnMuaGludDtcclxuICAgICAgdGhpcy5jb25maWcucGxhY2Vob2xkZXIgPSBvcHRpb25zLnBsYWNlaG9sZGVyO1xyXG4gICAgICB0aGlzLmNvbmZpZy5kaXIgPSBvcHRpb25zLmRpciB8fCAnbHRyJztcclxuICAgICAgdGhpcy5jb25maWcubWVzc2FnZXMgPSBvcHRpb25zLm1lc3NhZ2VzIHx8IFtdO1xyXG4gICAgICB0aGlzLmNvbmZpZy51c2VEZWZhdWx0RXJyb3JNZXNzYWdlcyA9IG9wdGlvbnMudXNlRGVmYXVsdEVycm9yTWVzc2FnZXMgfHwgZmFsc2U7XHJcbiAgICAgIHRoaXMuY29uZmlnLmxvYWRGbiA9IG9wdGlvbnMubG9hZEZuIHx8IG51bGw7XHJcbiAgICAgIHRoaXMuY29uZmlnLmRpc2FibGUgPSBvcHRpb25zLmRpc2FibGUgfHwgZmFsc2U7XHJcbiAgICAgIHRoaXMuY29uZmlnLmFwcGVhcmFuY2UgPSBvcHRpb25zLmFwcGVhcmFuY2UgfHwgJ3N0YW5kYXJkJztcclxuICAgICAgdGhpcy5jb25maWcuY29tcGFjdCA9IG9wdGlvbnMuY29tcGFjdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMuY29tcGFjdDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2FkRm4pe1xyXG4gICAgICAgIHRoaXMubG9hZFZhbHVlKG9wdGlvbnMuZGVmYXVsdFZhbHVlLCB0aGlzLmNvbmZpZy5sb2FkRm4sIHtvbmx5U2VsZjogdHJ1ZX0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWcuZGlzYWJsZSl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlKHtvbmx5U2VsZjogdHJ1ZX0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh2YWxpZGF0b3Ipe1xyXG4gICAgICAgIGlmICh2YWxpZGF0b3IgaW5zdGFuY2VvZiBBcnJheSl7XHJcbiAgICAgICAgICBmb3IgKGxldCB2IG9mIHZhbGlkYXRvcil7XHJcbiAgICAgICAgICAgIGlmICh2ID09IFZhbGlkYXRvcnMucmVxdWlyZWQpe1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnJlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdG9yID09IFZhbGlkYXRvcnMucmVxdWlyZWQpe1xyXG4gICAgICAgICAgdGhpcy5jb25maWcucmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUmVxdWlyZWQoKXtcclxuICAgIHRoaXMuY29uZmlnLnJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlbW92ZVZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgYWRkUmVxdWlyZWQoKXtcclxuICAgIHRoaXMuY29uZmlnLnJlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2V0VmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBpc1JlcXVpcmVkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWRhdG9yKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pe1xyXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRvcil7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy52YWxpZGF0b3IgaW5zdGFuY2VvZiBBcnJheSl7XHJcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvci5maW5kKHYgPT4gdiA9PSB2YWxpZGF0b3IpICE9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvciA9IHZhbGlkYXRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRvcih2YWxpZGF0b3I6IFZhbGlkYXRvckZuKXtcclxuICAgIGlmICghdGhpcy5pc1ZhbGlkYXRvcih2YWxpZGF0b3IpKXtcclxuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvci5wdXNoKHZhbGlkYXRvcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yID0gdmFsaWRhdG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVWYWxpZGF0b3IodmFsaWRhdG9yOiBWYWxpZGF0b3JGbil7XHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkYXRvcih2YWxpZGF0b3IpKXtcclxuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3IuZmlsdGVyKHYgPT4gdiAhPSB2YWxpZGF0b3IpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnMoW10pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMb2dpY2FsRXJyb3IobWVzc2FnZTogc3RyaW5nKXtcclxuICAgIHRoaXMubG9naWNhbEVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7XHJcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcclxuXHJcbiAgICBsZXQgZXJyb3JzID0gdGhpcy5lcnJvcnM7XHJcbiAgICBpZiAoIWVycm9ycyl7XHJcbiAgICAgIGVycm9ycyA9IHt9XHJcbiAgICB9XHJcbiAgICBlcnJvcnMubG9naWNhbCA9IHRydWU7XHJcbiAgICB0aGlzLnNldEVycm9ycyhlcnJvcnMpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJMb2dpY2FsRXJyb3IoKXtcclxuICAgIHRoaXMubG9naWNhbEVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5lcnJvcnMpe1xyXG4gICAgICB0aGlzLmVycm9ycy5sb2dpY2FsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2V0RXJyb3JzKHRoaXMuZXJyb3JzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2YXRlVmFsaWRhdG9ycygpe1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUodmFsdWU6IGFueSwgb3B0aW9ucz86IHtcclxuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcclxuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XHJcbiAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U/OiBib29sZWFuO1xyXG4gICAgZW1pdFZpZXdUb01vZGVsQ2hhbmdlPzogYm9vbGVhbjtcclxuICAgIGxvYWRGbj86IExvYWRlckZuPGFueSwgYW55PjtcclxuICB9KSA6IHZvaWQge1xyXG5cclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMubG9hZEZuKXtcclxuICAgICAgb3B0aW9ucy5sb2FkRm4odmFsdWUpLnN1YnNjcmliZSgocmVzdWx0KT0+e1xyXG4gICAgICAgIHN1cGVyLnNldFZhbHVlKHJlc3VsdCwgb3B0aW9ucyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICBzdXBlci5zZXRWYWx1ZSgnJywgb3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3VwZXIuc2V0VmFsdWUodmFsdWUsIG9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkVmFsdWUocGFyYW06IGFueSwgbG9hZEZuOiBMb2FkZXJGbjxhbnksIGFueT4sIG9wdGlvbnM/OiB7XHJcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XHJcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xyXG4gICAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlPzogYm9vbGVhbjtcclxuICAgIGVtaXRWaWV3VG9Nb2RlbENoYW5nZT86IGJvb2xlYW47XHJcbiAgfSl7XHJcbiAgICBsb2FkRm4ocGFyYW0pLnN1YnNjcmliZSgocmVzdWx0KT0+e1xyXG4gICAgICBzdXBlci5zZXRWYWx1ZShyZXN1bHQsIG9wdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==