| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712 |
- import { Injectable, forwardRef, EventEmitter, Component, ElementRef, ChangeDetectorRef, Input, Output, NgModule } from '@angular/core';
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
- import { CommonModule } from '@angular/common';
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * Provides default values for Pagination and pager components
- */
- class PaginationConfig {
- constructor() {
- this.main = {
- maxSize: void 0,
- itemsPerPage: 10,
- boundaryLinks: false,
- directionLinks: true,
- firstText: 'First',
- previousText: 'Previous',
- nextText: 'Next',
- lastText: 'Last',
- pageBtnClass: '',
- rotate: true
- };
- this.pager = {
- itemsPerPage: 15,
- previousText: '« Previous',
- nextText: 'Next »',
- pageBtnClass: '',
- align: true
- };
- }
- }
- PaginationConfig.decorators = [
- { type: Injectable }
- ];
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /** @type {?} */
- const PAGER_CONTROL_VALUE_ACCESSOR = {
- provide: NG_VALUE_ACCESSOR,
- /* tslint:disable-next-line: no-use-before-declare */
- useExisting: forwardRef((/**
- * @return {?}
- */
- () => PagerComponent)),
- multi: true
- };
- class PagerComponent {
- /**
- * @param {?} elementRef
- * @param {?} paginationConfig
- * @param {?} changeDetection
- */
- constructor(elementRef, paginationConfig, changeDetection) {
- this.elementRef = elementRef;
- this.changeDetection = changeDetection;
- /**
- * fired when total pages count changes, $event:number equals to total pages count
- */
- this.numPages = new EventEmitter();
- /**
- * fired when page was changed, $event:{page, itemsPerPage} equals to
- * object with current page index and number of items per page
- */
- this.pageChanged = new EventEmitter();
- this.onChange = Function.prototype;
- this.onTouched = Function.prototype;
- this.inited = false;
- this._page = 1;
- this.elementRef = elementRef;
- if (!this.config) {
- this.configureOptions(Object.assign({}, paginationConfig.main, paginationConfig.pager));
- }
- }
- /**
- * maximum number of items per page. If value less than 1 will display all items on one page
- * @return {?}
- */
- get itemsPerPage() {
- return this._itemsPerPage;
- }
- /**
- * @param {?} v
- * @return {?}
- */
- set itemsPerPage(v) {
- this._itemsPerPage = v;
- this.totalPages = this.calculateTotalPages();
- }
- /**
- * total number of items in all pages
- * @return {?}
- */
- get totalItems() {
- return this._totalItems;
- }
- /**
- * @param {?} v
- * @return {?}
- */
- set totalItems(v) {
- this._totalItems = v;
- this.totalPages = this.calculateTotalPages();
- }
- /**
- * @return {?}
- */
- get totalPages() {
- return this._totalPages;
- }
- /**
- * @param {?} v
- * @return {?}
- */
- set totalPages(v) {
- this._totalPages = v;
- this.numPages.emit(v);
- if (this.inited) {
- this.selectPage(this.page);
- }
- }
- /**
- * @param {?} value
- * @return {?}
- */
- set page(value) {
- /** @type {?} */
- const _previous = this._page;
- this._page = value > this.totalPages ? this.totalPages : value || 1;
- this.changeDetection.markForCheck();
- if (_previous === this._page || typeof _previous === 'undefined') {
- return;
- }
- this.pageChanged.emit({
- page: this._page,
- itemsPerPage: this.itemsPerPage
- });
- }
- /**
- * @return {?}
- */
- get page() {
- return this._page;
- }
- /**
- * @param {?} config
- * @return {?}
- */
- configureOptions(config) {
- this.config = Object.assign({}, config);
- }
- /**
- * @return {?}
- */
- ngOnInit() {
- if (typeof window !== 'undefined') {
- this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';
- }
- // watch for maxSize
- this.maxSize =
- typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;
- this.rotate =
- typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;
- this.boundaryLinks =
- typeof this.boundaryLinks !== 'undefined'
- ? this.boundaryLinks
- : this.config.boundaryLinks;
- this.directionLinks =
- typeof this.directionLinks !== 'undefined'
- ? this.directionLinks
- : this.config.directionLinks;
- this.pageBtnClass =
- typeof this.pageBtnClass !== 'undefined'
- ? this.pageBtnClass
- : this.config.pageBtnClass;
- // base class
- this.itemsPerPage =
- typeof this.itemsPerPage !== 'undefined'
- ? this.itemsPerPage
- : this.config.itemsPerPage;
- this.totalPages = this.calculateTotalPages();
- // this class
- this.pages = this.getPages(this.page, this.totalPages);
- this.inited = true;
- }
- /**
- * @param {?} value
- * @return {?}
- */
- writeValue(value) {
- this.page = value;
- this.pages = this.getPages(this.page, this.totalPages);
- }
- /**
- * @param {?} key
- * @return {?}
- */
- getText(key) {
- // tslint:disable-next-line:no-any
- return ((/** @type {?} */ (this)))[`${key}Text`] || ((/** @type {?} */ (this))).config[`${key}Text`];
- }
- /**
- * @return {?}
- */
- noPrevious() {
- return this.page === 1;
- }
- /**
- * @return {?}
- */
- noNext() {
- return this.page === this.totalPages;
- }
- /**
- * @param {?} fn
- * @return {?}
- */
- registerOnChange(fn) {
- this.onChange = fn;
- }
- /**
- * @param {?} fn
- * @return {?}
- */
- registerOnTouched(fn) {
- this.onTouched = fn;
- }
- /**
- * @param {?} page
- * @param {?=} event
- * @return {?}
- */
- selectPage(page, event) {
- if (event) {
- event.preventDefault();
- }
- if (!this.disabled) {
- if (event && event.target) {
- // tslint:disable-next-line:no-any
- /** @type {?} */
- const target = event.target;
- target.blur();
- }
- this.writeValue(page);
- this.onChange(this.page);
- }
- }
- // Create page object used in template
- /**
- * @protected
- * @param {?} num
- * @param {?} text
- * @param {?} active
- * @return {?}
- */
- makePage(num, text, active) {
- return { text, number: num, active };
- }
- /**
- * @protected
- * @param {?} currentPage
- * @param {?} totalPages
- * @return {?}
- */
- getPages(currentPage, totalPages) {
- /** @type {?} */
- const pages = [];
- // Default page limits
- /** @type {?} */
- let startPage = 1;
- /** @type {?} */
- let endPage = totalPages;
- /** @type {?} */
- const isMaxSized = typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;
- // recompute if maxSize
- if (isMaxSized) {
- if (this.rotate) {
- // Current page is displayed in the middle of the visible ones
- startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);
- endPage = startPage + this.maxSize - 1;
- // Adjust if limit is exceeded
- if (endPage > totalPages) {
- endPage = totalPages;
- startPage = endPage - this.maxSize + 1;
- }
- }
- else {
- // Visible pages are paginated with maxSize
- startPage =
- (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;
- // Adjust last page if limit is exceeded
- endPage = Math.min(startPage + this.maxSize - 1, totalPages);
- }
- }
- // Add page number links
- for (let num = startPage; num <= endPage; num++) {
- /** @type {?} */
- const page = this.makePage(num, num.toString(), num === currentPage);
- pages.push(page);
- }
- // Add links to move between page sets
- if (isMaxSized && !this.rotate) {
- if (startPage > 1) {
- /** @type {?} */
- const previousPageSet = this.makePage(startPage - 1, '...', false);
- pages.unshift(previousPageSet);
- }
- if (endPage < totalPages) {
- /** @type {?} */
- const nextPageSet = this.makePage(endPage + 1, '...', false);
- pages.push(nextPageSet);
- }
- }
- return pages;
- }
- // base class
- /**
- * @protected
- * @return {?}
- */
- calculateTotalPages() {
- /** @type {?} */
- const totalPages = this.itemsPerPage < 1
- ? 1
- : Math.ceil(this.totalItems / this.itemsPerPage);
- return Math.max(totalPages || 0, 1);
- }
- }
- PagerComponent.decorators = [
- { type: Component, args: [{
- selector: 'pager',
- template: "<ul class=\"pager\">\n <li [class.disabled]=\"noPrevious()\" [class.previous]=\"align\"\n [ngClass]=\"{'pull-right': align, 'float-right': align}\"\n class=\"{{ pageBtnClass }}\">\n <a href (click)=\"selectPage(page - 1, $event)\">{{ getText('previous') }}</a>\n </li>\n <li [class.disabled]=\"noNext()\" [class.next]=\"align\"\n [ngClass]=\"{'pull-right': align, 'float-right': align}\"\n class=\"{{ pageBtnClass }}\">\n <a href (click)=\"selectPage(page + 1, $event)\">{{ getText('next') }}</a>\n </li>\n</ul>\n",
- providers: [PAGER_CONTROL_VALUE_ACCESSOR]
- }] }
- ];
- /** @nocollapse */
- PagerComponent.ctorParameters = () => [
- { type: ElementRef },
- { type: PaginationConfig },
- { type: ChangeDetectorRef }
- ];
- PagerComponent.propDecorators = {
- align: [{ type: Input }],
- maxSize: [{ type: Input }],
- boundaryLinks: [{ type: Input }],
- directionLinks: [{ type: Input }],
- firstText: [{ type: Input }],
- previousText: [{ type: Input }],
- nextText: [{ type: Input }],
- lastText: [{ type: Input }],
- rotate: [{ type: Input }],
- pageBtnClass: [{ type: Input }],
- disabled: [{ type: Input }],
- numPages: [{ type: Output }],
- pageChanged: [{ type: Output }],
- itemsPerPage: [{ type: Input }],
- totalItems: [{ type: Input }]
- };
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /** @type {?} */
- const PAGINATION_CONTROL_VALUE_ACCESSOR = {
- provide: NG_VALUE_ACCESSOR,
- /* tslint:disable-next-line: no-use-before-declare */
- useExisting: forwardRef((/**
- * @return {?}
- */
- () => PaginationComponent)),
- multi: true
- };
- class PaginationComponent {
- /**
- * @param {?} elementRef
- * @param {?} paginationConfig
- * @param {?} changeDetection
- */
- constructor(elementRef, paginationConfig, changeDetection) {
- this.elementRef = elementRef;
- this.changeDetection = changeDetection;
- /**
- * fired when total pages count changes, $event:number equals to total pages count
- */
- this.numPages = new EventEmitter();
- /**
- * fired when page was changed, $event:{page, itemsPerPage} equals to object
- * with current page index and number of items per page
- */
- this.pageChanged = new EventEmitter();
- this.onChange = Function.prototype;
- this.onTouched = Function.prototype;
- this.inited = false;
- this._page = 1;
- this.elementRef = elementRef;
- if (!this.config) {
- this.configureOptions(paginationConfig.main);
- }
- }
- /**
- * maximum number of items per page. If value less than 1 will display all items on one page
- * @return {?}
- */
- get itemsPerPage() {
- return this._itemsPerPage;
- }
- /**
- * @param {?} v
- * @return {?}
- */
- set itemsPerPage(v) {
- this._itemsPerPage = v;
- this.totalPages = this.calculateTotalPages();
- }
- /**
- * total number of items in all pages
- * @return {?}
- */
- get totalItems() {
- return this._totalItems;
- }
- /**
- * @param {?} v
- * @return {?}
- */
- set totalItems(v) {
- this._totalItems = v;
- this.totalPages = this.calculateTotalPages();
- }
- /**
- * @return {?}
- */
- get totalPages() {
- return this._totalPages;
- }
- /**
- * @param {?} v
- * @return {?}
- */
- set totalPages(v) {
- this._totalPages = v;
- this.numPages.emit(v);
- if (this.inited) {
- this.selectPage(this.page);
- }
- }
- /**
- * @param {?} value
- * @return {?}
- */
- set page(value) {
- /** @type {?} */
- const _previous = this._page;
- this._page = value > this.totalPages ? this.totalPages : value || 1;
- this.changeDetection.markForCheck();
- if (_previous === this._page || typeof _previous === 'undefined') {
- return;
- }
- this.pageChanged.emit({
- page: this._page,
- itemsPerPage: this.itemsPerPage
- });
- }
- /**
- * @return {?}
- */
- get page() {
- return this._page;
- }
- /**
- * @param {?} config
- * @return {?}
- */
- configureOptions(config) {
- this.config = Object.assign({}, config);
- }
- /**
- * @return {?}
- */
- ngOnInit() {
- if (typeof window !== 'undefined') {
- this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';
- }
- // watch for maxSize
- this.maxSize =
- typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;
- this.rotate =
- typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;
- this.boundaryLinks =
- typeof this.boundaryLinks !== 'undefined'
- ? this.boundaryLinks
- : this.config.boundaryLinks;
- this.directionLinks =
- typeof this.directionLinks !== 'undefined'
- ? this.directionLinks
- : this.config.directionLinks;
- this.pageBtnClass =
- typeof this.pageBtnClass !== 'undefined'
- ? this.pageBtnClass
- : this.config.pageBtnClass;
- // base class
- this.itemsPerPage =
- typeof this.itemsPerPage !== 'undefined'
- ? this.itemsPerPage
- : this.config.itemsPerPage;
- this.totalPages = this.calculateTotalPages();
- // this class
- this.pages = this.getPages(this.page, this.totalPages);
- this.inited = true;
- }
- /**
- * @param {?} value
- * @return {?}
- */
- writeValue(value) {
- this.page = value;
- this.pages = this.getPages(this.page, this.totalPages);
- }
- /**
- * @param {?} key
- * @return {?}
- */
- getText(key) {
- // tslint:disable-next-line:no-any
- return ((/** @type {?} */ (this)))[`${key}Text`] || ((/** @type {?} */ (this))).config[`${key}Text`];
- }
- /**
- * @return {?}
- */
- noPrevious() {
- return this.page === 1;
- }
- /**
- * @return {?}
- */
- noNext() {
- return this.page === this.totalPages;
- }
- /**
- * @param {?} fn
- * @return {?}
- */
- registerOnChange(fn) {
- this.onChange = fn;
- }
- /**
- * @param {?} fn
- * @return {?}
- */
- registerOnTouched(fn) {
- this.onTouched = fn;
- }
- /**
- * @param {?} page
- * @param {?=} event
- * @return {?}
- */
- selectPage(page, event) {
- if (event) {
- event.preventDefault();
- }
- if (!this.disabled) {
- if (event && event.target) {
- // tslint:disable-next-line:no-any
- /** @type {?} */
- const target = event.target;
- target.blur();
- }
- this.writeValue(page);
- this.onChange(this.page);
- }
- }
- // Create page object used in template
- /**
- * @protected
- * @param {?} num
- * @param {?} text
- * @param {?} active
- * @return {?}
- */
- makePage(num, text, active) {
- return { text, number: num, active };
- }
- /**
- * @protected
- * @param {?} currentPage
- * @param {?} totalPages
- * @return {?}
- */
- getPages(currentPage, totalPages) {
- /** @type {?} */
- const pages = [];
- // Default page limits
- /** @type {?} */
- let startPage = 1;
- /** @type {?} */
- let endPage = totalPages;
- /** @type {?} */
- const isMaxSized = typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;
- // recompute if maxSize
- if (isMaxSized) {
- if (this.rotate) {
- // Current page is displayed in the middle of the visible ones
- startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);
- endPage = startPage + this.maxSize - 1;
- // Adjust if limit is exceeded
- if (endPage > totalPages) {
- endPage = totalPages;
- startPage = endPage - this.maxSize + 1;
- }
- }
- else {
- // Visible pages are paginated with maxSize
- startPage =
- (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;
- // Adjust last page if limit is exceeded
- endPage = Math.min(startPage + this.maxSize - 1, totalPages);
- }
- }
- // Add page number links
- for (let num = startPage; num <= endPage; num++) {
- /** @type {?} */
- const page = this.makePage(num, num.toString(), num === currentPage);
- pages.push(page);
- }
- // Add links to move between page sets
- if (isMaxSized && !this.rotate) {
- if (startPage > 1) {
- /** @type {?} */
- const previousPageSet = this.makePage(startPage - 1, '...', false);
- pages.unshift(previousPageSet);
- }
- if (endPage < totalPages) {
- /** @type {?} */
- const nextPageSet = this.makePage(endPage + 1, '...', false);
- pages.push(nextPageSet);
- }
- }
- return pages;
- }
- // base class
- /**
- * @protected
- * @return {?}
- */
- calculateTotalPages() {
- /** @type {?} */
- const totalPages = this.itemsPerPage < 1
- ? 1
- : Math.ceil(this.totalItems / this.itemsPerPage);
- return Math.max(totalPages || 0, 1);
- }
- }
- PaginationComponent.decorators = [
- { type: Component, args: [{
- selector: 'pagination',
- template: "<ul class=\"pagination\" [ngClass]=\"classMap\">\n <li class=\"pagination-first page-item\"\n *ngIf=\"boundaryLinks\"\n [class.disabled]=\"noPrevious()||disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(1, $event)\"\n [innerHTML]=\"getText('first')\"></a>\n </li>\n\n <li class=\"pagination-prev page-item\"\n *ngIf=\"directionLinks\"\n [class.disabled]=\"noPrevious()||disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(page - 1, $event)\"\n [innerHTML]=\"getText('previous')\"></a>\n </li>\n\n <li *ngFor=\"let pg of pages\"\n [class.active]=\"pg.active\"\n [class.disabled]=\"disabled&&!pg.active\"\n class=\"pagination-page page-item\">\n <a class=\"page-link\" href (click)=\"selectPage(pg.number, $event)\"\n [innerHTML]=\"pg.text\"></a>\n </li>\n\n <li class=\"pagination-next page-item\"\n *ngIf=\"directionLinks\"\n [class.disabled]=\"noNext()||disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(page + 1, $event)\"\n [innerHTML]=\"getText('next')\"></a></li>\n\n <li class=\"pagination-last page-item\"\n *ngIf=\"boundaryLinks\"\n [class.disabled]=\"noNext()||disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(totalPages, $event)\"\n [innerHTML]=\"getText('last')\"></a></li>\n</ul>\n",
- providers: [PAGINATION_CONTROL_VALUE_ACCESSOR]
- }] }
- ];
- /** @nocollapse */
- PaginationComponent.ctorParameters = () => [
- { type: ElementRef },
- { type: PaginationConfig },
- { type: ChangeDetectorRef }
- ];
- PaginationComponent.propDecorators = {
- align: [{ type: Input }],
- maxSize: [{ type: Input }],
- boundaryLinks: [{ type: Input }],
- directionLinks: [{ type: Input }],
- firstText: [{ type: Input }],
- previousText: [{ type: Input }],
- nextText: [{ type: Input }],
- lastText: [{ type: Input }],
- rotate: [{ type: Input }],
- pageBtnClass: [{ type: Input }],
- disabled: [{ type: Input }],
- numPages: [{ type: Output }],
- pageChanged: [{ type: Output }],
- itemsPerPage: [{ type: Input }],
- totalItems: [{ type: Input }]
- };
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- class PaginationModule {
- /**
- * @return {?}
- */
- static forRoot() {
- return { ngModule: PaginationModule, providers: [PaginationConfig] };
- }
- }
- PaginationModule.decorators = [
- { type: NgModule, args: [{
- imports: [CommonModule],
- declarations: [PagerComponent, PaginationComponent],
- exports: [PagerComponent, PaginationComponent]
- },] }
- ];
- export { PagerComponent, PaginationComponent, PaginationConfig, PaginationModule, PAGER_CONTROL_VALUE_ACCESSOR as ɵa, PAGINATION_CONTROL_VALUE_ACCESSOR as ɵb };
- //# sourceMappingURL=ngx-bootstrap-pagination.js.map
|