UNPKG

8.58 kBSource Map (JSON)View Raw
1{"version":3,"sources":["ng://primeng/virtualscroller/virtualscroller.ts"],"names":["VirtualScroller","el","this","cache","first","trackBy","index","item","onLazyLoad","EventEmitter","_totalRecords","lazyValue","page","Object","defineProperty","prototype","val","Array","from","length","emit","createLazyLoadMetadata","scrollTo","lazy","_value","arr","__spread","i","j","rows","ngAfterContentInit","_this","templates","forEach","getType","itemTemplate","template","loadingItemTemplate","onScrollIndexChange","p","Math","floor","getBlockableElement","nativeElement","children","viewPortViewChild","scrollTop","itemSize","ElementRef","__decorate","Input","ContentChild","Header","Footer","ContentChildren","PrimeTemplate","ViewChild","Output","Component","selector","changeDetection","ChangeDetectionStrategy","Default","VirtualScrollerModule","NgModule","imports","CommonModule","ScrollingModule","exports","SharedModule","declarations"],"mappings":"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","sourcesContent":["import {NgModule,Component,ElementRef,AfterContentInit,Input,Output,ViewChild,EventEmitter,ContentChild,ContentChildren,QueryList,TemplateRef,ChangeDetectionStrategy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Header,Footer,PrimeTemplate,SharedModule} from 'primeng/api';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {BlockableUI} from 'primeng/api';\n\n@Component({\n selector: 'p-virtualScroller',\n template:`\n <div [ngClass]=\"'ui-virtualscroller ui-widget'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <div class=\"ui-virtualscroller-header ui-widget-header ui-corner-top\" *ngIf=\"header\">\n <ng-content select=\"p-header\"></ng-content>\n </div>\n <div #content class=\"ui-virtualscroller-content ui-widget-content\">\n <ul class=\"ui-virtualscroller-list\">\n <cdk-virtual-scroll-viewport #viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" (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 <li [ngStyle]=\"{'height': itemSize + 'px'}\">\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 </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </ul>\n </div>\n <div class=\"ui-virtualscroller-footer ui-widget-header ui-corner-bottom\" *ngIf=\"footer\">\n <ng-content select=\"p-footer\"></ng-content>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class VirtualScroller implements AfterContentInit,BlockableUI {\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() cache: boolean = true;\n\n @Input() rows: number;\n\n @Input() first: number = 0;\n \n @Input() trackBy: Function = (index: number, item: any) => item;\n \n @ContentChild(Header) header;\n\n @ContentChild(Footer) footer;\n \n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n @ViewChild('viewport') viewPortViewChild: ElementRef;\n\n @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n itemTemplate: TemplateRef<any>;\n\n loadingItemTemplate: TemplateRef<any>;\n\n _totalRecords: number = 0;\n\n _value: any[];\n\n lazyValue: any[] = [];\n\n page: number = 0;\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 this.lazyValue = Array.from({length: this._totalRecords});\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n this.first = 0;\n this.scrollTo(0);\n }\n\n @Input() get value(): any[] {\n return this.lazy ? this.lazyValue : this._value;\n }\n set value(val: any[]) {\n if (this.lazy) {\n if (val) {\n let arr = this.cache ? [...this.lazyValue] : Array.from({length: this._totalRecords});\n for (let i = this.first, j = 0; i < (this.first + this.rows); i++, j++) {\n arr[i] = val[j];\n }\n this.lazyValue = arr;\n }\n }\n else {\n this._value = val;\n }\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 default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n\n onScrollIndexChange(index: number) {\n let p = Math.floor(index / this.rows);\n if (p !== this.page) {\n this.page = p;\n this.first = this.page * this.rows;\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n }\n\n createLazyLoadMetadata(): any {\n return {\n first: this.first,\n rows: this.rows\n };\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n scrollTo(index: number): void {\n if (this.viewPortViewChild && this.viewPortViewChild['elementRef'] && this.viewPortViewChild['elementRef'].nativeElement) {\n this.viewPortViewChild['elementRef'].nativeElement.scrollTop = index * this.itemSize;\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"]}
\No newline at end of file