angular-bootstrap-italia
Version:
<p align="center"> <h1 align="center">Bootstrap Italia + Angular 9</h1>
94 lines • 16.9 kB
JavaScript
import { __decorate } from "tslib";
import { Component, Output, EventEmitter, Input } from '@angular/core';
var TablePaginationComponent = /** @class */ (function () {
function TablePaginationComponent() {
this.paginationChange = new EventEmitter();
this.pages = [];
this.currentPageRound = [];
}
TablePaginationComponent.prototype.ngOnInit = function () {
this.setPageRound(1);
};
TablePaginationComponent.prototype.ngOnChanges = function (changes) {
if (changes.currentPagination) {
this.setPageRound(this.currentPagination.currentPage);
}
};
TablePaginationComponent.prototype.setPage = function (page) {
this.currentPagination.currentPage = page;
this.setPageRound(page);
this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize });
};
TablePaginationComponent.prototype.nextPage = function () {
var newCurrentPage = this.currentPagination.currentPage + 1;
if (this.pages.find(function (elem) { return elem.page === newCurrentPage; })) {
this.currentPagination.currentPage = newCurrentPage;
this.setPageRound(newCurrentPage);
this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize });
}
};
TablePaginationComponent.prototype.previousPage = function () {
var newCurrentPage = this.currentPagination.currentPage - 1;
if (this.pages.find(function (elem) { return elem.page === newCurrentPage; })) {
this.currentPagination.currentPage = newCurrentPage;
this.setPageRound(newCurrentPage);
this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize });
}
};
TablePaginationComponent.prototype.changePageSize = function (newPageSizeValue) {
this.currentPagination.pageSize = newPageSizeValue;
this.paginationChange.emit({ page: 1, pageSize: this.currentPagination.pageSize });
};
TablePaginationComponent.prototype.setPageRound = function (currentPage) {
this.pages = [];
if (this.currentPagination.totalPages > 7) {
var lower = currentPage - 2 > 1 ? currentPage - 2 : 2;
var max = currentPage + 2 < this.currentPagination.totalPages ? currentPage + 2 : this.currentPagination.totalPages - 1;
// Inserisci primo elemento
this.pages.push({ separator: false, page: 1 });
// Seprator
if (lower > 2) {
this.pages.push({ separator: true });
}
// Round
var minNext = currentPage > this.currentPagination.totalPages - 4 ? this.currentPagination.totalPages - 4 : lower;
var maxNext = lower > 2 ? max : lower + 3;
for (var i = minNext; i <= maxNext; i++) {
this.pages.push({
separator: false,
page: i
});
}
// Seprator
if (max < this.currentPagination.totalPages - 1) {
this.pages.push({ separator: true });
}
// Inserisci ultimo elemento
this.pages.push({ separator: false, page: this.currentPagination.totalPages });
}
else {
for (var i = 1; i <= this.currentPagination.totalPages; i++) {
this.pages.push({
separator: false,
page: i
});
}
}
};
__decorate([
Input()
], TablePaginationComponent.prototype, "currentPagination", void 0);
__decorate([
Output()
], TablePaginationComponent.prototype, "paginationChange", void 0);
TablePaginationComponent = __decorate([
Component({
selector: 'lib-table-pagination',
template: "<div class=\"row\">\r\n <div class=\"col\">\r\n <nav class=\"pagination-wrapper justify-content-center\" aria-label=\"Esempio di navigazione della pagina\">\r\n <ul class=\"pagination\">\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" href=\"javascript:void(0);\" (click)=\"previousPage()\">\r\n <svg class=\"icon icon-primary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-chevron-left\">\r\n </use>\r\n </svg>\r\n <span class=\"sr-only\">Pagina precedente</span>\r\n </a>\r\n </li>\r\n\r\n <li class=\"page-item\" *ngFor=\"let elem of pages\">\r\n\r\n <a class=\"page-link\" href=\"javascript:void(0);\" aria-current=\"page\"\r\n *ngIf=\"!elem.separator && elem.page === currentPagination.currentPage\" (click)=\"setPage(elem.page)\">\r\n {{ elem.page }}\r\n </a>\r\n\r\n <a class=\"page-link\" href=\"javascript:void(0);\" (click)=\"setPage(elem.page)\"\r\n *ngIf=\"!elem.separator && elem.page !== currentPagination.currentPage;\">{{ elem.page }}</a>\r\n\r\n <span class=\"page-link\" *ngIf=\"elem.separator\">...</span>\r\n\r\n </li>\r\n\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" href=\"javascript:void(0);\" (click)=\"nextPage()\">\r\n <span class=\"sr-only\">Pagina successiva</span>\r\n <svg class=\"icon icon-primary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-chevron-right\">\r\n </use>\r\n </svg>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"dropdown\">\r\n <a class=\"btn btn-dropdown dropdown-toggle\" href=\"javascript:void(0);\" role=\"button\" id=\"pagerChanger\"\r\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"Salta alla pagina\">pag. {{ currentPagination.pageSize }}</a>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"pagerChanger\">\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"link-list\">\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(10)\"><span>pag. 10</span></a></li>\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(20)\"><span>pag. 20</span></a></li>\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(30)\"><span>pag. 30</span></a></li>\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(40)\"><span>pag. 40</span></a></li>\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(50)\"><span>pag. 50</span></a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </nav>\r\n </div>\r\n</div>\r\n",
styles: [""]
})
], TablePaginationComponent);
return TablePaginationComponent;
}());
export { TablePaginationComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWJvb3RzdHJhcC1pdGFsaWEvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90YWJsZS90YWJsZS1wYWdpbmF0aW9uL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQVd6RztJQVFFO1FBTFUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gscUJBQWdCLEdBQUcsRUFBRSxDQUFDO0lBRU4sQ0FBQztJQUVqQiwyQ0FBUSxHQUFSO1FBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsOENBQVcsR0FBWCxVQUFZLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVELDBDQUFPLEdBQVAsVUFBUSxJQUFZO1FBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsMkNBQVEsR0FBUjtRQUNFLElBQU0sY0FBYyxHQUFHLElBQUksQ0FB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RkM7U0EvRlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBNb2RlbHNcclxuaW1wb3J0IHsgSVBhZ2luYXRpb24gfSBmcm9tICcuL3BhZ2luYXRpb24ubW9kZWwnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhYmxlLXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgY3VycmVudFBhZ2luYXRpb246IElQYWdpbmF0aW9uO1xyXG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwYWdlcyA9IFtdO1xyXG4gIGN1cnJlbnRQYWdlUm91bmQgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFBhZ2VSb3VuZCgxKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLmN1cnJlbnRQYWdpbmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2V0UGFnZVJvdW5kKHRoaXMuY3VycmVudFBhZ2luYXRpb24uY3VycmVudFBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFnZShwYWdlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2luYXRpb24uY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gICAgdGhpcy5zZXRQYWdlUm91bmQocGFnZSk7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UuZW1pdCggeyBwYWdlOiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLmN1cnJlbnRQYWdlLCBwYWdlU2l6ZTogdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5wYWdlU2l6ZSB9KTtcclxuICB9XHJcblxyXG4gIG5leHRQYWdlKCkge1xyXG4gICAgY29uc3QgbmV3Q3VycmVudFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLmN1cnJlbnRQYWdlICsgMTtcclxuICAgIGlmICh0aGlzLnBhZ2VzLmZpbmQoZWxlbSA9PiBlbGVtLnBhZ2UgPT09IG5ld0N1cnJlbnRQYWdlKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLmN1cnJlbnRQYWdlID0gbmV3Q3VycmVudFBhZ2U7XHJcbiAgICAgIHRoaXMuc2V0UGFnZVJvdW5kKG5ld0N1cnJlbnRQYWdlKTtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlLmVtaXQoIHsgcGFnZTogdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5jdXJyZW50UGFnZSwgcGFnZVNpemU6IHRoaXMuY3VycmVudFBhZ2luYXRpb24ucGFnZVNpemUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmV2aW91c1BhZ2UoKSB7XHJcbiAgICBjb25zdCBuZXdDdXJyZW50UGFnZSA9IHRoaXMuY3VycmVudFBhZ2luYXRpb24uY3VycmVudFBhZ2UgLSAxO1xyXG4gICAgaWYgKHRoaXMucGFnZXMuZmluZChlbGVtID0+IGVsZW0ucGFnZSA9PT0gbmV3Q3VycmVudFBhZ2UpKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2luYXRpb24uY3VycmVudFBhZ2UgPSBuZXdDdXJyZW50UGFnZTtcclxuICAgICAgdGhpcy5zZXRQYWdlUm91bmQobmV3Q3VycmVudFBhZ2UpO1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UuZW1pdCggeyBwYWdlOiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLmN1cnJlbnRQYWdlLCBwYWdlU2l6ZTogdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5wYWdlU2l6ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVBhZ2VTaXplKG5ld1BhZ2VTaXplVmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5wYWdlU2l6ZSA9IG5ld1BhZ2VTaXplVmFsdWU7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UuZW1pdCggeyBwYWdlOiAxLCBwYWdlU2l6ZTogdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5wYWdlU2l6ZSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGFnZVJvdW5kKGN1cnJlbnRQYWdlOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZXMgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnaW5hdGlvbi50b3RhbFBhZ2VzID4gNykge1xyXG4gICAgICBjb25zdCBsb3dlciA9IGN1cnJlbnRQYWdlIC0gMiA+IDEgPyBjdXJyZW50UGFnZSAtIDIgOiAyO1xyXG4gICAgICBjb25zdCBtYXggPSBjdXJyZW50UGFnZSArIDIgPCB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnRvdGFsUGFnZXMgPyBjdXJyZW50UGFnZSArIDIgOiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnRvdGFsUGFnZXMgLSAxO1xyXG5cclxuICAgICAgLy8gSW5zZXJpc2NpIHByaW1vIGVsZW1lbnRvXHJcbiAgICAgIHRoaXMucGFnZXMucHVzaCh7IHNlcGFyYXRvcjogZmFsc2UsIHBhZ2U6IDEgfSk7XHJcblxyXG4gICAgICAvLyBTZXByYXRvclxyXG4gICAgICBpZiAobG93ZXIgPiAyKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlcy5wdXNoKHsgc2VwYXJhdG9yOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSb3VuZFxyXG4gICAgICBjb25zdCBtaW5OZXh0ID0gY3VycmVudFBhZ2UgPiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnRvdGFsUGFnZXMgLSA0ID8gdGhpcy5jdXJyZW50UGFnaW5hdGlvbi50b3RhbFBhZ2VzIC0gNCA6IGxvd2VyO1xyXG4gICAgICBjb25zdCBtYXhOZXh0ID0gbG93ZXIgPiAyID8gbWF4IDogbG93ZXIgKyAzO1xyXG4gICAgICBmb3IgKGxldCBpID0gbWluTmV4dDsgaSA8PSBtYXhOZXh0OyBpKyspIHtcclxuICAgICAgICB0aGlzLnBhZ2VzLnB1c2goXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHNlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgICAgICAgIHBhZ2U6IGlcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZXByYXRvclxyXG4gICAgICBpZiAobWF4IDwgdGhpcy5jdXJyZW50UGFnaW5hdGlvbi50b3RhbFBhZ2VzIC0gMSkge1xyXG4gICAgICAgIHRoaXMucGFnZXMucHVzaCh7IHNlcGFyYXRvcjogdHJ1ZSB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSW5zZXJpc2NpIHVsdGltbyBlbGVtZW50b1xyXG4gICAgICB0aGlzLnBhZ2VzLnB1c2goeyBzZXBhcmF0b3I6IGZhbHNlLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnRvdGFsUGFnZXMgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnRvdGFsUGFnZXM7IGkrKykge1xyXG4gICAgICAgIHRoaXMucGFnZXMucHVzaChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgc2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgICAgICAgcGFnZTogaVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==