import { DatePicker } from 'components/ui/DatePicker' import dayjs from 'dayjs' import { useEffect, useState } from 'react' import { Alert, Button, DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from 'ui' import { LOGS_LARGE_DATE_RANGE_DAYS_THRESHOLD, getDefaultHelper } from './Logs.constants' import type { DatetimeHelper } from './Logs.types' import { Clock } from 'lucide-react' interface Props { to: string from: string onChange: React.ComponentProps['onChange'] helpers: DatetimeHelper[] } const DatePickers: React.FC = ({ to, from, onChange, helpers }) => { const defaultHelper = getDefaultHelper(helpers) const [helperValue, setHelperValue] = useState(to || from ? '' : defaultHelper.text) const handleHelperChange = (newValue: string) => { const selectedHelper = helpers.find((h) => h.text === newValue) if (onChange && selectedHelper) { onChange({ to: selectedHelper.calcTo(), from: selectedHelper.calcFrom() }) } } const selectedHelper = helpers.find((helper) => { if (to === helper.calcTo() && from === helper.calcFrom()) { return true } else { return false } }) useEffect(() => { if (selectedHelper && helperValue !== selectedHelper.text) { setHelperValue(selectedHelper.text) } else if (!selectedHelper && (to || from)) { setHelperValue('') } }, [selectedHelper, to, from]) return (
{helpers.map((helper) => ( {helper.text} ))} { setHelperValue('') if (onChange) onChange(value) }} to={!helperValue ? to : undefined} from={!helperValue ? from : undefined} renderFooter={({ to, from }) => { if ( to && from && Math.abs(dayjs(from).diff(dayjs(to), 'day')) > LOGS_LARGE_DATE_RANGE_DAYS_THRESHOLD ) { return ( Large ranges may result in memory errors for big projects. ) } }} />
) } export default DatePickers