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

Информационный всплывающий слой, срабатывающий по клику или наведению. 12 позиций, четыре способа срабатывания, настраиваемые стрелка и ширина.

Всплывающее окно
<template>
  <div class="demo-col" style="padding: 40px 0">
    <div class="demo-row" style="gap: 24px; flex-wrap: wrap; justify-content: center">
      <LhPopover title="Заголовок" content="Срабатывание по click (по умолчанию)" placement="top">
        <LhButton>click сверху</LhButton>
      </LhPopover>
      <LhPopover content="Срабатывание по click" placement="right" trigger="click">
        <LhButton>click справа</LhButton>
      </LhPopover>
      <LhPopover content="Срабатывание по focus" placement="bottom" trigger="focus">
        <LhButton>focus снизу</LhButton>
      </LhPopover>
      <LhPopover content="Без стрелки + своя ширина" placement="left" :arrow="false" :width="240">
        <LhButton>Без стрелки слева</LhButton>
      </LhPopover>
      <LhPopover content="Строгое позиционирование по left" placement="left" :flip="false">
        <LhButton>flip=false</LhButton>
      </LhPopover>
    </div>
    <p class="demo-note">Срабатывание manual с ручным управлением через :visible.sync; disabled отключает появление; popperClass — пользовательский класс.</p>
    <div class="demo-row" style="gap: 24px; flex-wrap: wrap; justify-content: center">
      <LhPopover :visible.sync="manual" content="Управляется переключателем" placement="top" trigger="manual">
        <LhButton @click="manual = !manual">manual переключатель ({{ manual ? 'вкл' : 'выкл' }})</LhButton>
      </LhPopover>
      <LhPopover content="Отключённое состояние" disabled>
        <LhButton disabled>disabled</LhButton>
      </LhPopover>
      <LhPopover content="Задержка показа/скрытия" placement="top" :show-after="300" :hide-after="500">
        <LhButton>showAfter/hideAfter</LhButton>
      </LhPopover>
    </div>
  </div>
</template>

<script>
export default {
  data: () => ({
    manual: false,
  }),
}
</script>

# Props

Проп Описание Тип По умолчанию
placement Позиция показа 'top' \| 'top-start' \| 'top-end' \| 'bottom' \| 'bottom-start' \| 'bottom-end' \| 'left' \| 'left-start' \| 'left-end' \| 'right' \| 'right-start' \| 'right-end' 'top'
flip Разворот при нехватке пространства вдоль главной оси (включён по умолчанию); при false окно позиционируется строго по placement, даже с выходом за пределы viewport boolean true
trigger Способ срабатывания 'click' \| 'hover' \| 'focus' \| 'manual' 'hover'
title Заголовок string —
visible Видимость под ручным управлением (:visible.sync) boolean —
disabled Отключение boolean false
arrow Показывать ли стрелку boolean true
width Ширина всплывающего слоя string \| number —
popperClass Пользовательский класс всплывающего слоя string —
teleportTarget Целевой элемент монтирования всплывающего слоя (селектор или элемент, по умолчанию body; в Vue 2.7 нет Teleport — реализован перенос хоста) string \| HTMLElement —
showAfter Задержка показа (мс) number —
hideAfter Задержка скрытия (мс) number —
themeVars Переменные темы на уровне компонента, переопределяют конфигурацию ConfigProvider Record<string, string> —
bgPattern Фоновый узор на уровне компонента, переопределяет конфигурацию ConfigProvider string —
sx Проп sx для быстрого макета (применяется к корневому элементу триггера) — —

# Slots

Слот Описание
default Триггер
title Зона заголовка (по умолчанию берётся проп title)
content Основной текст всплывающего окна (если не передан, берётся проп content)

Copyright © 2024-2026 FengMo WenXue