choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
240 lines (239 loc) • 7.22 kB
TypeScript
import { AriaAttributes, ClipboardEventHandler, Component, CompositionEventHandler, CSSProperties, FocusEventHandler, Key, KeyboardEventHandler, MouseEventHandler, ReactNode } from 'react';
import ConfigContext, { ConfigContextValue } from '../../../lib/config-provider/ConfigContext';
import { Config, ConfigKeys, DefaultConfig } from '../../../lib/configure';
import { Size } from './enum';
import { Lang } from '../locale-context/enum';
declare type Booleanish = boolean | 'true' | 'false';
export interface ElementProps {
/**
* 组件id
*/
id?: string;
/**
* 键盘Tab键焦点序号,设为-1时不会获得焦点,设为0时为节点树的顺序。
*/
tabIndex?: number;
/**
* 组件key
*/
key?: Key;
/**
* 样式后缀
*/
suffixCls?: string;
/**
* 样式前缀
*/
prefixCls?: string;
/**
* 外层自定义样式名
*/
className?: string | undefined;
/**
* 实际元素自定义样式名
*/
elementClassName?: string;
/**
* 内链样式
*/
style?: CSSProperties | undefined;
/**
* 是否隐藏
*/
hidden?: boolean;
/**
* 语言
*/
lang?: Lang;
/**
* 拼写校验
*/
spellCheck?: Booleanish;
/**
* 自动获取焦点,多个组件同时设置该参数时,以节点树的顺序最末的组件获取焦点
*/
autoFocus?: boolean;
/**
* 内容的文本方向
*/
dir?: string;
/**
* 快捷键, 通过 Alt + accessKey (或者 Shift + Alt + accessKey) 使组件聚焦
*/
accessKey?: string;
/**
* 内容可编辑
*/
contentEditable?: Booleanish | 'inherit';
/**
* 是否可拖动
*/
draggable?: Booleanish;
}
/** 响应鼠标事件组件 */
export interface MouseEventComponentProps {
/**
* 右键单击回调
*/
onAuxClick?: MouseEventHandler<any>;
onAuxClickCapture?: MouseEventHandler<any>;
/**
* 单击回调
*/
onClick?: MouseEventHandler<any>;
onClickCapture?: MouseEventHandler<any>;
/**
* 双击回调
*/
onDoubleClick?: MouseEventHandler<any>;
onDoubleClickCapture?: MouseEventHandler<any>;
/**
* 右键菜单回调
*/
onContextMenu?: MouseEventHandler<any>;
onContextMenuCapture?: MouseEventHandler<any>;
/**
* 鼠标抬起回调
*/
onMouseUp?: MouseEventHandler<any>;
onMouseUpCapture?: MouseEventHandler<any>;
/**
* 鼠标点下回调
*/
onMouseDown?: MouseEventHandler<any>;
onMouseDownCapture?: MouseEventHandler<any>;
/**
* 鼠标移动回调
*/
onMouseMove?: MouseEventHandler<any>;
onMouseMoveCapture?: MouseEventHandler<any>;
/**
* 鼠标进入回调
*/
onMouseEnter?: MouseEventHandler<any>;
onMouseEnterCapture?: MouseEventHandler<any>;
/**
* 鼠标离开回调
*/
onMouseLeave?: MouseEventHandler<any>;
onMouseLeaveCapture?: MouseEventHandler<any>;
/**
* 鼠标进入回调,与onMouseEnter区别在于鼠标进入子节点时会触发onMouseOut
*/
onMouseOver?: MouseEventHandler<any>;
onMouseOverCapture?: MouseEventHandler<any>;
/**
* 鼠标离开回调,与onMouseLeave区别在于子节点的onMouseout会冒泡触发本回调
*/
onMouseOut?: MouseEventHandler<any>;
onMouseOutCapture?: MouseEventHandler<any>;
}
/** 响应键盘事件组件 */
export interface KeyboardEventComponentProps {
/**
* 键盘按下时的回调
*/
onKeyDown?: KeyboardEventHandler<any>;
onKeyDownCapture?: KeyboardEventHandler<any>;
/**
* 键盘抬起时的回调
*/
onKeyUp?: KeyboardEventHandler<any>;
onKeyUpCapture?: KeyboardEventHandler<any>;
/**
* 键盘敲击后的回调
*/
onKeyPress?: KeyboardEventHandler<any>;
onKeyPressCapture?: KeyboardEventHandler<any>;
}
/** 焦点事件组件 */
export interface FocusEventComponentProps {
/**
* 获取焦点回调
*/
onFocus?: FocusEventHandler<any>;
onFocusCapture?: FocusEventHandler<any>;
/**
* 失去焦点回调
*/
onBlur?: FocusEventHandler<any>;
onBlurCapture?: FocusEventHandler<any>;
}
/** 粘贴板事件组件 */
export interface ClipboardEventComponentProps {
onCopy?: ClipboardEventHandler<any>;
onCopyCapture?: ClipboardEventHandler<any>;
onCut?: ClipboardEventHandler<any>;
onCutCapture?: ClipboardEventHandler<any>;
onPaste?: ClipboardEventHandler<any>;
onPasteCapture?: ClipboardEventHandler<any>;
}
/** Composition事件组件 */
export interface CompositionEventComponentProps {
onCompositionEnd?: CompositionEventHandler<any>;
onCompositionEndCapture?: CompositionEventHandler<any>;
onCompositionStart?: CompositionEventHandler<any>;
onCompositionStartCapture?: CompositionEventHandler<any>;
onCompositionUpdate?: CompositionEventHandler<any>;
onCompositionUpdateCapture?: CompositionEventHandler<any>;
}
export interface ViewComponentProps extends MouseEventComponentProps, KeyboardEventComponentProps, FocusEventComponentProps, ClipboardEventComponentProps, CompositionEventComponentProps, AriaAttributes, ElementProps {
/**
* 唯一标识编码
*/
code?: boolean;
/**
* 是否禁用
*/
disabled?: boolean;
/**
* 悬浮提示,建议用ToolTip组件
*/
title?: ReactNode;
/**
* 组件大小<未实现>
* 可选值 `default` `small` `large`
*/
size?: Size;
}
export default class ViewComponent<P extends ViewComponentProps, C extends ConfigContextValue = ConfigContextValue> extends Component<P, any> {
static get contextType(): typeof ConfigContext;
element: any;
height: number | string | undefined;
wrapper: any;
isFocus: boolean;
code: string;
isFocused: boolean;
observableProps: any;
prefixCls?: string;
context: C;
get lang(): Lang;
get disabled(): boolean;
constructor(props: any, context: any);
setCode(props: any): void;
getMergedClassNames(...props: any[]): string;
getMergedProps(props?: {}): any;
getObservableProps(props: any, _context: any): any;
setObservableProps(props: any, context: any): void;
updateObservableProps(props: any, context: any): void;
getOmitPropsKeys(): string[];
getOtherProps(): any;
getClassName(...props: any[]): string | undefined;
getWrapperProps(props?: any): any;
getWrapperClassNames(...args: any[]): string;
isDisabled(): boolean;
useFocusedClassName(): boolean;
handleFocus(e: any): void;
protected forceBlur(e: any): void;
handleBlur(e: any): void;
focus(): void;
blur(): void;
elementReference(node: any): void;
wrapperReference(node: any): void;
componentWillReceiveProps(nextProps: P, nextContext: any): void;
componentDidMount(): void;
setHeight(height: any): void;
getContextConfig<T extends ConfigKeys>(key: T): T extends keyof DefaultConfig ? DefaultConfig[T] : Config[T];
getContextProPrefixCls(suffixCls: string, customizePrefixCls?: string): string;
}
export {};