@taiga-ui/addon-table
Version:
A library to display tabled data with filters, search, group actions, etc.
51 lines • 6.42 kB
JavaScript
import { coerceBooleanProperty } from '@angular/cdk/coercion';
import { Directive, forwardRef, inject, Input } from '@angular/core';
import { TuiTableTh } from '../th/th.component';
import { TuiTableSortBy } from './sort-by.directive';
import { TuiTableDirective } from './table.directive';
import * as i0 from "@angular/core";
class TuiTableSortable {
constructor() {
this.table = inject((TuiTableDirective));
this.th = inject((TuiTableTh));
this.sortBy = inject(forwardRef(() => TuiTableSortBy));
this.sorter = () => 0;
}
get key() {
return this.th.key;
}
ngOnChanges() {
if (this.sortable) {
this.sorter = this.match ? this.table.sorter : this.sorter;
this.th.sorter = this.sorter;
}
else {
this.th.sorter = null;
}
}
check() {
if (this.match && this.table.sorter !== this.sorter) {
this.table.updateSorter(this.sorter);
}
}
get match() {
return this.sortBy.tuiSortBy === this.key;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableSortable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "16.2.12", type: TuiTableSortable, isStandalone: true, selector: "th[tuiTh][tuiSortable]", inputs: { sortable: ["tuiSortable", "sortable", coerceBooleanProperty] }, usesOnChanges: true, ngImport: i0 }); }
}
export { TuiTableSortable };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTableSortable, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: 'th[tuiTh][tuiSortable]',
}]
}], propDecorators: { sortable: [{
type: Input,
args: [{
alias: 'tuiSortable',
transform: coerceBooleanProperty,
}]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tdGFibGUvY29tcG9uZW50cy90YWJsZS9kaXJlY3RpdmVzL3NvcnRhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR25FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7O0FBRXBELE1BSWEsZ0JBQWdCO0lBSjdCO1FBT3FCLFVBQUssR0FBeUIsTUFBTSxDQUFDLENBQUEsaUJBQW9CLENBQUEsQ0FBQyxDQUFDO1FBQzNELE9BQUUsR0FBa0IsTUFBTSxDQUFDLENBQUEsVUFBYSxDQUFBLENBQUMsQ0FBQztRQUMxQyxXQUFNLEdBQUcsTUFBTSxDQUFvQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQVkvRSxXQUFNLEdBQXFCLEdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztLQW9CckQ7SUF4QkcsSUFBVyxHQUFHO1FBQ1YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBSU0sV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDM0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNoQzthQUFNO1lBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVNLEtBQUs7UUFDUixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDO0lBRUQsSUFBWSxLQUFLO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzlDLENBQUM7K0dBcENRLGdCQUFnQjttR0FBaEIsZ0JBQWdCLDBHQVNWLHFCQUFxQjs7U0FUM0IsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBSjVCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx3QkFBd0I7aUJBQ3JDOzhCQVlVLFFBQVE7c0JBSmQsS0FBSzt1QkFBQzt3QkFDSCxLQUFLLEVBQUUsYUFBYTt3QkFDcEIsU0FBUyxFQUFFLHFCQUFxQjtxQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7Qm9vbGVhbklucHV0fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgdHlwZSB7T25DaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBpbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtUdWlDb21wYXJhdG9yfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tdGFibGUvdHlwZXMnO1xuXG5pbXBvcnQge1R1aVRhYmxlVGh9IGZyb20gJy4uL3RoL3RoLmNvbXBvbmVudCc7XG5pbXBvcnQge1R1aVRhYmxlU29ydEJ5fSBmcm9tICcuL3NvcnQtYnkuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpVGFibGVEaXJlY3RpdmV9IGZyb20gJy4vdGFibGUuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3RoW3R1aVRoXVt0dWlTb3J0YWJsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJsZVNvcnRhYmxlPFQgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBhbnk+Pj5cbiAgICBpbXBsZW1lbnRzIE9uQ2hhbmdlc1xue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFibGU6IFR1aVRhYmxlRGlyZWN0aXZlPFQ+ID0gaW5qZWN0KFR1aVRhYmxlRGlyZWN0aXZlPFQ+KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRoOiBUdWlUYWJsZVRoPFQ+ID0gaW5qZWN0KFR1aVRhYmxlVGg8VD4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc29ydEJ5ID0gaW5qZWN0PFR1aVRhYmxlU29ydEJ5PFQ+Pihmb3J3YXJkUmVmKCgpID0+IFR1aVRhYmxlU29ydEJ5KSk7XG5cbiAgICBASW5wdXQoe1xuICAgICAgICBhbGlhczogJ3R1aVNvcnRhYmxlJyxcbiAgICAgICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHksXG4gICAgfSlcbiAgICBwdWJsaWMgc29ydGFibGU6IEJvb2xlYW5JbnB1dDtcblxuICAgIHB1YmxpYyBnZXQga2V5KCk6IGtleW9mIFQge1xuICAgICAgICByZXR1cm4gdGhpcy50aC5rZXk7XG4gICAgfVxuXG4gICAgcHVibGljIHNvcnRlcjogVHVpQ29tcGFyYXRvcjxUPiA9ICgpOiBudW1iZXIgPT4gMDtcblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc29ydGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydGVyID0gdGhpcy5tYXRjaCA/IHRoaXMudGFibGUuc29ydGVyIDogdGhpcy5zb3J0ZXI7XG4gICAgICAgICAgICB0aGlzLnRoLnNvcnRlciA9IHRoaXMuc29ydGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50aC5zb3J0ZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXRjaCAmJiB0aGlzLnRhYmxlLnNvcnRlciAhPT0gdGhpcy5zb3J0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGUudXBkYXRlU29ydGVyKHRoaXMuc29ydGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG1hdGNoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3J0QnkudHVpU29ydEJ5ID09PSB0aGlzLmtleTtcbiAgICB9XG59XG4iXX0=