ngx-mariem-datatable
Version:
Advanced table extension with sorting, filtering, paging and more... for Angular apps
198 lines • 14.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/ngx-mariem-pagination/ngx-mariem-pagination.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter, Pipe, } from "@angular/core";
export class NgxMariemPaginationComponent {
constructor() {
this.previousText = "‹";
this.nextText = "›";
this.firstText = "«";
this.lastText = "»";
this.pageChanged = new EventEmitter();
this._totalItems = 0;
this._itemsPerPage = 10;
this._maxSize = 5;
this.listNumbers = [];
this.activeIndex = 0;
}
/**
* @param {?} value
* @return {?}
*/
set totalItems(value) {
this._totalItems = value;
this.fixListNumbers();
}
/**
* @param {?} value
* @return {?}
*/
set itemsPerPage(value) {
this._itemsPerPage = value;
this.fixListNumbers();
}
/**
* @param {?} value
* @return {?}
*/
set maxSize(value) {
this._maxSize = value;
this.fixListNumbers();
}
/**
* @return {?}
*/
ngOnInit() {
this.pageChangedFn(0);
}
/**
* @return {?}
*/
fixListNumbers() {
/** @type {?} */
let round = Math.round(this.totalItems / this.itemsPerPage);
/** @type {?} */
let items = round * this.itemsPerPage < this.totalItems ? round + 1 : round;
this.listNumbers = [];
for (let index = 0; index < items; index++) {
this.listNumbers.push(index + 1);
}
}
/**
* @param {?} index
* @return {?}
*/
pageChangedFn(index) {
this.activeIndex = index;
this.pageChanged.emit({
page: index + 1,
itemsPerPage: this.itemsPerPage,
});
}
/**
* @return {?}
*/
get totalItems() {
return this._totalItems;
}
/**
* @return {?}
*/
get itemsPerPage() {
return this._itemsPerPage;
}
/**
* @return {?}
*/
get maxSize() {
return this._maxSize;
}
}
NgxMariemPaginationComponent.decorators = [
{ type: Component, args: [{
selector: "ngx-mariem-pagination",
template: `
<div class="flex">
<button
[disabled]="activeIndex == 0"
(click)="pageChangedFn(0)"
[innerHTML]="firstText"
class="page-link"
></button>
<button
[disabled]="activeIndex == 0"
(click)="pageChangedFn(activeIndex - 1)"
[innerHTML]="previousText"
class="page-link"
></button>
<button
*ngFor="
let i of listNumbers
| pipePagination: { maxSize: maxSize, activeIndex: activeIndex }
"
class="page-link"
[ngClass]="{ 'active-page': activeIndex == i - 1 }"
(click)="pageChangedFn(i - 1)"
>
{{ i }}
</button>
<button
[disabled]="activeIndex == listNumbers.length - 1"
(click)="pageChangedFn(activeIndex + 1)"
[innerHTML]="nextText"
class="page-link"
></button>
<button
[disabled]="activeIndex == listNumbers.length - 1"
(click)="pageChangedFn(listNumbers.length - 1)"
[innerHTML]="lastText"
class="page-link"
></button>
</div>
`,
styles: [".flex{display:flex}.active-page{background-color:rgba(158,158,158,.2)!important}.page-link{background:0 0;color:#333!important;border:none!important;font-weight:700!important;align-items:center!important;margin:0!important;padding:.5rem;height:auto!important;min-width:auto!important;border-radius:.25rem!important;cursor:pointer}.page-link:hover{background-color:rgba(158,158,158,.2)!important}.page-link[disabled]{cursor:no-drop}"]
}] }
];
/** @nocollapse */
NgxMariemPaginationComponent.ctorParameters = () => [];
NgxMariemPaginationComponent.propDecorators = {
totalItems: [{ type: Input }],
itemsPerPage: [{ type: Input }],
maxSize: [{ type: Input }],
previousText: [{ type: Input }],
nextText: [{ type: Input }],
firstText: [{ type: Input }],
lastText: [{ type: Input }],
pageChanged: [{ type: Output }]
};
if (false) {
/** @type {?} */
NgxMariemPaginationComponent.prototype.previousText;
/** @type {?} */
NgxMariemPaginationComponent.prototype.nextText;
/** @type {?} */
NgxMariemPaginationComponent.prototype.firstText;
/** @type {?} */
NgxMariemPaginationComponent.prototype.lastText;
/** @type {?} */
NgxMariemPaginationComponent.prototype.pageChanged;
/** @type {?} */
NgxMariemPaginationComponent.prototype._totalItems;
/** @type {?} */
NgxMariemPaginationComponent.prototype._itemsPerPage;
/** @type {?} */
NgxMariemPaginationComponent.prototype._maxSize;
/** @type {?} */
NgxMariemPaginationComponent.prototype.listNumbers;
/** @type {?} */
NgxMariemPaginationComponent.prototype.activeIndex;
}
export class pipePagination {
/**
* @param {?} list
* @param {?} filterObj
* @return {?}
*/
transform(list, filterObj) {
if (list.length <= filterObj.maxSize) {
return list;
}
else {
/** @type {?} */
let tab;
if (filterObj.activeIndex + filterObj.maxSize >= list.length) {
tab = list.slice(list.length - filterObj.maxSize, list.length);
}
else {
tab = list.slice(filterObj.activeIndex, filterObj.activeIndex + filterObj.maxSize);
}
return tab;
}
}
}
pipePagination.decorators = [
{ type: Pipe, args: [{ name: "pipePagination" },] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hcmllbS1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tYXJpZW0tZGF0YXRhYmxlLyIsInNvdXJjZXMiOlsibGliL25neC1tYXJpZW0tcGFnaW5hdGlvbi9uZ3gtbWFyaWVtLXBhZ2luYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixJQUFJLEdBRUwsTUFBTSxlQUFlLENBQUM7QUE2Q3ZCLE1BQU0sT0FBTyw0QkFBNEI7SUF1QnZDO1FBVlMsaUJBQVksR0FBVyxVQUFVLENBQUM7UUFDbEMsYUFBUSxHQUFXLFVBQVUsQ0FBQztRQUM5QixjQUFTLEdBQVcsU0FBUyxDQUFDO1FBQzlCLGFBQVEsR0FBVyxTQUFTLENBQUM7UUFDNUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7SUFDVCxDQUFDOzs7OztJQXRCaEIsSUFBYSxVQUFVLENBQUMsS0FBSztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7Ozs7SUFDRCxJQUFhLFlBQVksQ0FBQyxLQUFLO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs7OztJQUNELElBQWEsT0FBTyxDQUFDLEtBQUs7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFhRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDOzs7O0lBQ0QsY0FBYzs7WUFDUixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7O1lBQ3ZELEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBQzNFLElBQUksQ0FBQyxXQUFXLEdBQUMsRUFBRSxDQUFBO1FBQ25CLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQzs7Ozs7SUFDRCxhQUFhLENBQUMsS0FBSztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUM7WUFDZixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUNELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOzs7O0lBQ0QsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7Ozs7SUFDRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzs7O1lBOUZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NUOzthQUVGOzs7Ozt5QkFFRSxLQUFLOzJCQUlMLEtBQUs7c0JBSUwsS0FBSzsyQkFJTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLOzBCQUNMLE1BQU07Ozs7SUFKUCxvREFBMkM7O0lBQzNDLGdEQUF1Qzs7SUFDdkMsaURBQXVDOztJQUN2QyxnREFBc0M7O0lBQ3RDLG1EQUEyQzs7SUFDM0MsbURBQXdCOztJQUN4QixxREFBMkI7O0lBQzNCLGdEQUFxQjs7SUFDckIsbURBQWlCOztJQUNqQixtREFBd0I7O0FBZ0MxQixNQUFNLE9BQU8sY0FBYzs7Ozs7O0lBQ3pCLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07O2dCQUNELEdBQUc7WUFDUCxJQUFJLFNBQVMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUM1RCxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2hFO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNkLFNBQVMsQ0FBQyxXQUFXLEVBQ3JCLFNBQVMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDMUMsQ0FBQzthQUNIO1lBQ0QsT0FBTyxHQUFHLENBQUM7U0FDWjtJQUNILENBQUM7OztZQWpCRixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibmd4LW1hcmllbS1wYWdpbmF0aW9uXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUluZGV4ID09IDBcIlxuICAgICAgICAoY2xpY2spPVwicGFnZUNoYW5nZWRGbigwKVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiZmlyc3RUZXh0XCJcbiAgICAgICAgY2xhc3M9XCJwYWdlLWxpbmtcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZlSW5kZXggPT0gMFwiXG4gICAgICAgIChjbGljayk9XCJwYWdlQ2hhbmdlZEZuKGFjdGl2ZUluZGV4IC0gMSlcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cInByZXZpb3VzVGV4dFwiXG4gICAgICAgIGNsYXNzPVwicGFnZS1saW5rXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IGkgb2YgbGlzdE51bWJlcnNcbiAgICAgICAgICAgIHwgcGlwZVBhZ2luYXRpb246IHsgbWF4U2l6ZTogbWF4U2l6ZSwgYWN0aXZlSW5kZXg6IGFjdGl2ZUluZGV4IH1cbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJwYWdlLWxpbmtcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdhY3RpdmUtcGFnZSc6IGFjdGl2ZUluZGV4ID09IGkgLSAxIH1cIlxuICAgICAgICAoY2xpY2spPVwicGFnZUNoYW5nZWRGbihpIC0gMSlcIlxuICAgICAgPlxuICAgICAgICB7eyBpIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUluZGV4ID09IGxpc3ROdW1iZXJzLmxlbmd0aCAtIDFcIlxuICAgICAgICAoY2xpY2spPVwicGFnZUNoYW5nZWRGbihhY3RpdmVJbmRleCArIDEpXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJuZXh0VGV4dFwiXG4gICAgICAgIGNsYXNzPVwicGFnZS1saW5rXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUluZGV4ID09IGxpc3ROdW1iZXJzLmxlbmd0aCAtIDFcIlxuICAgICAgICAoY2xpY2spPVwicGFnZUNoYW5nZWRGbihsaXN0TnVtYmVycy5sZW5ndGggLSAxKVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwibGFzdFRleHRcIlxuICAgICAgICBjbGFzcz1cInBhZ2UtbGlua1wiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogW1wiLi9uZ3gtbWFyaWVtLXBhZ2luYXRpb24uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hcmllbVBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZXQgdG90YWxJdGVtcyh2YWx1ZSkge1xuICAgIHRoaXMuX3RvdGFsSXRlbXMgPSB2YWx1ZTtcbiAgICB0aGlzLmZpeExpc3ROdW1iZXJzKCk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGl0ZW1zUGVyUGFnZSh2YWx1ZSkge1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IHZhbHVlO1xuICAgIHRoaXMuZml4TGlzdE51bWJlcnMoKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbWF4U2l6ZSh2YWx1ZSkge1xuICAgIHRoaXMuX21heFNpemUgPSB2YWx1ZTtcbiAgICB0aGlzLmZpeExpc3ROdW1iZXJzKCk7XG4gIH1cbiAgQElucHV0KCkgcHJldmlvdXNUZXh0OiBzdHJpbmcgPSBcIiZsc2FxdW87XCI7XG4gIEBJbnB1dCgpIG5leHRUZXh0OiBzdHJpbmcgPSBcIiZyc2FxdW87XCI7XG4gIEBJbnB1dCgpIGZpcnN0VGV4dDogc3RyaW5nID0gXCImbGFxdW87XCI7XG4gIEBJbnB1dCgpIGxhc3RUZXh0OiBzdHJpbmcgPSBcIiZyYXF1bztcIjtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBfdG90YWxJdGVtczogbnVtYmVyID0gMDtcbiAgX2l0ZW1zUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIF9tYXhTaXplOiBudW1iZXIgPSA1O1xuICBsaXN0TnVtYmVycyA9IFtdO1xuICBhY3RpdmVJbmRleDogbnVtYmVyID0gMDtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucGFnZUNoYW5nZWRGbigwKTtcbiAgfVxuICBmaXhMaXN0TnVtYmVycygpIHtcbiAgICBsZXQgcm91bmQgPSBNYXRoLnJvdW5kKHRoaXMudG90YWxJdGVtcyAvIHRoaXMuaXRlbXNQZXJQYWdlKTtcbiAgICBsZXQgaXRlbXMgPSByb3VuZCAqIHRoaXMuaXRlbXNQZXJQYWdlIDwgdGhpcy50b3RhbEl0ZW1zID8gcm91bmQgKyAxIDogcm91bmQ7XG4gICAgdGhpcy5saXN0TnVtYmVycz1bXVxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtczsgaW5kZXgrKykge1xuICAgICAgdGhpcy5saXN0TnVtYmVycy5wdXNoKGluZGV4ICsgMSk7XG4gICAgfVxuICB9XG4gIHBhZ2VDaGFuZ2VkRm4oaW5kZXgpIHtcbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHtcbiAgICAgIHBhZ2U6IGluZGV4ICsgMSxcbiAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgfSk7XG4gIH1cbiAgZ2V0IHRvdGFsSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsSXRlbXM7XG4gIH1cbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlO1xuICB9XG4gIGdldCBtYXhTaXplKCkge1xuICAgIHJldHVybiB0aGlzLl9tYXhTaXplO1xuICB9XG59XG5AUGlwZSh7IG5hbWU6IFwicGlwZVBhZ2luYXRpb25cIiB9KVxuZXhwb3J0IGNsYXNzIHBpcGVQYWdpbmF0aW9uIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShsaXN0LCBmaWx0ZXJPYmopOiBhbnlbXSB7XG4gICAgaWYgKGxpc3QubGVuZ3RoIDw9IGZpbHRlck9iai5tYXhTaXplKSB7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHRhYjtcbiAgICAgIGlmIChmaWx0ZXJPYmouYWN0aXZlSW5kZXggKyBmaWx0ZXJPYmoubWF4U2l6ZSA+PSBsaXN0Lmxlbmd0aCkge1xuICAgICAgICB0YWIgPSBsaXN0LnNsaWNlKGxpc3QubGVuZ3RoIC0gZmlsdGVyT2JqLm1heFNpemUsIGxpc3QubGVuZ3RoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYiA9IGxpc3Quc2xpY2UoXG4gICAgICAgICAgZmlsdGVyT2JqLmFjdGl2ZUluZGV4LFxuICAgICAgICAgIGZpbHRlck9iai5hY3RpdmVJbmRleCArIGZpbHRlck9iai5tYXhTaXplXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFiO1xuICAgIH1cbiAgfVxufVxuIl19