Skip to content

Commit f69ad2d

Browse files
[Docs] Add an example of tabs with a slide effect
This a classical use case for tabs on android.
1 parent 02959ea commit f69ad2d

File tree

3 files changed

+59
-2
lines changed

3 files changed

+59
-2
lines changed

docs/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
"react-addons-transition-group": "^0.14.0",
2222
"react-addons-update": "^0.14.0",
2323
"react-dom": "^0.14.0",
24+
"react-motion": "^0.3.1",
25+
"react-swipeable-views": "^0.3.0",
2426
"react-tap-event-plugin": "^0.2.0"
2527
},
2628
"devDependencies": {

docs/src/app/components/pages/components/tabs.jsx

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@ let {IconButton, Slider, Styles, Tab, Tabs } = require('material-ui');
44
let ComponentDoc = require('../../component-doc');
55
let { Colors, Typography } = Styles;
66
let Code = require('tabs-code');
7-
7+
const SwipeableViews = require('react-swipeable-views');
88

99
export default class TabsPage extends React.Component {
1010

1111
constructor(props) {
1212
super(props);
1313
this._handleTabActive = this._handleTabActive.bind(this);
14-
this.state = {tabsValue: 'a'};
14+
this.state = {
15+
tabsValue: 'a',
16+
slideIndex: 0,
17+
};
1518
}
1619

1720
render(){
@@ -150,6 +153,9 @@ export default class TabsPage extends React.Component {
150153
position: 'relative',
151154
paddingLeft: padding,
152155
},
156+
slide: {
157+
padding: 10,
158+
},
153159
};
154160

155161
return (
@@ -227,11 +233,41 @@ export default class TabsPage extends React.Component {
227233
</Tab>
228234
</Tabs>
229235
</div>
236+
<br />
237+
<Tabs onChange={this._handleChangeTabs.bind(this)} value={this.state.slideIndex + ''}>
238+
<Tab label="Tab One" value="0" />
239+
<Tab label="Tab Two" value="1" />
240+
<Tab label="Tab Three" value="2" />
241+
</Tabs>
242+
<SwipeableViews index={this.state.slideIndex} onChangeIndex={this._handleChangeIndex.bind(this)}>
243+
<div>
244+
<h2 style={styles.headline}>Tabs with slide effect</h2>
245+
Swipe to see the next slide.<br />
246+
</div>
247+
<div style={styles.slide}>
248+
slide n°2
249+
</div>
250+
<div style={styles.slide}>
251+
slide n°3
252+
</div>
253+
</SwipeableViews>
230254
</CodeExample>
231255
</ComponentDoc>
232256
);
233257
}
234258

259+
_handleChangeIndex(index) {
260+
this.setState({
261+
slideIndex: index,
262+
});
263+
}
264+
265+
_handleChangeTabs(value) {
266+
this.setState({
267+
slideIndex: parseInt(value, 10),
268+
});
269+
}
270+
235271
_handleButtonClick() {
236272
this.setState({tabsValue: 'c'});
237273
}

docs/src/app/components/raw-code/tabs-code.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,22 @@
2828
(Tab content...)
2929
</Tab>
3030
</Tabs>
31+
32+
// Tabs with slide effect
33+
<Tabs onChange={this._handleChangeTabs.bind(this)} value={this.state.slideIndex + ''}>
34+
<Tab label="Tab One" value="0" />
35+
<Tab label="Tab Two" value="1" />
36+
<Tab label="Tab Three" value="2" />
37+
</Tabs>
38+
<SwipeableViews index={this.state.slideIndex} onChangeIndex={this._handleChangeIndex.bind(this)}>
39+
<div>
40+
<h2 style={styles.headline}>Tabs with slide effect</h2>
41+
Swipe to see the next slide.<br />
42+
</div>
43+
<div style={styles.slide}>
44+
slide n°2
45+
</div>
46+
<div style={styles.slide}>
47+
slide n°3
48+
</div>
49+
</SwipeableViews>

0 commit comments

Comments
 (0)