From b6ac36f2495bf2d22fadc28656472c538c21d178 Mon Sep 17 00:00:00 2001 From: Bohdan Date: Thu, 1 May 2025 14:14:42 +0300 Subject: [PATCH 1/2] Refactor ExpandableCalendar header layout measurement logic - Introduced a ref to conditionally measure header height only when necessary. - Updated onHeaderLayout to prevent unnecessary state updates. - Adjusted onLayout prop for Animated.View to utilize the new measurement logic. --- src/expandableCalendar/index.tsx | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/expandableCalendar/index.tsx b/src/expandableCalendar/index.tsx index f42ef6804..a40864b65 100644 --- a/src/expandableCalendar/index.tsx +++ b/src/expandableCalendar/index.tsx @@ -143,9 +143,21 @@ const ExpandableCalendar = forwardRef { - setHeaderHeight(height || DEFAULT_HEADER_HEIGHT); - }, []); + + const shouldMeasureHeader = useRef(true); + const onHeaderLayout = useCallback( + ({ + nativeEvent: { + layout: {height} + } + }: LayoutChangeEvent) => { + if (height !== headerHeight) { + setHeaderHeight(height || DEFAULT_HEADER_HEIGHT); + } + shouldMeasureHeader.current = false; + }, + [headerHeight] + ); /** Date */ @@ -637,7 +649,13 @@ const ExpandableCalendar = forwardRef ) : ( - + {renderCalendarList()} {renderWeekCalendar()} {!hideKnob && renderKnob()} From 696e95f8bc9bfc360dfded0d15de879b32e2a2a5 Mon Sep 17 00:00:00 2001 From: Bohdan Date: Wed, 27 Aug 2025 18:30:14 +0300 Subject: [PATCH 2/2] ExpandableCalendar header crop fix --- src/expandableCalendar/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/expandableCalendar/index.tsx b/src/expandableCalendar/index.tsx index a40864b65..c1c93f935 100644 --- a/src/expandableCalendar/index.tsx +++ b/src/expandableCalendar/index.tsx @@ -151,8 +151,9 @@ const ExpandableCalendar = forwardRef { + const _height = (height || DEFAULT_HEADER_HEIGHT) + 5; if (height !== headerHeight) { - setHeaderHeight(height || DEFAULT_HEADER_HEIGHT); + setHeaderHeight(_height); } shouldMeasureHeader.current = false; },