novo-elements
Version:
Bullhorn's NOVO Element Repository for Angular 2
54 lines (46 loc) • 1.72 kB
text/typescript
// NG2
import { Directive, EventEmitter, ElementRef, Renderer, OnChanges, OnInit, Input, Output, SimpleChanges, HostListener } from '@angular/core';
// APP
import { KeyCodes } from './../../../../utils/key-codes/KeyCodes';
import { Helpers } from './../../../../utils/Helpers';
export class TableFilter implements OnInit, OnChanges {
config: any;
onFilterChange: EventEmitter<any> = new EventEmitter();
filterThrottle: any;
constructor(private element: ElementRef, private renderer: Renderer) {
this.element = element;
this.renderer = renderer;
}
ngOnInit() {
this.ngOnChanges();
}
ngOnChanges(changes?: SimpleChanges) {
let label = '';
if (this.config.freetextFilter) {
label = this.config.freetextFilter;
} else if (this.config.filter) {
label = this.config.filter;
}
this.renderer.setElementProperty(this.element, 'value', label);
}
public onChangeFilter(event: KeyboardEvent) {
clearTimeout(this.filterThrottle);
if (KeyCodes.ENTER === event.keyCode) {
this.config.filter = (event.target as any).value;
this.onFilterChange.emit({ filtering: this.config });
} else {
this.filterThrottle = setTimeout(() => {
this.config.filter = (event.target as any).value;
this.onFilterChange.emit({ filtering: this.config });
}, 300);
}
}
public onClick(event) {
Helpers.swallowEvent(event);
}
}