UNPKG

ngx-mariem-datatable

Version:

Advanced table extension with sorting, filtering, paging and more... for Angular apps

198 lines 14.2 kB
/** * @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 = "&lsaquo;"; this.nextText = "&rsaquo;"; this.firstText = "&laquo;"; this.lastText = "&raquo;"; 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