Skip to content

Commit 441f67c

Browse files
committed
OP: fix eslint errors
1 parent d85e290 commit 441f67c

File tree

2 files changed

+36
-26
lines changed

2 files changed

+36
-26
lines changed

packages/main/src/components/ObjectPage/CollapsedAvatar.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ export const CollapsedAvatar = (props: CollapsedAvatarPropTypes) => {
4141
}, [image, imageShapeCircle]);
4242

4343
useEffect(() => {
44+
// Trigger fade-in animation after mount
45+
// eslint-disable-next-line react-hooks/set-state-in-effect
4446
setIsMounted(true);
4547
}, []);
4648

packages/main/src/components/ObjectPage/index.tsx

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,19 @@ const ObjectPage = forwardRef<ObjectPageDomRef, ObjectPagePropTypes>((props, ref
117117
setCurrentTabModeSection(currentSection);
118118
}, [mode, children, internalSelectedSectionId]);
119119

120-
const fireOnSelectedChangedEvent = (targetEvent, index, id, section) => {
121-
if (typeof onSelectedSectionChange === 'function' && targetEvent && prevInternalSelectedSectionId.current !== id) {
122-
onSelectedSectionChange(
120+
const onSelectedSectionChangeRef = useRef(onSelectedSectionChange);
121+
// Keep ref in sync with prop to avoid stale closure in debounced function
122+
onSelectedSectionChangeRef.current = onSelectedSectionChange;
123+
124+
const fireOnSelectedChangedEvent = (targetEvent, index: number | string, id: string, section) => {
125+
if (
126+
typeof onSelectedSectionChangeRef.current === 'function' &&
127+
targetEvent &&
128+
prevInternalSelectedSectionId.current !== id
129+
) {
130+
onSelectedSectionChangeRef.current(
123131
enrichEventWithDetails(targetEvent, {
124-
selectedSectionIndex: parseInt(index, 10),
132+
selectedSectionIndex: typeof index === 'number' ? index : parseInt(index, 10),
125133
selectedSectionId: id,
126134
section,
127135
}),
@@ -151,6 +159,27 @@ const ObjectPage = forwardRef<ObjectPageDomRef, ObjectPagePropTypes>((props, ref
151159
);
152160
const scrollPaddingBlock = `${Math.ceil(12 + topHeaderHeight + TAB_CONTAINER_HEADER_HEIGHT + (!headerCollapsed && headerPinned ? headerContentHeight : 0))}px ${footerArea ? 'calc(var(--_ui5wcr-BarHeight) + 1.25rem)' : 0}`;
153161

162+
const onToggleHeaderContentVisibility = (e) => {
163+
isToggledRef.current = true;
164+
scrollTimeout.current = performance.now() + 500;
165+
setToggledCollapsedHeaderWasVisible(false);
166+
if (!e.detail.visible) {
167+
if (objectPageRef.current.scrollTop <= headerContentHeight) {
168+
setToggledCollapsedHeaderWasVisible(true);
169+
if (firstSectionId === internalSelectedSectionId || mode === ObjectPageMode.IconTabBar) {
170+
objectPageRef.current.scrollTop = 0;
171+
}
172+
}
173+
setHeaderCollapsedInternal(true);
174+
setScrolledHeaderExpanded(false);
175+
} else {
176+
setHeaderCollapsedInternal(false);
177+
if (objectPageRef.current.scrollTop >= headerContentHeight && objectPageRef.current.scrollTop > 0) {
178+
setScrolledHeaderExpanded(true);
179+
}
180+
}
181+
};
182+
154183
useEffect(() => {
155184
if (typeof onToggleHeaderArea === 'function' && isToggledRef.current) {
156185
onToggleHeaderArea(headerCollapsed !== true);
@@ -301,7 +330,7 @@ const ObjectPage = forwardRef<ObjectPageDomRef, ObjectPagePropTypes>((props, ref
301330
scrollToSectionById(selectedSubSectionId, true);
302331
isProgrammaticallyScrolled.current = false;
303332
}
304-
}, [selectedSubSectionId, isProgrammaticallyScrolled.current, sectionSpacer]);
333+
}, [selectedSubSectionId, sectionSpacer]);
305334

306335
useEffect(() => {
307336
if (headerPinnedProp !== undefined) {
@@ -427,27 +456,6 @@ const ObjectPage = forwardRef<ObjectPageDomRef, ObjectPagePropTypes>((props, ref
427456
};
428457
}, [topHeaderHeight, headerContentHeight, currentTabModeSection, children, mode, isHeaderPinnedAndExpanded]);
429458

430-
const onToggleHeaderContentVisibility = (e) => {
431-
isToggledRef.current = true;
432-
scrollTimeout.current = performance.now() + 500;
433-
setToggledCollapsedHeaderWasVisible(false);
434-
if (!e.detail.visible) {
435-
if (objectPageRef.current.scrollTop <= headerContentHeight) {
436-
setToggledCollapsedHeaderWasVisible(true);
437-
if (firstSectionId === internalSelectedSectionId || mode === ObjectPageMode.IconTabBar) {
438-
objectPageRef.current.scrollTop = 0;
439-
}
440-
}
441-
setHeaderCollapsedInternal(true);
442-
setScrolledHeaderExpanded(false);
443-
} else {
444-
setHeaderCollapsedInternal(false);
445-
if (objectPageRef.current.scrollTop >= headerContentHeight && objectPageRef.current.scrollTop > 0) {
446-
setScrolledHeaderExpanded(true);
447-
}
448-
}
449-
};
450-
451459
const { onScroll: _0, selectedSubSectionId: _1, ...propsWithoutOmitted } = rest;
452460

453461
const visibleSectionIds = useRef<Set<string>>(new Set());

0 commit comments

Comments
 (0)