Skip to content

Commit 932cefc

Browse files
authored
fix(ObjectPage): allow rendering headerTitle only in headerContent section (#5043)
If `showTitleInHeaderContent` is set, it should be possible rendering an empty `DynamicPagerHeader` with only the `headerTitle` and `image` inside of it.
1 parent 406e25d commit 932cefc

File tree

1 file changed

+20
-4
lines changed
  • packages/main/src/components/ObjectPage

1 file changed

+20
-4
lines changed

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

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import type { AvatarPropTypes } from '../../webComponents/index.js';
2323
import { Tab, TabContainer } from '../../webComponents/index.js';
2424
import { DynamicPageCssVariables } from '../DynamicPage/DynamicPage.jss.js';
2525
import { DynamicPageAnchorBar } from '../DynamicPageAnchorBar/index.js';
26+
import { DynamicPageHeader } from '../DynamicPageHeader/index.js';
2627
import type { ObjectPageSectionPropTypes } from '../ObjectPageSection/index.js';
2728
import { CollapsedAvatar } from './CollapsedAvatar.js';
2829
import { styles } from './ObjectPage.jss.js';
@@ -200,6 +201,7 @@ const ObjectPage = forwardRef<HTMLDivElement, ObjectPagePropTypes>((props, ref)
200201
const [scrolledHeaderExpanded, setScrolledHeaderExpanded] = useState(false);
201202
const scrollTimeout = useRef(0);
202203
const [spacerBottomHeight, setSpacerBottomHeight] = useState('0px');
204+
const titleInHeader = headerTitle && showTitleInHeaderContent;
203205

204206
const prevInternalSelectedSectionId = useRef(internalSelectedSectionId);
205207
const fireOnSelectedChangedEvent = (targetEvent, index, id, section) => {
@@ -658,22 +660,36 @@ const ObjectPage = forwardRef<HTMLDivElement, ObjectPagePropTypes>((props, ref)
658660
children: (
659661
<div className={classes.headerContainer} data-component-name="ObjectPageHeaderContainer">
660662
{avatar}
661-
{headerContent.props.children && (
663+
{(headerContent.props.children || titleInHeader) && (
662664
<div data-component-name="ObjectPageHeaderContent">
663-
{headerTitle && showTitleInHeaderContent && renderTitleSection(true)}
665+
{titleInHeader && renderTitleSection(true)}
664666
{headerContent.props.children}
665667
</div>
666668
)}
667669
</div>
668670
)
669671
});
672+
} else if (titleInHeader) {
673+
return (
674+
<DynamicPageHeader
675+
topHeaderHeight={topHeaderHeight}
676+
style={headerCollapsed === true ? { position: 'absolute', visibility: 'hidden' } : undefined}
677+
headerPinned={headerPinned || scrolledHeaderExpanded}
678+
ref={componentRefHeaderContent}
679+
>
680+
<div className={classes.headerContainer} data-component-name="ObjectPageHeaderContainer">
681+
{avatar}
682+
<div data-component-name="ObjectPageHeaderContent">{titleInHeader && renderTitleSection(true)}</div>
683+
</div>
684+
</DynamicPageHeader>
685+
);
670686
}
671687
}, [
672688
headerContent,
673689
topHeaderHeight,
674690
headerPinned,
675691
scrolledHeaderExpanded,
676-
showTitleInHeaderContent,
692+
titleInHeader,
677693
avatar,
678694
headerContentRef,
679695
renderTitleSection
@@ -743,7 +759,7 @@ const ObjectPage = forwardRef<HTMLDivElement, ObjectPagePropTypes>((props, ref)
743759
);
744760

745761
const objectPageStyles = { ...style };
746-
if (headerCollapsed === true && headerContent) {
762+
if (headerCollapsed === true && (headerContent || titleInHeader)) {
747763
objectPageStyles[DynamicPageCssVariables.titleFontSize] = ThemingParameters.sapObjectHeader_Title_SnappedFontSize;
748764
}
749765

0 commit comments

Comments
 (0)