UNPKG

@rx-angular/template

Version:

**Fully** Reactive Component Template Rendering in Angular. @rx-angular/template aims to be a reflection of Angular's built in renderings just reactive.

150 lines (149 loc) 5.34 kB
import { NgIterable, OnChanges, OnDestroy, SimpleChanges } from '@angular/core'; import { Observable } from 'rxjs'; import { ListRange, RxVirtualScrollStrategy, RxVirtualScrollViewport, RxVirtualViewRepeater } from '../model'; import * as i0 from "@angular/core"; /** * @Directive DynamicSizeVirtualScrollStrategy * * @description * * The `DynamicSizeVirtualScrollStrategy` is very similar to the `AutosizeVirtualScrollStrategy`. * It positions items based on a function determining its size. * * @docsCategory RxVirtualFor * @docsPage RxVirtualFor * @publicApi */ export declare class DynamicSizeVirtualScrollStrategy<T, U extends NgIterable<T> = NgIterable<T>> extends RxVirtualScrollStrategy<T, U> implements OnChanges, OnDestroy { private readonly defaults?; /** * @description * The amount of items to render upfront in scroll direction */ runwayItems: number; /** * @description * The amount of items to render upfront in reverse scroll direction */ runwayItemsOpposite: number; /** * @description * When enabled, the scroll strategy stops removing views from the viewport, * instead it only adds views. This setting can be changed on the fly. Views will be added in both directions * according to the user interactions. */ appendOnly: boolean; /** * @description * If this flag is true, the virtual scroll strategy maintains the scrolled item when new data * is prepended to the list. This is very useful when implementing a reversed infinite scroller, that prepends * data instead of appending it */ keepScrolledIndexOnPrepend: boolean; /** * @description * Function returning the size of an item */ set itemSize(fn: (item: T) => number); get itemSize(): (item: T) => number; private _itemSizeFn; /** @internal */ private waitForScroll; /** @internal */ private isStable$; /** @internal */ get isStable(): Observable<boolean>; /** @internal */ private viewport; /** @internal */ private viewRepeater; /** @internal */ private readonly _contentSize$; /** @internal */ readonly contentSize$: Observable<number>; /** @internal */ private _contentSize; /** @internal */ private set contentSize(value); private get contentSize(); /** @internal */ private readonly _renderedRange$; /** @internal */ readonly renderedRange$: Observable<ListRange>; /** @internal */ private _renderedRange; /** @internal */ private set renderedRange(value); /** @internal */ private get renderedRange(); /** @internal */ private readonly _scrolledIndex$; /** @internal */ readonly scrolledIndex$: Observable<number>; private _scrolledIndex; /** @internal */ private set scrolledIndex(value); private get scrolledIndex(); /** @internal */ private get contentLength(); /** @internal */ private containerSize; /** @internal */ private _virtualItems; /** @internal */ private scrollTop; /** @internal */ private scrollTopWithOutOffset; /** @internal */ private scrollTopAfterOffset; /** @internal */ private viewportOffset; /** @internal */ private direction; /** @internal */ private anchorScrollTop; /** @internal */ private anchorItem; /** @internal */ private lastScreenItem; /** @internal */ private readonly detached$; /** @internal */ private readonly recalculateRange$; /** @internal */ private until$; /** @internal */ ngOnChanges(changes: SimpleChanges): void; /** @internal */ ngOnDestroy(): void; /** @internal */ attach(viewport: RxVirtualScrollViewport, viewRepeater: RxVirtualViewRepeater<T, U>): void; /** @internal */ detach(): void; scrollToIndex(index: number, behavior?: ScrollBehavior): void; private scrollTo; /** @internal */ private maintainVirtualItems; /** @internal */ private calcRenderedRange; /** @internal */ private positionElements; /** * @internal * heavily inspired by * https://github.com/GoogleChromeLabs/ui-element-samples/blob/gh-pages/infinite-scroller/scripts/infinite-scroll.js */ private calculateAnchoredItem; /** @internal */ private calcInitialPosition; /** @internal */ private calcAnchorScrollTop; /** @internal */ private getItemSize; /** @internal */ private positionElement; static ɵfac: i0.ɵɵFactoryDeclaration<DynamicSizeVirtualScrollStrategy<any, any>, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<DynamicSizeVirtualScrollStrategy<any, any>, "rx-virtual-scroll-viewport[dynamic]", never, { "runwayItems": { "alias": "runwayItems"; "required": false; }; "runwayItemsOpposite": { "alias": "runwayItemsOpposite"; "required": false; }; "appendOnly": { "alias": "appendOnly"; "required": false; }; "keepScrolledIndexOnPrepend": { "alias": "keepScrolledIndexOnPrepend"; "required": false; }; "itemSize": { "alias": "dynamic"; "required": false; }; }, {}, never, never, true, never>; static ngAcceptInputType_appendOnly: null | boolean | string | undefined; static ngAcceptInputType_keepScrolledIndexOnPrepend: null | boolean | string | undefined; }