UNPKG

@yandex/ui

Version:

Yandex UI components

158 lines (157 loc) 7.12 kB
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; };