UNPKG

@taiga-ui/addon-table

Version:

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

59 lines 8.09 kB
import { ContentChildren, Directive, inject, Input, Output } from '@angular/core'; import { EMPTY_QUERY } from '@taiga-ui/cdk/constants'; import { combineLatest, debounceTime, delay, filter, map } from 'rxjs'; import { TuiTableSortable } from './sortable.directive'; import { TuiTableDirective } from './table.directive'; import * as i0 from "@angular/core"; class TuiTableSortBy { constructor() { this.sortables = EMPTY_QUERY; this.table = inject((TuiTableDirective)); /** * @deprecated: use tuiSortChange */ this.tuiSortByChange = this.table.sorterChange.pipe( // delay is for getting actual ContentChildren (sortables) https://github.com/angular/angular/issues/38976 delay(0), filter(() => !!this.sortables.length), map((sorter) => this.getKey(sorter))); this.tuiSortChange = combineLatest([ this.tuiSortByChange, this.table.directionChange, ]).pipe(debounceTime(0), map(([sortKey, sortDirection]) => ({ sortBy: sortKey, orderBy: sortDirection, sortKey, sortDirection, }))); this.tuiSortBy = null; } set sortBy(sortBy) { this.tuiSortBy = sortBy; this.checkSortables(); } checkSortables() { this.sortables.forEach((s) => s.check()); } getKey(sorter) { return this.sortables.find((s) => s.sorter === sorter)?.key || null; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableSortBy, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiTableSortBy, isStandalone: true, selector: "table[tuiTable][tuiSortBy]", inputs: { sortBy: ["tuiSortBy", "sortBy"] }, outputs: { tuiSortByChange: "tuiSortByChange", tuiSortChange: "tuiSortChange" }, queries: [{ propertyName: "sortables", predicate: TuiTableSortable, descendants: true }], ngImport: i0 }); } } export { TuiTableSortBy }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableSortBy, decorators: [{ type: Directive, args: [{ standalone: true, selector: 'table[tuiTable][tuiSortBy]', }] }], propDecorators: { sortables: [{ type: ContentChildren, args: [TuiTableSortable, { descendants: true }] }], tuiSortByChange: [{ type: Output }], tuiSortChange: [{ type: Output }], sortBy: [{ type: Input, args: ['tuiSortBy'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ieS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi10YWJsZS9jb21wb25lbnRzL3RhYmxlL2RpcmVjdGl2ZXMvc29ydC1ieS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3JFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQUVwRCxNQUlhLGNBQWM7SUFKM0I7UUFNcUIsY0FBUyxHQUFtQyxXQUFXLENBQUM7UUFFeEQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxDQUFBLGlCQUFvQixDQUFBLENBQUMsQ0FBQztRQUV0RDs7V0FFRztRQUVhLG9CQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSTtRQUMxRCwwR0FBMEc7UUFDMUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFDckMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ3ZDLENBQUM7UUFHYyxrQkFBYSxHQUFpQyxhQUFhLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO1NBQzdCLENBQUMsQ0FBQyxJQUFJLENBQ0gsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sRUFBRSxPQUFPO1lBQ2YsT0FBTyxFQUFFLGFBQWE7WUFDdEIsT0FBTztZQUNQLGFBQWE7U0FDaEIsQ0FBQyxDQUFDLENBQ04sQ0FBQztRQUVLLGNBQVMsR0FBNEIsSUFBSSxDQUFDO0tBZXBEO0lBYkcsSUFDVyxNQUFNLENBQUMsTUFBK0I7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFUyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sTUFBTSxDQUFDLE1BQStCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQztJQUN4RSxDQUFDOytHQTdDUSxjQUFjO21HQUFkLGNBQWMsOE9BQ04sZ0JBQWdCOztTQUR4QixjQUFjOzRGQUFkLGNBQWM7a0JBSjFCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSw0QkFBNEI7aUJBQ3pDOzhCQUdvQixTQUFTO3NCQUR6QixlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFTdEMsZUFBZTtzQkFEOUIsTUFBTTtnQkFTUyxhQUFhO3NCQUQ1QixNQUFNO2dCQWlCSSxNQUFNO3NCQURoQixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7VHVpQ29tcGFyYXRvcn0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLXRhYmxlL3R5cGVzJztcbmltcG9ydCB7RU1QVFlfUVVFUll9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBkZWxheSwgZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7VHVpU29ydENoYW5nZX0gZnJvbSAnLi4vdGFibGUub3B0aW9ucyc7XG5pbXBvcnQge1R1aVRhYmxlU29ydGFibGV9IGZyb20gJy4vc29ydGFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpVGFibGVEaXJlY3RpdmV9IGZyb20gJy4vdGFibGUuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3RhYmxlW3R1aVRhYmxlXVt0dWlTb3J0QnldJyxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGFibGVTb3J0Qnk8VCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPGtleW9mIFQsIGFueT4+PiB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihUdWlUYWJsZVNvcnRhYmxlLCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgc29ydGFibGVzOiBRdWVyeUxpc3Q8VHVpVGFibGVTb3J0YWJsZTxUPj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFibGUgPSBpbmplY3QoVHVpVGFibGVEaXJlY3RpdmU8VD4pO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQ6IHVzZSB0dWlTb3J0Q2hhbmdlXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHR1aVNvcnRCeUNoYW5nZSA9IHRoaXMudGFibGUuc29ydGVyQ2hhbmdlLnBpcGUoXG4gICAgICAgIC8vIGRlbGF5IGlzIGZvciBnZXR0aW5nIGFjdHVhbCBDb250ZW50Q2hpbGRyZW4gKHNvcnRhYmxlcykgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzg5NzZcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuc29ydGFibGVzLmxlbmd0aCksXG4gICAgICAgIG1hcCgoc29ydGVyKSA9PiB0aGlzLmdldEtleShzb3J0ZXIpKSxcbiAgICApO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHR1aVNvcnRDaGFuZ2U6IE9ic2VydmFibGU8VHVpU29ydENoYW5nZTxUPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy50dWlTb3J0QnlDaGFuZ2UsXG4gICAgICAgIHRoaXMudGFibGUuZGlyZWN0aW9uQ2hhbmdlLFxuICAgIF0pLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgbWFwKChbc29ydEtleSwgc29ydERpcmVjdGlvbl0pID0+ICh7XG4gICAgICAgICAgICBzb3J0Qnk6IHNvcnRLZXksXG4gICAgICAgICAgICBvcmRlckJ5OiBzb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICAgc29ydEtleSxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICAgIH0pKSxcbiAgICApO1xuXG4gICAgcHVibGljIHR1aVNvcnRCeTogc3RyaW5nIHwga2V5b2YgVCB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KCd0dWlTb3J0QnknKVxuICAgIHB1YmxpYyBzZXQgc29ydEJ5KHNvcnRCeTogc3RyaW5nIHwga2V5b2YgVCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy50dWlTb3J0QnkgPSBzb3J0Qnk7XG4gICAgICAgIHRoaXMuY2hlY2tTb3J0YWJsZXMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2hlY2tTb3J0YWJsZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydGFibGVzLmZvckVhY2goKHMpID0+IHMuY2hlY2soKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRLZXkoc29ydGVyOiBUdWlDb21wYXJhdG9yPFQ+IHwgbnVsbCk6IGtleW9mIFQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydGFibGVzLmZpbmQoKHMpID0+IHMuc29ydGVyID09PSBzb3J0ZXIpPy5rZXkgfHwgbnVsbDtcbiAgICB9XG59XG4iXX0=