UNPKG

@yandex/ui

Version:

Yandex UI components

69 lines (68 loc) 2.53 kB
import { ReactNode, RefObject } from 'react'; import { Instance, Modifier, VirtualElement } from '@popperjs/core'; import { Direction } from './directions'; import { Boundary } from './types'; export declare type PopupHookProps = { /** * Ссылка на DOM-элемент относительно которого нужно показать попап */ anchorRef: RefObject<HTMLElement | VirtualElement>; /** * Содержимое попапа */ children?: ReactNode; /** * Значение относительно краев попапа за которое хвостик не должен вылезать */ arrowMarginThreshold?: number; /** * Направление для раскрытия попапа */ placement?: Direction | Direction[]; /** * Включает логику расчетов */ enabled?: boolean; /** * Значение относительно краев контейнера при котором нужно сменить направление */ marginThreshold?: number; /** * Пользовательский набор модификаторов */ modifiers?: Partial<Modifier<any, any>>[]; /** * Отступы попапа относительно двух направлений */ offset?: [number | undefined, number | undefined]; /** * Отступ хвостика относительно основного направления */ unsafe_tailOffset?: number; /** * Закрепляет положение попапа после открытия */ motionless?: boolean; /** * Ссылка на элемент или ссылки на элементы, в которые должен вписываться попап */ boundary?: Boundary; }; export declare type PopupHookResult = { /** * Инстанс popper */ popper: Instance | null; /** * Функция устанавливающая ссылку на хвостик */ setArrowRef: (node: HTMLElement | null) => void; /** * Функция устанавливающая ссылку на попап */ setPopupRef: (node: HTMLElement | null) => void; }; /** * Реакт-хук, реализующий позиционирование попапа при помощи popper. */ export declare function usePopper(props: PopupHookProps): PopupHookResult;