import { ComponentTypes } from "mithril"; import { ListController } from "../list/listController"; interface IKeyAttrs extends Record { readonly key?: string | number; } export interface IList { /** List data source */ readonly controller: ListController; /** Component for list item */ readonly component: ComponentTypes; /** Classes for scrollable list container */ readonly classes?: string; /** Set mithril attributes for fragment wrapping each list item */ fragment?(item: T): IKeyAttrs; } export interface IListPageRender { readonly idx: number; readonly items: ReadonlyArray; readonly visible: boolean; } export interface IListPage extends IListPageRender { readonly component: ComponentTypes; fragment(item: T): IKeyAttrs; }