choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
128 lines (127 loc) • 5.03 kB
TypeScript
import React, { Component, CSSProperties, Key, MouseEventHandler, ReactElement, ReactNode } from 'react';
import { ElementProps } from '../../pro/es/core/ViewComponent';
import TaskRunner from '../_util/TaskRunner';
import Popup from './Popup';
import EventManager from '../_util/EventManager';
import { Action, HideAction, ShowAction } from './enum';
import { Config, ConfigKeys, DefaultConfig } from '../configure';
export declare type RenderFunction = (props?: {
trigger?: ReactNode;
}) => React.ReactNode;
export declare type ChildrenFunction = (caller: (node: ReactNode) => ReactNode, childrenProps?: any) => ReactElement;
export interface TriggerProps extends ElementProps {
action?: Action[];
showAction?: ShowAction[];
hideAction?: HideAction[];
popupContent?: ReactNode | RenderFunction;
popupCls?: string;
popupStyle?: CSSProperties;
popupInnerStyle?: 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;
onPopupHiddenBeforeChange?: (hidden: boolean) => boolean;
onPopupHiddenChange?: (hidden: boolean) => void;
onPopupMouseEnter?: MouseEventHandler<any>;
onPopupMouseLeave?: MouseEventHandler<any>;
getRootDomNode?: () => Element | null | Text;
getPopupStyleFromAlign?: (target: Node | Window, align: object) => object | undefined;
getPopupClassNameFromAlign?: (align: object) => string | undefined;
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement | undefined | null;
focusDelay?: number;
blurDelay?: number;
mouseEnterDelay?: number;
mouseLeaveDelay?: number;
transitionName?: string;
defaultPopupHidden?: boolean;
forceRender?: boolean;
tabIntoPopupContent?: boolean;
popupClassName?: string;
children?: ReactNode | ChildrenFunction;
childrenProps?: any;
getContextConfig?<T extends ConfigKeys>(key: T): T extends keyof DefaultConfig ? DefaultConfig[T] : Config[T];
}
export default class Trigger extends Component<TriggerProps> {
static displayName: string;
static defaultProps: {
focusDelay: number;
blurDelay: number;
mouseEnterDelay: number;
mouseLeaveDelay: number;
transitionName: string;
defaultPopupHidden: boolean;
};
popup: Popup | null;
popupTask?: TaskRunner;
documentEvent?: EventManager;
focusTime: number;
preClickTime: number;
animateFrameId: number;
popupHidden?: boolean;
mounted?: boolean;
activeElement?: HTMLElement | null;
relatedTarget?: HTMLButtonElement | null;
activeElementEvent?: EventManager;
mouseDownEvent?: EventManager;
currentTriggerChild?: ReactElement | null;
focusElements?: HTMLElement[];
target?: HTMLElement | null;
focusTarget?: HTMLElement | null;
align?: object;
constructor(props: any, context: any);
saveRef(node: any): void;
setActiveElement(activeElement: HTMLElement | null): void;
getFocusableElements(elements: any): void;
renderTriggerChild(child: ReactNode): ReactNode;
render(): ({} | null | undefined)[];
componentWillReceiveProps(nextProps: any): void;
componentDidMount(): void;
componentDidUpdate(): void;
componentWillUnmount(): void;
cancelPopupTask(): void;
handlePopupKeyDown(e: any): void;
handleTargetBlur(e: any, child: ReactElement): boolean;
handleTriggerEvent(eventName: any, child: any, e: any): void;
handleEvent(eventName: string, child: ReactElement, e: any): void;
handlePopupMouseDown(e: any): void;
handlePopupBlur(e: any): void;
handleContextMenu(e: any): void;
handleKeyDown(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(e: any): void;
handlePopupMouseLeave(e: any): void;
getPopup(): ReactNode;
getRootDomNode(): Element | Text | null;
getPopupClassNameFromAlign(align: any): string;
forcePopupAlign(): void;
getPopupWrapper(): HTMLDivElement | undefined;
getPopupContent(): any;
popupHiddenBeforeChange(hidden: boolean): boolean;
setPopupHidden(hidden: boolean): void;
delaySetPopupHidden(popupHidden: any, delay: any): void;
isClickToShow(): boolean;
isContextMenuToShow(): boolean;
isClickToHide(): boolean;
isMouseEnterToShow(): boolean;
isMouseLeaveToHide(): boolean;
isFocusToShow(): boolean;
isBlurToHide(): boolean;
}