@taiga-ui/addon-table
Version:
A library to display tabled data with filters, search, group actions, etc.
44 lines • 6.58 kB
JavaScript
import { Directive, inject, Input } from '@angular/core';
import { NgControl } from '@angular/forms';
import { TuiTableHead } from '@taiga-ui/addon-table/components';
import { defer, distinctUntilChanged, EMPTY, merge } from 'rxjs';
import { AbstractTuiTableFilter } from './abstract-table-filter';
import { TuiTableFiltersDirective } from './table-filters.directive';
import * as i0 from "@angular/core";
class TuiTableFilterDirective {
constructor() {
this.head = inject((TuiTableHead), { optional: true });
this.delegate = inject((AbstractTuiTableFilter));
this.control = inject(NgControl);
this.filters = inject((TuiTableFiltersDirective));
this.refresh$ = defer(() => merge(this.control.valueChanges || EMPTY, this.control.statusChanges?.pipe(distinctUntilChanged()) || EMPTY));
}
ngOnInit() {
this.filters.register(this);
}
ngOnDestroy() {
this.filters.unregister(this);
}
filter(item) {
const { disabled, value } = this.control;
return (!!disabled ||
!this.key ||
this.delegate.filter(item[this.key], value));
}
get key() {
return this.tuiTableFilter || this.head?.tuiHead;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiTableFilterDirective, isStandalone: true, selector: "[tuiTableFilter]", inputs: { tuiTableFilter: "tuiTableFilter" }, ngImport: i0 }); }
}
export { TuiTableFilterDirective };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableFilterDirective, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[tuiTableFilter]',
}]
}], propDecorators: { tuiTableFilter: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmlsdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLXRhYmxlL2RpcmVjdGl2ZXMvdGFibGUtZmlsdGVycy90YWJsZS1maWx0ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBOEIsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUU5RCxPQUFPLEVBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFL0QsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBRW5FLE1BSWEsdUJBQXVCO0lBSnBDO1FBS3FCLFNBQUksR0FBRyxNQUFNLENBQUMsQ0FBQSxZQUFlLENBQUEsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2pELGFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQSxzQkFBK0MsQ0FBQSxDQUFDLENBQUM7UUFDbkUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixZQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsd0JBQTJCLENBQUEsQ0FBQyxDQUFDO1FBS2pELGFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQ2xDLEtBQUssQ0FDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxLQUFLLEVBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLElBQUksS0FBSyxDQUNwRSxDQUNKLENBQUM7S0F1Qkw7SUFyQlUsUUFBUTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFPO1FBQ2pCLE1BQU0sRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUV2QyxPQUFPLENBQ0gsQ0FBQyxDQUFDLFFBQVE7WUFDVixDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FDekQsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFZLEdBQUc7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7SUFDckQsQ0FBQzsrR0FwQ1EsdUJBQXVCO21HQUF2Qix1QkFBdUI7O1NBQXZCLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQjs4QkFRVSxjQUFjO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIHR5cGUgT25EZXN0cm95LCB0eXBlIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUdWlUYWJsZUhlYWR9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi10YWJsZS9jb21wb25lbnRzJztcbmltcG9ydCB7dHlwZSBUdWlWYWx1ZXNPZn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge2RlZmVyLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgRU1QVFksIG1lcmdlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBYnN0cmFjdFR1aVRhYmxlRmlsdGVyfSBmcm9tICcuL2Fic3RyYWN0LXRhYmxlLWZpbHRlcic7XG5pbXBvcnQge3R5cGUgVHVpVGFibGVGaWx0ZXJ9IGZyb20gJy4vdGFibGUtZmlsdGVyJztcbmltcG9ydCB7VHVpVGFibGVGaWx0ZXJzRGlyZWN0aXZlfSBmcm9tICcuL3RhYmxlLWZpbHRlcnMuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t0dWlUYWJsZUZpbHRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJsZUZpbHRlckRpcmVjdGl2ZTxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBUdWlUYWJsZUZpbHRlcjxUPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBoZWFkID0gaW5qZWN0KFR1aVRhYmxlSGVhZDxUPiwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWxlZ2F0ZSA9IGluamVjdChBYnN0cmFjdFR1aVRhYmxlRmlsdGVyPFR1aVZhbHVlc09mPFQ+LCB1bmtub3duPik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlcnMgPSBpbmplY3QoVHVpVGFibGVGaWx0ZXJzRGlyZWN0aXZlPFQ+KTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR1aVRhYmxlRmlsdGVyPzoga2V5b2YgVDtcblxuICAgIHB1YmxpYyByZWFkb25seSByZWZyZXNoJCA9IGRlZmVyKCgpID0+XG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcyB8fCBFTVBUWSxcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzPy5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpIHx8IEVNUFRZLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5yZWdpc3Rlcih0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVycy51bnJlZ2lzdGVyKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXIoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7ZGlzYWJsZWQsIHZhbHVlfSA9IHRoaXMuY29udHJvbDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISFkaXNhYmxlZCB8fFxuICAgICAgICAgICAgIXRoaXMua2V5IHx8XG4gICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbHRlcihpdGVtW3RoaXMua2V5IGFzIGtleW9mIFRdLCB2YWx1ZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBrZXkoKTogc3RyaW5nIHwga2V5b2YgVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnR1aVRhYmxlRmlsdGVyIHx8IHRoaXMuaGVhZD8udHVpSGVhZDtcbiAgICB9XG59XG4iXX0=