choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
249 lines (248 loc) • 10.8 kB
TypeScript
import React, { CSSProperties, ReactNode } from 'react';
import PropTypes from 'prop-types';
import Trigger from '../../../lib/trigger/Trigger';
import { Action } from '../../../lib/trigger/enum';
import { TextField, TextFieldProps } from '../text-field/TextField';
import TaskRunner from '../_util/TaskRunner';
export interface TriggerFieldPopupContentProps {
setValue: (value: any) => void;
setPopup: (hidden: boolean) => void;
}
export interface TriggerFieldProps<P extends TriggerFieldPopupContentProps = TriggerFieldPopupContentProps> extends TextFieldProps {
/**
* 下拉框的自定义内容
*/
popupContent?: ReactNode | ((props: P) => ReactNode);
/**
* 下拉框的自定义样式名
*/
popupCls?: string;
/**
* 下拉框的内链样式
*/
popupStyle?: CSSProperties;
/**
* 下拉框对齐方式
*/
popupPlacement?: string;
/**
* 触发下拉框的方式组
* 可选值:click | focus | hover | contextMenu
*/
trigger?: Action[];
/**
* 下拉框显示延迟
* @defualt 150
*/
triggerShowDelay?: number;
/**
* 下拉框隐藏延迟
* @defualt 50
*/
triggerHiddenDelay?: number;
/**
* 下拉框变化钩子
*/
onPopupHiddenChange?: (hidden: boolean) => void;
/**
* 定义浮层的容器,默认为 body
* @param triggerNode
*/
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement | undefined | null;
/**
* 定义浮层对齐的目标,默认为组件最外层元素
*/
getPopupAlignTarget?: () => HTMLElement;
/**
* 当popup中有可获取焦点对象时,是否按tab键时获取焦点
*/
tabIntoPopupContent?: boolean;
viewMode?: 'popup' | 'modal' | 'drawer';
}
export default abstract class TriggerField<T extends TriggerFieldProps = TriggerFieldProps> extends TextField<T> {
static displayName: string;
static propTypes: {
id: PropTypes.Requireable<string>;
size: PropTypes.Requireable<import("../core/enum").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>;
_inTable: PropTypes.Requireable<boolean>;
type: PropTypes.Requireable<string>;
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>;
wait: PropTypes.Requireable<number>;
waitType: PropTypes.Requireable<import("../core/enum").WaitType>;
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>;
/**
* 触发下拉框的方式
* 可选值:click | focus | hover | contextMenu
*/
trigger: React.Requireable<any>;
/**
* 下拉框显示延迟
* @defualt 150
*/
triggerShowDelay: PropTypes.Requireable<number>;
/**
* 下拉框隐藏延迟
* @defualt 50
*/
triggerHiddenDelay: PropTypes.Requireable<number>;
/**
* 下拉框变化钩子
*/
onPopupHiddenChange: PropTypes.Requireable<(...args: any[]) => any>;
/**
* 定义浮层的容器,默认为 body
*/
getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
/**
* 定义浮层对齐的目标,默认为组件最外层元素
*/
getPopupAlignTarget: PropTypes.Requireable<(...args: any[]) => any>;
/**
* 当popup中有可获取焦点对象时,是否按tab键时获取焦点
*/
tabIntoPopupContent: PropTypes.Requireable<boolean>;
viewMode: PropTypes.Requireable<string>;
};
static defaultProps: {
suffixCls: string;
clearButton: boolean;
popupPlacement: string;
triggerShowDelay: number;
triggerHiddenDelay: number;
viewMode: string;
multiple: boolean;
border: boolean;
valueChangeAction: import("../text-field/enum").ValueChangeAction;
waitType: import("../core/enum").WaitType;
readOnly: boolean;
disabled: boolean;
noValidate: boolean;
trim: import("../data-set/enum").FieldTrim;
};
popupTask?: TaskRunner;
trigger: Trigger | null;
statePopup: boolean;
get popup(): boolean;
constructor(props: any, context: any);
saveTrigger(node: any): void;
isValidationMessageHidden(message?: ReactNode): boolean;
setPopup(statePopup: boolean): void;
abstract getTriggerIconFont(): string;
abstract handlePopupAnimateAppear(key: any): void;
abstract handlePopupAnimateEnd(key: any, exists: any): void;
abstract getPopupStyleFromAlign(target: any): CSSProperties | undefined;
abstract getPopupContent(): ReactNode;
getRootDomNode(): Element | Text | null;
getOmitPropsKeys(): string[];
getObservableProps(props: any, context: any): any;
getPopupProps(): TriggerFieldPopupContentProps;
getPopupClassName(defaultClassName: string | undefined): string | undefined;
getPopupWrapper(): HTMLDivElement | undefined;
renderPopupContent(): T["popupContent"];
getDefaultAction(): Action[];
getWrappedEditor(renderedValue?: ReactNode): JSX.Element;
getWrapperClassNames(...args: any[]): string;
getDefaultSuffix(): ReactNode;
handleTagAnimateEnd(): void;
handlePopupMouseDown(e: any): void;
handlePopupHiddenChange(hidden: boolean): void;
forcePositionChanged(): void;
forcePopupAlign(): void;
expand(): void;
collapse(): void;
}