@@ -8,6 +8,7 @@ import { scroller } from 'react-scroll';
88import { Fiori3CommonProps } from '../../interfaces/Fiori3CommonProps' ;
99import styles from './ObjectPage.jss' ;
1010import { ObjectPageAnchor } from './ObjectPageAnchor' ;
11+ import { Button } from '../../lib/Button' ;
1112
1213const objectPageContentStyles = ( { parameters } : JSSTheme ) => ( {
1314 sectionsContainer : {
@@ -53,6 +54,7 @@ export interface ObjectPagePropTypes extends Fiori3CommonProps {
5354 mode ?: ObjectPageMode ;
5455 selectedSectionId ?: string ;
5556 onSelectedSectionChanged ?: ( event : Event ) => void ;
57+ showHideHeaderButton ?: boolean ;
5658}
5759
5860interface ObjectPageInternalProps extends ObjectPagePropTypes , ClassProps { }
@@ -62,6 +64,7 @@ interface ObjectPageState {
6264 prevProps : {
6365 selectedSectionId : string ;
6466 } ;
67+ showHeader : boolean ;
6568}
6669
6770@withStyles ( styles )
@@ -74,7 +77,8 @@ export class ObjectPage extends PureComponent<ObjectPagePropTypes, ObjectPageSta
7477 headerActions : [ ] ,
7578 renderHeaderContent : null ,
7679 mode : ObjectPageMode . Default ,
77- onSelectedSectionChanged : ( ) => { }
80+ onSelectedSectionChanged : ( ) => { } ,
81+ showHideHeaderButton : false
7882 } ;
7983
8084 private objectPage : HTMLElement ;
@@ -100,7 +104,8 @@ export class ObjectPage extends PureComponent<ObjectPagePropTypes, ObjectPageSta
100104 selectedSectionIndex : 0 ,
101105 prevProps : {
102106 selectedSectionId : ''
103- }
107+ } ,
108+ showHeader : true
104109 } ;
105110
106111 private getFillerDivDomRef = ( ref ) => {
@@ -240,18 +245,31 @@ export class ObjectPage extends PureComponent<ObjectPagePropTypes, ObjectPageSta
240245 </ span >
241246 </ header >
242247 { /* Header Content */ }
243- < div className = { classes . headerContent } >
244- { image && (
245- < span
246- className = { classes . headerImage }
247- style = { { borderRadius : imageShapeCircle ? '50%' : 0 , overflow : 'hidden' } }
248- >
249- < img src = { image } style = { { width : '100%' , height : '100%' } } />
250- </ span >
248+ < div className = { classes . headerContentWrapper } >
249+ { this . state . showHeader && (
250+ < div className = { classes . headerContent } >
251+ { image && (
252+ < span
253+ className = { classes . headerImage }
254+ style = { { borderRadius : imageShapeCircle ? '50%' : 0 , overflow : 'hidden' } }
255+ >
256+ < img src = { image } style = { { width : '100%' , height : '100%' } } />
257+ </ span >
258+ ) }
259+ { renderHeaderContent && < span className = { classes . headerCustomContent } > { renderHeaderContent ( ) } </ span > }
260+ </ div >
251261 ) }
252- { renderHeaderContent && < span className = { classes . headerCustomContent } > { renderHeaderContent ( ) } </ span > }
253- </ div >
254262
263+ < div className = { classes . hideHeaderContent } >
264+ { this . props . showHideHeaderButton && (
265+ < Button
266+ style = { { position : 'absolute' , '--_ui5_button_compact_height' : '1rem' , lineHeight : '1.25rem' } }
267+ icon = { this . state . showHeader ? 'sap-icon://navigation-up-arrow' : 'sap-icon://navigation-down-arrow' }
268+ onPress = { this . changeHeader }
269+ />
270+ ) }
271+ </ div >
272+ </ div >
255273 < section className = { classes . anchorBar } role = "navigation" >
256274 { Children . map ( children , ( section , index ) => (
257275 < ObjectPageAnchor
@@ -267,12 +285,15 @@ export class ObjectPage extends PureComponent<ObjectPagePropTypes, ObjectPageSta
267285 ) ) }
268286 </ section >
269287 </ header >
270-
271288 < ObjectPageContent getFillerDivDomRef = { this . getFillerDivDomRef } > { content } </ ObjectPageContent >
272289 </ div >
273290 ) ;
274291 }
275292
293+ private changeHeader = ( ) => {
294+ this . setState ( { showHeader : ! this . state . showHeader } ) ;
295+ } ;
296+
276297 private handleOnSubSectionSelected = ( index ) => ( e ) => {
277298 if ( this . props . mode === ObjectPageMode . IconTabBar ) {
278299 const scrollId = e . getParameter ( 'props' ) . id ;
0 commit comments