jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
73 lines (72 loc) • 2.85 kB
TypeScript
import React from 'react';
import type { ActionObject, Option } from 'jamis-core';
import type { ISelectEvent, RenderMenuParams, SelectProps } from '../types';
export default class SelectControl extends React.Component<SelectProps, any> {
static defaultProps: Partial<SelectProps>;
input: any;
unHook: Function;
lazyloadRemote: import("lodash").DebouncedFunc<any>;
lastTerm: string;
/** 是否加载过一次 */
autoCompleteLoadOnce: boolean;
/** 默认的options */
defaultOptions: Option[];
/**
* 已经发出过`change`事件的value
*/
valueEmitedChangeEvent: any;
hasFocused: boolean;
constructor(props: SelectProps);
componentDidMount(): void;
componentWillUnmount(): void;
componentDidUpdate(prevProps: SelectProps): void;
inputRef(ref: any): void;
foucs(): void;
dispatchEvent: (eventName: ISelectEvent, eventData?: any) => Promise<import("jamis-core").RendererEvent<any, any>>;
dispatchEventChange: (value: Option | Array<Option> | string | void, prevValue: Option | Array<Option> | string | void, valueFmt: string | Option | Array<Option> | void) => Promise<import("jamis-core").RendererEvent<any, any>>;
changeValue: (value: Option | Array<Option> | string | void, restParam?: {
isOpen?: boolean;
}) => Promise<void>;
loadRemote(input: string, from?: string): Promise<void | (() => void)>;
/**
* 处理一次搜索多个值的情况
*/
handleSearchMultiValues: (input: string, combinedOptions: Option[]) => void;
mergeOptions(options: Array<object>): Option[];
renderMenu: (option: Option, params: RenderMenuParams) => JSX.Element;
reload(): void;
option2value(): void;
renderOtherMode(): JSX.Element;
doAction(action: ActionObject, data: object, throwErrors: boolean): any;
handleActionSetOptions: (data: {
/**
* 新的options
*/
options?: Option[];
/**
* 更新options的函数, 参数是旧的options, 要求返回新的options
*/
optionsProvider?: string | string[] | ((options: Option[]) => Option[]);
/**
* 是否跳过options的格式化
*/
skipNormalize?: boolean;
}, throwErrors: boolean) => void;
/**
* 处理popover隐藏时, 要考虑默认值重置的问题
*/
handleChangeIsOpen(isOpen: boolean): void;
handleAdd: (args: any) => Promise<void>;
handleDelete: (item: any) => Promise<void>;
handleEdit: (item: any) => Promise<void>;
handleFocus: (e: any) => Promise<void>;
handleClose: () => void;
render(): JSX.Element;
}
export declare class SelectControlRenderer extends SelectControl {
}
export declare class MultiSelectControlRenderer extends SelectControl {
static defaultProps: {
multiple: boolean;
};
}