UNPKG

@taiga-ui/addon-table

Version:

A library to display tabled data with filters, search, group actions, etc.

37 lines 5.29 kB
import { Directive } from '@angular/core'; import { identity, map, merge, ReplaySubject, startWith, switchMap, } from 'rxjs'; import * as i0 from "@angular/core"; class TuiTableFiltersDirective { constructor() { this.refresh$ = new ReplaySubject(1); this.filters = []; } register(filter) { this.filters = this.filters.concat(filter); this.update(); } unregister(filter) { this.filters = this.filters.filter((item) => item !== filter); this.update(); } filter(items) { return this.refresh$.pipe(switchMap(identity), startWith(null), map(() => items.filter((item) => this.check(item)))); } check(item) { return this.filters.every((filter) => filter.filter(item)); } update() { this.refresh$.next(merge(...this.filters.map(({ refresh$ }) => refresh$))); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableFiltersDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiTableFiltersDirective, isStandalone: true, selector: "[tuiTableFilters]", ngImport: i0 }); } } export { TuiTableFiltersDirective }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableFiltersDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[tuiTableFilters]', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmlsdGVycy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi10YWJsZS9kaXJlY3RpdmVzL3RhYmxlLWZpbHRlcnMvdGFibGUtZmlsdGVycy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQ0gsUUFBUSxFQUNSLEdBQUcsRUFDSCxLQUFLLEVBRUwsYUFBYSxFQUNiLFNBQVMsRUFDVCxTQUFTLEdBQ1osTUFBTSxNQUFNLENBQUM7O0FBSWQsTUFJYSx3QkFBd0I7SUFKckM7UUFLcUIsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFzQixDQUFDLENBQUMsQ0FBQztRQUU5RCxZQUFPLEdBQXFDLEVBQUUsQ0FBQztLQTJCMUQ7SUF6QlUsUUFBUSxDQUFDLE1BQXlCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBeUI7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQW1CO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3JCLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFDbkIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDdEQsQ0FBQztJQUNOLENBQUM7SUFFTyxLQUFLLENBQUMsSUFBTztRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLE1BQU07UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDOytHQTdCUSx3QkFBd0I7bUdBQXhCLHdCQUF3Qjs7U0FBeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0I7a0JBSnBDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxtQkFBbUI7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBpZGVudGl0eSxcbiAgICBtYXAsXG4gICAgbWVyZ2UsXG4gICAgdHlwZSBPYnNlcnZhYmxlLFxuICAgIFJlcGxheVN1YmplY3QsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7dHlwZSBUdWlUYWJsZUZpbHRlcn0gZnJvbSAnLi90YWJsZS1maWx0ZXInO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3R1aVRhYmxlRmlsdGVyc10nLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJsZUZpbHRlcnNEaXJlY3RpdmU8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaCQgPSBuZXcgUmVwbGF5U3ViamVjdDxPYnNlcnZhYmxlPHVua25vd24+PigxKTtcblxuICAgIHByaXZhdGUgZmlsdGVyczogUmVhZG9ubHlBcnJheTxUdWlUYWJsZUZpbHRlcjxUPj4gPSBbXTtcblxuICAgIHB1YmxpYyByZWdpc3RlcihmaWx0ZXI6IFR1aVRhYmxlRmlsdGVyPFQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5jb25jYXQoZmlsdGVyKTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdW5yZWdpc3RlcihmaWx0ZXI6IFR1aVRhYmxlRmlsdGVyPFQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IGZpbHRlcik7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbHRlcihpdGVtczogcmVhZG9ubHkgVFtdKTogT2JzZXJ2YWJsZTxyZWFkb25seSBUW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaCQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChpZGVudGl0eSksXG4gICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICBtYXAoKCkgPT4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB0aGlzLmNoZWNrKGl0ZW0pKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVjayhpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMuZXZlcnkoKGZpbHRlcikgPT4gZmlsdGVyLmZpbHRlcihpdGVtKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVmcmVzaCQubmV4dChtZXJnZSguLi50aGlzLmZpbHRlcnMubWFwKCh7cmVmcmVzaCR9KSA9PiByZWZyZXNoJCkpKTtcbiAgICB9XG59XG4iXX0=