UNPKG

@ngx-performance-ui/ui

Version:
157 lines 13.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, forwardRef } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { AbstractNgModelComponent } from '@ngx-performance-ui/core'; export class PaginationComponent extends AbstractNgModelComponent { constructor() { super(...arguments); this.alignment = 'start'; this.classes = ''; this.paginationRange = 7; this.totalPages = 15; this.previousLabel = 'Previous'; this.nextLabel = 'Next'; this.size = 'sm'; } /** * @return {?} */ get pages() { if (this.paginationRange >= this.totalPages) { return Array.apply(null, { length: this.totalPages }).map((/** * @param {?} _ * @param {?} index * @return {?} */ (_, index) => ({ value: index + 1 }))); } /** @type {?} */ const halfWay = Math.floor(this.paginationRange / 2); /** @type {?} */ const isStart = this.value <= halfWay; /** @type {?} */ const isEnd = this.totalPages - this.value < halfWay; return Array.apply(null, { length: this.paginationRange }).map((/** * @param {?} _ * @param {?} index * @return {?} */ (_, index) => { /** @type {?} */ const i = index + 1; if (isStart) { return { value: halfWay + 2 >= i ? i : this.totalPages - (this.paginationRange - i), label: halfWay + 2 === i ? '...' : null, }; } if (isEnd) { return { value: this.paginationRange - halfWay - 2 < i ? this.totalPages - (this.paginationRange - i) : i, label: halfWay === i ? '...' : null, }; } return { value: i === 1 ? 1 : i === this.paginationRange ? this.totalPages : this.value + (halfWay - this.paginationRange + i), label: 2 === i || this.paginationRange - 1 === i ? '...' : null, }; })); } /** * @param {?} __0 * @return {?} */ ngOnChanges({ ngModel }) { if (!ngModel) return; if (!ngModel.currentValue) setTimeout((/** * @param {?} _ * @return {?} */ _ => (this.value = 1)), 0); if (ngModel.currentValue > this.totalPages || ngModel.currentValue < 1) setTimeout((/** * @param {?} _ * @return {?} */ _ => (this.value = ngModel.previousValue)), 0); } /** * @param {?} value * @return {?} */ change(value) { if (value < 1 || value > this.totalPages) return; this.value = value; } } PaginationComponent.decorators = [ { type: Component, args: [{ selector: 'p-pagination', template: ` <ul class="pagination pagination-{{ size }} justify-content-{{ alignment }}"> <li [class.disabled]="value === 1" (click)="change(value - 1)" class="page-item"> <span class="page-link">{{ previousLabel }}</span> </li> <li *ngFor="let page of pages" [class.active]="page.value === value" (click)="change(page.value)" class="page-item" > <span class="page-link">{{ page.label || page.value }}</span> </li> <li [class.disabled]="value === totalPages" (click)="change(value + 1)" class="page-item"> <span class="page-link">{{ nextLabel }}</span> </li> </ul> `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => PaginationComponent)), multi: true, }, ] }] } ]; PaginationComponent.propDecorators = { alignment: [{ type: Input }], classes: [{ type: Input }], paginationRange: [{ type: Input }], totalPages: [{ type: Input }], previousLabel: [{ type: Input }], nextLabel: [{ type: Input }], size: [{ type: Input }] }; if (false) { /** @type {?} */ PaginationComponent.prototype.alignment; /** @type {?} */ PaginationComponent.prototype.classes; /** @type {?} */ PaginationComponent.prototype.paginationRange; /** @type {?} */ PaginationComponent.prototype.totalPages; /** @type {?} */ PaginationComponent.prototype.previousLabel; /** @type {?} */ PaginationComponent.prototype.nextLabel; /** @type {?} */ PaginationComponent.prototype.size; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXBlcmZvcm1hbmNlLXVpL3VpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQWlCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQWdDcEUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHdCQUFnQztJQTlCekU7O1FBZ0NFLGNBQVMsR0FBK0IsT0FBTyxDQUFDO1FBR2hELFlBQU8sR0FBVyxFQUFFLENBQUM7UUFHckIsb0JBQWUsR0FBbUIsQ0FBQyxDQUFDO1FBR3BDLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFHeEIsa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFHbkMsY0FBUyxHQUFXLE1BQU0sQ0FBQztRQUczQixTQUFJLEdBQXVCLElBQUksQ0FBQztJQXNEbEMsQ0FBQzs7OztJQXBEQyxJQUFJLEtBQUs7UUFDUCxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMzQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUc7Ozs7O1lBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7U0FDakc7O2NBRUssT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMs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RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVTs7O3dCQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixFQUFDO3dCQUNsRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjthQUNGOzs7d0JBRUUsS0FBSztzQkFHTCxLQUFLOzhCQUdMLEtBQUs7eUJBR0wsS0FBSzs0QkFHTCxLQUFLO3dCQUdMLEtBQUs7bUJBR0wsS0FBSzs7OztJQWxCTix3Q0FDZ0Q7O0lBRWhELHNDQUNxQjs7SUFFckIsOENBQ29DOztJQUVwQyx5Q0FDd0I7O0lBRXhCLDRDQUNtQzs7SUFFbkMsd0NBQzJCOztJQUUzQixtQ0FDZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWJzdHJhY3ROZ01vZGVsQ29tcG9uZW50IH0gZnJvbSAnQG5neC1wZXJmb3JtYW5jZS11aS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncC1wYWdpbmF0aW9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dWwgY2xhc3M9XCJwYWdpbmF0aW9uIHBhZ2luYXRpb24te3sgc2l6ZSB9fSBqdXN0aWZ5LWNvbnRlbnQte3sgYWxpZ25tZW50IH19XCI+XG4gICAgICA8bGkgW2NsYXNzLmRpc2FibGVkXT1cInZhbHVlID09PSAxXCIgKGNsaWNrKT1cImNoYW5nZSh2YWx1ZSAtIDEpXCIgY2xhc3M9XCJwYWdlLWl0ZW1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWxpbmtcIj57eyBwcmV2aW91c0xhYmVsIH19PC9zcGFuPlxuICAgICAgPC9saT5cbiAgICAgIDxsaVxuICAgICAgICAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicGFnZS52YWx1ZSA9PT0gdmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlKHBhZ2UudmFsdWUpXCJcbiAgICAgICAgY2xhc3M9XCJwYWdlLWl0ZW1cIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPnt7IHBhZ2UubGFiZWwgfHwgcGFnZS52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgW2NsYXNzLmRpc2FibGVkXT1cInZhbHVlID09PSB0b3RhbFBhZ2VzXCIgKGNsaWNrKT1cImNoYW5nZSh2YWx1ZSArIDEpXCIgY2xhc3M9XCJwYWdlLWl0ZW1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWxpbmtcIj57eyBuZXh0TGFiZWwgfX08L3NwYW4+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBhZ2luYXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TmdNb2RlbENvbXBvbmVudDxudW1iZXI+IHtcbiAgQElucHV0KClcbiAgYWxpZ25tZW50OiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyA9ICdzdGFydCc7XG5cbiAgQElucHV0KClcbiAgY2xhc3Nlczogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgcGFnaW5hdGlvblJhbmdlOiA1IHwgNyB8IDkgfCAxMSA9IDc7XG5cbiAgQElucHV0KClcbiAgdG90YWxQYWdlczogbnVtYmVyID0gMTU7XG5cbiAgQElucHV0KClcbiAgcHJldmlvdXNMYWJlbDogc3RyaW5nID0gJ1ByZXZpb3VzJztcblxuICBASW5wdXQoKVxuICBuZXh0TGFiZWw6IHN0cmluZyA9ICdOZXh0JztcblxuICBASW5wdXQoKVxuICBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgPSAnc20nO1xuXG4gIGdldCBwYWdlcygpOiBBcnJheTx7IHZhbHVlOiBudW1iZXI7IGxhYmVsPzogc3RyaW5nIH0+IHtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uUmFuZ2UgPj0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICByZXR1cm4gQXJyYXkuYXBwbHkobnVsbCwgeyBsZW5ndGg6IHRoaXMudG90YWxQYWdlcyB9KS5tYXAoKF8sIGluZGV4KSA9PiAoeyB2YWx1ZTogaW5kZXggKyAxIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYWxmV2F5ID0gTWF0aC5mbG9vcih0aGlzLnBhZ2luYXRpb25SYW5nZSAvIDIpO1xuXG4gICAgY29uc3QgaXNTdGFydCA9IHRoaXMudmFsdWUgPD0gaGFsZldheTtcbiAgICBjb25zdCBpc0VuZCA9IHRoaXMudG90YWxQYWdlcyAtIHRoaXMudmFsdWUgPCBoYWxmV2F5O1xuXG4gICAgcmV0dXJuIEFycmF5LmFwcGx5KG51bGwsIHsgbGVuZ3RoOiB0aGlzLnBhZ2luYXRpb25SYW5nZSB9KS5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpID0gaW5kZXggKyAxO1xuXG4gICAgICBpZiAoaXNTdGFydCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBoYWxmV2F5ICsgMiA+PSBpID8gaSA6IHRoaXMudG90YWxQYWdlcyAtICh0aGlzLnBhZ2luYXRpb25SYW5nZSAtIGkpLFxuICAgICAgICAgIGxhYmVsOiBoYWxmV2F5ICsgMiA9PT0gaSA/ICcuLi4nIDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRW5kKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IHRoaXMucGFnaW5hdGlvblJhbmdlIC0gaGFsZldheSAtIDIgPCBpID8gdGhpcy50b3RhbFBhZ2VzIC0gKHRoaXMucGFnaW5hdGlvblJhbmdlIC0gaSkgOiBpLFxuICAgICAgICAgIGxhYmVsOiBoYWxmV2F5ID09PSBpID8gJy4uLicgOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTpcbiAgICAgICAgICBpID09PSAxXG4gICAgICAgICAgICA/IDFcbiAgICAgICAgICAgIDogaSA9PT0gdGhpcy5wYWdpbmF0aW9uUmFuZ2VcbiAgICAgICAgICAgID8gdGhpcy50b3RhbFBhZ2VzXG4gICAgICAgICAgICA6IHRoaXMudmFsdWUgKyAoaGFsZldheSAtIHRoaXMucGFnaW5hdGlvblJhbmdlICsgaSksXG4gICAgICAgIGxhYmVsOiAyID09PSBpIHx8IHRoaXMucGFnaW5hdGlvblJhbmdlIC0gMSA9PT0gaSA/ICcuLi4nIDogbnVsbCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7IG5nTW9kZWwgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghbmdNb2RlbCkgcmV0dXJuO1xuXG4gICAgaWYgKCFuZ01vZGVsLmN1cnJlbnRWYWx1ZSkgc2V0VGltZW91dChfID0+ICh0aGlzLnZhbHVlID0gMSksIDApO1xuXG4gICAgaWYgKG5nTW9kZWwuY3VycmVudFZhbHVlID4gdGhpcy50b3RhbFBhZ2VzIHx8IG5nTW9kZWwuY3VycmVudFZhbHVlIDwgMSlcbiAgICAgIHNldFRpbWVvdXQoXyA9PiAodGhpcy52YWx1ZSA9IG5nTW9kZWwucHJldmlvdXNWYWx1ZSksIDApO1xuICB9XG5cbiAgY2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPCAxIHx8IHZhbHVlID4gdGhpcy50b3RhbFBhZ2VzKSByZXR1cm47XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG4iXX0=