ChipChoice.Time

Чип-фильтр с выбором времени. Значение — объект { hours, minutes, seconds }. Секунды отображаются опционально через showSeconds.

Когда использовать

  • Для фильтрации по времени суток в ряду чипов-фильтров.
  • Когда нужно выбрать часы и минуты (опционально секунды) компактным контролом.

Когда не нужен ChipChoice.Time:

  • Для выбора даты или даты со временем — используйте ChipChoice.Date.
  • Для выбора периода дат — используйте ChipChoice.DateRange.

Анатомия

Size (default s)

  • s — для плотных тулбаров и строк фильтров.
  • m — стандартный размер.
  • l — для крупных форм.

Seconds (default false)

Проп showSeconds управляет отображением секунд:

  • false — выбор только часов и минут.
  • true — добавляет поле секунд; поле seconds объекта значения становится значимым.

Текст внутри чипа настраивается через valueRender(value) — функция получает текущий объект { hours, minutes, seconds } и возвращает узел для отображения.

Состояния

  • disabled — отключает взаимодействие.
  • loading — показывает спиннер и блокирует открытие выпадающего списка времени.

Установка

pnpm add @cloud-ru/ds-chips
import { ChipChoice } from '@cloud-ru/ds-chips'

Примеры использования

Выбор времени

Выбор времениЧасы и минуты, контролируемое значение
tsx
import { ChipChoice, ChipChoiceTimeProps } from '@cloud-ru/ds-chips';
import { useState } from 'react';

export function ChoiceTimeBasic() {
  const [value, setValue] = useState<ChipChoiceTimeProps['value']>({
    hours: 9,
    minutes: 30,
  });

  return <ChipChoice.Time label='Время' value={value} onChange={setValue} />;
}

С секундами

С секундамиshowSeconds добавляет поле секунд
tsx
import { ChipChoice, ChipChoiceTimeProps } from '@cloud-ru/ds-chips';
import { useState } from 'react';

export function ChoiceTimeSeconds() {
  const [value, setValue] = useState<ChipChoiceTimeProps['value']>({
    hours: 9,
    minutes: 30,
    seconds: 15,
  });

  return <ChipChoice.Time label='Время' showSeconds value={value} onChange={setValue} />;
}

Props

Types

PropsChipChoiceTimeProps
PropTypeDefaultRequiredDescription
classNamestring—noCSS-класс
data-test-idstring—no
defaultValueTimeValue—noЗначение по-умолчанию для uncontrolled.
disabledboolean—noОтключён
dropDownClassNamestring—no
footerMode"apply-only" | "current-time-and-apply"—noРежим футера. По умолчанию — current-time-and-apply
iconReactNode—noИконка
labelstring—noТекст чипа
loadingboolean—noСостояние загрузки
onChange((value: TimeValue) => void)—noКолбек смены значения
onClearButtonClickMouseEventHandler<HTMLButtonElement>—noКолбек для клика по кнопке очистки
onClickMouseEventHandler<HTMLButtonElement | HTMLDivElement>—noКолбек обработки клика
onOpenChange((isOpen: boolean) => void)—noКолбек отображения компонента
openboolean—noУправляет состоянием показан/не показан
placement"bottom" | "bottom-end" | "bottom-start" | "left" | "left-end" | "left-start" | "right" | "right-end" | "right-start" | "top" | "top-end" | "top-start"—noРасположение выпадающего меню
showSecondsbooleantruenoПоказывать ли секунды
size"l" | "m" | "s"mnoРазмер
tabIndexnumber—noИндекс в порядке фокусировки
truncateVariant"end" | "middle"'middle'noВариант обрезания строки Вариант обрезания значения
valueTimeValue—noВыбранное значение.
valueRender((value?: TimeValue) => ReactNode)—noКолбек формирующий строковое представление выбранного значения

Storybook

Figma

Смотри также