unicorn-components
Version:
<a target="_blank" href="https://getunicorn.io"><img src="https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2017/Jul/07/2615006260-5-nitsnetsstudios-ondemand-UNI_avatar.png" align="left"></a>
41 lines (32 loc) • 1.15 kB
text/typescript
import { EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Observable, Subscription } from 'rxjs/Rx';
import { UniBaseComponent } from './../base/base.component';
export abstract class UniInputBaseComponent extends UniBaseComponent implements OnInit {
model;
modelChange = new EventEmitter();
uniFocus = new EventEmitter();
uniBlur = new EventEmitter();
name = '';
value = '';
required = false;
debounce = 0;
debounceSubs: Subscription;
ngOnInit() {
if (!this.model && this.value) {
this.onNgModelChange(this.value);
} else {
this.value = this.model;
}
}
onNgModelChange(ev): Observable<any> {
if (this.debounceSubs && !this.debounceSubs.closed) {
this.debounceSubs.unsubscribe();
}
const observable = Observable.timer(this.debounce || 0).share();
this.debounceSubs = observable.subscribe(_ => {
this.model = ev;
this.modelChange.emit(ev);
});
return observable;
}
}