ftable
Version:
Angular 6/7 Tables
129 lines (127 loc) • 12.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component } from '@angular/core';
import { EventEmitter } from '@angular/core';
import { Output } from '@angular/core';
import { Input } from '@angular/core';
import { ViewChild, ElementRef } from '@angular/core';
export class NumberFFilterComponent {
constructor() {
this.filter = new EventEmitter();
// Hold Inputted Values
this.min = null;
this.max = null;
}
/**
* @param {?} mode
* @param {?} event
* @return {?}
*/
numberKeyUp(mode, event) {
if (event.keyCode !== 8 && event.keyCode !== 46) {
this[mode] = event.target.value;
// Move focus for UX
if (mode === 'min' && event.keyCode === 39) {
this._elMaxRef.nativeElement.focus();
}
else if (mode === 'max' && event.keyCode === 39) {
this._elMinRef.nativeElement.focus();
}
}
if (this.source === 'frontend') {
/** @type {?} */
const fn = function (name, searchMin, searchMax) {
return d => {
return ((/** @type {?} */ (d))).filter(x => (searchMin ? searchMin <= Number(x[name]) : true) &&
(searchMax ? searchMax >= Number(x[name]) : true));
};
};
this.filter.emit({ columnName: this.columnName, apply: fn(this.columnName, this.min, this.max) });
}
else {
/** @type {?} */
var result = { min: this.min, max: this.max };
this.filter.emit({ columnName: this.columnName, type: 'number', apply: result });
}
}
/**
* @return {?}
*/
reset() {
this.min = null;
this.max = null;
this.filter.emit({ columnName: this.columnName, apply: null });
}
}
NumberFFilterComponent.decorators = [
{ type: Component, args: [{
template: `
<table class='ft-ffilter-table'>
<tr class='ft-ffilter-column'>
<td class='ft-ffilter-row'>
<input class="ft-i ft-i-ffilter ft-i-min" type="number" placeholder='>=' [(ngModel)]='min' (keyup)='numberKeyUp("min",$event)' #minRef >
</td>
</tr>
<tr class='ft-ffilter-column'>
<td class='ft-ffilter-row'>
<input class="ft-i ft-i-ffilter ft-i-max" type="number" placeholder='<=' [(ngModel)]='max' (keyup)='numberKeyUp("max",$event)' #maxRef >
</td>
</tr>
</table>
<!--
<div class="ft-ffilter">
<div class="ft-div1-ffilter">
<div class="ft-ffilter-prepend">
<span class="ft-ffilter-text">>=</span>
</div>
<input class="ft-i ft-i-ffilter ft-i-min" type="number" [(ngModel)]='min' (keyup)='numberKeyUp("min",$event)' #minRef >
<div class="ft-ffilter-append">
<span class="ft-ffilter-text"><=</span>
</div>
</div>
<div class="ft-div2-ffilter">
<div class="ft-ffilter-prepend">
<span class="ft-filter-text"><=</span>
</div>
<input class="ft-i ft-i-filter ft-i-max" type="number" [(ngModel)]='max' (keyup)='numberKeyUp("max",$event)' #maxRef >
<div class="ft-ffilter-append">
<span class="ft-filter-text">>=</span>
</div>
</div>
</div>
-->
`,
styles: [`
:host { flex:1;
}`]
}] }
];
NumberFFilterComponent.propDecorators = {
_elMinRef: [{ type: ViewChild, args: ["minRef",] }],
_elMaxRef: [{ type: ViewChild, args: ["maxRef",] }],
source: [{ type: Input }],
otherData: [{ type: Input }],
columnName: [{ type: Input }],
filter: [{ type: Output }]
};
if (false) {
/** @type {?} */
NumberFFilterComponent.prototype._elMinRef;
/** @type {?} */
NumberFFilterComponent.prototype._elMaxRef;
/** @type {?} */
NumberFFilterComponent.prototype.source;
/** @type {?} */
NumberFFilterComponent.prototype.otherData;
/** @type {?} */
NumberFFilterComponent.prototype.columnName;
/** @type {?} */
NumberFFilterComponent.prototype.filter;
/** @type {?} */
NumberFFilterComponent.prototype.min;
/** @type {?} */
NumberFFilterComponent.prototype.max;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyZmZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mdGFibGUvIiwic291cmNlcyI6WyJsaWIvZmZpbHRlci9maWx0ZXJzL251bWJlcmZmaWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBZ0R0RCxNQUFNLE9BQU8sc0JBQXNCO0lBM0NuQztRQW1EWSxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7O1FBR3ZELFFBQUcsR0FBVyxJQUFJLENBQUM7UUFDbkIsUUFBRyxHQUFXLElBQUksQ0FBQztJQW9DNUIsQ0FBQzs7Ozs7O0lBbENDLFdBQVcsQ0FBQyxJQUFZLEVBQUUsS0FBSztRQUM3QixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUVoQyxvQkFBb0I7WUFDcEIsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssRUFBRSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN0QztpQkFDSSxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3RDO1NBQ0Y7UUFFQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFOztrQkFDeEIsRUFBRSxHQUFHLFVBQVUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTO2dCQUM3QyxPQUFPLENBQUMsQ0FBQyxFQUFFO29CQUNULE9BQU8sQ0FBQyxtQkFBTyxDQUFDLEVBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUMzQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNqRCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ2xELENBQUM7Z0JBQ0osQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNuRzthQUFNOztnQkFDRCxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbEY7SUFDTCxDQUFDOzs7O0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQzs7O1lBMUZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1Q7eUJBQ1E7O0lBRVA7YUFDSDs7O3dCQUVFLFNBQVMsU0FBQyxRQUFRO3dCQUNsQixTQUFTLFNBQUMsUUFBUTtxQkFFbEIsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7cUJBRUwsTUFBTTs7OztJQVBQLDJDQUEyQzs7SUFDM0MsMkNBQTJDOztJQUUzQyx3Q0FBK0I7O0lBQy9CLDJDQUErQjs7SUFDL0IsNENBQW1DOztJQUVuQyx3Q0FBOEQ7O0lBRzlELHFDQUEwQjs7SUFDMUIscUNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBGRmlsdGVyQmFzZSB9IGZyb20gJy4vZmZpbHRlci5iYXNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDx0YWJsZSBjbGFzcz0nZnQtZmZpbHRlci10YWJsZSc+XHJcbiAgPHRyIGNsYXNzPSdmdC1mZmlsdGVyLWNvbHVtbic+XHJcbiAgICAgIDx0ZCBjbGFzcz0nZnQtZmZpbHRlci1yb3cnPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZnQtaSBmdC1pLWZmaWx0ZXIgZnQtaS1taW5cIiB0eXBlPVwibnVtYmVyXCIgIHBsYWNlaG9sZGVyPSc+PScgWyhuZ01vZGVsKV09J21pbicgKGtleXVwKT0nbnVtYmVyS2V5VXAoXCJtaW5cIiwkZXZlbnQpJyAjbWluUmVmID5cclxuICAgICAgPC90ZD5cclxuICA8L3RyPlxyXG4gIDx0ciBjbGFzcz0nZnQtZmZpbHRlci1jb2x1bW4nPlxyXG4gICAgICA8dGQgY2xhc3M9J2Z0LWZmaWx0ZXItcm93Jz5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZ0LWkgZnQtaS1mZmlsdGVyIGZ0LWktbWF4XCIgdHlwZT1cIm51bWJlclwiICBwbGFjZWhvbGRlcj0nPD0nIFsobmdNb2RlbCldPSdtYXgnIChrZXl1cCk9J251bWJlcktleVVwKFwibWF4XCIsJGV2ZW50KScgI21heFJlZiA+XHJcbiAgICAgIDwvdGQ+XHJcbiAgPC90cj5cclxuPC90YWJsZT5cclxuXHJcbiAgPCEtLVxyXG4gIDxkaXYgY2xhc3M9XCJmdC1mZmlsdGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnQtZGl2MS1mZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmdC1mZmlsdGVyLXByZXBlbmRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnQtZmZpbHRlci10ZXh0XCI+Jmd0Oz08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJmdC1pIGZ0LWktZmZpbHRlciBmdC1pLW1pblwiIHR5cGU9XCJudW1iZXJcIiAgWyhuZ01vZGVsKV09J21pbicgKGtleXVwKT0nbnVtYmVyS2V5VXAoXCJtaW5cIiwkZXZlbnQpJyAjbWluUmVmID5cclxuICAgICAgPGRpdiBjbGFzcz1cImZ0LWZmaWx0ZXItYXBwZW5kXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ0LWZmaWx0ZXItdGV4dFwiPiZsdDs9PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmdC1kaXYyLWZmaWx0ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZ0LWZmaWx0ZXItcHJlcGVuZFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnQtZmlsdGVyLXRleHRcIj4mbHQ7PTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImZ0LWkgZnQtaS1maWx0ZXIgZnQtaS1tYXhcIiB0eXBlPVwibnVtYmVyXCIgIFsobmdNb2RlbCldPSdtYXgnIChrZXl1cCk9J251bWJlcktleVVwKFwibWF4XCIsJGV2ZW50KScgI21heFJlZiA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmdC1mZmlsdGVyLWFwcGVuZFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnQtZmlsdGVyLXRleHRcIj4mZ3Q7PTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICAtLT5cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuICA6aG9zdCB7IGZsZXg6MTtcclxuICB9YF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE51bWJlckZGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBGRmlsdGVyQmFzZSB7XHJcbiAgQFZpZXdDaGlsZChcIm1pblJlZlwiKSBfZWxNaW5SZWY6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcIm1heFJlZlwiKSBfZWxNYXhSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzb3VyY2U6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgb3RoZXJEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgcHVibGljIGNvbHVtbk5hbWU6IHN0cmluZztcclxuXHJcbiAgQE91dHB1dCgpIGZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy8gSG9sZCBJbnB1dHRlZCBWYWx1ZXNcclxuICBwdWJsaWMgbWluOiBudW1iZXIgPSBudWxsO1xyXG4gIHB1YmxpYyBtYXg6IG51bWJlciA9IG51bGw7XHJcblxyXG4gIG51bWJlcktleVVwKG1vZGU6IHN0cmluZywgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXlDb2RlICE9PSA4ICYmIGV2ZW50LmtleUNvZGUgIT09IDQ2KSB7XHJcbiAgICAgIHRoaXNbbW9kZV0gPSBldmVudC50YXJnZXQudmFsdWU7XHJcblxyXG4gICAgICAvLyBNb3ZlIGZvY3VzIGZvciBVWFxyXG4gICAgICBpZiAobW9kZSA9PT0gJ21pbicgJiYgZXZlbnQua2V5Q29kZSA9PT0gMzkpIHtcclxuICAgICAgICB0aGlzLl9lbE1heFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ21heCcgJiYgZXZlbnQua2V5Q29kZSA9PT0gMzkpIHtcclxuICAgICAgICB0aGlzLl9lbE1pblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnNvdXJjZSA9PT0gJ2Zyb250ZW5kJykge1xyXG4gICAgICAgIGNvbnN0IGZuID0gZnVuY3Rpb24gKG5hbWUsIHNlYXJjaE1pbiwgc2VhcmNoTWF4KSB7XHJcbiAgICAgICAgICByZXR1cm4gZCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoPGFueVtdPmQpLmZpbHRlcih4ID0+XHJcbiAgICAgICAgICAgICAgKHNlYXJjaE1pbiA/IHNlYXJjaE1pbiA8PSBOdW1iZXIoeFtuYW1lXSkgOiB0cnVlKSAmJlxyXG4gICAgICAgICAgICAgIChzZWFyY2hNYXggPyBzZWFyY2hNYXggPj0gTnVtYmVyKHhbbmFtZV0pIDogdHJ1ZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmZpbHRlci5lbWl0KHsgY29sdW1uTmFtZTogdGhpcy5jb2x1bW5OYW1lLCBhcHBseTogZm4odGhpcy5jb2x1bW5OYW1lLCB0aGlzLm1pbiwgdGhpcy5tYXgpIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSB7IG1pbjogdGhpcy5taW4sIG1heDogdGhpcy5tYXggfTtcclxuICAgICAgICB0aGlzLmZpbHRlci5lbWl0KHsgY29sdW1uTmFtZTogdGhpcy5jb2x1bW5OYW1lLCB0eXBlOiAnbnVtYmVyJywgYXBwbHk6IHJlc3VsdCB9KTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLm1pbiA9IG51bGw7XHJcbiAgICB0aGlzLm1heCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlci5lbWl0KHsgY29sdW1uTmFtZTogdGhpcy5jb2x1bW5OYW1lLCBhcHBseTogbnVsbCB9KTtcclxuICB9XHJcbn1cclxuIl19