/// import * as React from 'react'; import { IterableLike } from '../../../WebRx'; import { PanelFragment, PanelItemContext, PanelItemProps, PanelRenderProps } from '../Panel'; export declare type ViewTemplate = (itemsPanel: PanelFragment, itemsPresenter: ItemsPresenter) => JSX.Element | null | false; export declare type ItemsPanelTemplate = (itemTemplates: PanelFragment[], itemsPresenter: ItemsPresenter, items: T[] | undefined) => PanelFragment; export interface ItemsPresenterTemplateProps { /** * template that wraps the entire control. * use this to compose the exterior of the the view. * render the items presenter where you want the items panel located. */ viewTemplate?: ViewTemplate; /** * template to render panel responsible for items layout. * this template can control how items are rendered next to one another * (i.e., wrapping, stack, grid, etc...) */ itemsPanelTemplate?: ItemsPanelTemplate; /** * template to render each item */ itemTemplate?: (item: T, index: number, context?: any) => PanelFragment; } export interface ItemsPresenterSourceProps { /** * data source of items to render * if omitted then component children is used in place */ itemsSource?: IterableLike; } export interface ItemsPresenterProps extends ItemsPresenterTemplateProps, ItemsPresenterSourceProps, PanelItemProps, PanelRenderProps { } export interface ItemsPresenterComponentProps extends React.HTMLProps, ItemsPresenterProps { fill?: boolean; } export declare class ItemsPresenter extends React.Component { static displayName: string; static defaultItemTemplate(item: {}, index: number, context?: any): JSX.Element; static defaultPanelTemplate(itemTemplates: PanelFragment[], itemsPresenter: ItemsPresenter): JSX.Element; static defaultViewTemplate(itemsPanel: PanelFragment, itemsPresenter: ItemsPresenter): JSX.Element; render(): false | JSX.Element | null; protected getItemsPanelTemplate(): ItemsPanelTemplate; protected renderItemTemplates(): { items: undefined; itemTemplates: React.ReactChild[]; } | { items: {}[]; itemTemplates: React.ReactNode[]; }; protected renderPanelTemplate(): PanelFragment; protected renderViewTemplate(): JSX.Element | null | false; }