UNPKG

@etsoo/materialui

Version:

TypeScript Material-UI Implementation

86 lines (85 loc) 2.22 kB
import React from "react"; import { DataTypes, IdDefaultType, LabelDefaultType, ListType } from "@etsoo/shared"; import { SelectProps, SelectVariants } from "@mui/material/Select"; export type SelectExMethods = { /** * Set open state * @param isOpen Open state */ setOpen: (isOpen: boolean) => void; }; /** * Extended select component props */ export type SelectExProps<T extends object, D extends DataTypes.Keys<T> = IdDefaultType<T>, L extends DataTypes.Keys<T, string> = LabelDefaultType<T>> = Omit<SelectProps, "labelId" | "input" | "native" | "variant"> & { /** * Auto add blank item */ autoAddBlankItem?: boolean; /** * The helper text content. */ helperText?: React.ReactNode; /** * Id field */ idField?: D; /** * Set 'data-reset' */ inputReset?: boolean; /** * Item icon renderer */ itemIconRenderer?: (id: T[D]) => React.ReactNode; /** * Item style */ itemStyle?: (option: T) => React.CSSProperties; /** * Label field */ labelField?: L | ((option: T) => string); /** * Load data callback */ loadData?: () => PromiseLike<T[] | null | undefined>; /** * Methods */ mRef?: React.Ref<SelectExMethods>; /** * Item change callback */ onItemChange?: (option: T | undefined, userAction: boolean) => void; /** * Item click handler */ onItemClick?: (event: React.MouseEvent, option: T) => void; /** * On load data handler */ onLoadData?: (options: T[]) => void; /** * Array of options. */ options?: ReadonlyArray<T>; /** * Supports refresh label or component */ refresh?: string | React.ReactNode; /** * Is search case? */ search?: boolean; /** * Variant */ variant?: SelectVariants; }; /** * Extended select component * @param props Props * @returns Component */ export declare function SelectEx<T extends object = ListType, D extends DataTypes.Keys<T> = IdDefaultType<T>, L extends DataTypes.Keys<T, string> = LabelDefaultType<T>>(props: SelectExProps<T, D, L>): import("react/jsx-runtime").JSX.Element;