Skip to content

Commit d0751da

Browse files
committed
WIP, added injectable ui prop to render extra settings component in demo settings screen
1 parent b272134 commit d0751da

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

demo/src/screens/MainScreen.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@ class MainScreen extends Component {
3737
super(props);
3838

3939
const data = props.navigationData || navigationData;
40-
40+
const extraSettingsUI = props.extraSettingsUI;
41+
4142
this.state = {
4243
currentPage: 0,
43-
filteredNavigationData: data
44+
filteredNavigationData: data,
45+
extraSettingsUI
4446
};
4547

4648
this.filterExplorerScreens = _.throttle(this.filterExplorerScreens, 300);
@@ -64,7 +66,7 @@ class MainScreen extends Component {
6466
if (buttonId === 'uilib.settingsButton') {
6567
this.pushScreen({
6668
name: 'unicorn.Settings',
67-
passProps: {navigationData: data, playground: this.props.playground}
69+
passProps: {navigationData: data, playground: this.props.playground, extraSettingsUI: this.state.extraSettingsUI}
6870
});
6971
}
7072
};

demo/src/screens/SettingsScreen.js

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,21 @@ import {StyleSheet, I18nManager} from 'react-native';
55
import {Colors, View, Text, Picker, Toast, Switch} from 'react-native-ui-lib'; //eslint-disable-line
66
import {navigationData} from './MenuStructure';
77

8-
98
const none = {label: '[None]', value: ''};
109
const playgroundScreen = {label: 'Playground', value: 'unicorn.PlaygroundScreen'};
1110

1211
class SettingsScreen extends Component {
12+
1313
constructor(props) {
1414
super(props);
1515

1616
const data = props.navigationData || navigationData;
1717
const playground = props.playground || playgroundScreen;
18-
18+
const extraSettingsUI = props.extraSettingsUI;
19+
1920
this.state = {
2021
showRefreshMessage: false,
22+
extraSettingsUI,
2123
screens: [
2224
none,
2325
playground,
@@ -60,17 +62,25 @@ class SettingsScreen extends Component {
6062
}, 1000);
6163
};
6264

65+
renderTitle(title, subtitle) {
66+
return (
67+
<View marginT-20>
68+
<Text text60>{title}</Text>
69+
<Text text70>
70+
{subtitle}
71+
</Text>
72+
</View>
73+
);
74+
}
75+
6376
render() {
64-
const {defaultScreen, showRefreshMessage, isRTL, screens} = this.state;
77+
const {defaultScreen, showRefreshMessage, isRTL, screens, extraSettingsUI} = this.state;
6578
const filteredScreens = _.filter(screens, screen => !_.isUndefined(screen.value));
6679

6780
return (
6881
<View flex padding-25 bg-grey80>
6982
<View flex>
70-
<Text text60>Default Screen</Text>
71-
<Text text70 marginB-20>
72-
Set default screen to open on app startup
73-
</Text>
83+
{this.renderTitle('Default Screen', 'Set default screen to open on app startup')}
7484
<Picker
7585
testID={'uilib.defaultScreenPicker'}
7686
placeholder="Pick default screen..."
@@ -83,6 +93,8 @@ class SettingsScreen extends Component {
8393
))}
8494
</Picker>
8595

96+
{extraSettingsUI?.()}
97+
8698
<View style={{borderWidth: 1, borderColor: Colors.dark70, marginTop: 40}}>
8799
<View style={[{padding: 5, borderBottomWidth: 1}, styles.block]}>
88100
<Text text80 dark20>Current layout direction</Text>

0 commit comments

Comments
 (0)