r-layout
Version:
Layout made simple. Screw CSS!
104 lines (96 loc) • 4.08 kB
JSX
window.__debugLayout = false;
var React = require('react/addons'),
{Layout, resizeMixin, Spacer} = require('../src/index'),
Simple = require('./Simple'),
LongChild = require('./LongChild'),
BasicLayoutTest = require('./BasicLayoutTest');
var RefCopyTest = require('./debugTests/RefCopyTest'),
CenterSpacerSize = require('./debugTests/CenterSpacerSizeTest'),
MatchChildTest = require('./debugTests/MatchChildTest'),
PerformanceTest = require('./debugTests/PerformanceTest'),
PassPropsTest = require('./debugTests/passPropsToInnerContainer'),
AbsolutelyFreeTest = require('./debugTests/AbsolutelyFreeTest');
var ShowcaseContainer = React.createClass({
render() {
return (
<Layout {...this.props}>
<Layout size="50px">
<button onClick={() => this.props.switchView("root")}>Back</button>
</Layout>
<Layout>
{this.props.show}
</Layout>
</Layout>
);
}
});
var Root = React.createClass({
render() {
var debugTestViews;
if (this.props.showDebug) {
debugTestViews = <Layout>
<button onClick={() => this.props.switchView("refCopyTest")}>refCopyTest</button><br/>
<button onClick={() => this.props.switchView("centerSpacerSize")}>centerSpacerSize</button><br/>
<button onClick={() => this.props.switchView("PassPropsTest")}>PassPropsTest</button><br/>
<button onClick={() => this.props.switchView("PerformanceTest")}>PerformanceTest</button><br/>
<button onClick={() => this.props.switchView("MatchChildTest")}>MatchChildTest</button><br/>
<button onClick={() => this.props.switchView("AbsolutelyFreeTest")}>AbsolutelyFreeTest</button><br/>
</Layout>;
}
return (
<Layout {...this.props}>
<Layout size="100px">
<h1>Choose example:</h1>
</Layout>
<Layout>
<button onClick={() => this.props.switchView("simple")}>Simple layout</button>
Using composed layout elements<br/>
<button onClick={() => this.props.switchView("basicTest")}>Basic test layout</button>
Only using 'Layout'<br/>
<button onClick={() => this.props.switchView("longChild")}>Long child</button>
Example with a child thats longer than the parent<br/>
</Layout>
{debugTestViews}
</Layout>
);
}
});
var App = React.createClass({
mixins: [resizeMixin],
getInitialState() {
return { current: "root" };
},
goBack() {
this.setState({ current: "root" });
},
switchView(view) {
this.setState({ current: view });
},
render() {
var show = {
root: Root,
simple: <Simple />,
longChild: <LongChild />,
basicTest: <BasicLayoutTest />,
refCopyTest: <RefCopyTest />,
centerSpacerSize: <CenterSpacerSize />,
PassPropsTest: <PassPropsTest />,
PerformanceTest: <PerformanceTest />,
MatchChildTest: <MatchChildTest />,
AbsolutelyFreeTest: <AbsolutelyFreeTest />,
}[this.state.current];
if (this.state.current === "root") {
show = <Root switchView={this.switchView} showDebug={window.__debugLayout}/>;
} else {
show = <ShowcaseContainer switchView={this.switchView} show={show} />;
}
return (
/* The root instance needs a fixes height and width */
<Layout calculatedWidth={window.innerWidth} calculatedHeight={window.innerHeight}>
{show}
</Layout>
);
}
});
React.render(<App />, document.querySelector('body'));
;