choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
128 lines (127 loc) • 5.17 kB
TypeScript
import React, { Component, CSSProperties, Key, ReactNode } from 'react';
import PropTypes from 'prop-types';
import Popup from './Popup';
import TaskRunner from '../_util/TaskRunner';
import { ElementProps } from '../core/ViewComponent';
import EventManager from '../_util/EventManager';
import { Action, HideAction, ShowAction } from './enum';
export interface TriggerProps extends ElementProps {
action?: Action[];
showAction?: ShowAction[];
hideAction?: HideAction[];
popupContent?: ReactNode | ((props: any) => ReactNode);
popupCls?: string;
popupStyle?: CSSProperties;
popupHidden?: boolean;
popupPlacement?: string;
popupAlign?: object;
builtinPlacements?: any;
onPopupAlign?: (source: Node, align: object, target: Node | Window, translate: {
x: number;
y: number;
}) => void;
onPopupAnimateAppear?: (key: Key | null) => void;
onPopupAnimateEnter?: (key: Key | null) => void;
onPopupAnimateLeave?: (key: Key | null) => void;
onPopupAnimateEnd?: (key: Key | null, exists: boolean) => void;
onPopupHiddenChange?: (hidden: boolean) => void;
getRootDomNode?: () => Element | null | Text;
getPopupStyleFromAlign?: (target: Node | Window, align: object) => object | undefined;
getPopupClassNameFromAlign?: (align: object) => string | undefined;
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
focusDelay?: number;
blurDelay?: number;
mouseEnterDelay?: number;
mouseLeaveDelay?: number;
transitionName?: string;
defaultPopupHidden?: boolean;
popupClassName?: string;
onMouseDown?: (event: React.MouseEvent<any, MouseEvent>) => void;
}
export default class Trigger extends Component<TriggerProps> {
static displayName: string;
static propTypes: {
action: React.Requireable<any>;
showAction: React.Requireable<any>;
hideAction: React.Requireable<any>;
popupContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
popupCls: PropTypes.Requireable<string>;
popupStyle: PropTypes.Requireable<object>;
popupHidden: PropTypes.Requireable<boolean>;
popupPlacement: PropTypes.Requireable<string>;
popupAlign: PropTypes.Requireable<object>;
builtinPlacements: PropTypes.Requireable<any>;
onPopupAnimateAppear: PropTypes.Requireable<(...args: any[]) => any>;
onPopupAnimateEnter: PropTypes.Requireable<(...args: any[]) => any>;
onPopupAnimateLeave: PropTypes.Requireable<(...args: any[]) => any>;
onPopupAnimateEnd: PropTypes.Requireable<(...args: any[]) => any>;
onPopupAlign: PropTypes.Requireable<(...args: any[]) => any>;
onPopupHiddenChange: PropTypes.Requireable<(...args: any[]) => any>;
getPopupStyleFromAlign: PropTypes.Requireable<(...args: any[]) => any>;
getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
focusDelay: PropTypes.Requireable<number>;
blurDelay: PropTypes.Requireable<number>;
mouseEnterDelay: PropTypes.Requireable<number>;
mouseLeaveDelay: PropTypes.Requireable<number>;
transitionName: PropTypes.Requireable<string>;
defaultPopupHidden: PropTypes.Requireable<boolean>;
popupClassName: PropTypes.Requireable<string>;
onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
};
static defaultProps: {
focusDelay: number;
blurDelay: number;
mouseEnterDelay: number;
mouseLeaveDelay: number;
transitionName: string;
defaultPopupHidden: boolean;
};
isClickScrollbar: {
value: boolean;
};
popup: Popup | null;
popupTask: TaskRunner;
documentEvent: EventManager;
focusTime: number;
preClickTime: number;
animateFrameId: number;
popupHidden?: boolean;
mounted?: boolean;
constructor(props: any, context: any);
saveRef: (node: any) => any;
render(): ({} | null | undefined)[];
componentWillReceiveProps(nextProps: any): void;
componentDidMount(): void;
componentDidUpdate(): void;
componentWillUnmount(): void;
handleEvent(eventName: any, child: any, e: any): void;
handleContextMenu(e: any): void;
handleFocus(): void;
handleBlur(): void;
handleDocumentMouseDown(e: any): void;
handleDocumentScroll({ target }: {
target: any;
}): void;
handleMouseDown(): void;
handleClick(e: any): void;
handleMouseEnter(): void;
handleMouseLeave(): void;
handlePopupMouseEnter(): void;
handlePopupMouseLeave(): void;
getPopup(): ReactNode;
getPopupAlign(): any;
handlePopupMouseDown(e: any): void;
handlePopupMouseUp(): void;
getRootDomNode(): Element | Text | null;
getPopupClassNameFromAlign(align: any): string;
forcePopupAlign(): void;
setPopupHidden(hidden: any): void;
delaySetPopupHidden(popupHidden: any, delay: any): void;
isClickToShow(): boolean;
isContextMenuToShow(): boolean;
isClickToHide(): boolean;
isMouseEnterToShow(): boolean;
isMouseLeaveToHide(): boolean;
isFocusToShow(): boolean;
isBlurToHide(): boolean;
}