UNPKG

ng-track-by

Version:

trackBy and trackById directives which provide TrackByFunction to ngForTrackBy

47 lines 5.44 kB
import { CommonModule } from "@angular/common"; import { Input, NgModule } from "@angular/core"; import { Directive } from "@angular/core"; import { not } from "logical-not"; import { changeTrackBy } from "./tools/change-track-by"; import { marked } from "./tools/marker"; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; export class TrackByDirective { constructor(ngForOf) { this.ngForOf = ngForOf; } ngOnInit() { if (not(marked(this.ngForOf))) changeTrackBy(this.ngForOf, this.createTrackByFn(), this.trackBy); } createTrackByFn() { const key = this.trackBy; return function (_, item) { return item[key]; }; } } TrackByDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: TrackByDirective, deps: [{ token: i1.NgForOf }], target: i0.ɵɵFactoryTarget.Directive }); TrackByDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.0", type: TrackByDirective, selector: "[trackBy]", inputs: { trackBy: "trackBy" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: TrackByDirective, decorators: [{ type: Directive, args: [{ selector: "[trackBy]", }] }], ctorParameters: function () { return [{ type: i1.NgForOf }]; }, propDecorators: { trackBy: [{ type: Input }] } }); export class TrackByModule { } TrackByModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: TrackByModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); TrackByModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: TrackByModule, declarations: [TrackByDirective], imports: [CommonModule], exports: [TrackByDirective] }); TrackByModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: TrackByModule, imports: [[CommonModule]] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: TrackByModule, decorators: [{ type: NgModule, args: [{ imports: [CommonModule], exports: [TrackByDirective], declarations: [TrackByDirective], }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2stYnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmctdHJhY2stYnkvc3JjL2xpYi90cmFjay1ieS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBVyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS3hDLE1BQU0sT0FBTyxnQkFBZ0I7SUFJekIsWUFBb0IsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7SUFBRyxDQUFDO0lBRWxELFFBQVE7UUFDSixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLGVBQWU7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUV6QixPQUFPLFVBQVUsQ0FBQyxFQUFFLElBQUk7WUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7NkdBakJRLGdCQUFnQjtpR0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBSDVCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCOzhGQUdHLE9BQU87c0JBRE4sS0FBSzs7QUF3QlYsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkF6QmIsZ0JBQWdCLGFBcUJmLFlBQVksYUFyQmIsZ0JBQWdCOzJHQXlCaEIsYUFBYSxZQUpiLENBQUMsWUFBWSxDQUFDOzJGQUlkLGFBQWE7a0JBTHpCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ0Zvck9mIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSW5wdXQsIE5nTW9kdWxlLCBPbkluaXQsIFRyYWNrQnlGdW5jdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbm90IH0gZnJvbSBcImxvZ2ljYWwtbm90XCI7XG5cbmltcG9ydCB7IGNoYW5nZVRyYWNrQnkgfSBmcm9tIFwiLi90b29scy9jaGFuZ2UtdHJhY2stYnlcIjtcbmltcG9ydCB7IG1hcmtlZCB9IGZyb20gXCIuL3Rvb2xzL21hcmtlclwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogXCJbdHJhY2tCeV1cIixcbn0pXG5leHBvcnQgY2xhc3MgVHJhY2tCeURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICB0cmFja0J5ITogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ0Zvck9mOiBOZ0Zvck9mPGFueSwgYW55Pikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAobm90KG1hcmtlZCh0aGlzLm5nRm9yT2YpKSlcbiAgICAgICAgICAgIGNoYW5nZVRyYWNrQnkodGhpcy5uZ0Zvck9mLCB0aGlzLmNyZWF0ZVRyYWNrQnlGbigpLCB0aGlzLnRyYWNrQnkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVHJhY2tCeUZuKCk6IFRyYWNrQnlGdW5jdGlvbjxhbnk+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy50cmFja0J5O1xuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoXywgaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1ba2V5XTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RyYWNrQnlEaXJlY3RpdmVdLFxuICAgIGRlY2xhcmF0aW9uczogW1RyYWNrQnlEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBUcmFja0J5TW9kdWxlIHt9XG4iXX0=