Skip to content

Instantly share code, notes, and snippets.

@leefsmp
Last active January 18, 2017 08:46
Show Gist options
  • Save leefsmp/0dc99af3505d259506cdec74a4c18bc7 to your computer and use it in GitHub Desktop.
Save leefsmp/0dc99af3505d259506cdec74a4c18bc7 to your computer and use it in GitHub Desktop.
Re-Flex Demo advanced
/////////////////////////////////////////////////////////
// Re-Flex advanced multi-nested resizable layout
// with event listeners
//
/////////////////////////////////////////////////////////
class ReflexAdvancedDemo
extends React.Component {
constructor () {
super()
this.resizeProps = {
onStopResize: this.onStopResize.bind(this),
onResize: this.onResize.bind(this)
}
}
onResize (e) {
if (e.domElement) {
e.domElement.classList.add('resizing')
}
}
onStopResize (e) {
if (e.domElement) {
e.domElement.classList.remove('resizing')
}
}
render () {
return (
<ReflexContainer orientation="horizontal">
<ReflexElement className="header" flex={0.1}>
<div className="pane-content">
<label>
Header (fixed)
</label>
</div>
</ReflexElement>
<ReflexElement>
<ReflexContainer orientation="vertical">
<ReflexElement {...this.resizeProps}>
<ReflexContainer orientation="horizontal">
<ReflexElement {...this.resizeProps}>
<div className="pane-content">
<div style={{height: '30%'}}/>
<label style={{height: '0%'}}>
Left Pane <br/> Top
<br/>
(splitter propagation)
</label>
</div>
</ReflexElement>
<ReflexSplitter propagate={true} {...this.resizeProps}/>
<ReflexElement {...this.resizeProps}>
<div className="pane-content">
<div style={{height: '30%'}}/>
<label style={{height: '0%'}}>
Left Pane <br/> Middle
<br/>
(splitter propagation)
</label>
</div>
</ReflexElement>
<ReflexSplitter propagate={true} {...this.resizeProps}/>
<ReflexElement {...this.resizeProps}>
<div className="pane-content">
<div style={{height: '30%'}}/>
<label style={{height: '0%'}}>
Left Pane <br/> Bottom
<br/>
(splitter propagation)
</label>
</div>
</ReflexElement>
</ReflexContainer>
</ReflexElement>
<ReflexSplitter {...this.resizeProps}/>
<ReflexElement flex={0.5} {...this.resizeProps}>
<div className="pane-content">
<label>
Middle Pane
</label>
</div>
</ReflexElement>
<ReflexSplitter{...this.resizeProps}/>
<ReflexElement {...this.resizeProps}>
<ReflexContainer orientation="horizontal">
<ReflexElement {...this.resizeProps}>
<div>
<ReflexContainer orientation="vertical">
<ReflexElement {...this.resizeProps}>
<div className="pane-content">
<label>
Right Pane <br/> Upper-Left
</label>
</div>
</ReflexElement>
<ReflexSplitter/>
<ReflexElement {...this.resizeProps}>
<div className="pane-content">
<label>
Right Pane <br/> Upper-Right
</label>
</div>
</ReflexElement>
</ReflexContainer>
</div>
</ReflexElement>
<ReflexSplitter {...this.resizeProps}/>
<ReflexElement {...this.resizeProps}>
<div className="pane-content">
<label>
Right Pane <br/> Bottom
</label>
</div>
</ReflexElement>
</ReflexContainer>
</ReflexElement>
</ReflexContainer>
</ReflexElement>
<ReflexElement className="footer" flex={0.1}>
<div className="pane-content">
<label>
Footer (fixed)
</label>
</div>
</ReflexElement>
</ReflexContainer>
)
}
}
ReactDOM.render(<ReflexAdvancedDemo/>,
document.getElementById('demo-advanced'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment