Skip to content
API 风格:

Предупреждение ​

Статическое предупреждение на уровне страницы (не императивный сервис, в отличие от Message). Семантика связана с ролями live region: warning/danger немедленно объявляются через role="alert", info/success — мягко через role="status".

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

Четыре семантики

Нейтральное уведомление.

Операция успешно завершена.

vue
<script setup lang="ts">
</script>

<template>
  <!-- Нейтральное уведомление -->
  <LhAlert>Нейтральное уведомление.</LhAlert>
  <!-- success -->
  <LhAlert type="success">Операция успешно завершена.</LhAlert>
  <!-- warning -->
  <LhAlert type="warning">Свободное место на диске заканчивается.</LhAlert>
  <!-- danger -->
  <LhAlert type="danger">Сетевое соединение разорвано.</LhAlert>
</template>
vue
<script>
export default {}
</script>

<template>
  <!-- Нейтральное уведомление -->
  <LhAlert>Нейтральное уведомление.</LhAlert>
  <!-- success -->
  <LhAlert type="success">Операция успешно завершена.</LhAlert>
  <!-- warning -->
  <LhAlert type="warning">Свободное место на диске заканчивается.</LhAlert>
  <!-- danger -->
  <LhAlert type="danger">Сетевое соединение разорвано.</LhAlert>
</template>

Иконка и заголовок ​

Иконка и заголовок
Сохранено

Документ синхронизирован с облаком.

vue
<script setup lang="ts">
</script>

<template>
  <!-- Сохранено -->
  <LhAlert type="success" show-icon title="Сохранено">Документ синхронизирован с облаком.</LhAlert>
  <!-- Ошибка удаления -->
  <LhAlert type="danger" show-icon title="Ошибка удаления">Эта запись сейчас редактируется другим участником.</LhAlert>
</template>
vue
<script>
export default {}
</script>

<template>
  <!-- Сохранено -->
  <LhAlert type="success" show-icon title="Сохранено">Документ синхронизирован с облаком.</LhAlert>
  <!-- Ошибка удаления -->
  <LhAlert type="danger" show-icon title="Ошибка удаления">Эта запись сейчас редактируется другим участником.</LhAlert>
</template>

Закрываемое ​

Закрываемое

Нажмите кнопку справа, чтобы закрыть меня.

Своя надпись на кнопке закрытия.

vue
<script setup lang="ts">
</script>

<template>
  <!-- Надпись закрытия по умолчанию -->
  <LhAlert closable>Нажмите кнопку справа, чтобы закрыть меня.</LhAlert>
  <!-- Своя надпись закрытия -->
  <LhAlert closable close-label="Понятно">Своя надпись на кнопке закрытия.</LhAlert>
</template>
vue
<script>
export default {}
</script>

<template>
  <!-- Надпись закрытия по умолчанию -->
  <LhAlert closable>Нажмите кнопку справа, чтобы закрыть меня.</LhAlert>
  <!-- Своя надпись закрытия -->
  <LhAlert closable close-label="Понятно">Своя надпись на кнопке закрытия.</LhAlert>
</template>

Простое оформление ​

Простое оформление
vue
<script setup lang="ts">
</script>

<template>
  <!-- warning, простое оформление -->
  <LhAlert type="warning" plain show-icon>Простое оформление со светлой заливкой и контуром.</LhAlert>
  <!-- danger, простое оформление -->
  <LhAlert type="danger" plain show-icon>Подходит для размещения на светлых фонах.</LhAlert>
</template>
vue
<script>
export default {}
</script>

<template>
  <!-- warning, простое оформление -->
  <LhAlert type="warning" plain show-icon>Простое оформление со светлой заливкой и контуром.</LhAlert>
  <!-- danger, простое оформление -->
  <LhAlert type="danger" plain show-icon>Подходит для размещения на светлых фонах.</LhAlert>
</template>

Alert API ​

Props ​

СвойствоОписаниеТипПо умолчанию
typeСемантический тип"info" | "success" | "warning" | "danger"'info'
titleЗаголовок (можно также использовать слот title)string—
closableМожно ли закрытьbooleanfalse
showIconПоказывать ли семантическую иконкуbooleanfalse
plainСветлое простое оформление (белый фон с контуром)booleanfalse
closeLabelИмя кнопки закрытия для доступности (если не передано, берётся из языкового пакета alert.close)string—
sxСокращённые свойства компоновки sxLhSxProps—

Events ​

СобытиеОписаниеПараметр
closeСрабатывает после нажатия на кнопку закрытия—

Slots ​

СлотОписание
titleПользовательский заголовок
defaultОписание

Доступность ​

  • warning/danger → role="alert" (немедленное объявление); info/success → role="status" (мягкое объявление)
  • Кнопка закрытия — настоящий <button>, aria-label берётся из языкового пакета alert.close, кольцо фокуса на :focus-visible
  • Светлый фон семантических цветов выводится через color-mix() из семантического цвета и автоматически следует теме и светлому/тёмному режиму

Типы ​

TypeScript-типы, экспортируемые этим компонентом (извлечены автоматически из packages/components/alert/src/types.ts и исходников @lh-ui/share/core/*; раскройте нужный пункт, чтобы увидеть полное определение; описания свойств — в таблице Props выше):

LhAlertProps
ts
export interface LhAlertProps {
  /** Семантический тип */
  type?: LhAlertType
  /** Заголовок (можно также использовать слот title) */
  title?: string
  /** Можно ли закрыть */
  closable?: boolean
  /** Показывать ли семантическую иконку */
  showIcon?: boolean
  /** Светлое простое оформление */
  plain?: boolean
  /** Имя кнопки закрытия для доступности (если не передано, берётся из языкового пакета alert.close) */
  closeLabel?: string
  /** Сокращённые свойства компоновки sx */
  sx?: LhSxProps
}
LhAlertType (из @lh-ui/share/core/alert)
ts
/** Семантический тип предупреждения */
export type LhAlertType = 'info' | 'success' | 'warning' | 'danger'

Красота традиций — основа кода