@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
157 lines • 13.9 kB
JavaScript
/**
* @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=