From 5b2fcfd9d07df71e584e8956ae1343646acce07a Mon Sep 17 00:00:00 2001 From: Rohan Satkar Date: Fri, 2 Jan 2026 00:24:42 +0530 Subject: [PATCH 1/5] Fix Calendar showing value when controlled state is not updated --- components/lib/calendar/Calendar.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/components/lib/calendar/Calendar.js b/components/lib/calendar/Calendar.js index 4bd32d9a58..9280edc9f9 100644 --- a/components/lib/calendar/Calendar.js +++ b/components/lib/calendar/Calendar.js @@ -69,6 +69,12 @@ export const Calendar = React.memo( const [yearOptions, setYearOptions] = React.useState([]); const previousValue = usePrevious(props.value); + React.useEffect(() => { + if (props.value !== previousValue) { + updateInputfield(props.value); + } + }, [props.value]); + const visible = props.inline || (props.onVisibleChange ? props.visible : overlayVisibleState); const attributeSelector = UniqueComponentId(); const panelId = idState + '_panel'; @@ -1771,8 +1777,6 @@ export const Calendar = React.memo( value: date }); } - - updateInputfield(selectedValues); }; const decrementDecade = () => { From 36dbe3c9d9ecb47030a00ff4ab78e06ec3fa1061 Mon Sep 17 00:00:00 2001 From: Rohan Satkar Date: Fri, 2 Jan 2026 00:30:32 +0530 Subject: [PATCH 2/5] Fix lint issues in Calendar controlled value sync --- components/lib/calendar/Calendar.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/lib/calendar/Calendar.js b/components/lib/calendar/Calendar.js index 9280edc9f9..c3c185cf8b 100644 --- a/components/lib/calendar/Calendar.js +++ b/components/lib/calendar/Calendar.js @@ -69,11 +69,12 @@ export const Calendar = React.memo( const [yearOptions, setYearOptions] = React.useState([]); const previousValue = usePrevious(props.value); + React.useEffect(() => { if (props.value !== previousValue) { updateInputfield(props.value); } - }, [props.value]); + }, [props.value, previousValue, updateInputfield]); const visible = props.inline || (props.onVisibleChange ? props.visible : overlayVisibleState); const attributeSelector = UniqueComponentId(); From 771b673572d4d004aa229ac70f7ad08ccf441eee Mon Sep 17 00:00:00 2001 From: Rohan Satkar Date: Fri, 2 Jan 2026 00:38:26 +0530 Subject: [PATCH 3/5] Fix unstable updateInputfield dependency via ref --- components/lib/calendar/Calendar.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/components/lib/calendar/Calendar.js b/components/lib/calendar/Calendar.js index c3c185cf8b..c1d4b0035a 100644 --- a/components/lib/calendar/Calendar.js +++ b/components/lib/calendar/Calendar.js @@ -62,6 +62,7 @@ export const Calendar = React.memo( const viewChangedWithKeyDown = React.useRef(false); const onChangeRef = React.useRef(null); const isClearClicked = React.useRef(false); + const updateInputfieldRef = React.useRef(null); const [currentView, setCurrentView] = React.useState('date'); const [currentMonth, setCurrentMonth] = React.useState(null); @@ -72,9 +73,9 @@ export const Calendar = React.memo( React.useEffect(() => { if (props.value !== previousValue) { - updateInputfield(props.value); + updateInputfieldRef.current && updateInputfieldRef.current(props.value); } - }, [props.value, previousValue, updateInputfield]); + }, [props.value, previousValue]); const visible = props.inline || (props.onVisibleChange ? props.visible : overlayVisibleState); const attributeSelector = UniqueComponentId(); @@ -2567,6 +2568,10 @@ export const Calendar = React.memo( inputRef.current.value = formattedValue; }; + React.useEffect(() => { + updateInputfieldRef.current = updateInputfield; + }, [updateInputfield]); + const formatDateTime = (date) => { if (props.formatDateTime) { return props.formatDateTime(date); From 82d8257ac620263efe702724c905828650d491f1 Mon Sep 17 00:00:00 2001 From: Rohan Satkar Date: Fri, 2 Jan 2026 00:44:17 +0530 Subject: [PATCH 4/5] Fix: stabilize updateInputfield ref to satisfy hooks lint --- components/lib/calendar/Calendar.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/components/lib/calendar/Calendar.js b/components/lib/calendar/Calendar.js index c1d4b0035a..eb2298c0b7 100644 --- a/components/lib/calendar/Calendar.js +++ b/components/lib/calendar/Calendar.js @@ -2568,9 +2568,7 @@ export const Calendar = React.memo( inputRef.current.value = formattedValue; }; - React.useEffect(() => { - updateInputfieldRef.current = updateInputfield; - }, [updateInputfield]); + updateInputfieldRef.current = updateInputfield; const formatDateTime = (date) => { if (props.formatDateTime) { From 95bc22029793cf7788a82780c2fd5b493ba469f4 Mon Sep 17 00:00:00 2001 From: Melloware Date: Fri, 2 Jan 2026 07:09:54 -0500 Subject: [PATCH 5/5] Refactor useEffect for input field update --- components/lib/calendar/Calendar.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/components/lib/calendar/Calendar.js b/components/lib/calendar/Calendar.js index eb2298c0b7..64c0cbaf2e 100644 --- a/components/lib/calendar/Calendar.js +++ b/components/lib/calendar/Calendar.js @@ -70,13 +70,6 @@ export const Calendar = React.memo( const [yearOptions, setYearOptions] = React.useState([]); const previousValue = usePrevious(props.value); - - React.useEffect(() => { - if (props.value !== previousValue) { - updateInputfieldRef.current && updateInputfieldRef.current(props.value); - } - }, [props.value, previousValue]); - const visible = props.inline || (props.onVisibleChange ? props.visible : overlayVisibleState); const attributeSelector = UniqueComponentId(); const panelId = idState + '_panel'; @@ -3045,6 +3038,12 @@ export const Calendar = React.memo( ObjectUtils.combinedRefs(inputRef, props.inputRef); }, [inputRef, props.inputRef]); + React.useEffect(() => { + if (props.value !== previousValue) { + updateInputfieldRef.current && updateInputfieldRef.current(props.value); + } + }, [props.value, previousValue]); + useMountEffect(() => { let viewDate = getViewDate(props.viewDate);