Skip to content
API 风格:

Тег ​

LhTag используется для маркировки и классификации.

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

Базовое использование
Тег 1Тег 2Тег 3
vue
<script setup lang="ts">
import { LhTag } from '@lh-ui/vue3'
</script>

<template>
  <LhTag>Тег 1</LhTag>
  <LhTag>Тег 2</LhTag>
  <LhTag>Тег 3</LhTag>
</template>
vue
<script>
import { LhTag } from '@lh-ui/vue3'

export default {
  components: { LhTag }
}
</script>

<template>
  <LhTag>Тег 1</LhTag>
  <LhTag>Тег 2</LhTag>
  <LhTag>Тег 3</LhTag>
</template>

Типы ​

Типы
Основной тегТег успехаТег предупрежденияТег опасностиИнформационный тег
vue
<script setup lang="ts">
</script>

<template>
  <LhTag type="primary">Основной тег</LhTag>
  <LhTag type="success">Тег успеха</LhTag>
  <LhTag type="warning">Тег предупреждения</LhTag>
  <LhTag type="danger">Тег опасности</LhTag>
  <LhTag type="info">Информационный тег</LhTag>
</template>
vue
<script>
export default {}
</script>

<template>
  <LhTag type="primary">Основной тег</LhTag>
  <LhTag type="success">Тег успеха</LhTag>
  <LhTag type="warning">Тег предупреждения</LhTag>
  <LhTag type="danger">Тег опасности</LhTag>
  <LhTag type="info">Информационный тег</LhTag>
</template>

Размеры ​

Размеры
Маленький тегСредний тегБольшой тег
vue
<script setup lang="ts">
</script>

<template>
  <LhTag size="small">Маленький тег</LhTag>
  <LhTag size="medium">Средний тег</LhTag>
  <LhTag size="large">Большой тег</LhTag>
</template>
vue
<script>
export default {}
</script>

<template>
  <LhTag size="small">Маленький тег</LhTag>
  <LhTag size="medium">Средний тег</LhTag>
  <LhTag size="large">Большой тег</LhTag>
</template>

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

Закрываемые
Тег 1Тег 2Отключённый тег
vue
<script setup lang="ts">
import { ref } from 'vue'

const show1 = ref(true)
const show2 = ref(true)
</script>

<template>
  <LhTag v-if="show1" closable @close="show1 = false">Тег 1</LhTag>
  <LhTag v-if="show2" type="primary" closable @close="show2 = false">Тег 2</LhTag>
  <LhTag disabled>Отключённый тег</LhTag>
</template>
vue
<script>
export default {
  data() {
    return {
      show1: true,
      show2: true,
    }
  },
}
</script>

<template>
  <LhTag v-if="show1" closable @close="show1 = false">Тег 1</LhTag>
  <LhTag v-if="show2" type="primary" closable @close="show2 = false">Тег 2</LhTag>
</template>

Скругление и обводка ​

Скругление и обводка
Скруглённый тегТег с обводкойСкруглённый с обводкой
vue
<script setup lang="ts">
</script>

<template>
  <LhTag round>Скруглённый тег</LhTag>
  <LhTag hit>Тег с обводкой</LhTag>
  <LhTag round hit>Скруглённый с обводкой</LhTag>
</template>
vue
<script>
export default {}
</script>

<template>
  <LhTag round>Скруглённый тег</LhTag>
  <LhTag hit>Тег с обводкой</LhTag>
  <LhTag round hit>Скруглённый с обводкой</LhTag>
</template>

Пользовательская тема ​

Применение к тегу пользовательской цветовой темы.

Тема «зеленый сосны»
Тема «зеленый сосны»Успех
vue
<script setup lang="ts">
import { LhConfigProvider, LhTag } from '@lh-ui/vue3'

const songhuaTheme = {
  'primary-color': '#5B8C5A',
  'primary-color-hover': '#7BB079',
  'primary-color-bg': '#E8F5E8',
}
</script>

<template>
  <!-- Локальная тема: «зеленый сосны» -->
  <LhConfigProvider :theme-vars="songhuaTheme">
    <LhTag type="primary">Тема «зеленый сосны»</LhTag>
    <LhTag type="success">Успех</LhTag>
  </LhConfigProvider>
</template>
vue
<script>
import { LhConfigProvider, LhTag } from '@lh-ui/vue3'

export default {
  components: { LhConfigProvider, LhTag },
  data() {
    return {
      songhuaTheme: {
        'primary-color': '#5B8C5A',
        'primary-color-hover': '#7BB079',
        'primary-color-bg': '#E8F5E8',
      },
    }
  },
}
</script>

<template>
  <!-- Локальная тема: «зеленый сосны» -->
  <LhConfigProvider :theme-vars="songhuaTheme">
    <LhTag type="primary">Тема «зеленый сосны»</LhTag>
    <LhTag type="success">Успех</LhTag>
  </LhConfigProvider>
</template>

Подробнее о темах см. Настройка темы.

Интернационализация ​

Текст тега можно переключать между языками через LhConfigProvider и языковые пакеты.

Интернационализация
标签
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhConfigProvider, LhTag } from '@lh-ui/vue3'
import { zhCN } from '@lh-ui/vue3'
import { enUS } from '@lh-ui/vue3'

const locale = ref('zh-CN')
</script>

<template>
  <!-- Переключение языкового пакета через ConfigProvider -->
  <LhConfigProvider :locale="locale === 'zh-CN' ? zhCN : enUS">
    <LhTag>{{ locale === 'zh-CN' ? '标签' : 'Tag' }}</LhTag>
    <LhButton @click="locale = locale === 'zh-CN' ? 'en-US' : 'zh-CN'">
      {{ locale === 'zh-CN' ? '切换英文' : 'Switch to Chinese' }}
    </LhButton>
  </LhConfigProvider>
</template>
vue
<script>
import { LhConfigProvider, LhTag, LhButton } from '@lh-ui/vue3'
import { zhCN } from '@lh-ui/vue3'
import { enUS } from '@lh-ui/vue3'

export default {
  components: { LhConfigProvider, LhTag, LhButton },
  data() {
    return {
      locale: 'zh-CN',
      zhCN: zhCN,
      enUS: enUS,
    }
  },
}
</script>

<template>
  <!-- Переключение языкового пакета через ConfigProvider -->
  <LhConfigProvider :locale="locale === 'zh-CN' ? zhCN : enUS">
    <LhTag>{{ locale === 'zh-CN' ? '标签' : 'Tag' }}</LhTag>
    <LhButton @click="locale = locale === 'zh-CN' ? 'en-US' : 'zh-CN'">
      {{ locale === 'zh-CN' ? '切换英文' : 'Switch to Chinese' }}
    </LhButton>
  </LhConfigProvider>
</template>

Tag API ​

Props ​

СвойствоОписаниеТипПо умолчанию
typeТип тега"primary" | "success" | "warning" | "danger" | "info" | "default"'default'
sizeРазмер"small" | "medium" | "large" | "mini" | "x-large"'medium'
closableМожно ли закрыть тегbooleanfalse
disabledОтключить тегbooleanfalse
roundСкруглённые углыbooleanfalse
hitОбводка контуромbooleanfalse
onCloseПользовательная обработка закрытия(e: Event) => void—
sxСвойство быстрой вёрстки (например { mt: 2, w: '50%' }), преобразуется в инлайновые стили и применяется к корневому элементуLhSxProps—

События ​

СобытиеОписаниеТип
clickСрабатывает при клике по тегу(e: MouseEvent) => void
closeСрабатывает при закрытии тега(e: Event) => void

Слоты ​

СлотОписание
defaultСодержимое тега

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

  • Кнопка закрытия — это кнопка со значком, aria-label берётся из языкового пакета tag.close (на китайском「关闭」) и переключается вместе с языком ConfigProvider
  • Значок <svg> внутри кнопки закрытия помечен aria-hidden, чтобы скринридер не повторял объявление
  • Текст тега считывается напрямую, дополнительное именование не требуется

Определения типов ​

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

LhTagProps
ts
export interface LhTagProps {
  type?: LhTagType
  size?: LhTagSize
  closable?: boolean
  disabled?: boolean
  round?: boolean
  hit?: boolean
  /** Пользовательская обработка закрытия */
  onClose?: (e: Event) => void
  /** Свойство sx для быстрой вёрстки */
  sx?: LhSxProps
}
LhTagSize
ts
export type LhTagSize = LhComponentSize
LhTagType (из @lh-ui/share/core/tag)
ts
export type LhTagType = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default'
LhComponentSize (из @lh-ui/share/core/shared)
ts
export type LhComponentSize = (typeof LH_SIZE_CONST)[keyof typeof LH_SIZE_CONST]

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