@choerodon/master
Version:
A package of Master for Choerodon platform.
58 lines (57 loc) • 1.91 kB
TypeScript
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 };