# Сегментированный переключатель
Сегментированный контрол. Варианты выбора задаются строками (короткая запись) или объектами { value, label, disabled }; block растягивает контрол на всю ширину контейнера.
Сегментированный переключатель
<template>
<div class="demo-col" style="gap: 20px">
<LhSegmented v-model="view" :options="['Список', 'Сетка', 'Альбом']" />
<p class="demo-note">Короткая запись массивом строк: {{ view }}</p>
<LhSegmented v-model="dynasty" :options="options" />
<p class="demo-note">Объектная запись (с элементом disabled): {{ dynasty }}</p>
<LhSegmented v-model="view" :options="['Список', 'Сетка', 'Альбом']" disabled />
<LhSegmented v-model="view" :options="['Список', 'Сетка', 'Альбом']" block />
<p class="demo-note">block растягивает на всю ширину контейнера</p>
</div>
</template>
<script>
export default {
data: () => ({
view: 'Список',
dynasty: 'tang',
options: [
{ value: 'tang', label: 'Тан' },
{ value: 'song', label: 'Сун' },
{ value: 'yuan', label: 'Юань' },
{ value: 'ming', label: 'Мин', disabled: true },
],
}),
}
</script>
# Props
| Проп | Описание | Тип | По умолчанию |
|---|---|---|---|
| v-model | Текущее значение (model: modelValue/input) | string \| number | — |
| options | Варианты выбора (строки или объекты; обязательный) | (string \| number \| { value, label, disabled? })[] | — |
| disabled | Отключение целиком | boolean | false |
| block | Растянуть на всю ширину контейнера | boolean | false |
| sx | Проп sx для быстрого макета | — | — |
# Events
input (v-model, параметр (val)), change (val).
# Доступность
Корневой элемент role="radiogroup", каждый элемент role="radio" + aria-checked; переключение клавишами ←/→.
Copyright © 2024-2026 FengMo WenXue