Перейти к основному содержимому

Popover (всплывающее окно)

Похож на Tooltip, но может содержать заголовок и более богатый контент (HTML-структуры, списки и т. д.); срабатывает по клику или при наведении.

Базовое использование​

Расположения, способы срабатывания и стрелка
import { LhButton, LhPopover } from '@lh-ui/react'

export default function Demo() {
return (
<LhPopover title="Заголовок" content="Содержимое всплывающего окна." placement="top">
<LhButton>Сверху</LhButton>
</LhPopover>
)
}

Popover Props​

СвойствоОписаниеТипВариантыПо умолчанию
childrenУзел-триггерReactNode——
titleЗаголовок (рендерится в области __title)ReactNode——
contentСодержимое (рендерится в области __content)ReactNode——
placementРасположениеLhPopoverPlacementtop / bottom / left / right (с -start / -end)'top'
triggerСпособ срабатыванияLhPopoverTrigger'hover' | 'click' | 'focus' | 'manual''click'
disabledОтключить всплывающее окноboolean—false
arrowПоказывать ли стрелкуboolean—true
widthШирина оверлеяstring | number——
visibleКонтролируемая видимостьboolean——
defaultVisibleНеконтролируемая видимость по умолчаниюboolean—false
showAfterЗадержка показа (мс; по умолчанию 200 для защиты от случайных срабатываний)number—200
hideAfterЗадержка скрытия (мс; по умолчанию 100, чтобы указатель успел перейти в оверлей)number—100
popperClassПользовательское имя класса оверлеяstring——
themeVarsПеременные темы на уровне компонентаRecord<string, string>——
bgPatternФоновый узор на уровне компонентаstring——
sxСокращённые props макета (применяются к триггеру)SxProps——

События Popover​

СобытиеОписаниеСигнатура коллбэкаАналог в Vue
onVisibleChangeИзменение видимости (срабатывает и в контролируемом, и в неконтролируемом режимах)(visible: boolean) => voidupdate:visible

ref​

forwardRef<HTMLDivElement> — корневой элемент триггера. LhPopoverInstance предоставляет show() / hide() / toggle() / isVisible.

Перехват фокуса

При trigger="click" оверлей перехватывает фокус по семантике диалогового окна (Tab циклически перемещается внутри), а при закрытии возвращает его; триггеры hover / focus фокус не захватывают — это согласуется с поведением isModal в plus.

Доступность

Оверлей имеет role="dialog"; при наличии заголовка он связывается через aria-labelledby, а триггер связывается с оверлеем через aria-describedby.

Стили​

import '@lh-ui/react/style/popover'