@doku-dev/doku-fragment
Version:
A new Angular UI library that moving away from Bootstrap and built from scratch.
77 lines • 11.2 kB
JavaScript
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