Компонент DatePicker в Carbon Components Svelte предоставляет расширенные возможности для выбора дат, включая настройку ограничений, диапазонов и правил валидации. Понимание механизмов ограничения и проверки корректности выбранных значений критично для построения надёжных интерфейсов с корректной обработкой дат.
DatePicker поддерживает установку минимальной и максимальной
даты, что позволяет контролировать допустимый диапазон выбора.
Эти свойства задаются через minDate и maxDate
и принимают объекты Date или строки в формате ISO.
<DatePicker
minDate={new Date(2024, 0, 1)}
maxDate={new Date(2024, 11, 31)}
value={selectedDate}
/>
Особенности работы с ограничениями:
DatePicker интегрирован с валидацией формата даты. Основные свойства:
pattern — регулярное выражение для проверки текстового
ввода.invalid — булево свойство, указывающее на некорректное
значение.on:change — событие, позволяющее вручную проверять дату
и устанавливать статус invalid.Пример использования валидации:
let selectedDate = '';
let isInvalid = false;
function validateDate(event) {
const date = new Date(event.detail.value);
isInvalid = isNaN(date.getTime());
}
<DatePicker
value={selectedDate}
invalid={isInvalid}
on:change={validateDate}
/>
Ключевые моменты:
change предоставляет доступ к текущему значению
перед его установкой.minDate,
maxDate и пользовательскую валидацию.Для выбора интервалов используется компонент
DateRangePicker. Он обеспечивает:
Пример:
<DateRangePicker
startDate={rangeStart}
endDate={rangeEnd}
minDate={new Date(2024, 0, 1)}
maxDate={new Date(2024, 11, 31)}
on:change={({ detail }) => {
const start = new Date(detail.startDate);
const end = new Date(detail.endDate);
if ((end - start) / (1000 * 60 * 60 * 24) > 30) {
alert('Диапазон не должен превышать 30 дней');
}
}}
/>
С помощью excludeDates можно отключать выбор
отдельных дат, например, праздников или выходных:
<DatePicker
value={selectedDate}
excludeDates={[
new Date(2024, 0, 1),
new Date(2024, 11, 25)
]}
/>
Особенности:
change.Для сложных требований можно использовать пользовательскую функцию валидации, вызываемую при каждом изменении значения:
function customValidation(date) {
const day = date.getDay();
return day !== 0 && day !== 6; // запрещаем выходные
}
<DatePicker
value={selectedDate}
invalid={selectedDate && !customValidation(new Date(selectedDate))}
on:change={(e) => {
selectedDate = e.detail.value;
isInvalid = !customValidation(new Date(selectedDate));
}}
/>
invalidText позволяет указать
сообщение об ошибке, отображаемое пользователю.light и disabled можно визуально
подсвечивать некорректные или недоступные даты.focus и blur даёт возможность
динамически обновлять статус ошибки.<DatePicker
value={selectedDate}
invalid={isInvalid}
invalidText="Дата недопустима"
on:blur={() => isInvalid = !customValidation(new Date(selectedDate))}
/>
change, blur и
focus для точного контроля состояния.DateRangePicker с логикой
проверки последовательности и максимальной длины интервала.Эти инструменты Carbon Components Svelte позволяют создавать надёжные и гибкие интерфейсы для работы с датами, учитывая все необходимые ограничения и правила валидации.