@etsoo/materialui
Version:
TypeScript Material-UI Implementation
76 lines (75 loc) • 2.04 kB
TypeScript
import { ScrollerListProps } from "@etsoo/react";
import React from "react";
import { ListChildComponentProps } from "react-window";
import { MouseEventWithDataHandler } from "./MUGlobal";
/**
* Extended ScrollerList inner item renderer props
*/
export interface ScrollerListExInnerItemRendererProps<T> extends ListChildComponentProps<T> {
/**
* Item selected
*/
selected: boolean;
/**
* Item height
*/
itemHeight: number;
/**
* Item space
*/
space: number;
/**
* Default margins
*/
margins: object;
}
/**
* Extended ScrollerList ItemSize type
* 1. Callback function
* 2. Static sets
* 3. Dynamic left & right margin calculation
*/
export type ScrollerListExItemSize = ((index: number) => [number, number] | [number, number, object]) | [number, number] | [number, object, (number | string)?];
/**
* Extended ScrollerList Props
*/
export type ScrollerListExProps<T extends object> = Omit<ScrollerListProps<T>, "itemRenderer" | "itemSize"> & {
/**
* Alternating colors for odd/even rows
*/
alternatingColors?: [string?, string?];
/**
* Inner item renderer
*/
innerItemRenderer: (props: ScrollerListExInnerItemRendererProps<T>) => React.ReactNode;
/**
* Item renderer
*/
itemRenderer?: (props: ListChildComponentProps<T>) => React.ReactElement;
/**
* Item size, a function indicates its a variable size list
*/
itemSize: ScrollerListExItemSize;
/**
* Double click handler
*/
onDoubleClick?: MouseEventWithDataHandler<T>;
/**
* Click handler
*/
onClick?: MouseEventWithDataHandler<T>;
/**
* On items select change
*/
onSelectChange?: (selectedItems: T[]) => void;
/**
* Selected color
*/
selectedColor?: string;
};
/**
* Extended ScrollerList
* @param props Props
* @returns Component
*/
export declare function ScrollerListEx<T extends object>(props: ScrollerListExProps<T>): import("react/jsx-runtime").JSX.Element;