import { TemplateRef } from '@angular/core'; /** * Options of the scroll direction. * @group Types */ export type ScrollerToType = 'to-start' | 'to-end' | undefined; /** * Options of the scroller orientation. * @group Types */ export type ScrollerOrientationType = 'vertical' | 'horizontal' | 'both'; /** * Loader icon options. * @group Types */ export interface ScrollerLoaderIconOptions { [klass: string]: any; } /** * Scroller content options. * @group Interface */ export interface ScrollerContentOptions { contentStyleClass?: string; items?: any[]; loading?: boolean; itemSize?: number; rows?: any[]; columns?: any[]; spacerStyle?: { [klass: string]: any; } | null | undefined; contentStyle?: { [klass: string]: any; } | null | undefined; vertical?: boolean; horizontal?: boolean; both?: boolean; getItemOptions?: (index: number) => ScrollerItemOptions; getLoaderOptions?: (index: number, options?: any) => ScrollerLoaderOptions; } /** * Scroller item options. * @group Interface */ export interface ScrollerItemOptions { /** * Index of the item. */ index?: number; /** * Item count. */ count?: number; /** * Index of the first element in viewport. */ first?: boolean; /** * Index of the last element in viewport. */ last?: boolean; /** * Defines if index is even number. */ even?: boolean; /** * Defines if index is odd number. */ odd?: boolean; } /** * Loader settings. * @extends {ScrollerItemOptions} * @group Interface */ export interface ScrollerLoaderOptions extends ScrollerItemOptions { [klass: string]: any; } /** * Custom lazy load event. * @see {@link Scroller.onLazyLoad} * @group Events */ export interface ScrollerLazyLoadEvent { /** * First element index in viewport. */ first: number; /** * Last element index in viewport. */ last: number; } /** * Custom scroll index change event. * @see {@link Scroller.onScrollIndexChange} * @extends {ScrollerLazyLoadEvent} * @group Events */ export interface ScrollerScrollIndexChangeEvent extends ScrollerLazyLoadEvent { } /** * Custom scroll event. * @see {@link Scroller.onScroll} * @group Events */ export interface ScrollerScrollEvent { /** * Browser event. */ originalEvent?: Event; } /** * Defines valid templates in Scroller. * @group Templates */ export interface ScrollerTemplates { /** * Custom content template. * @param {Object} context - Content data. */ content(context: { /** * Loaded items. */ $implicit: any[] | any | null | undefined; /** * */ options: ScrollerContentOptions; }): TemplateRef<{ $implicit: any[] | any | null | undefined; options: ScrollerContentOptions; }>; /** * Custom item template. * @param {Object} context - Item data. */ item(context: { /** * Item instance. */ $implicit: any; /** * Scroller item options. */ options: ScrollerItemOptions; }): TemplateRef<{ $implicit: any; options: ScrollerItemOptions; }>; /** * Custom loader template. * @param {Object} context - Options instance. */ loader(context: { /** * Options. */ options: ScrollerLoaderOptions; }): TemplateRef<{ options: ScrollerLoaderOptions; }>; /** * Custom loader icon template. * @param {Object} context - Icon options. */ loadericon(context: { /** * Options. */ options: ScrollerLoaderIconOptions; }): TemplateRef<{ options: ScrollerLoaderIconOptions; }>; }