UNPKG

@etsoo/materialui

Version:

TypeScript Material-UI Implementation

66 lines (65 loc) 1.75 kB
import { DataTypes, DelayedExecutorType, IdDefaultType } from "@etsoo/shared"; import React from "react"; import { ListItemButtonProps } from "@mui/material/ListItemButton"; import { ListProps } from "@mui/material/List"; type QueryData = { title?: string; }; /** * List chooser button props */ export interface ListChooserButtonProps<T extends object, D extends DataTypes.Keys<T>> { (id: T[D]): ListItemButtonProps; } /** * List chooser props */ export type ListChooserProps<T extends object, D extends DataTypes.Keys<T>, Q extends object> = ListProps & { /** * Condition field name */ conditionField?: string; /** * Condition renderer */ conditionRenderer?: (rq: Partial<Q>, delayed: DelayedExecutorType) => React.ReactNode; /** * List item renderer */ itemRenderer?: (data: T, props: ListChooserButtonProps<T, D>) => React.ReactNode; /** * Label field */ labelField?: DataTypes.Keys<T, string> | ((data: T) => string); /** * Id field */ idField?: D; /** * Load data callback */ loadData: (rq: Partial<Q>) => PromiseLike<T[] | null | undefined>; /** * Multiple selected */ multiple?: boolean; /** * Item onchange callback */ onItemChange: (items: T[], ids: T[D][]) => void; /** * Title */ title: string; /** * Double click enabled */ doubleClickEnabled?: boolean; }; /** * List chooser * @param props Props * @returns Component */ export declare function ListChooser<T extends object, D extends DataTypes.Keys<T> = IdDefaultType<T>, Q extends object = QueryData>(props: ListChooserProps<T, D, Q>): import("react/jsx-runtime").JSX.Element; export {};