import { type FloatingPositionStrategy, type Placement, type UseFloatingData, type UseFloatingMiddleware, type UseFloatingRefs } from '../types/common'; export type InteractiveTriggerType = 'click' | 'hover' | 'focus'; export type ManualTriggerType = 'manual'; export type TriggerType = ManualTriggerType | InteractiveTriggerType | InteractiveTriggerType[]; export type RestoreFocusType = boolean | 'anchor-element' | HTMLElement; export type ShownChangeReason = 'click-outside' | 'escape-key' | 'click' | 'hover' | 'focus' | 'callback'; export type OnShownChange = (shown: boolean, reason?: ShownChangeReason) => void; export interface UseFloatingWithInteractionsProps { placement?: Placement; /** * Стратегия позиционирования всплывающего элемента. * * - `"fixed"` - позиционируется, используя `position: fixed`. Является значением по умолчанию * - `"absolute"` - позиционируется, используя `position: absolute`, относительно ближайшего элемента с `position: relative` * * > `strategy="absolute"` Рекомендуется использовать с `usePortal={false}`. И нужно не забыть обернуть в элемент с `position: relative` */ strategy?: FloatingPositionStrategy; middlewares?: UseFloatingMiddleware[]; /** * Механика вызова всплывающего элемента. * * - `"click"` – показывается/скрывается только при нажатии. * - `"hover"` – будет показываться/скрывается при наведении/отведении мыши. * - `"focus"` – будет показываться/скрывается при фокусе/потере фокуса мыши. * - `"manual"` – будет показываться/скрывается только через свойство `shown`. `onShownChange` * будет вызываться при нажатии за пределы целевого и всплывающего элементов, а также по кнопке * ESC. * * > ⚠️`"hover"` на тач-устройствах будет работать как `"click"`, с одним лишь нюансом, что * > не будет закрываться при повторном нажатии на целевой элемент. Для закрытия необходимо нажать * > на область вне целевого элемента и выпадающего окна. * * **Избегайте использования `trigger="hover"` как единственного механизма активации, так как пользователи клавиатуры или скринридеров не смогут использовать компонент** */ trigger?: TriggerType; /** * Количество миллисекунд, после которых произойдёт показ/скрытие всплывающего элемента * при наведении. * * > Чтобы задать разное время на показ и скрытие, передайте массив типа `[<показ>, <скрытие>]`. * * > Используется только для `trigger="hover"`. */ hoverDelay?: number | [number, number]; /** * При `trigger="hover"` закрывает всплывающий элемент при нажатии на целевой элемент. */ closeAfterClick?: boolean; /** * Блокирует изменение состояния. */ disabled?: boolean; /** * Отключает взаимодействие со всплывающим элементом. */ disableInteractive?: boolean; /** * Отключает закрытие нажатием на область вне целевого и всплывающего элемента. */ disableCloseOnClickOutside?: boolean; /** * Отключает закрытие нажатием на кнопку ESC. */ disableCloseOnEscKey?: boolean; /** * Начальное состояние всплывающего элемента. */ defaultShown?: boolean; /** * Если передан, то всплывающий элемент будет показано/скрыто в зависимости от значения свойства. */ shown?: boolean; /** * Вызывается при каждом изменении видимости всплывающего элемента. */ onShownChange?: OnShownChange; /** * Вызывается при каждом изменении видимости всплывающего элемента, но после завершении анимации. */ onShownChanged?: OnShownChange; } export type ReferenceProps = Omit, keyof React.DOMAttributes> & Pick, 'onMouseOver' | 'onMouseLeave' | 'onClick' | 'onFocus' | 'onBlur'>; export type FloatingProps = Omit, keyof React.DOMAttributes | 'style'> & { style: React.CSSProperties; } & Pick, 'onMouseOver' | 'onMouseLeave' | 'onClick' | 'onAnimationStart' | 'onAnimationEnd'>; export interface UseFloatingWithInteractionsReturn { placement: Placement; shown: boolean; willBeHide: boolean; refs: UseFloatingRefs; referenceProps: ReferenceProps; floatingProps: FloatingProps; middlewareData: UseFloatingData['middlewareData']; onClose: (this: void) => void; onEscapeKeyDown?: (this: void) => void; onRestoreFocus: (restoreFocus?: RestoreFocusType) => boolean | HTMLElement; } //# sourceMappingURL=types.d.ts.map