Skip to content

Switch ​

Переключатель с подписями, иконками, индикацией загрузки, асинхронным подтверждением и пользовательскими значениями.

false
vue
<script setup lang="ts">
const value = ref(false)
</script>

<template>
  <VxSwitch v-model="value" />
</template>

With Label ​

vue
<template>
  <VxSwitch v-model="value" label="Enable notifications" />
  <VxSwitch v-model="value" label="Dark mode" description="Switch between themes" />
</template>

Active / Inactive Text ​

vue
<template>
  <VxSwitch active-text="On" inactive-text="Off" />
</template>

Inline Text ​

Текст внутри дорожки.

vue
<template>
  <VxSwitch active-text="ON" inactive-text="OFF" inline-text />
</template>

Icons ​

vue
<template>
  <VxSwitch v-model="value">
    {{ value ? '🌙 Dark' : '☀️ Light' }}
  </VxSwitch>
</template>

Custom Colors ​

vue
<template>
  <VxSwitch active-color="#22c55e" />
  <VxSwitch active-color="#ef4444" inactive-color="#374151" />
</template>

Custom Values ​

Используйте нелогические значения.

v-model: "dark"
v-model: 1 (number)
vue
<template>
  <VxSwitch v-model="theme" active-value="dark" inactive-value="light" />
  <!-- v-model: "dark" or "light" -->

  <VxSwitch v-model="status" :active-value="1" :inactive-value="0" />
  <!-- v-model: 1 or 0 -->
</template>

Sizes ​

xssmdefaultlgxl
vue
<template>
  <VxSwitch size="xs" />
  <VxSwitch size="sm" />
  <VxSwitch />
  <VxSwitch size="lg" />
  <VxSwitch size="xl" />
</template>

Square ​

vue
<template>
  <VxSwitch square />
</template>

Loading ​

vue
<template>
  <VxSwitch v-model="value" loading />
</template>

Before Change (Async) ​

Запрашивайте подтверждение перед переключением.

true
vue
<script setup>
async function beforeChange() {
  return confirm('Are you sure?')
}
</script>

<template>
  <VxSwitch v-model="value" :before-change="beforeChange" />
</template>

Readonly ​

vue
<template>
  <VxSwitch :model-value="true" readonly />
</template>

Disabled ​

vue
<template>
  <VxSwitch disabled />
</template>

Reverse Layout ​

Расположите переключатель справа от подписи.

vue
<template>
  <VxSwitch v-model="value" label="Wi-Fi" description="..." reverse />
</template>

Press Animation ​

Маркер растягивается при нажатии, обеспечивая тактильную обратную связь. Попробуйте нажать и удерживать любой переключатель выше, чтобы увидеть эффект.

Props ​

PropTypeDefaultDescription
modelValueboolean | string | numberfalseЗначение (v-model)
activeValueboolean | string | numbertrueЗначение при включении
inactiveValueboolean | string | numberfalseЗначение при выключении
disabledbooleanfalseОтключить
loadingbooleanfalseСпиннер загрузки
readonlybooleanfalseТолько для чтения
size'xs' | 'sm' | 'default' | 'lg' | 'xl''default'Размер
activeColorstring''Цвет во включённом состоянии
inactiveColorstring''Цвет в выключенном состоянии
activeTextstring''Текст во включённом состоянии
inactiveTextstring''Текст в выключенном состоянии
activeIconComponent—Иконка при включении (внутри маркера)
inactiveIconComponent—Иконка при выключении (внутри маркера)
inlineTextbooleanfalseПоказывать текст внутри дорожки
labelstring''Текст подписи
descriptionstring''Описание под подписью
squarebooleanfalseКвадратная форма
beforeChange() => boolean | Promise<boolean>—Асинхронная проверка перед переключением
requiredbooleanfalseПометить как обязательное для валидации формы
reversebooleanfalseРасположить переключатель справа
trackClassstring | string[] | object—Пользовательский класс(ы) для дорожки
thumbClassstring | string[] | object—Пользовательский класс(ы) для маркера

Events ​

EventTypeDescription
update:modelValue(v)Значение изменено
change(v)Значение изменено

Slots ​

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