UNPKG

17.1 kBSource Map (JSON)View Raw
1{"version":3,"file":"pager.component.js","sourceRoot":"","sources":["../../src/pagination/pager.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, OnInit, Renderer, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { PageChangedEvent } from './pagination.component';\nimport { PaginationConfig } from './pagination.config';\n\nexport const PAGER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PagerComponent),\n multi: true\n};\n\nconst PAGER_TEMPLATE = `\n <ul class=\"pager\">\n <li [class.disabled]=\"noPrevious()\" [class.previous]=\"align\" [ngClass]=\"{'pull-right': align}\" class=\"{{ pageBtnClass }}\">\n <a href (click)=\"selectPage(page - 1, $event)\">{{getText('previous')}}</a>\n </li>\n <li [class.disabled]=\"noNext()\" [class.next]=\"align\" [ngClass]=\"{'pull-right': align}\" class=\"{{ pageBtnClass }}\">\n <a href (click)=\"selectPage(page + 1, $event)\">{{getText('next')}}</a>\n </li>\n </ul>\n`;\n\n\nexport class PagerComponent implements ControlValueAccessor, OnInit {\n public config:any;\n /** if `true` aligns each link to the sides of pager */\n public align:boolean;\n /** limit number for page links in pager */\n public maxSize:number;\n /** if false first and last buttons will be hidden */\n public boundaryLinks:boolean;\n /** if false previous and next buttons will be hidden */\n public directionLinks:boolean;\n // labels\n /** first button text */\n public firstText:string;\n /** previous button text */\n public previousText:string;\n /** next button text */\n public nextText:string;\n /** last button text */\n public lastText:string;\n /** if true current page will in the middle of pages list */\n public rotate:boolean;\n // css\n /** add class to <li> */\n public pageBtnClass:string;\n\n /** if true pagination component will be disabled */\n public disabled:boolean;\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n public numPages:EventEmitter<number> = new EventEmitter<number>();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to object with current page index and number of items per page */\n public pageChanged:EventEmitter<PageChangedEvent> = new EventEmitter<PageChangedEvent>();\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n \n public get itemsPerPage():number {\n return this._itemsPerPage;\n }\n\n public set itemsPerPage(v:number) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n /** total number of items in all pages */\n \n public get totalItems():number {\n return this._totalItems;\n }\n\n public set totalItems(v: number) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n public get totalPages(): number {\n return this._totalPages;\n }\n\n public set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n public set page(value: number) {\n const _previous = this._page;\n this._page = (value > this.totalPages) ? this.totalPages : (value || 1);\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n public get page(): number {\n return this._page;\n }\n\n public onChange: any = Function.prototype;\n public onTouched: any = Function.prototype;\n\n public renderer: Renderer;\n public elementRef: ElementRef;\n\n public classMap: string;\n public pages: any[];\n\n protected _itemsPerPage: number;\n protected _totalItems: number;\n protected _totalPages: number;\n protected inited: boolean = false;\n protected _page: number = 1;\n\n public constructor(renderer: Renderer, elementRef: ElementRef, paginationConfig: PaginationConfig) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(Object.assign({}, paginationConfig.main, paginationConfig.pager));\n }\n }\n\n public configureOptions(config: any): void {\n this.config = Object.assign({}, config);\n }\n\n public ngOnInit(): void {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n // watch for maxSize\n this.maxSize = typeof this.maxSize !== 'undefined'\n ? this.maxSize\n : this.config.maxSize;\n this.rotate = typeof this.rotate !== 'undefined'\n ? this.rotate\n : this.config.rotate;\n this.boundaryLinks = typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks = typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass = typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n\n // base class\n this.itemsPerPage = typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n public writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n public getText(key: string): string {\n return (this as any)[key + 'Text'] || this.config[key + 'Text'];\n }\n\n public noPrevious(): boolean {\n return this.page === 1;\n }\n\n public noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n public registerOnChange(fn: (_: any) => {}): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n public selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled) {\n if (event && event.target) {\n let target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(num: number, text: string, active: boolean): {number: number, text: string, active: boolean} {\n return {text, number: num, active};\n }\n\n protected getPages(currentPage: number, totalPages: number): any[] {\n let pages: any[] = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n let isMaxSized = typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage = ((Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize) + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n let page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n let previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n let nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n let totalPages = this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n return Math.max(totalPages || 0, 1);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n selector: 'pager',\n template: PAGER_TEMPLATE,\n providers: [PAGER_CONTROL_VALUE_ACCESSOR]\n}, ] },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Renderer, },\n{type: ElementRef, },\n{type: PaginationConfig, },\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'align': [{ type: Input },],\n'maxSize': [{ type: Input },],\n'boundaryLinks': [{ type: Input },],\n'directionLinks': [{ type: Input },],\n'firstText': [{ type: Input },],\n'previousText': [{ type: Input },],\n'nextText': [{ type: Input },],\n'lastText': [{ type: Input },],\n'rotate': [{ type: Input },],\n'pageBtnClass': [{ type: Input },],\n'disabled': [{ type: Input },],\n'numPages': [{ type: Output },],\n'pageChanged': [{ type: Output },],\n'itemsPerPage': [{ type: Input },],\n'totalItems': [{ type: Input },],\n};\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
\No newline at end of file