ChipChoice.Date

Чип-фильтр с выбором даты. Открывает календарь в поповере, значение — объект Date. Поддерживает выбор даты, даты со временем, месяца и года через проп mode.

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

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

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

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

Анатомия

Size (default s)

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

Mode

Режим выбора задаётся пропом mode (default date):

  • date — выбор конкретного дня.
  • date-time — выбор дня и времени; вместе с ним доступен showSeconds для отображения секунд.
  • month — выбор месяца.
  • year — выбор года.

Текст внутри чипа настраивается через valueRender(value) — функция получает текущий Date и возвращает узел для отображения.

Состояния

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

Установка

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

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

Выбор даты

Выбор датыКонтролируемое значение через value и onChange
tsx
import { ChipChoice } from '@cloud-ru/ds-chips';
import { useState } from 'react';

export function ChoiceDateBasic() {
  const [value, setValue] = useState<Date | undefined>(new Date(2024, 0, 15));

  return <ChipChoice.Date label='Дата' value={value} onChange={setValue} />;
}

Дата и время

Дата и времяmode='date-time' с отображением секунд
tsx
import { ChipChoice } from '@cloud-ru/ds-chips';
import { useState } from 'react';

export function ChoiceDateTime() {
  const [value, setValue] = useState<Date | undefined>(new Date(2024, 0, 15, 9, 30, 0));

  return <ChipChoice.Date label='Дата и время' mode='date-time' showSeconds value={value} onChange={setValue} />;
}

Выбор месяца

Выбор месяцаmode='month'
tsx
import { ChipChoice } from '@cloud-ru/ds-chips';
import { useState } from 'react';

export function ChoiceDateMonth() {
  const [value, setValue] = useState<Date | undefined>(new Date(2024, 0, 1));

  return <ChipChoice.Date label='Месяц' mode='month' value={value} onChange={setValue} />;
}

Props

Types

PropsChipChoiceDateProps
PropTypeDefaultRequiredDescription
buildCalendarCellPropsBuildCellPropsFunctionnoКолбек свойств для управления ячейками календаря
classNamestringnoCSS-класс
data-test-idstringno
defaultValueDatenoЗначение компонента по-умолчанию
disabledbooleannoОтключён
dropDownClassNamestringno
iconReactNodenoИконка
labelstringnoТекст чипа
loadingbooleannoСостояние загрузки
mode"date" | "date-time" | "month" | "year"datenoРежим выбора даты Режим выбора даты и времени Режим выбора даты без времени
onChange((value: Date) => void)noКолбек смены значения
onClearButtonClickMouseEventHandler<HTMLButtonElement>noКолбек для клика по кнопке очистки
onClickMouseEventHandler<HTMLButtonElement | HTMLDivElement>noКолбек обработки клика
onOpenChange((isOpen: boolean) => void)noКолбек отображения компонента
openbooleannoУправляет состоянием показан/не показан
placement"bottom" | "bottom-end" | "bottom-start" | "left" | "left-end" | "left-start" | "right" | "right-end" | "right-start" | "top" | "top-end" | "top-start"noРасположение выпадающего меню
showSecondsbooleannoПоказывать секунды в выборе и отображении времени
size"l" | "m" | "s"mnoРазмер
tabIndexnumbernoИндекс в порядке фокусировки
truncateVariant"end" | "middle"'middle'noВариант обрезания строки Вариант обрезания значения
valueDatenoЗначение компонента
valueRender((value?: Date) => ReactNode)noКолбек формирующий строковое представление выбранного значения
widthStrategy"auto" | "eq" | "gte"gtenoСтратегия управления шириной контейнера поповера

Storybook

Figma

Смотри также