react-tether
Version:
A positioning engine to make overlays, tooltips and dropdowns better
52 lines (51 loc) • 1.99 kB
TypeScript
import React, { Component } from "react";
import type { RefObject } from "react";
import Tether from "tether";
type TetherEvent = "repositioned" | "update";
type TetherEventHandler = (event?: {
top: string;
left: "string";
}) => void;
interface ReactTetherProps extends Tether.ITetherOptions {
renderElementTag?: string;
renderElementTo?: string | HTMLElement;
renderTarget: (ref: React.RefObject<any>) => void;
renderElement?: (ref: React.RefObject<any>) => void;
id?: string;
className?: string;
style?: Partial<CSSStyleDeclaration>;
onUpdate?: TetherEventHandler;
onRepositioned?: TetherEventHandler;
}
export default class ReactTether extends Component<ReactTetherProps> {
_targetNode: RefObject<HTMLElement>;
_elementNode: RefObject<HTMLElement>;
_elementParentNode: HTMLElement | null;
_tetherInstance: Tether | null;
componentDidMount(): void;
componentDidUpdate(previousProps: ReactTetherProps): void;
componentWillUnmount(): void;
getTetherInstance(): Tether | null;
disable(): void;
enable(): void;
on(event: TetherEvent, handler: TetherEventHandler, ctx?: unknown): void;
once(event: TetherEvent, handler: TetherEventHandler, ctx?: unknown): void;
off(event: TetherEvent, handler: TetherEventHandler): void;
position(): void;
_runRenders(): {
targetComponent: (void & React.ReactElement<unknown, string | React.JSXElementConstructor<any>>) | null;
elementComponent: (void & React.ReactElement<unknown, string | React.JSXElementConstructor<any>>) | null;
};
_createTetherInstance(tetherOptions: Tether.ITetherOptions): void;
_destroyTetherInstance(): void;
_registerEventListeners(): void;
get _renderNode(): Element | null;
_destroy(): void;
_createContainer(): void;
_addContainerToDOM(): void;
_removeContainer(): void;
_update(): void;
_updateTether(): void;
render(): React.JSX.Element | null;
}
export {};