choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
47 lines (46 loc) • 1.6 kB
TypeScript
import { Component, ReactNode } from 'react';
import EventManager from '../_util/EventManager';
import TaskRunner from '../_util/TaskRunner';
export declare type AlignPoint = {
pageX?: number;
pageY?: number;
clientX?: number;
clientY?: number;
};
export declare type AlignTarget = (() => Element | Text | null) | AlignPoint;
export declare type ChildrenFunction = (innerRef: (node: any) => void) => ReactNode;
export interface AlignProps {
childrenProps?: object;
childrenRef?: (node: any) => void;
align: object;
target?: AlignTarget;
onAlign?: (source: Element | Text | null, align: object, target: HTMLElement | null, translate: {
x: number;
y: number;
}, point: AlignPoint | null) => void;
monitorBufferTime?: number;
monitorWindowResize?: boolean;
hidden?: boolean;
children?: ReactNode | ChildrenFunction;
}
export default class Align extends Component<AlignProps, any> {
static displayName: string;
static defaultProps: {
target: () => Window & typeof globalThis;
monitorBufferTime: number;
monitorWindowResize: boolean;
hidden: boolean;
};
resizeHandler: EventManager | null;
bufferMonitor: TaskRunner | null;
source?: HTMLElement;
sourceRect: ClientRect | DOMRect | null;
saveSourceRef: (node: any) => void;
componentDidMount(): void;
componentDidUpdate(prevProps: any): void;
componentWillUnmount(): void;
startMonitorWindowResize(): void;
stopMonitorWindowResize(): void;
forceAlign(): void;
render(): {} | null | undefined;
}