Skip to content
API 风格:

Флажок ​

LhCheckbox поддерживает независимое логическое значение, LhCheckboxGroup — значение-массив для нескольких опций.

Самостоятельное использование ​

Самостоятельное использование
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhCheckbox } from '@lh-ui/vue3'

const accepted = ref(false)
</script>

<template>
  <LhCheckbox v-model="accepted" label="Я прочитал(а) и согласен(на)" />
</template>
vue
<script>
import { LhCheckbox } from '@lh-ui/vue3'

export default {
  components: { LhCheckbox },
  data() {
    return {
      accepted: false
    }
  }
}
</script>

<template>
  <LhCheckbox v-model="accepted" label="Я прочитал(а) и согласен(на)" />
</template>

Использование в группе ​

Использование в группе
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'

const selected = ref(['vue'])
</script>

<template>
  <LhCheckboxGroup v-model="selected" name="framework">
    <LhCheckbox value="vue" label="Vue" />
    <LhCheckbox value="react" label="React" />
    <LhCheckbox value="svelte" label="Svelte" />
  </LhCheckboxGroup>
</template>
vue
<script>
import { LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'

export default {
  components: { LhCheckbox, LhCheckboxGroup },
  data() {
    return {
      selected: ['vue']
    }
  }
}
</script>

<template>
  <LhCheckboxGroup v-model="selected" name="framework">
    <LhCheckbox value="vue" label="Vue" />
    <LhCheckbox value="react" label="React" />
    <LhCheckbox value="svelte" label="Svelte" />
  </LhCheckboxGroup>
</template>

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

Применение к флажкам собственных фирменных цветов.

Тема 青花瓷 (сине-белый фарфор)
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhConfigProvider, LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'

const selected = ref(['option1'])
const cerblueTheme = {
  'primary-color': '#2B4C7C',
  'primary-color-hover': '#3D649E',
  'primary-color-bg': '#E8EDF3',
}
</script>

<template>
  <LhConfigProvider :theme-vars="cerblueTheme">
    <LhCheckboxGroup v-model="selected">
      <LhCheckbox value="option1" label="Вариант 1" />
      <LhCheckbox value="option2" label="Вариант 2" />
    </LhCheckboxGroup>
  </LhConfigProvider>
</template>
vue
<script>
import { LhConfigProvider, LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'

export default {
  components: { LhConfigProvider, LhCheckbox, LhCheckboxGroup },
  data() {
    return {
      selected: ['option1'],
      cerblueTheme: {
        'primary-color': '#2B4C7C',
        'primary-color-hover': '#3D649E',
        'primary-color-bg': '#E8EDF3',
      },
    }
  },
}
</script>

<template>
  <LhConfigProvider :theme-vars="cerblueTheme">
    <LhCheckboxGroup v-model="selected">
      <LhCheckbox value="option1" label="Вариант 1" />
      <LhCheckbox value="option2" label="Вариант 2" />
    </LhCheckboxGroup>
  </LhConfigProvider>
</template>

Остальные темы — в разделе Кастомизация темы.

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

Текст флажка можно интернационализировать через LhConfigProvider с языковыми пакетами.

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

const locale = ref('zh-CN')
const selected = ref(['vue'])
</script>

<template>
  <!-- Настройка языкового пакета -->
  <LhConfigProvider :locale="locale === 'zh-CN' ? zhCN : enUS">
    <LhCheckboxGroup v-model="selected">
      <LhCheckbox value="vue" :label="locale === 'zh-CN' ? 'Vue框架' : 'Vue Framework'" />
      <LhCheckbox value="react" :label="locale === 'zh-CN' ? 'React框架' : 'React Framework'" />
    </LhCheckboxGroup>
  </LhConfigProvider>
</template>
vue
<script>
import { LhConfigProvider, LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'
import { zhCN } from '@lh-ui/vue3'
import { enUS } from '@lh-ui/vue3'

export default {
  components: { LhConfigProvider, LhCheckbox, LhCheckboxGroup },
  data() {
    return {
      locale: 'zh-CN',
      selected: ['vue'],
      zhCN: zhCN,
      enUS: enUS,
    }
  },
}
</script>

<template>
  <!-- Настройка языкового пакета -->
  <LhConfigProvider :locale="locale === 'zh-CN' ? zhCN : enUS">
    <LhCheckboxGroup v-model="selected">
      <LhCheckbox value="vue" :label="locale === 'zh-CN' ? 'Vue框架' : 'Vue Framework'" />
      <LhCheckbox value="react" :label="locale === 'zh-CN' ? 'React框架' : 'React Framework'" />
    </LhCheckboxGroup>
  </LhConfigProvider>
</template>

Отключение, неопределённое состояние и размер ​

Автономный флажок отключается через disabled, неопределённое состояние показывается через indeterminate, размер регулируется size; группа отключается целиком через disabled, а size задаёт единый размер флажков в группе.

Отключение, неопределённое состояние и размер
vue
<script setup lang="ts">
import { ref } from 'vue'

const demoCbDisabled = ref(true)
const demoCbIndeterminate = ref(false)
const demoIndeterminate = ref(true)
const demoCbSmall = ref(false)
const demoCbLarge = ref(false)
const demoCbGroupDisabled = ref<string[]>([])
const demoCbGroupSize = ref<string[]>([])
</script>

<template>
  <!-- Отключён -->
  <LhCheckbox v-model="demoCbDisabled" disabled label="Отключённое состояние" />
  <!-- Неопределённое состояние -->
  <LhCheckbox v-model="demoCbIndeterminate" :indeterminate="demoIndeterminate" label="Неопределённое состояние" />
  <!-- Маленький размер -->
  <LhCheckbox v-model="demoCbSmall" size="small" label="small" />
  <!-- Большой размер -->
  <LhCheckbox v-model="demoCbLarge" size="large" label="large" />
  <!-- Группа отключена целиком -->
  <LhCheckboxGroup v-model="demoCbGroupDisabled" disabled>
    <LhCheckbox value="a" label="Вариант A" />
    <LhCheckbox value="b" label="Вариант B" />
  </LhCheckboxGroup>
  <!-- Единый большой размер в группе -->
  <LhCheckboxGroup v-model="demoCbGroupSize" size="large">
    <LhCheckbox value="a" label="Вариант A" />
    <LhCheckbox value="b" label="Вариант B" />
  </LhCheckboxGroup>
</template>
vue
<script>
export default {
  data() {
    return {
      demoCbDisabled: true,
      demoCbIndeterminate: false,
      demoIndeterminate: true,
      demoCbSmall: false,
      demoCbLarge: false,
      demoCbGroupDisabled: [],
      demoCbGroupSize: [],
    }
  },
}
</script>

<template>
  <!-- Отключён -->
  <LhCheckbox v-model="demoCbDisabled" disabled label="Отключённое состояние" />
  <!-- Неопределённое состояние -->
  <LhCheckbox v-model="demoCbIndeterminate" :indeterminate="demoIndeterminate" label="Неопределённое состояние" />
  <!-- Маленький размер -->
  <LhCheckbox v-model="demoCbSmall" size="small" label="small" />
  <!-- Большой размер -->
  <LhCheckbox v-model="demoCbLarge" size="large" label="large" />
  <!-- Группа отключена целиком -->
  <LhCheckboxGroup v-model="demoCbGroupDisabled" disabled>
    <LhCheckbox value="a" label="Вариант A" />
    <LhCheckbox value="b" label="Вариант B" />
  </LhCheckboxGroup>
  <!-- Единый большой размер в группе -->
  <LhCheckboxGroup v-model="demoCbGroupSize" size="large">
    <LhCheckbox value="a" label="Вариант A" />
    <LhCheckbox value="b" label="Вариант B" />
  </LhCheckboxGroup>
</template>

Checkbox API ​

LhCheckbox Props ​

СвойствоОписаниеТипПо умолчанию
modelValueСостояние выбора в автономном режимеbooleanfalse
valueЗначение, отправляемое в режиме группыunknown—
labelТекст меткиstring—
disabledОтключён ли флажокbooleanfalse
indeterminateНеопределённое состояниеbooleanfalse
name—string—
sizeРазмер"small" | "medium" | "large"'medium'
sxСокращённые свойства компоновки sxLhSxProps—

LhCheckboxGroup Props ​

СвойствоОписаниеТипПо умолчанию
model-valueЗначение выбора в режиме группыunknown[][]
disabledОтключить ли всю группуbooleanfalse
nameНативное имя формыstring—
sizeРазмер флажков в группе'small' | 'medium' | 'large''medium'

Events ​

СобытиеОписаниеПараметр
update:modelValueЗначение изменилосьvalue: boolean или value[]
changeИзменился выборvalue

Slots ​

СлотОписание
defaultПользовательское содержимое

Типы ​

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

LhCheckboxSize
ts
export type LhCheckboxSize = 'small' | 'medium' | 'large'
LhCheckboxProps
ts
export interface LhCheckboxProps {
  modelValue?: boolean
  value?: unknown
  label?: string
  disabled?: boolean
  indeterminate?: boolean
  name?: string
  size?: LhCheckboxSize
  /** Сокращённые свойства компоновки sx */
  sx?: LhSxProps
}
LhCheckboxGroupProps
ts
export interface LhCheckboxGroupProps {
  modelValue?: unknown[]
  disabled?: boolean
  name?: string
  size?: LhCheckboxSize
}

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