DatePicker — это компонент для выбора даты и времени, предоставляемый библиотекой Naive UI. Он поддерживает одиночный выбор даты, выбор диапазона, а также настройку формата отображения и локализации.
import { createApp } from 'vue'
import { NDatePicker } from 'naive-ui'
const app = createApp({
template: `<n-date-picker v-model:value="date" />`,
data() {
return {
date: null
}
}
})
app.mount('#app')
В этом примере v-model:value связывает выбранное
значение даты с реактивным состоянием date. Если
пользователь выбирает дату, переменная автоматически обновляется.
Naive UI предоставляет несколько вариантов компонента DatePicker:
Пример использования диапазона:
<n-date-picker
type="daterange"
v-model:value="range"
:placeholder="['Начало', 'Конец']"
/>
Здесь placeholder позволяет задать отдельные подсказки
для начала и конца диапазона.
Для отображения даты в нужном формате используется свойство
format. По умолчанию используется формат
YYYY-MM-DD.
<n-date-picker
v-model:value="date"
format="DD/MM/YYYY"
/>
Для поддержки локализации используется свойство locale,
которое принимает объект локализации. Naive UI поддерживает локали через
импорт из naive-ui/es/locales.
import ruRU from 'naive-ui/es/locales/ru-RU'
<n-date-picker
v-model:value="date"
:locale="ruRU"
/>
С помощью свойств disabled-date и
disabled-time можно ограничить выбор определённых дат или
времён.
<n-date-picker
v-model:value="date"
:disabled-date="date => date < new Date()"
/>
В этом примере нельзя выбрать дату раньше текущей.
Для ограничения времени:
<n-date-picker
type="datetime"
v-model:value="dateTime"
:disabled-time="time => time.getHours() < 9 || time.getHours() > 18"
/>
Свойство render-label позволяет изменить отображение
выбранной даты. Это функция, которая получает объект даты и возвращает
строку:
<n-date-picker
v-model:value="date"
:render-label="date => date ? `Выбрано: ${date.toLocaleDateString()}` : 'Выберите дату'"
/>
Компонент поддерживает несколько событий для отслеживания действий пользователя:
on-update:value – вызывается при изменении
значения.on-open / on-close – открытие и закрытие
календаря.on-confirm – подтверждение выбора (для диапазонов или
datetime).Пример:
<n-date-picker
v-model:value="date"
@on-update:value="handleChange"
@on-open="handleOpen"
@on-close="handleClose"
/>
methods: {
handleChange(value) {
console.log('Выбрана дата:', value)
},
handleOpen() {
console.log('Календарь открыт')
},
handleClose() {
console.log('Календарь закрыт')
}
}
DatePicker поддерживает разные размеры через свойство
size:
smallmedium (по умолчанию)large<n-date-picker v-model:value="date" size="large" />
Также можно кастомизировать иконки и кнопки с помощью слотов
prefix, suffix и trigger.
Если нужно выбрать дату с временем, используется
type="datetime":
<n-date-picker
type="datetime"
v-model:value="dateTime"
format="YYYY-MM-DD HH:mm"
/>
Можно ограничить интервалы минут или часов через
time-picker-props:
<n-date-picker
type="datetime"
v-model:value="dateTime"
:time-picker-props="{ stepHour: 1, stepMinute: 15 }"
/>
Для диапазона дат можно:
shortcuts или проверку
disabled-date.<n-date-picker
type="daterange"
v-model:value="range"
:disabled-date="date => date < new Date()"
/>
Компонент DatePicker в Naive UI сочетает:
v-modelЭти возможности делают его гибким инструментом для реализации любой задачи, связанной с выбором даты и времени в интерфейсах на Vue и Naive UI.