@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
JavaScript
/**
* @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]=\"'‹‹'\"></span>\r\n <span (click)=\"previousPage()\" class=\"paginate-boutton action\" [innerHTML]=\"'‹'\"></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]=\"'›'\"></span>\r\n <span (click)=\"goLastPage()\" class=\"paginate-boutton action\" [innerHTML]=\"'››'\"></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