@yandex/ui
Version:
Yandex UI components
69 lines (68 loc) • 2.53 kB
TypeScript
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;