UNPKG

10.1 kBSource Map (JSON)View Raw
1{"version":3,"file":"primeng-virtualscroller.js","sources":["../../src/app/components/virtualscroller/virtualscroller.ts","../../src/app/components/virtualscroller/primeng-virtualscroller.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterContentInit,Input,Output,ViewChild,EventEmitter,ContentChild,ContentChildren,QueryList,TemplateRef,ChangeDetectionStrategy,OnChanges,SimpleChanges, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Header,Footer,PrimeTemplate,SharedModule} from 'primeng/api';\nimport {ScrollingModule,CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {BlockableUI} from 'primeng/api';\n\n@Component({\n selector: 'p-virtualScroller',\n template:`\n <div [ngClass]=\"'p-virtualscroller p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <div class=\"p-virtualscroller-header\" *ngIf=\"header || headerTemplate\">\n <ng-content select=\"p-header\"></ng-content>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </div>\n <div #content class=\"p-virtualscroller-content\">\n <div class=\"p-virtualscroller-list\">\n <cdk-virtual-scroll-viewport #viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\" (scrolledIndexChange)=\"onScrollIndexChange($event)\">\n <ng-container *cdkVirtualFor=\"let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;\">\n <div [ngStyle]=\"{'height': itemSize + 'px'}\" class=\"p-virtualscroller-item\">\n <ng-container *ngTemplateOutlet=\"item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}\"></ng-container>\n </div>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n <div class=\"p-virtualscroller-footer\" *ngIf=\"footer || footerTemplate\">\n <ng-content select=\"p-footer\"></ng-content>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None\n})\nexport class VirtualScroller implements AfterContentInit,BlockableUI,OnChanges {\n\n @Input() value: any[];\n\n @Input() itemSize: number; \n\n @Input() style: any;\n\n @Input() styleClass: string;\n \n @Input() scrollHeight: any;\n\n @Input() lazy: boolean;\n\n @Input() rows: number;\n\n @Input() minBufferPx: number;\n\n @Input() maxBufferPx: number;\n \n @Input() trackBy: Function = (index: number, item: any) => item;\n \n @ContentChild(Header) header: Header;\n\n @ContentChild(Footer) footer: Footer;\n \n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n @ViewChild(CdkVirtualScrollViewport) viewport: CdkVirtualScrollViewport;\n\n @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n itemTemplate: TemplateRef<any>;\n\n headerTemplate: TemplateRef<any>;\n\n footerTemplate: TemplateRef<any>;\n\n loadingItemTemplate: TemplateRef<any>;\n\n _totalRecords: number = 0;\n\n page: number = 0;\n\n _first: number = 0;\n\n loadedPages: number[] = [];\n\n _cache: boolean;\n\n constructor(public el: ElementRef) {}\n\n @Input() get totalRecords(): number {\n return this._totalRecords;\n }\n set totalRecords(val: number) {\n this._totalRecords = val;\n console.log(\"totalRecords is deprecated, provide a value with the length of virtual items instead.\");\n }\n\n @Input() get first(): number {\n return this._first;\n }\n set first(val:number) {\n this._first = val;\n console.log(\"first property is deprecated, use scrollToIndex function to scroll a specific item.\");\n }\n\n @Input() get cache(): boolean {\n return this._cache;\n }\n set cache(val: boolean) {\n this._cache = val;\n console.log(\"cache is deprecated as it is always on.\");\n }\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch(item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n\n case 'loadingItem':\n this.loadingItemTemplate = item.template;\n break;\n\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n \n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n\n onScrollIndexChange(index: number) {\n if (this.lazy) {\n let pageRange = this.createPageRange(Math.floor(index / this.rows));\n pageRange.forEach(page => this.loadPage(page));\n }\n }\n\n createPageRange(page: number) {\n let range: number[] = [];\n\n if (page !== 0) {\n range.push(page - 1);\n }\n range.push(page);\n if (page !== (Math.ceil(this.value.length / this.rows) - 1)) {\n range.push(page + 1);\n }\n\n return range;\n }\n\n loadPage(page: number) {\n if (!this.loadedPages.includes(page)) {\n this.onLazyLoad.emit({first: this.rows * page, rows: this.rows});\n this.loadedPages.push(page);\n }\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n //@deprecated\n scrollTo(index: number, mode?: ScrollBehavior): void {\n this.scrollToIndex(index, mode);\n }\n\n scrollToIndex(index: number, mode?: ScrollBehavior): void {\n if (this.viewport) {\n this.viewport.scrollToIndex(index, mode);\n }\n }\n\n clearCache() {\n this.loadedPages = [];\n }\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (simpleChange.value) {\n if (!this.lazy) {\n this.clearCache();\n }\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule,ScrollingModule],\n exports: [VirtualScroller,SharedModule,ScrollingModule],\n declarations: [VirtualScroller]\n})\nexport class VirtualScrollerModule { }\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
\No newline at end of file