react-dock
Version:
Resizable dockable react component
63 lines (62 loc) • 1.98 kB
TypeScript
import React, { Component, ReactNode } from 'react';
import type { DebouncedFunc } from 'lodash-es';
interface Props {
position: 'left' | 'right' | 'top' | 'bottom';
zIndex: number;
fluid: boolean;
size?: number;
defaultSize: number;
dimMode: 'none' | 'transparent' | 'opaque';
isVisible?: boolean;
onVisibleChange?: (isVisible: boolean) => void;
onSizeChange?: (size: number) => void;
dimStyle?: React.CSSProperties | null;
dockStyle?: React.CSSProperties | null;
dockHiddenStyle?: React.CSSProperties | null;
duration: number;
children?: React.FunctionComponent<{
position: 'left' | 'right' | 'top' | 'bottom';
isResizing: boolean | undefined;
size: number;
isVisible: boolean | undefined;
}> | ReactNode;
}
interface State {
isControlled: boolean;
size: number;
isDimHidden: boolean;
fullWidth: number;
fullHeight: number;
isTransitionStarted: boolean;
isWindowResizing: unknown;
isResizing?: boolean;
}
export default class Dock extends Component<Props, State> {
state: State;
static defaultProps: {
position: string;
zIndex: number;
fluid: boolean;
defaultSize: number;
dimMode: string;
duration: number;
};
componentDidMount(): void;
componentWillUnmount(): void;
UNSAFE_componentWillReceiveProps(nextProps: Props): void;
updateSize(props: Props): void;
componentDidUpdate(prevProps: Props): void;
transitionEnd: () => void;
hideDim: () => void;
render(): React.JSX.Element;
handleDimClick: () => void;
handleResize: () => void;
updateWindowSize: (windowResize?: true) => void;
updateWindowSizeEnd: () => void;
debouncedUpdateWindowSizeEnd: DebouncedFunc<() => void>;
handleWrapperLeave: () => void;
handleMouseDown: () => void;
handleMouseUp: () => void;
handleMouseMove: (e: MouseEvent | TouchEvent) => void;
}
export {};