UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

305 lines (304 loc) 13.8 kB
import React, { ReactNode } from 'react'; import PropTypes from 'prop-types'; import { Size } from '../../../lib/_util/enum'; import { LovViewProps } from './LovView'; import { ModalProps } from '../modal/Modal'; import DataSet, { DataSetProps } from '../data-set/DataSet'; import Record from '../data-set/Record'; import { SearchMatcher, Select, SelectProps } from '../select/Select'; import { ColumnAlign, TableQueryBarType } from '../table/enum'; import { CheckedStrategy, FieldType } from '../data-set/enum'; import { LovFieldType, SearchAction, ViewMode } from './enum'; import { ButtonProps } from '../button/Button'; import { ButtonColor, FuncType } from '../button/enum'; import { TableProps, TableQueryBarHook } from '../table/Table'; import { FieldProps } from '../data-set/Field'; import { TextFieldProps } from '../text-field/TextField'; 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; showCheckedStrategy?: CheckedStrategy; onBeforeSelect?: (records: Record | Record[]) => boolean | undefined; } 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>; showCheckedStrategy: PropTypes.Requireable<string>; 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>; accessKey: PropTypes.Requireable<string | boolean>; dir: PropTypes.Requireable<string>; contentEditable: PropTypes.Requireable<string | boolean>; draggable: PropTypes.Requireable<string | 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>; tooltip: PropTypes.Requireable<string>; block: PropTypes.Requireable<boolean>; _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>; range: PropTypes.Requireable<boolean | (string | null | undefined)[]>; 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>; highlight: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>; highlightRenderer: PropTypes.Requireable<(...args: any[]) => any>; useColon: PropTypes.Requireable<boolean>; showValidation: 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>; addonBeforeStyle: PropTypes.Requireable<object>; addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>; addonAfterStyle: PropTypes.Requireable<object>; restrict: PropTypes.Requireable<string | object>; isFlat: PropTypes.Requireable<boolean>; valueChangeAction: PropTypes.Requireable<import("../text-field/enum").ValueChangeAction>; groupClassName: PropTypes.Requireable<string>; showLengthInfo: PropTypes.Requireable<boolean>; border: PropTypes.Requireable<boolean>; popupContent: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>; popupCls: PropTypes.Requireable<string>; popupStyle: PropTypes.Requireable<object>; popupPlacement: PropTypes.Requireable<string>; trigger: React.Requireable<any>; triggerShowDelay: PropTypes.Requireable<number>; triggerHiddenDelay: PropTypes.Requireable<number>; onPopupHiddenChange: PropTypes.Requireable<(...args: any[]) => any>; getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>; getPopupAlignTarget: PropTypes.Requireable<(...args: any[]) => any>; tabIntoPopupContent: PropTypes.Requireable<boolean>; viewMode: PropTypes.Requireable<string>; 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 | ((...args: any[]) => any)>; reverse: PropTypes.Requireable<boolean>; optionTooltip: PropTypes.Requireable<string>; }; static defaultProps: { clearButton: boolean; checkValueOnOptionsChange: boolean; dropdownMatchSelectWidth: boolean; searchAction: SearchAction; fetchSingle: boolean; viewMode: string; suffixCls: string; combo: boolean; onOption: ({ record }: { record: any; }) => { disabled: any; }; selectAllButton: boolean; trigger: import("../trigger/enum").Action[]; popupPlacement: string; triggerShowDelay: number; /** * 触发查询获取记录有重复时弹出选择窗口 * SearchAction blur 生效 * default: false */ triggerHiddenDelay: number; multiple: boolean; border: 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; fetched?: boolean; searching?: boolean; get searchMatcher(): SearchMatcher; get searchable(): boolean; get lovCode(): string | undefined; get popup(): boolean; /** * 点击查询仅存在一条数据时自动选中 */ get autoSelectSingle(): boolean | undefined; get options(): DataSet; getSearchFieldProps(): TextFieldProps; isSearchFieldInPopup(): boolean | undefined; isEditable(): boolean; getPopupLovView(): JSX.Element | undefined; getPopupContent(): ReactNode; beforeOpen(options: DataSet): Partial<LovViewProps> | undefined; afterOpen(options: DataSet, fetchSingle?: boolean): void; private openModal; setText(text?: string): void; /** * 处理 Lov input 查询参数 * @param text */ searchRemote(text?: string | string[] | undefined): void; handlePopupHiddenChange(hidden: boolean): void; handleLovViewClose(): void; /** * 关闭弹窗移除时间监听 后续废弃 */ handleLovViewAfterClose(): void; handleLovViewSelect(records: Record | Record[]): void; resetOptions(noCache?: boolean): boolean; handleKeyDown(e: any): void; handleBlur(e: any): void; getWrapperProps(): any; getPopupClassName(defaultClassName: string | undefined): string | undefined; syncValueOnBlur(value: any): void; getConfig(): LovConfig | undefined; getPlaceholders(): string[]; getModalProps(): Partial<ModalProps>; getTableProps(): Partial<TableProps>; selectSingle(): void; handleOpenModal(): void; getOmitPropsKeys(): string[]; getButtonProps(): ButtonProps; get loading(): boolean; getSuffix(): ReactNode; componentWillUnmount(): void; select(): void; handleButtonClick(e: any): void; renderWrapper(): ReactNode; }