UNPKG

@asi-ngtools/lib

Version:

This project is a little components library, simple to use, which will help you to simplify your project.

148 lines (147 loc) 13.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, Input, EventEmitter, Output } from '@angular/core'; import * as nh from '../../native-helper'; export class AsiPaginationComponent { constructor() { this.nbElements = 0; this.nbVisibleElements = 0; this.selectedPagination = 1; this.onPaginationChanged = new EventEmitter(); } /** * @return {?} */ onFirstPage() { return this.selectedPagination === 1; } /** * @return {?} */ onLastPage() { return this.selectedPagination === this.nbElements; } /** * @param {?} pagination * @return {?} */ isCurrentPagination(pagination) { return this.selectedPagination === pagination; } /** * @param {?} pagination * @return {?} */ changePagination(pagination) { if (pagination !== AsiPaginationComponent.TRI_POINT) { this.selectedPagination = pagination; this.onPaginationChanged.emit(this.selectedPagination); } } /** * @return {?} */ previousPage() { if (this.selectedPagination > 1) { this.selectedPagination--; this.onPaginationChanged.emit(this.selectedPagination); } } /** * @return {?} */ nextPage() { if (this.selectedPagination < this.nbElements) { this.selectedPagination++; this.onPaginationChanged.emit(this.selectedPagination); } } /** * @return {?} */ goLastPage() { if (this.selectedPagination !== this.nbElements) { this.selectedPagination = this.nbElements; this.onPaginationChanged.emit(this.selectedPagination); } } /** * @return {?} */ goFirstPage() { if (this.selectedPagination !== 1) { this.selectedPagination = 1; this.onPaginationChanged.emit(this.selectedPagination); } } /** * @return {?} */ getPaginationItems() { /** @type {?} */ const currentPage = this.selectedPagination; /** @type {?} */ let halfVisibleElement = Math.floor(this.nbVisibleElements / 2); if (!this.nbElements) { this.nbElements = 1; } if (this.nbElements <= this.nbVisibleElements) { // Show all return this.createNumbersTab(1, this.nbElements); } else if (currentPage < halfVisibleElement + 2) { // Pagination start return nh.concat(this.createNumbersTab(1, this.nbVisibleElements - 1), [AsiPaginationComponent.TRI_POINT, this.nbElements]); } else if (currentPage > this.nbElements - halfVisibleElement) { // Pagination end return nh.concat([1, AsiPaginationComponent.TRI_POINT], this.createNumbersTab(this.nbElements - this.nbVisibleElements + 2, this.nbElements)); } else { // Between return nh.concat([1, AsiPaginationComponent.TRI_POINT], this.createNumbersTab(currentPage - halfVisibleElement + 1, currentPage + halfVisibleElement - 1), [AsiPaginationComponent.TRI_POINT, this.nbElements]); } } ; /** * @param {?} min * @param {?} max * @return {?} */ createNumbersTab(min, max) { /** @type {?} */ let index = min - 1; return nh.times(max - min + 1, () => { return ++index; }); } } AsiPaginationComponent.TRI_POINT = '...'; AsiPaginationComponent.decorators = [ { type: Component, args: [{ selector: 'asi-pagination', host: { 'class': 'asi-component asi-pagination' }, template: "<div class=\"action-panel\">\r\n <div [ngClass]=\"{ 'disabled' : onFirstPage()}\">\r\n <span (click)=\"goFirstPage()\" class=\"paginate-boutton action\" [innerHTML]=\"'&#139;&#139;'\"></span>\r\n <span (click)=\"previousPage()\" class=\"paginate-boutton action\" [innerHTML]=\"'&#139;'\"></span>\r\n </div>\r\n</div>\r\n<span *ngFor=\"let paginationItem of getPaginationItems()\" [ngClass]=\"{'selected' : isCurrentPagination(paginationItem) , 'paginate-boutton' : paginationItem != '...'}\"\r\n (click)=\"changePagination(paginationItem)\" [innerHTML]=\"paginationItem\"></span>\r\n<div class=\"action-panel\">\r\n <div [ngClass]=\"{ 'disabled' : onLastPage()}\">\r\n <span (click)=\"nextPage()\" class=\"paginate-boutton action\" [innerHTML]=\"'&#155;'\"></span>\r\n <span (click)=\"goLastPage()\" class=\"paginate-boutton action\" [innerHTML]=\"'&#155;&#155;'\"></span>\r\n </div>\r\n</div>" }] } ]; AsiPaginationComponent.propDecorators = { nbElements: [{ type: Input }], nbVisibleElements: [{ type: Input }], selectedPagination: [{ type: Input }], onPaginationChanged: [{ type: Output }] }; if (false) { /** @type {?} */ AsiPaginationComponent.TRI_POINT; /** @type {?} */ AsiPaginationComponent.prototype.nbElements; /** @type {?} */ AsiPaginationComponent.prototype.nbVisibleElements; /** @type {?} */ AsiPaginationComponent.prototype.selectedPagination; /** @type {?} */ AsiPaginationComponent.prototype.onPaginationChanged; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFzaS1uZ3Rvb2xzL2xpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FzaS1wYWdpbmF0aW9uL2FzaS1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBTzFDLE1BQU07OzBCQUlrQixDQUFDO2lDQUNNLENBQUM7a0NBQ0EsQ0FBQzttQ0FDQyxJQUFJLFlBQVksRUFBVTs7Ozs7SUFFMUQsV0FBVztRQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxDQUFDO0tBQ3RDOzs7O0lBRUQsVUFBVTtRQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztLQUNwRDs7Ozs7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQjtRQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixLQUFLLFVBQVUsQ0FBQztLQUMvQzs7Ozs7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFlO1FBQzlCLEVBQUUsQ0FBQyxDQUFDLFVBQVUsS0FBSyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUM7WUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUN4RDtLQUNGOzs7O0lBRUQsWUFBWTtRQUNWLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lB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VSxDQUFDLENBQUMsQ0FBQztTQUN4RDtLQUNGO0lBQUEsQ0FBQzs7Ozs7O0lBRUYsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEdBQVc7O1FBQ3ZDLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQztTQUNoQixDQUFDLENBQUM7S0FDSjs7bUNBckYwQixLQUFLOztZQVBqQyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFO2dCQUNqRCwwNUJBQTRDO2FBQzdDOzs7eUJBS0UsS0FBSztnQ0FDTCxLQUFLO2lDQUNMLEtBQUs7a0NBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIG5oIGZyb20gJy4uLy4uL25hdGl2ZS1oZWxwZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhc2ktcGFnaW5hdGlvbicsXHJcbiAgaG9zdDogeyAnY2xhc3MnOiAnYXNpLWNvbXBvbmVudCBhc2ktcGFnaW5hdGlvbicgfSxcclxuICB0ZW1wbGF0ZVVybDogJ2FzaS1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzaVBhZ2luYXRpb25Db21wb25lbnQge1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBUUklfUE9JTlQgPSAnLi4uJztcclxuXHJcbiAgQElucHV0KCkgbmJFbGVtZW50cyA9IDA7XHJcbiAgQElucHV0KCkgbmJWaXNpYmxlRWxlbWVudHMgPSAwO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUGFnaW5hdGlvbiA9IDE7XHJcbiAgQE91dHB1dCgpIG9uUGFnaW5hdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgb25GaXJzdFBhZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFBhZ2luYXRpb24gPT09IDE7XHJcbiAgfVxyXG5cclxuICBvbkxhc3RQYWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRQYWdpbmF0aW9uID09PSB0aGlzLm5iRWxlbWVudHM7XHJcbiAgfVxyXG5cclxuICBpc0N1cnJlbnRQYWdpbmF0aW9uKHBhZ2luYXRpb246IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRQYWdpbmF0aW9uID09PSBwYWdpbmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnaW5hdGlvbihwYWdpbmF0aW9uOiBhbnkpIHtcclxuICAgIGlmIChwYWdpbmF0aW9uICE9PSBBc2lQYWdpbmF0aW9uQ29tcG9uZW50LlRSSV9QT0lOVCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUGFnaW5hdGlvbiA9IHBhZ2luYXRpb247XHJcbiAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRQYWdpbmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXZpb3VzUGFnZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUGFnaW5hdGlvbiA+IDEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFBhZ2luYXRpb24tLTtcclxuICAgICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZFBhZ2luYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmV4dFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFBhZ2luYXRpb24gPCB0aGlzLm5iRWxlbWVudHMpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFBhZ2luYXRpb24rKztcclxuICAgICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZFBhZ2luYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29MYXN0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUGFnaW5hdGlvbiAhPT0gdGhpcy5uYkVsZW1lbnRzKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQYWdpbmF0aW9uID0gdGhpcy5uYkVsZW1lbnRzO1xyXG4gICAgICB0aGlzLm9uUGFnaW5hdGlvbkNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkUGFnaW5hdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb0ZpcnN0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUGFnaW5hdGlvbiAhPT0gMSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUGFnaW5hdGlvbiA9IDE7XHJcbiAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRQYWdpbmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhZ2luYXRpb25JdGVtcygpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5zZWxlY3RlZFBhZ2luYXRpb247XHJcbiAgICBsZXQgaGFsZlZpc2libGVFbGVtZW50ID0gTWF0aC5mbG9vcih0aGlzLm5iVmlzaWJsZUVsZW1lbnRzIC8gMik7XHJcblxyXG4gICAgaWYgKCF0aGlzLm5iRWxlbWVudHMpIHtcclxuICAgICAgdGhpcy5uYkVsZW1lbnRzID0gMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5uYkVsZW1lbnRzIDw9IHRoaXMubmJWaXNpYmxlRWxlbWVudHMpIHtcclxuICAgICAgLy8gU2hvdyBhbGxcclxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTnVtYmVyc1RhYigxLCB0aGlzLm5iRWxlbWVudHMpO1xyXG4gICAgfSBlbHNlIGlmIChjdXJyZW50UGFnZSA8IGhhbGZWaXNpYmxlRWxlbWVudCArIDIpIHtcclxuICAgICAgLy8gUGFnaW5hdGlvbiBzdGFydFxyXG4gICAgICByZXR1cm4gbmguY29uY2F0KHRoaXMuY3JlYXRlTnVtYmVyc1RhYigxLCB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzIC0gMSksIFtBc2lQYWdpbmF0aW9uQ29tcG9uZW50LlRSSV9QT0lOVCwgdGhpcy5uYkVsZW1lbnRzXSk7XHJcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRQYWdlID4gdGhpcy5uYkVsZW1lbnRzIC0gaGFsZlZpc2libGVFbGVtZW50KSB7XHJcbiAgICAgIC8vIFBhZ2luYXRpb24gZW5kXHJcbiAgICAgIHJldHVybiBuaC5jb25jYXQoWzEsIEFzaVBhZ2luYXRpb25Db21wb25lbnQuVFJJX1BPSU5UXSxcclxuICAgICAgICB0aGlzLmNyZWF0ZU51bWJlcnNUYWIodGhpcy5uYkVsZW1lbnRzIC0gdGhpcy5uYlZpc2libGVFbGVtZW50cyArIDIsIHRoaXMubmJFbGVtZW50cykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQmV0d2VlblxyXG4gICAgICByZXR1cm4gbmguY29uY2F0KFsxLCBBc2lQYWdpbmF0aW9uQ29tcG9uZW50LlRSSV9QT0lOVF0sXHJcbiAgICAgICAgdGhpcy5jcmVhdGVOdW1iZXJzVGFiKGN1cnJlbnRQYWdlIC0gaGFsZlZpc2libGVFbGVtZW50ICsgMSwgY3VycmVudFBhZ2UgKyBoYWxmVmlzaWJsZUVsZW1lbnQgLSAxKSxcclxuICAgICAgICBbQXNpUGFnaW5hdGlvbkNvbXBvbmVudC5UUklfUE9JTlQsIHRoaXMubmJFbGVtZW50c10pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNyZWF0ZU51bWJlcnNUYWIobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogQXJyYXk8bnVtYmVyPiB7XHJcbiAgICBsZXQgaW5kZXggPSBtaW4gLSAxO1xyXG4gICAgcmV0dXJuIG5oLnRpbWVzKG1heCAtIG1pbiArIDEsICgpID0+IHtcclxuICAgICAgcmV0dXJuICsraW5kZXg7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19