|
2 | 2 |
|
3 | 3 | import { debounce, Device, useStylesheet, useSyncRef } from '@ui5/webcomponents-react-base'; |
4 | 4 | import { clsx } from 'clsx'; |
5 | | -import { cloneElement, forwardRef, isValidElement, useEffect, useRef, useState } from 'react'; |
| 5 | +import { cloneElement, forwardRef, isValidElement, useEffect, useMemo, useRef, useState } from 'react'; |
6 | 6 | import { FlexBoxAlignItems } from '../../enums/FlexBoxAlignItems.js'; |
7 | 7 | import { FlexBoxDirection } from '../../enums/FlexBoxDirection.js'; |
8 | 8 | import { FlexBoxJustifyContent } from '../../enums/FlexBoxJustifyContent.js'; |
@@ -40,9 +40,7 @@ const ObjectPageTitle = forwardRef<HTMLDivElement, ObjectPageTitlePropTypes>((pr |
40 | 40 | const [componentRef, dynamicPageTitleRef] = useSyncRef<HTMLDivElement>(ref); |
41 | 41 | const [showNavigationInTopArea, setShowNavigationInTopArea] = useState(undefined); |
42 | 42 | const isMounted = useRef(false); |
43 | | - const [isPhone, setIsPhone] = useState( |
44 | | - Device.getCurrentRange(dynamicPageTitleRef.current?.getBoundingClientRect().width)?.name === 'Phone', |
45 | | - ); |
| 43 | + const [isPhone, setIsPhone] = useState(Device.getCurrentRange().name === 'Phone'); |
46 | 44 | const containerClasses = clsx(classNames.container, isPhone && classNames.phone, className); |
47 | 45 | const toolbarContainerRef = useRef<HTMLDivElement>(null); |
48 | 46 | const _header = !props?.['data-header-content-visible'] && snappedHeader ? snappedHeader : header; |
@@ -84,18 +82,16 @@ const ObjectPageTitle = forwardRef<HTMLDivElement, ObjectPageTitlePropTypes>((pr |
84 | 82 | debouncedObserverFn.cancel(); |
85 | 83 | observer.disconnect(); |
86 | 84 | }; |
87 | | - }, [dynamicPageTitleRef.current, showNavigationInTopArea, isMounted]); |
| 85 | + }, [dynamicPageTitleRef, showNavigationInTopArea, isMounted]); |
88 | 86 |
|
89 | | - const [wcrNavToolbar, setWcrNavToolbar] = useState(null); |
90 | | - useEffect(() => { |
| 87 | + const wcrNavToolbar = useMemo(() => { |
91 | 88 | //@ts-expect-error: private identifier |
92 | 89 | if (isValidElement(navigationBar) && navigationBar?.type?._displayName === 'UI5WCRToolbar') { |
93 | | - setWcrNavToolbar( |
94 | | - cloneElement<any>(navigationBar, { |
95 | | - numberOfAlwaysVisibleItems: Infinity, |
96 | | - }), |
97 | | - ); |
| 90 | + return cloneElement<any>(navigationBar, { |
| 91 | + numberOfAlwaysVisibleItems: Infinity, |
| 92 | + }); |
98 | 93 | } |
| 94 | + return null; |
99 | 95 | }, [navigationBar]); |
100 | 96 |
|
101 | 97 | useEffect(() => { |
|
0 commit comments