@@ -132,6 +132,12 @@ export interface ObjectPagePropTypes extends Omit<CommonProps, 'placeholder'> {
132
132
* Defines if the pin button for the `headerContent` is hidden.
133
133
*/
134
134
hidePinButton ?: boolean ;
135
+ /**
136
+ * Determines whether the user can switch between the expanded/collapsed states of the `ObjectPageHeader` by clicking on the `ObjectPageTitle`.
137
+ *
138
+ * __Note:__ Per default the header is toggleable.
139
+ */
140
+ preserveHeaderStateOnClick ?: boolean ;
135
141
/**
136
142
* Defines internally used accessibility properties/attributes.
137
143
*/
@@ -192,6 +198,7 @@ const ObjectPage = forwardRef<HTMLDivElement, ObjectPagePropTypes>((props, ref)
192
198
headerPinned : headerPinnedProp ,
193
199
headerContent,
194
200
hidePinButton,
201
+ preserveHeaderStateOnClick,
195
202
accessibilityAttributes,
196
203
placeholder,
197
204
onSelectedSectionChange,
@@ -598,13 +605,11 @@ const ObjectPage = forwardRef<HTMLDivElement, ObjectPagePropTypes>((props, ref)
598
605
}
599
606
} , [ isAfterScroll ] ) ;
600
607
601
- const onTitleClick = useCallback (
602
- ( e ) => {
603
- e . stopPropagation ( ) ;
608
+ const onTitleClick = ( e ) => {
609
+ e . stopPropagation ( ) ;
610
+ if ( ! preserveHeaderStateOnClick )
604
611
onToggleHeaderContentVisibility ( enrichEventWithDetails ( e , { visible : headerCollapsed } ) ) ;
605
- } ,
606
- [ onToggleHeaderContentVisibility , headerCollapsed ]
607
- ) ;
612
+ } ;
608
613
609
614
const snappedHeaderInObjPage = headerTitle && headerTitle . props . snappedContent && headerCollapsed === true && ! ! image ;
610
615
@@ -743,7 +748,7 @@ const ObjectPage = forwardRef<HTMLDivElement, ObjectPagePropTypes>((props, ref)
743
748
data-component-name = "ObjectPageTopHeader"
744
749
ref = { topHeaderRef }
745
750
role = { accessibilityAttributes ?. objectPageTopHeader ?. role }
746
- data-not-clickable = { false }
751
+ data-not-clickable = { ! ! preserveHeaderStateOnClick }
747
752
aria-roledescription = { accessibilityAttributes ?. objectPageTopHeader ?. ariaRoledescription ?? 'Object Page header' }
748
753
className = { classNames . header }
749
754
onClick = { onTitleClick }
@@ -760,7 +765,7 @@ const ObjectPage = forwardRef<HTMLDivElement, ObjectPagePropTypes>((props, ref)
760
765
cloneElement ( headerTitle as ReactElement < ObjectPageTitlePropsWithDataAttributes > , {
761
766
className : clsx ( headerTitle ?. props ?. className ) ,
762
767
onToggleHeaderContentVisibility : onTitleClick ,
763
- 'data-not-clickable' : false ,
768
+ 'data-not-clickable' : ! ! preserveHeaderStateOnClick ,
764
769
'data-header-content-visible' : headerContent && headerCollapsed !== true ,
765
770
'data-is-snapped-rendered-outside' : snappedHeaderInObjPage
766
771
} ) }
0 commit comments