TimePickerSelect — это компонент библиотеки Carbon Components Svelte, предназначенный для создания выпадающего списка с выбором интервалов времени. Он часто используется совместно с компонентом TimePicker, позволяя пользователю выбрать часы, минуты или AM/PM, обеспечивая единообразный пользовательский интерфейс и соответствие дизайну Carbon Design System.
Компонент TimePickerSelect является оберткой для
стандартного HTML <select> с дополнительными стилями
и логикой Carbon. Основные свойства включают:
id — уникальный идентификатор компонента.labelText — текст метки, отображаемой над выпадающим
списком.hideLabel — скрывает визуальное отображение метки, но
оставляет ее для доступности (screen readers).disabled — делает компонент неактивным.value — текущее выбранное значение.items — массив объектов, представляющих элементы
списка.invalid — устанавливает состояние ошибки.invalidText — текст ошибки, отображаемый
пользователю.Пример минимальной структуры:
<TimePickerSelect
id="hours-select"
labelText="Часы"
value="12"
{items}
/>
Где items может быть определен как:
let items = [
{ text: '01', value: '01' },
{ text: '02', value: '02' },
{ text: '03', value: '03' },
{ text: '04', value: '04' },
{ text: '05', value: '05' },
];
TimePickerSelect позволяет гибко настраивать диапазон времени:
01 до 12 (12-часовой формат)
или 00 до 23 (24-часовой формат).1, но можно использовать
5 или 15 для удобства."AM" и "PM".Создание диапазона можно автоматизировать через генерацию массива:
function generateHours(format = 12) {
const hours = [];
const max = format === 12 ? 12 : 23;
const min = format === 12 ? 1 : 0;
for (let i = min; i <= max; i++) {
const value = i < 10 ? `0${i}` : `${i}`;
hours.push({ text: value, value });
}
return hours;
}
let hours = generateHours();
Компонент TimePickerSelect чаще всего используется внутри TimePicker:
<TimePicker id="time-picker" labelText="Выберите время">
<TimePickerSelect
id="hours-select"
labelText="Часы"
bind:value={selectedHour}
items={hours}
/>
<TimePickerSelect
id="minutes-select"
labelText="Минуты"
bind:value={selectedMinute}
items={minutes}
/>
</TimePicker>
bind:value позволяет синхронизировать выбранное значение
с переменной Svelte, что облегчает дальнейшую обработку данных и
динамическое обновление интерфейса.
TimePickerSelect поддерживает несколько ключевых состояний:
disabled — блокировка выбора:
<TimePickerSelect disabled items={hours} />invalid — визуальное выделение ошибки:
<TimePickerSelect
invalid
invalidText="Неверное значение"
items={hours}
/>hideLabel — для экономии места, сохраняя доступность:
<TimePickerSelect hideLabel labelText="Часы" items={hours} />Компонент поддерживает стандартное событие change,
которое срабатывает при выборе нового значения:
<TimePickerSelect
id="hours-select"
labelText="Часы"
items={hours}
on:change={(e) => console.log('Выбрано значение:', e.target.value)}
/>
Это позволяет динамически реагировать на изменения времени и интегрировать компонент с логикой приложения.
Carbon Components Svelte использует SCSS-переменные для настройки стилей, однако TimePickerSelect следует общей стилистике Carbon Design System:
Размер шрифта, отступы и высота компонента автоматически подстраиваются под контейнер TimePicker.
Можно изменять состояние фокуса и ошибки через стандартные CSS-классы Carbon:
.bx--select.bx--select__input.bx--select--disabled.bx--select--invalidПример кастомизации цвета текста при ошибке:
.bx--select--invalid .bx--select__input {
color: #da1e28;
}
labelText
даже при скрытой метке (hideLabel).TimePickerSelect является гибким инструментом для построения пользовательских интерфейсов, где требуется выбор времени, и идеально вписывается в Svelte-приложения с Carbon Design System.