Skip to content

Диалог ​

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

vue
<template>
  <lh-button @click="visible = true">Открыть диалог</lh-button>

  <lh-dialog v-model="visible" title="Заголовок" width="80%">
    <view>Это содержимое диалога</view>
    <template #footer>
      <lh-button @click="visible = false">Отмена</lh-button>
      <lh-button type="primary" @click="visible = false">ОК</lh-button>
    </template>
  </lh-dialog>
</template>

<script setup lang="ts">
import { ref } from 'vue'
const visible = ref(false)
</script>

Позиционирование ​

vue
<template>
  <lh-dialog v-model="visible" position="bottom" title="Нижний слой">
    <view>Содержимое нижнего слоя</view>
  </lh-dialog>

  <lh-dialog v-model="visible" fullscreen title="Полный экран">
    <view>Содержимое на весь экран</view>
  </lh-dialog>
</template>

Нижний слой автоматически получает env(safe-area-inset-bottom) для полноэкранных устройств.

Props ​

ПропОписаниеТипПо умолчанию
modelValue (v-model)Показан лиbooleanfalse
titleЗаголовокstring—
widthШиринаstring | number—
topОтступ сверхуstring | number—
fullscreenПолный экранbooleanfalse
positionПозиционирование'center' | 'top' | 'bottom''center'
closeOnClickModalЗакрывать по клику на маскуbooleantrue
closeOnPressEscapeЗакрывать по Esc (в MP нет клавиатурных событий, не работает)booleantrue
lockScrollБлокировать прокрутку фона (только на H5)booleantrue
zIndexZ-index; если не передан, назначается по нарастающейnumber—
customClassПользовательский классstring—
themeVarsПеременные темы компонентаRecord<string, string>—
sxБыстрые свойства раскладкиLhSxProps—

Slots ​

СлотОписание
defaultСодержимое
footerЗона кнопок в подвале

Events ​

СобытиеОписаниеПараметр колбэка
update:modelValueИзменение видимости(visible: boolean)
openОткрытие—
closeЗакрытие—

Отличия от версии для Vue3

  • Монтирование слоя идёт через root-portal (на H5 — teleport, на MP — root-portal или деградация до фиксированного позиционирования внутри страницы).
  • focus-trap недоступен на платформе MP: сторож LH_IS_H5 на этапе компиляции возвращает false, focus-trap не вызывается.
  • lockScroll не работает на платформе MP: в Mini Program нет блокировки прокрутки body, fallback — перехват кликов маской.
  • closeOnPressEscape не работает на платформе MP (нет клавиатурных событий).