UNPKG

@taiga-ui/addon-table

Version:

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

54 lines 7.6 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(([sortBy, orderBy]) => ({ sortBy, orderBy }))); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ieS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi10YWJsZS9jb21wb25lbnRzL3RhYmxlL2RpcmVjdGl2ZXMvc29ydC1ieS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXJFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQUVwRCxNQUlhLGNBQWM7SUFKM0I7UUFNcUIsY0FBUyxHQUFtQyxXQUFXLENBQUM7UUFFeEQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxDQUFBLGlCQUFvQixDQUFBLENBQUMsQ0FBQztRQUV0RDs7V0FFRztRQUVhLG9CQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSTtRQUMxRCwwR0FBMEc7UUFDMUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFDckMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ3ZDLENBQUM7UUFHYyxrQkFBYSxHQUFHLGFBQWEsQ0FBQztZQUMxQyxJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWU7U0FDN0IsQ0FBQyxDQUFDLElBQUksQ0FDSCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ2YsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUNsRCxDQUFDO1FBRUssY0FBUyxHQUE0QixJQUFJLENBQUM7S0FlcEQ7SUFiRyxJQUNXLE1BQU0sQ0FBQyxNQUErQjtRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVTLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxNQUFNLENBQUMsTUFBK0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ3hFLENBQUM7K0dBeENRLGNBQWM7bUdBQWQsY0FBYyw4T0FDTixnQkFBZ0I7O1NBRHhCLGNBQWM7NEZBQWQsY0FBYztrQkFKMUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDRCQUE0QjtpQkFDekM7OEJBR29CLFNBQVM7c0JBRHpCLGVBQWU7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQVN0QyxlQUFlO3NCQUQ5QixNQUFNO2dCQVNTLGFBQWE7c0JBRDVCLE1BQU07Z0JBWUksTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1R1aUNvbXBhcmF0b3J9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi10YWJsZS90eXBlcyc7XG5pbXBvcnQge0VNUFRZX1FVRVJZfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZGVsYXksIGZpbHRlciwgbWFwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUdWlUYWJsZVNvcnRhYmxlfSBmcm9tICcuL3NvcnRhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1R1aVRhYmxlRGlyZWN0aXZlfSBmcm9tICcuL3RhYmxlLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0YWJsZVt0dWlUYWJsZV1bdHVpU29ydEJ5XScsXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRhYmxlU29ydEJ5PFQgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBhbnk+Pj4ge1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVHVpVGFibGVTb3J0YWJsZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNvcnRhYmxlczogUXVlcnlMaXN0PFR1aVRhYmxlU29ydGFibGU8VD4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhYmxlID0gaW5qZWN0KFR1aVRhYmxlRGlyZWN0aXZlPFQ+KTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkOiB1c2UgdHVpU29ydENoYW5nZVxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSB0dWlTb3J0QnlDaGFuZ2UgPSB0aGlzLnRhYmxlLnNvcnRlckNoYW5nZS5waXBlKFxuICAgICAgICAvLyBkZWxheSBpcyBmb3IgZ2V0dGluZyBhY3R1YWwgQ29udGVudENoaWxkcmVuIChzb3J0YWJsZXMpIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzM4OTc2XG4gICAgICAgIGRlbGF5KDApLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLnNvcnRhYmxlcy5sZW5ndGgpLFxuICAgICAgICBtYXAoKHNvcnRlcikgPT4gdGhpcy5nZXRLZXkoc29ydGVyKSksXG4gICAgKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSB0dWlTb3J0Q2hhbmdlID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudHVpU29ydEJ5Q2hhbmdlLFxuICAgICAgICB0aGlzLnRhYmxlLmRpcmVjdGlvbkNoYW5nZSxcbiAgICBdKS5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgIG1hcCgoW3NvcnRCeSwgb3JkZXJCeV0pID0+ICh7c29ydEJ5LCBvcmRlckJ5fSkpLFxuICAgICk7XG5cbiAgICBwdWJsaWMgdHVpU29ydEJ5OiBzdHJpbmcgfCBrZXlvZiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoJ3R1aVNvcnRCeScpXG4gICAgcHVibGljIHNldCBzb3J0Qnkoc29ydEJ5OiBzdHJpbmcgfCBrZXlvZiBUIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnR1aVNvcnRCeSA9IHNvcnRCeTtcbiAgICAgICAgdGhpcy5jaGVja1NvcnRhYmxlcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjaGVja1NvcnRhYmxlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zb3J0YWJsZXMuZm9yRWFjaCgocykgPT4gcy5jaGVjaygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEtleShzb3J0ZXI6IFR1aUNvbXBhcmF0b3I8VD4gfCBudWxsKToga2V5b2YgVCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3J0YWJsZXMuZmluZCgocykgPT4gcy5zb3J0ZXIgPT09IHNvcnRlcik/LmtleSB8fCBudWxsO1xuICAgIH1cbn1cbiJdfQ==