Updates from Thu 3 Jul

This commit is contained in:
Alexsander Akers
2015-07-03 11:37:17 +01:00
7 changed files with 148 additions and 28 deletions

View File

@@ -43,22 +43,23 @@ var UIExplorerApp = React.createClass({
/>
);
}
return (
<NavigatorIOS
style={styles.container}
initialRoute={{
title: 'UIExplorer',
component: UIExplorerList,
passProps: {
onExternalExampleRequested: (example) => {
this.setState({ openExternalExample: example, });
},
}
}}
itemWrapperStyle={styles.itemWrapper}
tintColor="#008888"
/>
);
return (
<NavigatorIOS
style={styles.container}
initialRoute={{
title: 'UIExplorer',
component: UIExplorerList,
passProps: {
onExternalExampleRequested: (example) => {
this.setState({ openExternalExample: example, });
},
}
}}
itemWrapperStyle={styles.itemWrapper}
tintColor="#008888"
/>
);
}
});

View File

@@ -32,6 +32,7 @@ var {
var { TestModule } = React.addons;
import type { ExampleModule } from 'ExampleTypes';
import type { NavigationContext } from 'NavigationContext';
var createExamplePage = require('./createExamplePage');
@@ -129,7 +130,10 @@ COMPONENTS.concat(APIS).forEach((Example) => {
});
type Props = {
navigator: Array<{title: string, component: ReactClass<any,any,any>}>,
navigator: {
navigationContext: NavigationContext,
push: (route: {title: string, component: ReactClass<any,any,any>}) => void,
},
onExternalExampleRequested: Function,
onSelectExample: Function,
isInDrawer: bool,
@@ -149,8 +153,25 @@ class UIExplorerList extends React.Component {
};
}
componentWillMount() {
this.props.navigator.navigationContext.addListener('didfocus', function(event) {
if (event.data.route.title === 'UIExplorer') {
Settings.set({visibleExample: null});
}
});
}
componentDidMount() {
this._search(this.state.searchText);
var visibleExampleTitle = Settings.get('visibleExample');
if (visibleExampleTitle) {
var predicate = (example) => example.title === visibleExampleTitle;
var foundExample = APIS.find(predicate) || COMPONENTS.find(predicate);
if (foundExample) {
setTimeout(() => this._openExample(foundExample), 100);
}
}
}
render() {
@@ -240,11 +261,12 @@ class UIExplorerList extends React.Component {
Settings.set({searchText: text});
}
_onPressRow(example: any) {
_openExample(example: any) {
if (example.external) {
this.props.onExternalExampleRequested(example);
return;
}
var Component = makeRenderable(example);
if (Platform.OS === 'ios') {
this.props.navigator.push({
@@ -258,6 +280,11 @@ class UIExplorerList extends React.Component {
});
}
}
_onPressRow(example: any) {
Settings.set({visibleExample: example.title});
this._openExample(example);
}
}
var styles = StyleSheet.create({

View File

@@ -15,12 +15,14 @@
*/
'use strict';
var Platform = require('Platform');
var React = require('react-native');
var {
StyleSheet,
Text,
View,
} = React;
var TouchableWithoutFeedback = require('TouchableWithoutFeedback');
var styles = StyleSheet.create({
box: {
@@ -30,6 +32,58 @@ var styles = StyleSheet.create({
}
});
var ViewBorderStyleExample = React.createClass({
getInitialState() {
return {
showBorder: true
};
},
render() {
if (Platform.OS !== 'android') {
return (
<View style={{backgroundColor: 'red'}}>
<Text style={{color: 'white'}}>
borderStyle is only supported on android for now.
</Text>
</View>
);
}
return (
<TouchableWithoutFeedback onPress={this._handlePress}>
<View>
<View style={{
borderWidth: 1,
borderRadius: 5,
borderStyle: this.state.showBorder ? 'dashed' : null,
padding: 5
}}>
<Text style={{fontSize: 11}}>
Dashed border style
</Text>
</View>
<View style={{
marginTop: 5,
borderWidth: 1,
borderRadius: 5,
borderStyle: this.state.showBorder ? 'dotted' : null,
padding: 5
}}>
<Text style={{fontSize: 11}}>
Dotted border style
</Text>
</View>
</View>
</TouchableWithoutFeedback>
);
},
_handlePress() {
this.setState({showBorder: !this.state.showBorder});
}
});
exports.title = '<View>';
exports.description = 'Basic building block of all UI.';
exports.displayName = 'ViewExample';
@@ -89,6 +143,11 @@ exports.examples = [
</View>
);
},
}, {
title: 'Border Style',
render: function() {
return <ViewBorderStyleExample />;
},
}, {
title: 'Circle with Border Radius',
render: function() {