UNPKG

@doku-dev/doku-fragment

Version:

A new Angular UI library that moving away from Bootstrap and built from scratch.

77 lines 11.2 kB
import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, Inject, ViewChild, ViewEncapsulation, } from '@angular/core'; import { delay, startWith } from 'rxjs'; import { DokuTypographyModule } from '../../typography'; import { DokuPaginationContainer } from './pagination-container.component'; import * as i0 from "@angular/core"; import * as i1 from "../../typography/typography.component"; import * as i2 from "./pagination-container.component"; export class DokuPaginationInfo { /** * Return total data of the items. */ get totalData() { return this._totalData; } /** * Return item start number based on active page. */ get from() { return this._from; } /** * Return item end number based on active page. */ get to() { return this._to; } constructor(cdr, container) { this.cdr = cdr; this.container = container; this._totalData = 0; this._from = 0; this._to = 0; } get isCustomInfo() { return !!this.customInfo?.nativeElement?.hasChildNodes(); } get itemsPerPage() { return this.container?.['pagination']?.itemsPerPage || 0; } get activePage() { return this.container?.['pagination']?.activePage || 0; } ngAfterViewInit() { this.pageChangeListener = this.container?.['pagination']?.['triggerChange'] .pipe(startWith(0), delay(0)) .subscribe(() => { this.setValues(); this.cdr.markForCheck(); }); } ngOnDestroy() { this.pageChangeListener?.unsubscribe(); } setValues() { this._totalData = this.container?.['pagination']?.totalData || 0; this._from = this.activePage * this.itemsPerPage - (this.itemsPerPage - 1); if (this._totalData <= 0) this._from = 0; this._to = this.activePage * this.itemsPerPage; if (this._to > this._totalData) this._to = this._totalData; } } DokuPaginationInfo.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuPaginationInfo, deps: [{ token: i0.ChangeDetectorRef }, { token: DokuPaginationContainer }], target: i0.ɵɵFactoryTarget.Component }); DokuPaginationInfo.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DokuPaginationInfo, isStandalone: true, selector: "doku-pagination-info", viewQueries: [{ propertyName: "customInfo", first: true, predicate: ["customInfo"], descendants: true }], exportAs: ["dokuPaginationInfo"], ngImport: i0, template: "<div doku-typography variant=\"body-m\" class=\"d-pagination-info\">\n <span [class.hidden]=\"isCustomInfo\">\n Showing {{ from }} - {{ to }} from {{ totalData }} entries\n </span>\n <span #customInfo><ng-content></ng-content></span>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DokuTypographyModule }, { kind: "component", type: i1.DokuTypography, selector: "[doku-typography]", inputs: ["variant"], exportAs: ["dokuTypography"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuPaginationInfo, decorators: [{ type: Component, args: [{ selector: 'doku-pagination-info', exportAs: 'dokuPaginationInfo', standalone: true, imports: [CommonModule, DokuTypographyModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div doku-typography variant=\"body-m\" class=\"d-pagination-info\">\n <span [class.hidden]=\"isCustomInfo\">\n Showing {{ from }} - {{ to }} from {{ totalData }} entries\n </span>\n <span #customInfo><ng-content></ng-content></span>\n</div>\n" }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i2.DokuPaginationContainer, decorators: [{ type: Inject, args: [DokuPaginationContainer] }] }]; }, propDecorators: { customInfo: [{ type: ViewChild, args: ['customInfo'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rva3UtZnJhZ21lbnQvc3JjL2xpYi9wYWdpbmF0aW9uL2ludGVncmF0aW9ucy9wYWdpbmF0aW9uLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9rdS1mcmFnbWVudC9zcmMvbGliL3BhZ2luYXRpb24vaW50ZWdyYXRpb25zL3BhZ2luYXRpb24taW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBVzNFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7O09BRUc7SUFDSCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBVUQsWUFDVSxHQUFzQixFQUNXLFNBQW1DO1FBRHBFLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ1csY0FBUyxHQUFULFNBQVMsQ0FBMEI7UUFWdEUsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixRQUFHLEdBQUcsQ0FBQyxDQUFDO0lBU2IsQ0FBQztJQUVKLElBQWMsWUFBWTtRQUN4QixPQUFPLENBQUMsQ0FBRSxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQTZCLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVELElBQVksWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFZLFVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUM7YUFDeEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM3RCxDQUFDOzsrR0FwRVUsa0JBQWtCLG1EQWdDbkIsdUJBQXVCO21HQWhDdEIsa0JBQWtCLDROQ3pCL0IsMlBBTUEsMkNEY1ksWUFBWSw4QkFBRSxvQkFBb0I7MkZBS2pDLGtCQUFrQjtrQkFUOUIsU0FBUzsrQkFDRSxzQkFBc0IsWUFDdEIsb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxpQkFFOUIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBa0M1QyxNQUFNOzJCQUFDLHVCQUF1Qjs0Q0FOQSxVQUFVO3NCQUExQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZGVsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9rdVR5cG9ncmFwaHlNb2R1bGUgfSBmcm9tICcuLi8uLi90eXBvZ3JhcGh5JztcbmltcG9ydCB7IERva3VQYWdpbmF0aW9uQ29udGFpbmVyIH0gZnJvbSAnLi9wYWdpbmF0aW9uLWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkb2t1LXBhZ2luYXRpb24taW5mbycsXG4gIGV4cG9ydEFzOiAnZG9rdVBhZ2luYXRpb25JbmZvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRG9rdVR5cG9ncmFwaHlNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogYC4vcGFnaW5hdGlvbi1pbmZvLmNvbXBvbmVudC5odG1sYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERva3VQYWdpbmF0aW9uSW5mbyBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gdG90YWwgZGF0YSBvZiB0aGUgaXRlbXMuXG4gICAqL1xuICBnZXQgdG90YWxEYXRhKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gaXRlbSBzdGFydCBudW1iZXIgYmFzZWQgb24gYWN0aXZlIHBhZ2UuXG4gICAqL1xuICBnZXQgZnJvbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9mcm9tO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBpdGVtIGVuZCBudW1iZXIgYmFzZWQgb24gYWN0aXZlIHBhZ2UuXG4gICAqL1xuICBnZXQgdG8oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG87XG4gIH1cblxuICBwcml2YXRlIF90b3RhbERhdGEgPSAwO1xuICBwcml2YXRlIF9mcm9tID0gMDtcbiAgcHJpdmF0ZSBfdG8gPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbUluZm8nKSBwcml2YXRlIGN1c3RvbUluZm8hOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgcGFnZUNoYW5nZUxpc3RlbmVyPzogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KERva3VQYWdpbmF0aW9uQ29udGFpbmVyKSBwcml2YXRlIGNvbnRhaW5lcj86IERva3VQYWdpbmF0aW9uQ29udGFpbmVyXG4gICkge31cblxuICBwcm90ZWN0ZWQgZ2V0IGlzQ3VzdG9tSW5mbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5jdXN0b21JbmZvPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KT8uaGFzQ2hpbGROb2RlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXRlbXNQZXJQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyPy5bJ3BhZ2luYXRpb24nXT8uaXRlbXNQZXJQYWdlIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIGdldCBhY3RpdmVQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyPy5bJ3BhZ2luYXRpb24nXT8uYWN0aXZlUGFnZSB8fCAwO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZUNoYW5nZUxpc3RlbmVyID0gdGhpcy5jb250YWluZXI/LlsncGFnaW5hdGlvbiddPy5bJ3RyaWdnZXJDaGFuZ2UnXVxuICAgICAgLnBpcGUoc3RhcnRXaXRoKDApLCBkZWxheSgwKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFZhbHVlcygpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlQ2hhbmdlTGlzdGVuZXI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlcygpIHtcbiAgICB0aGlzLl90b3RhbERhdGEgPSB0aGlzLmNvbnRhaW5lcj8uWydwYWdpbmF0aW9uJ10/LnRvdGFsRGF0YSB8fCAwO1xuXG4gICAgdGhpcy5fZnJvbSA9IHRoaXMuYWN0aXZlUGFnZSAqIHRoaXMuaXRlbXNQZXJQYWdlIC0gKHRoaXMuaXRlbXNQZXJQYWdlIC0gMSk7XG4gICAgaWYgKHRoaXMuX3RvdGFsRGF0YSA8PSAwKSB0aGlzLl9mcm9tID0gMDtcblxuICAgIHRoaXMuX3RvID0gdGhpcy5hY3RpdmVQYWdlICogdGhpcy5pdGVtc1BlclBhZ2U7XG4gICAgaWYgKHRoaXMuX3RvID4gdGhpcy5fdG90YWxEYXRhKSB0aGlzLl90byA9IHRoaXMuX3RvdGFsRGF0YTtcbiAgfVxufVxuIiwiPGRpdiBkb2t1LXR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHktbVwiIGNsYXNzPVwiZC1wYWdpbmF0aW9uLWluZm9cIj5cbiAgPHNwYW4gW2NsYXNzLmhpZGRlbl09XCJpc0N1c3RvbUluZm9cIj5cbiAgICBTaG93aW5nIHt7IGZyb20gfX0gLSB7eyB0byB9fSBmcm9tIHt7IHRvdGFsRGF0YSB9fSBlbnRyaWVzXG4gIDwvc3Bhbj5cbiAgPHNwYW4gI2N1c3RvbUluZm8+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbjwvZGl2PlxuIl19