DatePicker — это компонент для выбора даты, реализующий удобный календарь и текстовое поле ввода даты. В Svelte он интегрируется через библиотеку Carbon Components Svelte, обеспечивая реактивность и полный доступ к событиям.
Для начала необходимо установить библиотеку через npm:
npm install carbon-components-svelte carbon-components
Импорт базового компонента и стилей:
<script>
import 'carbon-components-svelte/css/g10.css';
import { DatePicker, DatePickerInput } from 'carbon-components-svelte';
import { writable } from 'svelte/store';
let selectedDate = writable('');
</script>
Компонент DatePicker состоит из двух ключевых элементов:
Пример базовой структуры:
<DatePicker bind:value={selectedDate} dateFormat="m/d/Y">
<DatePickerInput
placeholder="Выберите дату"
labelText="Дата"
/>
</DatePicker>
Пояснения к свойствам:
bind:value — связывает выбранную дату с переменной
Svelte, обеспечивает реактивное обновление.dateFormat — задаёт формат даты. Поддерживаются строки
в стиле m/d/Y, d-m-Y и другие.placeholder — текст, отображаемый до выбора даты.labelText — текст метки для поля ввода.DatePicker позволяет ограничивать допустимые значения через свойства:
<DatePicker
bind:value={selectedDate}
minDate="2026-03-01"
maxDate="2026-12-31"
dateFormat="Y-m-d"
>
<DatePickerInput labelText="Дата события" placeholder="ГГГГ-ММ-ДД" />
</DatePicker>
minDate и maxDate задают диапазон
допустимых дат.Для выбора диапазона используется свойство
type="range":
<DatePicker type="range" bind:value={dateRange} dateFormat="Y-m-d">
<DatePickerInput labelText="Начало" placeholder="Начальная дата" />
<DatePickerInput labelText="Конец" placeholder="Конечная дата" />
</DatePicker>
bind:value связывается с массивом
[startDate, endDate].DatePicker поддерживает события изменения значения:
<DatePicker bind:value={selectedDate} on:change={handleChange}>
<DatePickerInput labelText="Дата" placeholder="Выберите дату" />
</DatePicker>
<script>
function handleChange(event) {
console.log('Выбранная дата:', event.detail.value);
}
</script>
on:change срабатывает при выборе новой даты.event.detail.value хранится текущее
значение компонента.Carbon Components Svelte позволяет менять визуальные темы через CSS классы:
light и dark темы подключаются через стили
библиотеки.<DatePicker class="custom-datepicker" bind:value={selectedDate}>
<DatePickerInput labelText="Дата" />
</DatePicker>
<style>
.custom-datepicker {
--cds-background: #f4f4f4;
--cds-border-color: #0f62fe;
}
</style>
DatePicker поддерживает различные форматы и локали:
<DatePicker bind:value={selectedDate} dateFormat="d/m/Y" locale="ru">
<DatePickerInput labelText="Дата" />
</DatePicker>
locale — задаёт язык календаря и форматирование.dateFormat позволяет точно контролировать вывод даты в
поле ввода.DatePicker легко интегрируется с формами Svelte и библиотеками валидации:
<form on:submit|preventDefault={submitForm}>
<DatePicker bind:value={selectedDate} required>
<DatePickerInput labelText="Дата рождения" />
</DatePicker>
<button type="submit">Отправить</button>
</form>
<script>
function submitForm() {
console.log('Дата отправлена:', selectedDate);
}
</script>
required делает поле обязательным для
заполнения.bind:value обеспечивает реактивное получение
значения при отправке формы.DatePicker в Carbon Components Svelte представляет собой гибкий инструмент для работы с датами, обеспечивая полный контроль над форматами, диапазонами и событиями, а также позволяет легко интегрироваться с формами и другими компонентами Svelte.