@yandex/ui
Version:
Yandex UI components
158 lines (157 loc) • 7.12 kB
TypeScript
import React, { ComponentType, CSSProperties, ReactElement } from 'react';
import { Direction, IPopupProps } from '../Popup';
import './Dropdown.css';
export declare const cnDropdown: import("@bem-react/classname").ClassNameFormatter;
export declare type TriggerType = 'click' | 'hover' | 'focus';
export interface DropdownProps {
/**
* Делает попап видимым
*/
visible: boolean;
/**
* Элемент триггер, например, Link или Button
*/
children: ReactElement;
/**
* Содержимое попапа
*/
content: IPopupProps['children'];
/**
* Html атрибут `style`
*/
style?: CSSProperties;
/**
* Направление раскрытия попапа
*/
direction?: Direction | Direction[];
/**
* Действие вызывающее показ попапа
*/
trigger: TriggerType | TriggerType[];
/**
* Обработчик на изменение видимости попапа
*/
onVisibleChange: (visible: boolean) => void;
/**
* Временная задержка (секунды) на появление попапа
* @default 0
*/
mouseEnterDelay: number;
/**
* Временная задержка (секунды) на исчезновение попапа
* @default 0.1
*/
mouseLeaveDelay: number;
/**
* Временная задержка (секунды) на появление попапа
* @default 0
*/
focusDelay: number;
/**
* Временная задержка (секунды) на исчезновение попапа
* @default 0.15
*/
blurDelay: number;
}
export interface DropdownState {
visible: boolean;
prevVisible: boolean;
}
/**
* Компонент для создания выпадающего списка
* @param {DropdownProps} props
*/
export declare const withDropdown: <T extends IPopupProps>(Popup: React.ComponentType<T>) => {
new (props: Readonly<T & DropdownProps>): {
componentWillUnmount(): void;
innerRef: React.RefObject<HTMLElement>;
delayTimer: null | ReturnType<typeof setTimeout>;
readonly state: {
visible: (T & DropdownProps)["visible"];
prevVisible: (T & DropdownProps)["visible"];
};
delaySetPopupVisible(visible: boolean, delay: number): void;
setPopupVisible(visible: boolean): void;
onClick: () => void;
onMouseEnter: () => void;
onMouseLeave: () => void;
onFocus: () => void;
onBlur: () => void;
onPopupMouseEnter: () => void;
onPopupMouseLeave: () => void;
clearDelayTimer(): void;
render(): JSX.Element;
context: any;
setState<K extends "visible" | "prevVisible">(state: DropdownState | ((prevState: Readonly<DropdownState>, props: Readonly<T & DropdownProps>) => DropdownState | Pick<DropdownState, K> | null) | Pick<DropdownState, K> | null, callback?: (() => void) | undefined): void;
forceUpdate(callBack?: (() => void) | undefined): void;
readonly props: Readonly<T & DropdownProps> & Readonly<{
children?: React.ReactNode;
}>;
refs: {
[key: string]: React.ReactInstance;
};
componentDidMount?(): void;
shouldComponentUpdate?(nextProps: Readonly<T & DropdownProps>, nextState: Readonly<DropdownState>, nextContext: any): boolean;
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
getSnapshotBeforeUpdate?(prevProps: Readonly<T & DropdownProps>, prevState: Readonly<DropdownState>): any;
componentDidUpdate?(prevProps: Readonly<T & DropdownProps>, prevState: Readonly<DropdownState>, snapshot?: any): void;
componentWillMount?(): void;
UNSAFE_componentWillMount?(): void;
componentWillReceiveProps?(nextProps: Readonly<T & DropdownProps>, nextContext: any): void;
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<T & DropdownProps>, nextContext: any): void;
componentWillUpdate?(nextProps: Readonly<T & DropdownProps>, nextState: Readonly<DropdownState>, nextContext: any): void;
UNSAFE_componentWillUpdate?(nextProps: Readonly<T & DropdownProps>, nextState: Readonly<DropdownState>, nextContext: any): void;
};
new (props: T & DropdownProps, context?: any): {
componentWillUnmount(): void;
innerRef: React.RefObject<HTMLElement>;
delayTimer: null | ReturnType<typeof setTimeout>;
readonly state: {
visible: (T & DropdownProps)["visible"];
prevVisible: (T & DropdownProps)["visible"];
};
delaySetPopupVisible(visible: boolean, delay: number): void;
setPopupVisible(visible: boolean): void;
onClick: () => void;
onMouseEnter: () => void;
onMouseLeave: () => void;
onFocus: () => void;
onBlur: () => void;
onPopupMouseEnter: () => void;
onPopupMouseLeave: () => void;
clearDelayTimer(): void;
render(): JSX.Element;
context: any;
setState<K extends "visible" | "prevVisible">(state: DropdownState | ((prevState: Readonly<DropdownState>, props: Readonly<T & DropdownProps>) => DropdownState | Pick<DropdownState, K> | null) | Pick<DropdownState, K> | null, callback?: (() => void) | undefined): void;
forceUpdate(callBack?: (() => void) | undefined): void;
readonly props: Readonly<T & DropdownProps> & Readonly<{
children?: React.ReactNode;
}>;
refs: {
[key: string]: React.ReactInstance;
};
componentDidMount?(): void;
shouldComponentUpdate?(nextProps: Readonly<T & DropdownProps>, nextState: Readonly<DropdownState>, nextContext: any): boolean;
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
getSnapshotBeforeUpdate?(prevProps: Readonly<T & DropdownProps>, prevState: Readonly<DropdownState>): any;
componentDidUpdate?(prevProps: Readonly<T & DropdownProps>, prevState: Readonly<DropdownState>, snapshot?: any): void;
componentWillMount?(): void;
UNSAFE_componentWillMount?(): void;
componentWillReceiveProps?(nextProps: Readonly<T & DropdownProps>, nextContext: any): void;
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<T & DropdownProps>, nextContext: any): void;
componentWillUpdate?(nextProps: Readonly<T & DropdownProps>, nextState: Readonly<DropdownState>, nextContext: any): void;
UNSAFE_componentWillUpdate?(nextProps: Readonly<T & DropdownProps>, nextState: Readonly<DropdownState>, nextContext: any): void;
};
displayName: string;
defaultProps: {
onVisibleChange: () => void;
mouseEnterDelay: number;
mouseLeaveDelay: number;
focusDelay: number;
blurDelay: number;
visible: boolean;
trigger: string[];
direction: string;
};
contextType?: React.Context<any> | undefined;
};