choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
273 lines (272 loc) • 11.9 kB
TypeScript
import React, { ReactNode } from 'react';
import PropTypes from 'prop-types';
import { Size } from '../../../es/_util/enum';
import { ModalProps } from '../modal/Modal';
import DataSet, { DataSetProps } from '../data-set/DataSet';
import { ParamMatcher, SearchMatcher, Select, SelectProps } from '../select/Select';
import { ColumnAlign, TableQueryBarType } from '../table/enum';
import { FieldType } from '../data-set/enum';
import { LovFieldType, ViewMode, SearchAction } from './enum';
import { ButtonProps } from '../button/Button';
import { ButtonColor, FuncType } from '../button/enum';
import { TableQueryBarHook, TableProps } from '../table/Table';
import { FieldProps } from '../data-set/Field';
export declare type Events = {
[key: string]: Function;
};
export declare type LovConfigItem = {
display?: string;
conditionField?: string;
conditionFieldLovCode?: string;
conditionFieldType?: FieldType | LovFieldType;
conditionFieldName?: string;
conditionFieldSelectCode?: string;
conditionFieldSelectUrl?: string;
conditionFieldSelectTf?: string;
conditionFieldSelectVf?: string;
conditionFieldSequence: number;
conditionFieldRequired?: boolean;
gridField?: string;
gridFieldName?: string;
gridFieldWidth?: number;
gridFieldAlign?: ColumnAlign;
gridFieldSequence: number;
fieldProps?: Partial<FieldProps>;
};
export declare type LovConfig = {
title?: string;
width?: number;
height?: number;
customUrl?: string;
lovPageSize?: string;
lovItems: LovConfigItem[] | null;
treeFlag?: 'Y' | 'N';
parentIdField?: string;
idField?: string;
textField?: string;
valueField?: string;
placeholder?: string;
editableFlag?: 'Y' | 'N';
queryColumns?: number;
queryBar?: TableQueryBarType | TableQueryBarHook;
dataSetProps?: Partial<DataSetProps>;
tableProps?: Partial<TableProps>;
};
export interface LovProps extends SelectProps, ButtonProps {
modalProps?: ModalProps;
tableProps?: Partial<TableProps>;
noCache?: boolean;
mode?: ViewMode;
lovEvents?: Events;
/**
* 触发查询变更的动作, default: input
*/
searchAction?: SearchAction;
/**
* 触发查询获取记录有重复时弹出选择窗口
* SearchAction blur 生效
* default: false
*/
fetchSingle?: boolean;
/**
* 点击查询仅存在一条数据时自动选中
*/
autoSelectSingle?: boolean;
}
export default class Lov extends Select<LovProps> {
static displayName: string;
static propTypes: {
modalProps: PropTypes.Requireable<object>;
tableProps: PropTypes.Requireable<object>;
noCache: PropTypes.Requireable<boolean>;
fetchSingle: PropTypes.Requireable<boolean>;
autoSelectSingle: PropTypes.Requireable<boolean>;
/**
* 触发查询变更的动作, default: input
*/
searchAction: PropTypes.Requireable<SearchAction>;
id: PropTypes.Requireable<string>;
size: PropTypes.Requireable<Size>;
suffixCls: PropTypes.Requireable<string>;
prefixCls: PropTypes.Requireable<string>;
title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
disabled: PropTypes.Requireable<boolean>;
hidden: PropTypes.Requireable<boolean>;
autoFocus: PropTypes.Requireable<boolean>;
style: PropTypes.Requireable<object>;
className: PropTypes.Requireable<string>;
tabIndex: PropTypes.Requireable<number>;
lang: PropTypes.Requireable<string>;
spellCheck: PropTypes.Requireable<boolean>;
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
onClick: PropTypes.Requireable<(...args: any[]) => any>;
onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
dataSet: PropTypes.Requireable<object>;
funcType: PropTypes.Requireable<FuncType>;
color: PropTypes.Requireable<ButtonColor>;
type: PropTypes.Requireable<import("../button/enum").ButtonType>;
loading: PropTypes.Requireable<boolean>;
href: PropTypes.Requireable<string>;
target: PropTypes.Requireable<string>;
wait: PropTypes.Requireable<number>;
waitType: PropTypes.Requireable<import("../core/enum").WaitType>;
_inTable: PropTypes.Requireable<boolean>;
name: PropTypes.Requireable<string>;
value: PropTypes.Requireable<any>;
defaultValue: PropTypes.Requireable<any>;
required: PropTypes.Requireable<boolean>;
readOnly: PropTypes.Requireable<boolean>;
form: PropTypes.Requireable<string>;
dataIndex: PropTypes.Requireable<number>;
multiple: PropTypes.Requireable<boolean>;
rowSpan: PropTypes.Requireable<number>;
newLine: PropTypes.Requireable<boolean>;
colSpan: PropTypes.Requireable<number>;
validator: PropTypes.Requireable<(...args: any[]) => any>;
onInvalid: PropTypes.Requireable<(...args: any[]) => any>;
help: PropTypes.Requireable<string>;
showHelp: PropTypes.Requireable<import("../field/enum").ShowHelp>;
renderer: PropTypes.Requireable<(...args: any[]) => any>;
validationRenderer: PropTypes.Requireable<(...args: any[]) => any>;
maxTagPlaceholder: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
maxTagCount: PropTypes.Requireable<number>;
maxTagTextLength: PropTypes.Requireable<number>;
pristine: PropTypes.Requireable<boolean>;
trim: PropTypes.Requireable<import("../data-set/enum").FieldTrim>;
onBeforeChange: PropTypes.Requireable<(...args: any[]) => any>;
onChange: PropTypes.Requireable<(...args: any[]) => any>;
onInput: PropTypes.Requireable<(...args: any[]) => any>;
onEnterDown: PropTypes.Requireable<(...args: any[]) => any>;
fieldClassName: PropTypes.Requireable<string>;
placeholder: PropTypes.Requireable<string | (string | null | undefined)[]>;
minLength: PropTypes.Requireable<number>;
maxLength: PropTypes.Requireable<number>;
pattern: PropTypes.Requireable<string | object>;
autoComplete: PropTypes.Requireable<string>;
prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
clearButton: PropTypes.Requireable<boolean>;
addonBefore: PropTypes.Requireable<PropTypes.ReactNodeLike>;
addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
restrict: PropTypes.Requireable<string>;
isFlat: PropTypes.Requireable<boolean>;
valueChangeAction: PropTypes.Requireable<import("../text-field/enum").ValueChangeAction>;
groupClassName: PropTypes.Requireable<string>;
popupContent: PropTypes.Requireable<PropTypes.ReactElementLike>;
popupCls: PropTypes.Requireable<string>;
popupStyle: PropTypes.Requireable<object>;
trigger: React.Requireable<any>;
triggerShowDelay: PropTypes.Requireable<number>;
triggerHiddenDelay: PropTypes.Requireable<number>;
onPopupHiddenChange: PropTypes.Requireable<(...args: any[]) => any>;
getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
combo: PropTypes.Requireable<boolean>;
commonItem: PropTypes.Requireable<any[]>;
maxCommonTagPlaceholder: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
maxCommonTagCount: PropTypes.Requireable<number>;
maxCommonTagTextLength: PropTypes.Requireable<number>;
searchable: PropTypes.Requireable<boolean>;
searchMatcher: PropTypes.Requireable<string | ((...args: any[]) => any)>;
paramMatcher: PropTypes.Requireable<string | ((...args: any[]) => any)>;
primitiveValue: PropTypes.Requireable<boolean>;
optionRenderer: PropTypes.Requireable<(...args: any[]) => any>;
notFoundContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
pagingOptionContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
onOption: PropTypes.Requireable<(...args: any[]) => any>;
dropdownMatchSelectWidth: PropTypes.Requireable<boolean>;
selectAllButton: PropTypes.Requireable<boolean>;
reverse: PropTypes.Requireable<boolean>;
};
static defaultProps: {
clearButton: boolean;
checkValueOnOptionsChange: boolean;
searchAction: SearchAction;
fetchSingle: boolean;
suffixCls: string;
combo: boolean;
onOption: ({ record }: {
record: any;
}) => {
disabled: any;
};
selectAllButton: boolean;
trigger: string[];
triggerShowDelay: number;
triggerHiddenDelay: number;
multiple: boolean;
valueChangeAction: import("../text-field/enum").ValueChangeAction;
waitType: import("../core/enum").WaitType;
readOnly: boolean;
disabled: boolean;
noValidate: boolean;
showHelp: string;
trim: import("../data-set/enum").FieldTrim;
};
modal: any;
filterText?: string;
get searchMatcher(): SearchMatcher;
get paramMatcher(): ParamMatcher;
get searchable(): boolean;
get lovCode(): string | undefined;
get popup(): boolean;
/**
* 点击查询仅存在一条数据时自动选中
*/
get autoSelectSingle(): boolean | undefined;
/**
* 增加lov popupContent 回调参数 用于控制对应交互
*/
getPopupProps(): {
dataSet: DataSet;
textField: string;
valueField: string;
field: import("../data-set/Field").default | undefined;
setValue: (value: any) => void;
setPopup: (hidden: any) => void;
};
getPopupContent(): ReactNode;
get options(): DataSet;
private openModal;
/**
* 处理 Lov input 查询参数
* @param text
*/
searchRemote(text: any): void;
handleLovViewSelect: () => void;
handleLovViewClose: () => Promise<void>;
/**
* 关闭弹窗移除时间监听 后续废弃
*/
handleLovViewAfterClose: () => void;
handleLovViewOk: () => Promise<void>;
resetOptions(noCache?: boolean): boolean;
handleKeyDown(e: any): void;
handleBlur(e: any): void;
getWrapperProps(): any;
syncValueOnBlur(value: any): void;
getConfig(): LovConfig | undefined;
getPlaceholders(): string[];
getModalProps(): any;
getTableProps(): any;
selectSingle(): void;
handleOpenModal(): (() => void) | undefined;
getOtherProps(): Pick<Pick<Pick<Pick<Pick<Pick<any, string | number | symbol>, string | number | symbol>, string | number | symbol>, string | number | symbol>, string | number | symbol>, string | number | symbol>;
getButtonProps(): ButtonProps;
get loading(): boolean;
getSuffix(): ReactNode;
componentWillUnmount(): void;
select(): void;
renderWrapper(): ReactNode;
}