# Выбор времени
Селектор времени. Часы / минуты / секунды выбираются колонкой-колесом; если format не содержит ss, колонка секунд автоматически скрывается; arrowControl переключает управление на стрелки в заголовках колонок. Панель монтируется в body (в Vue2 нет Teleport).
Выбор времени
<template>
<div class="demo-col" style="gap: 16px">
<div class="demo-row" style="gap: 12px; flex-wrap: wrap">
<LhTimePicker v-model="t1" format="HH:mm:ss" placeholder="Выберите время" clearable />
<LhTimePicker v-model="t2" format="HH:mm" placeholder="Часы-минуты (без секунд)" size="small" />
<LhTimePicker v-model="t3" format="HH:mm:ss" arrow-control placeholder="Управление стрелками" size="large" />
<LhTimePicker v-model="t1" format="HH:mm:ss" disabled placeholder="Отключено" />
<LhTimePicker v-model="t1" format="HH:mm:ss" readonly placeholder="Только для чтения" />
</div>
<LhTimePicker
v-model="t4"
format="HH:mm:ss"
:step-hour="2"
:step-minute="15"
:step-second="30"
placeholder="Шаг: час 2 / мин 15 / сек 30"
/>
<p class="demo-note">Часы-минуты-секунды: {{ fmt(t1) }} | Часы-минуты: {{ fmt(t2) }} | Стрелки: {{ fmt(t3) }} | Шаг: {{ fmt(t4) }}</p>
</div>
</template>
<script>
export default {
data: () => ({
t1: new Date(2026, 9, 3, 14, 30, 0),
t2: null,
t3: null,
t4: null,
}),
methods: {
fmt(v) {
if (!(v instanceof Date)) return '(не выбрано)'
const p = (n) => String(n).padStart(2, '0')
return p(v.getHours()) + ':' + p(v.getMinutes()) + ':' + p(v.getSeconds())
},
},
}
</script>
# Props
| Проп | Описание | Тип | По умолчанию |
|---|---|---|---|
| v-model | Текущий выбор | Date \| null | — |
| mode | Режим (зарезервирован для связи с датой; сейчас рендерится колонками времени) | LhTimePickerMode | — |
| size | Размер | 'small' \| 'medium' \| 'large' | 'medium' |
| disabled / clearable / readonly | Отключено / очищаемое / только для чтения | boolean | false |
| placeholder | Плейсхолдер | string | Языковой пакет |
| format | Формат отображения (HH:mm:ss, HH:mm); без ss колонка секунд скрывается | string | 'HH:mm:ss' |
| arrowControl | Управление стрелками (кнопки вверх / вниз в заголовке колонки) | boolean | false |
| stepHour / stepMinute / stepSecond | Шаг часов / минут / секунд | number | 1 |
| teleportTarget | Целевой элемент монтирования всплывающего слоя | string \| HTMLElement | 'body' |
| sx | Компактная раскладка через sx | — | — |
# Events
input (v-model), change (value)
# Доступность
Каждая колонка — role="spinbutton" + aria-valuenow/min/max; оба варианта взаимодействия (колесо и стрелки) поддерживают клавиши со стрелками;
триггер — role="combobox" + aria-expanded, кнопка подтверждения на панели достижима фокусом.
Copyright © 2024-2026 FengMo WenXue