Компонент TimePicker библиотеки Naive UI предоставляет возможность выбора времени с высокой гибкостью и поддержкой различных форматов. Он позволяет интегрировать удобный интерфейс для выбора часов, минут и секунд, а также поддерживает выбор интервалов времени. TimePicker реализован на основе реактивной системы Vue 3, что обеспечивает синхронизацию состояния и возможность управления через пропсы и события.
Базовое использование компонента выглядит следующим образом:
<template>
<n-time-picker v-model="time" format="HH:mm:ss" />
</template>
<script setup>
import { ref } from 'vue'
import { NTimePicker } from 'naive-ui'
const time = ref('12:00:00')
</script>
В этом примере используется v-model для двусторонней
привязки значения времени, а формат "HH:mm:ss" определяет
отображение часов, минут и секунд.
TimePicker поддерживает кастомные форматы времени
через проп format. Основные шаблоны форматирования:
HH — часы в 24-часовом форматеhh — часы в 12-часовом форматеmm — минутыss — секундыA или a — AM/PMПример использования 12-часового формата с AM/PM:
<n-time-picker v-model="time" format="hh:mm A" />
Для локализации интерфейса применяется объект locale,
который можно передать через провайдер Naive UI или напрямую в
компонент. Это позволяет изменить подписи кнопок, порядок отображения
элементов и форматирование:
import { enUS } from 'naive-ui'
<n-time-picker v-model="time" :locale="enUS" />
Параметр steps позволяет задать интервал изменения для
часов, минут и секунд. Это полезно для ограничения выбора времени
определёнными шагами:
<n-time-picker
v-model="time"
:steps="[1, 15, 30]"
/>
В данном случае:
1 — шаг для часов15 — шаг для минут30 — шаг для секундКомпонент автоматически применяет шаги при прокрутке колёсика времени или при вводе вручную.
Для ограничения выбора используется проп disabled-hours,
disabled-minutes и disabled-seconds. Эти
свойства принимают функции, возвращающие массив запрещённых
значений:
<n-time-picker
v-model="time"
:disabled-hours="() => [0, 1, 2]"
:disabled-minutes="hour => hour === 12 ? [0,1,2] : []"
/>
Пример выше запрещает выбор часов с 0 до 2, а для 12 часов блокирует первые три минуты. Этот подход позволяет гибко управлять допустимым диапазоном времени.
TimePicker поддерживает несколько событий для отслеживания изменений:
onUpdate:value — вызывается при изменении значения
времениonConfirm — срабатывает при подтверждении выбранного
времениonFocus и onBlur — управление состоянием
фокусаПример использования событий:
<n-time-picker
v-model="time"
@onUpdate:value="handleUpdate"
@onConf irm="handleConfirm"
/>
<script setup>
function handleUpdate(newTime) {
console.log('Время изменено:', newTime)
}
function handleConfirm(confirmedTime) {
console.log('Выбранное время подтверждено:', confirmedTime)
}
</script>
Для выбора интервала времени используется компонент
TimePicker в режиме диапазона. Это реализуется через
проп range и массив с двумя значениями:
<n-time-picker
v-model="timeRange"
range
format="HH:mm"
/>
<script setup>
const timeRange = ref(['09:00', '18:00'])
</script>
Поддерживаются все стандартные функции: шаг, формат, локализация и события.
TimePicker поддерживает кастомизацию через пропы
size, placeholder и disabled:
size — размеры: small,
medium, largeplaceholder — текст-заполнительdisabled — блокировка выбораПример:
<n-time-picker
v-model="time"
size="large"
placeholder="Выберите время"
:disabled="false"
/>
Кроме того, для полного контроля визуального представления можно
использовать слот suffix для добавления иконок или
дополнительных элементов управления.
Компонент позволяет вводить время вручную через текстовое поле. Для
этого применяется проп allow-input. Можно комбинировать с
валидацией формата:
<n-time-picker
v-model="time"
allow-input
format="HH:mm"
/>
При вводе некорректного времени компонент автоматически сбрасывает значение или сохраняет последнее корректное.
Часто TimePicker используется совместно с
DatePicker или формами для полной обработки даты и
времени. При этом двусторонняя привязка v-model позволяет
интегрировать компонент в реактивные объекты и управлять состоянием всей
формы централизованно.
v-modelstepsdisabled-hours/minutes/secondsonUpdate:value, onConfirm,
onFocus, onBlurrange)size,
placeholder, слоты)allow-inputЭта гибкость делает TimePicker мощным инструментом для создания форм с временными данными в интерфейсах на Vue 3 с использованием Naive UI.