From d070acf64988f4cd431aac174626457c15048666 Mon Sep 17 00:00:00 2001 From: Michael F Date: Tue, 28 Nov 2023 15:15:51 +0100 Subject: [PATCH] fix: avoid setting dateInView when value stays the same (#103) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: avoid setting dateInView when value stays the same * inline comparison --------- Co-authored-by: Michael Förg --- src/components/datePicker.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/datePicker.tsx b/src/components/datePicker.tsx index 84c6cac..14e3417 100644 --- a/src/components/datePicker.tsx +++ b/src/components/datePicker.tsx @@ -203,6 +203,16 @@ export function dateClamp(date: Date, min?: Date, max?: Date) { return date; } +function getValueForComparison(value?: Date | DateRange | null) { + if (!value) { + return value; + } + if (value instanceof Date) { + return value.getTime(); + } + return `${value.min?.getTime()}-${value.max?.getTime()}`; +} + export function DatePicker(props: DatePickerProps) { const context = useContext(DatePickerContext); @@ -366,7 +376,7 @@ export function DatePicker(props: DatePickerProps) { setDateInView( value === null ? defaultDateInView ?? mountTime : value instanceof Date ? value : value.max, ), - [value, defaultDateInView, mountTime], + [getValueForComparison(value), getValueForComparison(defaultDateInView), mountTime], ); useEffect(() => {