@etsoo/materialui
Version:
TypeScript Material-UI Implementation
66 lines (65 loc) • 1.75 kB
TypeScript
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 {};