@taiga-ui/addon-table
Version:
A library to display tabled data with filters, search, group actions, etc.
54 lines • 7.6 kB
JavaScript
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==