import { Button } from 'antd'; import React from 'react'; import DateRangePicker from '@wojtekmaj/react-daterange-picker'; import '@wojtekmaj/react-daterange-picker/dist/DateRangePicker.css'; import './ReactCalendar.css'; import { TimePicker } from 'App/components/shared/DatePicker'; import { CUSTOM_RANGE, DATE_RANGE_VALUES, dateRangeValues, getDateRangeFromValue, getDateRangeLabel, } from 'App/dateRange'; import { DateTime, Interval } from 'luxon'; import styles from './dateRangePopup.module.css'; function DateRangePopup(props: any) { const [range, setRange] = React.useState( props.selectedDateRange || Interval.fromDateTimes(DateTime.now(), DateTime.now()) ); const [value, setValue] = React.useState(null); const selectCustomRange = (range) => { let newRange; if (props.singleDay) { newRange = Interval.fromDateTimes( DateTime.fromJSDate(range), DateTime.fromJSDate(range) ); } else { newRange = Interval.fromDateTimes( DateTime.fromJSDate(range[0]), DateTime.fromJSDate(range[1]) ); } setRange(newRange); setValue(CUSTOM_RANGE); }; const setRangeTimeStart = (value: DateTime) => { if (!range.end || value > range.end) { return; } setRange(Interval.fromDateTimes(value, range.end)); setValue(CUSTOM_RANGE); }; const setRangeTimeEnd = (value: DateTime) => { if (!range.start || (value && value < range.start)) { return; } setRange(Interval.fromDateTimes(range.start, value)); setValue(CUSTOM_RANGE); }; const selectValue = (value: string) => { const range = getDateRangeFromValue(value); setRange(range); setValue(value); }; const onApply = () => { props.onApply(range, value); }; const { onCancel } = props; const isUSLocale = navigator.language === 'en-US' || navigator.language.startsWith('en-US'); const rangeForDisplay = props.singleDay ? range.start.ts : [range.start!.startOf('day').ts, range.end!.startOf('day').ts]; return (
{dateRangeValues .filter( (value) => value !== CUSTOM_RANGE && value !== DATE_RANGE_VALUES.LAST_30_MINUTES ) .map((value) => (
selectValue(value)}> {getDateRangeLabel(value)}
))}
onChange // numberOfCalendars={2} // selectionType="range" // maximumDate={new Date()} // singleDateRange={true} onChange={selectCustomRange} shouldCloseCalendar={() => false} isOpen maxDate={new Date()} value={rangeForDisplay} calendarProps={{ tileDisabled: props.isTileDisabled, selectRange: props.singleDay ? false : true, }} />
{props.singleDay ? (
Compare from {range.start.toFormat('MMM dd, yyyy')}
) : (
{range.start.toFormat(isUSLocale ? 'MM/dd' : 'dd/MM')} {range.end.toFormat(isUSLocale ? 'MM/dd' : 'dd/MM')}
)}
); } export default DateRangePopup;