import React from 'react'; import styled from 'styled-components'; import type { JSX } from 'react'; import type { FilterProps } from '@redocly/theme/core/types'; import { FilterOptions } from '@redocly/theme/components/Filter/FilterOptions'; import { FilterTitle } from '@redocly/theme/components/Filter/FilterTitle'; import { DatePicker } from '@redocly/theme/components/DatePicker/DatePicker'; import { useThemeHooks } from '@redocly/theme/core/hooks'; import { formatDateWithoutTimeZone } from '@redocly/theme/core/utils'; export function FilterDateRange({ filter }: FilterProps): JSX.Element { const { useTranslate } = useThemeHooks(); const { translate } = useTranslate(); const from = filter.selectedOptions.from ? new Date(filter.selectedOptions.from) : undefined; const to = filter.selectedOptions.to ? new Date(filter.selectedOptions.to) : undefined; return ( {translate(filter.titleTranslationKey, filter.title)} {translate('filter.dateRange.from', 'From:')} { if (Array.isArray(from)) return; filter.selectOption({ ...filter.selectedOptions, from: formatDateWithoutTimeZone(from), to: formatDateWithoutTimeZone(to), }); }} /> {translate('filter.dateRange.to', 'To:')} { if (Array.isArray(to)) return; filter.selectOption({ ...filter.selectedOptions, from: formatDateWithoutTimeZone(from), to: formatDateWithoutTimeZone(to), }); }} /> ); } const DateRangeWrapper = styled.div` display: flex; flex-direction: column; gap: var(--filter-options-gap); `; const DateRangeRow = styled.div` color: var(--filter-date-picker-color); display: flex; flex-direction: row; align-items: center; gap: var(--filter-date-picker-gap); > span { width: var(--filter-date-picker-width); color: var(--filter-option-label-color); } `; const FilterDateRangeWrapper = styled.div` display: flex; flex-direction: column; gap: var(--spacing-xxs); `;