import {useDateRangePickerState} from '@common/ui/forms/input-field/date/date-range-picker/use-date-range-picker-state';
import {DialogTrigger} from '@common/ui/overlays/dialog/dialog-trigger';
import {Button} from '@common/ui/buttons/button';
import {DateRangeIcon} from '@common/icons/material/DateRange';
import {FormattedDateTimeRange} from '@common/i18n/formatted-date-time-range';
import {DateRangeDialog} from '@common/ui/forms/input-field/date/date-range-picker/dialog/date-range-dialog';
import React from 'react';
import {DateRangeValue} from '@common/ui/forms/input-field/date/date-range-picker/date-range-value';
import {useIsMobileMediaQuery} from '@common/utils/hooks/is-mobile-media-query';
import {DateFormatPresets} from '@common/i18n/formatted-date';
import {DateRangeComparePresets} from '@common/ui/forms/input-field/date/date-range-picker/dialog/date-range-compare-presets';
import {Granularity} from '@common/ui/forms/input-field/date/date-picker/use-date-picker-state';
const monthDayFormat: Intl.DateTimeFormatOptions = {
month: 'short',
day: '2-digit',
};
interface ReportDataSelectorProps {
value: DateRangeValue;
disabled?: boolean;
onChange: (value: DateRangeValue) => void;
compactOnMobile?: boolean;
enableCompare?: boolean;
granularity?: Granularity;
}
export function ReportDateSelector({
value,
onChange,
disabled,
compactOnMobile = true,
enableCompare = false,
granularity = 'minute',
}: ReportDataSelectorProps) {
const isMobile = useIsMobileMediaQuery();
return (
{
if (value) {
onChange(value);
}
}}
>
}
disabled={disabled}
>
);
}
interface DateSelectorDialogProps {
value: DateRangeValue;
enableCompare: boolean;
granularity: Granularity;
}
function DateSelectorDialog({
value,
enableCompare,
granularity,
}: DateSelectorDialogProps) {
const isMobile = useIsMobileMediaQuery();
const state = useDateRangePickerState({
granularity,
defaultValue: {
start: value.start,
end: value.end,
preset: value.preset,
},
closeDialogOnSelection: false,
});
const compareHasInitialValue = !!value.compareStart && !!value.compareEnd;
const compareState = useDateRangePickerState({
granularity,
defaultValue: compareHasInitialValue
? {
start: value.compareStart,
end: value.compareEnd,
preset: value.comparePreset,
}
: DateRangeComparePresets[0].getRangeValue(state.selectedValue),
});
return (
);
}