angular-bootstrap-italia
Version:
<p align="center"> <h1 align="center">Bootstrap Italia + Angular 9</h1>
93 lines • 16.3 kB
JavaScript
import { __decorate } from "tslib";
import { Component, Output, EventEmitter, Input } from '@angular/core';
let TablePaginationComponent = class TablePaginationComponent {
constructor() {
this.paginationChange = new EventEmitter();
this.pages = [];
this.currentPageRound = [];
}
ngOnInit() {
this.setPageRound(1);
}
ngOnChanges(changes) {
if (changes.currentPagination) {
this.setPageRound(this.currentPagination.currentPage);
}
}
setPage(page) {
this.currentPagination.currentPage = page;
this.setPageRound(page);
this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize });
}
nextPage() {
const newCurrentPage = this.currentPagination.currentPage + 1;
if (this.pages.find(elem => elem.page === newCurrentPage)) {
this.currentPagination.currentPage = newCurrentPage;
this.setPageRound(newCurrentPage);
this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize });
}
}
previousPage() {
const newCurrentPage = this.currentPagination.currentPage - 1;
if (this.pages.find(elem => elem.page === newCurrentPage)) {
this.currentPagination.currentPage = newCurrentPage;
this.setPageRound(newCurrentPage);
this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize });
}
}
changePageSize(newPageSizeValue) {
this.currentPagination.pageSize = newPageSizeValue;
this.paginationChange.emit({ page: 1, pageSize: this.currentPagination.pageSize });
}
setPageRound(currentPage) {
this.pages = [];
if (this.currentPagination.totalPages > 7) {
const lower = currentPage - 2 > 1 ? currentPage - 2 : 2;
const 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
const minNext = currentPage > this.currentPagination.totalPages - 4 ? this.currentPagination.totalPages - 4 : lower;
const maxNext = lower > 2 ? max : lower + 3;
for (let 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 (let 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);
export { TablePaginationComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWJvb3RzdHJhcC1pdGFsaWEvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90YWJsZS90YWJsZS1wYWdpbmF0aW9uL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQVd6RyxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQVFuQztRQUxVLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUVOLENBQUM7SUFFakIsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdkgsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLGNBQWMsR0FBRyxJ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IE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIE1vZGVsc1xyXG5pbXBvcnQgeyBJUGFnaW5hdGlvbiB9IGZyb20gJy4vcGFnaW5hdGlvbi5tb2RlbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGFibGUtcGFnaW5hdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSBjdXJyZW50UGFnaW5hdGlvbjogSVBhZ2luYXRpb247XHJcbiAgQE91dHB1dCgpIHBhZ2luYXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHBhZ2VzID0gW107XHJcbiAgY3VycmVudFBhZ2VSb3VuZCA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0UGFnZVJvdW5kKDEpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuY3VycmVudFBhZ2luYXRpb24pIHtcclxuICAgICAgdGhpcy5zZXRQYWdlUm91bmQodGhpcy5jdXJyZW50UGFnaW5hdGlvbi5jdXJyZW50UGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5jdXJyZW50UGFnZSA9IHBhZ2U7XHJcbiAgICB0aGlzLnNldFBhZ2VSb3VuZChwYWdlKTtcclxuICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5lbWl0KCB7IHBhZ2U6IHRoaXMuY3VycmVudFBhZ2luYXRpb24uY3VycmVudFBhZ2UsIHBhZ2VTaXplOiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnBhZ2VTaXplIH0pO1xyXG4gIH1cclxuXHJcbiAgbmV4dFBhZ2UoKSB7XHJcbiAgICBjb25zdCBuZXdDdXJyZW50UGFnZSA9IHRoaXMuY3VycmVudFBhZ2luYXRpb24uY3VycmVudFBhZ2UgKyAxO1xyXG4gICAgaWYgKHRoaXMucGFnZXMuZmluZChlbGVtID0+IGVsZW0ucGFnZSA9PT0gbmV3Q3VycmVudFBhZ2UpKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2luYXRpb24uY3VycmVudFBhZ2UgPSBuZXdDdXJyZW50UGFnZTtcclxuICAgICAgdGhpcy5zZXRQYWdlUm91bmQobmV3Q3VycmVudFBhZ2UpO1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UuZW1pdCggeyBwYWdlOiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLmN1cnJlbnRQYWdlLCBwYWdlU2l6ZTogdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5wYWdlU2l6ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXZpb3VzUGFnZSgpIHtcclxuICAgIGNvbnN0IG5ld0N1cnJlbnRQYWdlID0gdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5jdXJyZW50UGFnZSAtIDE7XHJcbiAgICBpZiAodGhpcy5wYWdlcy5maW5kKGVsZW0gPT4gZWxlbS5wYWdlID09PSBuZXdDdXJyZW50UGFnZSkpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnaW5hdGlvbi5jdXJyZW50UGFnZSA9IG5ld0N1cnJlbnRQYWdlO1xyXG4gICAgICB0aGlzLnNldFBhZ2VSb3VuZChuZXdDdXJyZW50UGFnZSk7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5lbWl0KCB7IHBhZ2U6IHRoaXMuY3VycmVudFBhZ2luYXRpb24uY3VycmVudFBhZ2UsIHBhZ2VTaXplOiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnBhZ2VTaXplIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZVNpemUobmV3UGFnZVNpemVWYWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnBhZ2VTaXplID0gbmV3UGFnZVNpemVWYWx1ZTtcclxuICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5lbWl0KCB7IHBhZ2U6IDEsIHBhZ2VTaXplOiB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnBhZ2VTaXplIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQYWdlUm91bmQoY3VycmVudFBhZ2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYWdlcyA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnRvdGFsUGFnZXMgPiA3KSB7XHJcbiAgICAgIGNvbnN0IGxvd2VyID0gY3VycmVudFBhZ2UgLSAyID4gMSA/IGN1cnJlbnRQYWdlIC0gMiA6IDI7XHJcbiAgICAgIGNvbnN0IG1heCA9IGN1cnJlbnRQYWdlICsgMiA8IHRoaXMuY3VycmVudFBhZ2luYXRpb24udG90YWxQYWdlcyA/IGN1cnJlbnRQYWdlICsgMiA6IHRoaXMuY3VycmVudFBhZ2luYXRpb24udG90YWxQYWdlcyAtIDE7XHJcblxyXG4gICAgICAvLyBJbnNlcmlzY2kgcHJpbW8gZWxlbWVudG9cclxuICAgICAgdGhpcy5wYWdlcy5wdXNoKHsgc2VwYXJhdG9yOiBmYWxzZSwgcGFnZTogMSB9KTtcclxuXHJcbiAgICAgIC8vIFNlcHJhdG9yXHJcbiAgICAgIGlmIChsb3dlciA+IDIpIHtcclxuICAgICAgICB0aGlzLnBhZ2VzLnB1c2goeyBzZXBhcmF0b3I6IHRydWUgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJvdW5kXHJcbiAgICAgIGNvbnN0IG1pbk5leHQgPSBjdXJyZW50UGFnZSA+IHRoaXMuY3VycmVudFBhZ2luYXRpb24udG90YWxQYWdlcyAtIDQgPyB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnRvdGFsUGFnZXMgLSA0IDogbG93ZXI7XHJcbiAgICAgIGNvbnN0IG1heE5leHQgPSBsb3dlciA+IDIgPyBtYXggOiBsb3dlciArIDM7XHJcbiAgICAgIGZvciAobGV0IGkgPSBtaW5OZXh0OyBpIDw9IG1heE5leHQ7IGkrKykge1xyXG4gICAgICAgIHRoaXMucGFnZXMucHVzaChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgc2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgICAgICAgcGFnZTogaVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNlcHJhdG9yXHJcbiAgICAgIGlmIChtYXggPCB0aGlzLmN1cnJlbnRQYWdpbmF0aW9uLnRvdGFsUGFnZXMgLSAxKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlcy5wdXNoKHsgc2VwYXJhdG9yOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJbnNlcmlzY2kgdWx0aW1vIGVsZW1lbnRvXHJcbiAgICAgIHRoaXMucGFnZXMucHVzaCh7IHNlcGFyYXRvcjogZmFsc2UsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2luYXRpb24udG90YWxQYWdlcyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMuY3VycmVudFBhZ2luYXRpb24udG90YWxQYWdlczsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlcy5wdXNoKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBzZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICAgICAgICBwYWdlOiBpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19