UNPKG

@choerodon/master

Version:
58 lines (57 loc) 1.91 kB
import React from 'react'; import { DataSet } from 'choerodon-ui/pro'; import { Renderer } from 'choerodon-ui/pro/lib/field/FormField'; import Record from 'choerodon-ui/pro/lib/data-set/Record'; import FragmentForSearch from './FragmentForSearch'; import './index.less'; declare type MiddleWare<T> = (data: T[]) => T[]; export interface LoadConfig { filter?: string; page?: number; } export interface SelectConfig<T = {}> { name: string; textField: string; valueField: string; optionRenderer?: (item: T, tooltip?: boolean) => JSX.Element; onOption?: ({ record }: { record: Record; }) => { [key: string]: any; }; renderer?: (item: T) => JSX.Element; request: ({ filter, page }: LoadConfig) => Promise<T[] | { list: T[]; hasNextPage: boolean; }>; middleWare?: MiddleWare<T>; afterLoad?: (data: T[]) => void; paging?: boolean; props?: object; tooltip?: boolean; combo?: boolean; } export interface RefHandle { refresh: (config?: LoadConfig) => void; } export declare type UseSelectRef = React.MutableRefObject<RefHandle>; export default function useSelect<T extends { [key: string]: any; }>(config: SelectConfig<T>, ref?: React.MutableRefObject<RefHandle>): { searchable: boolean; onInput: (e: React.ChangeEvent<HTMLInputElement>) => void; onClear: () => void; onPopupHiddenChange: (hidden: boolean) => void; searchMatcher: (props: import("choerodon-ui/pro/lib/select/Select").SearchMatcherProps) => boolean; valueField: string; textField: string; options: DataSet; optionRenderer: Renderer<import("choerodon-ui/pro/lib/field/FormField").RenderProps>; renderer: ({ value, text: originText, maxTagTextLength, ...ote }: any) => any; onOption: ({ record }: { record: any; }) => { [key: string]: any; }; }; export { FragmentForSearch };