@bi8/am-dyn-form
Version:
ng update @angular/cli yarn add @angular/cli
79 lines • 11.6 kB
JavaScript
import { DynFormControl } from "./dyn-form-control";
import { Subject } from "rxjs";
import { debounceTime, distinctUntilChanged, tap } from "rxjs/operators";
import { EventType } from "@bi8/am-io";
export class DynAutoSelectControl extends DynFormControl {
constructor(options = {}, validator, asyncValidator) {
super(options, validator, asyncValidator);
this.type = 'autoselect';
this.hasValue = false;
this.loading = false;
this.multiple = false;
this.searchable = true;
this.clearToggle = false;
this.showNone = options['showNone'] || false;
this.noneLabel = options['noneLabel'];
this.multiple = options['multiple'] || false;
this.debounce = options['debounce'] || 500;
this.searchable = options['searchable'] || false;
let debounceOp = debounceTime(200);
let showTappet = tap(() => this.loading = true);
let hideTappet = tap(() => this.loading = false);
if (options['bindLabel']) {
this.bindLabel = options['bindLabel'];
}
else {
this.bindLabel = 'name';
}
if (options['bindValue']) {
this.bindValue = options['bindValue'];
}
this.labelTemplate = options['labelTemplate'];
this.optionTemplate = options['optionTemplate'];
if (options['channel']) {
this.channel = options['channel'];
this.channel.asEventObservable().subscribe((event) => {
switch (event.observeType) {
case EventType.on_next:
this.loading = true;
break;
default:
this.loading = false;
break;
}
});
if (this.searchable) {
this.typeahead$ = new Subject();
this.typeahead$.pipe(debounceTime(this.debounce), distinctUntilChanged()).subscribe(this.channel);
}
else {
this.typeahead$ = null;
}
this.items$ = this.channel.asObservable();
}
this.valueChanges.subscribe((value) => {
this.checkHasValue(value);
this.hasValue = !(!value);
});
this.channel.next();
}
checkHasValue(value) {
setTimeout(() => {
if (this.element) {
if (!value || value.length === 0) {
this.element.classList.remove("ng-has-value");
}
else {
this.element.classList.add("ng-has-value");
}
}
});
}
reload(param) {
this.channel.next(param);
}
getCustomPlaceholder() {
return this.isRequired() ? this.config.placeholder + ' *' : this.config.placeholder;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluLWF1dG8tc2VsZWN0LWNvbnRyb2wuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYmk4L2FtLWR5bi1mb3JtLyIsInNvdXJjZXMiOlsiYXBwL21vZHVsZXMvYW0tZHluLWZvcm0vZHluLWF1dG8tc2VsZWN0LWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFekMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQVUsU0FBUyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRTlDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxjQUFjO0lBeUJ0RCxZQUFZLFVBQWMsRUFBRSxFQUFFLFNBQThDLEVBQUUsY0FBNkQ7UUFDekksS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7UUF6QjVDLFNBQUksR0FBRyxZQUFZLENBQUM7UUFVcEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQU0zQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUszQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUMzQyxJQUFJLENBQUMs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TUFBTSxDQUFDLEtBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUN0RixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1ZhbGlkYXRvckZuLCBBc3luY1ZhbGlkYXRvckZufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtEeW5Gb3JtQ29udHJvbH0gZnJvbSBcIi4vZHluLWZvcm0tY29udHJvbFwiO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7VGVtcGxhdGVSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtOZ1NlbGVjdENvbXBvbmVudH0gZnJvbSBcIkBuZy1zZWxlY3Qvbmctc2VsZWN0XCI7XHJcbmltcG9ydCB7Q2hhbm5lbCwgRXZlbnRUeXBlfSBmcm9tIFwiQGJpOC9hbS1pb1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIER5bkF1dG9TZWxlY3RDb250cm9sIGV4dGVuZHMgRHluRm9ybUNvbnRyb2wge1xyXG4gIHR5cGUgPSAnYXV0b3NlbGVjdCc7XHJcbiAgY2hhbm5lbDogQ2hhbm5lbDxzdHJpbmcsIGFueT47XHJcbiAgdHlwZWFoZWFkJDogU3ViamVjdDxhbnk+O1xyXG4gIGl0ZW1zJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIHNob3dOb25lOiBib29sZWFuO1xyXG4gIG5vbmVMYWJlbDogc3RyaW5nO1xyXG4gIGxhYmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgb3B0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgYmluZFZhbHVlOiBzdHJpbmc7XHJcbiAgYmluZFJlZjogc3RyaW5nO1xyXG4gIGhhc1ZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGJpbmRMYWJlbDogc3RyaW5nO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlYm91bmNlOiBudW1iZXI7XHJcbiAgc2VhcmNoYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHNlbGVjdGVkVmFsdWU6IGFueTtcclxuICBuZ1NlbGVjdENvbXBvbmVudDogTmdTZWxlY3RDb21wb25lbnQ7XHJcbiAgZWxlbWVudDogRWxlbWVudDtcclxuXHJcbiAgY2xlYXJUb2dnbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczoge30gPSB7fSwgdmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgbnVsbCwgYXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbCkge1xyXG4gICAgc3VwZXIob3B0aW9ucywgdmFsaWRhdG9yLCBhc3luY1ZhbGlkYXRvcik7XHJcblxyXG4gICAgdGhpcy5zaG93Tm9uZSA9IG9wdGlvbnNbJ3Nob3dOb25lJ10gfHwgZmFsc2U7XHJcbiAgICB0aGlzLm5vbmVMYWJlbCA9IG9wdGlvbnNbJ25vbmVMYWJlbCddO1xyXG4gICAgdGhpcy5tdWx0aXBsZSA9IG9wdGlvbnNbJ211bHRpcGxlJ10gfHwgZmFsc2U7XHJcbiAgICB0aGlzLmRlYm91bmNlID0gb3B0aW9uc1snZGVib3VuY2UnXSB8fCA1MDA7XHJcbiAgICB0aGlzLnNlYXJjaGFibGUgPSBvcHRpb25zWydzZWFyY2hhYmxlJ10gfHwgZmFsc2U7XHJcblxyXG4gICAgbGV0IGRlYm91bmNlT3AgPSBkZWJvdW5jZVRpbWUoMjAwKTtcclxuICAgIGxldCBzaG93VGFwcGV0ID0gdGFwKCgpPT50aGlzLmxvYWRpbmcgPSB0cnVlKTtcclxuICAgIGxldCBoaWRlVGFwcGV0ID0gdGFwKCgpPT50aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcblxyXG4gICAgaWYgKG9wdGlvbnNbJ2JpbmRMYWJlbCddKXtcclxuICAgICAgdGhpcy5iaW5kTGFiZWwgPSBvcHRpb25zWydiaW5kTGFiZWwnXTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmJpbmRMYWJlbCA9ICduYW1lJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uc1snYmluZFZhbHVlJ10pe1xyXG4gICAgICB0aGlzLmJpbmRWYWx1ZSA9IG9wdGlvbnNbJ2JpbmRWYWx1ZSddO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubGFiZWxUZW1wbGF0ZSA9IG9wdGlvbnNbJ2xhYmVsVGVtcGxhdGUnXTtcclxuICAgIHRoaXMub3B0aW9uVGVtcGxhdGUgPSBvcHRpb25zWydvcHRpb25UZW1wbGF0ZSddO1xyXG5cclxuICAgIGlmIChvcHRpb25zWydjaGFubmVsJ10pIHtcclxuICAgICAgdGhpcy5jaGFubmVsID0gb3B0aW9uc1snY2hhbm5lbCddO1xyXG4gICAgICB0aGlzLmNoYW5uZWwuYXNFdmVudE9ic2VydmFibGUoKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpPT57XHJcbiAgICAgICAgc3dpdGNoKGV2ZW50Lm9ic2VydmVUeXBlKXtcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLm9uX25leHQ6XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWFyY2hhYmxlKXtcclxuICAgICAgICB0aGlzLnR5cGVhaGVhZCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICAgIHRoaXMudHlwZWFoZWFkJC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHRoaXMuY2hhbm5lbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50eXBlYWhlYWQkID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pdGVtcyQgPSB0aGlzLmNoYW5uZWwuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSk9PntcclxuICAgICAgdGhpcy5jaGVja0hhc1ZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy5oYXNWYWx1ZSA9ICEoIXZhbHVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2hhbm5lbC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBjaGVja0hhc1ZhbHVlKHZhbHVlPzogYW55KXtcclxuICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgaWYgKHRoaXMuZWxlbWVudCl7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwibmctaGFzLXZhbHVlXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcIm5nLWhhcy12YWx1ZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkKHBhcmFtPzogYW55KXtcclxuICAgIHRoaXMuY2hhbm5lbC5uZXh0KHBhcmFtKTtcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbVBsYWNlaG9sZGVyKCl7XHJcbiAgICByZXR1cm4gdGhpcy5pc1JlcXVpcmVkKCkgPyB0aGlzLmNvbmZpZy5wbGFjZWhvbGRlciArICcgKicgOiB0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcjtcclxuICB9XHJcbn1cclxuIl19