Updated date range handling.

This commit is contained in:
Mike Cao 2025-06-25 14:27:17 -07:00
parent 6d1603fa28
commit 5ca51b3e8f
19 changed files with 101 additions and 99 deletions

View file

@ -11,6 +11,7 @@ export interface DateFilterProps {
endDate: Date;
onChange?: (value: string) => void;
showAllTime?: boolean;
renderDate?: boolean;
}
export function DateFilter({
@ -18,7 +19,8 @@ export function DateFilter({
startDate,
endDate,
onChange,
showAllTime = false,
showAllTime,
renderDate,
}: DateFilterProps) {
const { formatMessage, labels } = useMessages();
const [showPicker, setShowPicker] = useState(false);
@ -89,7 +91,7 @@ export function DateFilter({
};
const renderValue = ({ defaultChildren }) => {
return value?.startsWith('range') ? (
return value?.startsWith('range') || renderDate ? (
<DateDisplay startDate={startDate} endDate={endDate} />
) : (
defaultChildren

View file

@ -11,7 +11,6 @@ import {
import { isAfter } from 'date-fns';
import { Chevron, Close, Compare } from '@/components/icons';
import { useDateRange, useMessages, useNavigation } from '@/components/hooks';
import { getOffsetDateRange } from '@/lib/date';
import { DateFilter } from './DateFilter';
export function WebsiteDateFilter({
@ -26,13 +25,13 @@ export function WebsiteDateFilter({
showButtons?: boolean;
allowCompare?: boolean;
}) {
const { dateRange, saveDateRange } = useDateRange(websiteId);
const { value, startDate, endDate, offset } = dateRange;
const { dateRange } = useDateRange(websiteId);
const { value, startDate, endDate } = dateRange;
const { formatMessage, labels } = useMessages();
const {
router,
updateParams,
query: { compare },
query: { compare, offset = 0 },
} = useNavigation();
const isAllTime = value === 'all';
const isCustomRange = value.startsWith('range');
@ -40,13 +39,11 @@ export function WebsiteDateFilter({
const disableForward = value === 'all' || isAfter(endDate, new Date());
const handleChange = (date: string) => {
router.push(updateParams({ date }));
saveDateRange(date);
router.push(updateParams({ date, offset: undefined }));
};
const handleIncrement = (increment: number) => {
router.push(updateParams({ offset: offset + increment }));
saveDateRange(getOffsetDateRange(dateRange, increment));
router.push(updateParams({ offset: +offset + increment }));
};
const handleSelect = (compare: any) => {
@ -79,6 +76,7 @@ export function WebsiteDateFilter({
endDate={endDate}
onChange={handleChange}
showAllTime={showAllTime}
renderDate={+offset !== 0}
/>
{!isAllTime && compare && (
<Row alignItems="center" gap>