Files

132 lines
2.8 KiB
JavaScript
Raw Permalink Normal View History

2016-06-06 11:50:51 +02:00
import React, { Component } from 'react';
import { Text, StyleSheet } from 'react-native';
import Menu, {
2017-12-19 11:08:34 +01:00
MenuProvider,
2016-06-06 11:50:51 +02:00
MenuOptions,
MenuOption,
MenuTrigger,
renderers,
} from 'react-native-popup-menu';
2017-12-08 15:57:59 +01:00
const { ContextMenu, SlideInMenu, Popover } = renderers;
2016-06-06 11:50:51 +02:00
class BasicExampleComponent extends Component {
2016-06-06 11:50:51 +02:00
constructor(props, ctx) {
super(props, ctx);
this.state = { renderer: ContextMenu };
}
render() {
return (
2017-12-08 15:57:59 +01:00
<Menu
renderer={this.state.renderer}
rendererProps={{ anchorStyle: styles.anchorStyle }}
style={{ height: 50 }}
>
2016-06-06 15:40:36 +02:00
<MenuTrigger text='Select option' customStyles={triggerStyles} />
<MenuOptions customStyles={optionsStyles}>
2016-06-06 11:50:51 +02:00
<MenuOption text='Context Menu'
onSelect={() => this.setState({renderer: ContextMenu})}/>
<MenuOption text='Slide-in Menu'
onSelect={() => this.setState({renderer: SlideInMenu})}/>
2017-12-08 15:57:59 +01:00
<MenuOption text='Popover'
onSelect={() => this.setState({renderer: Popover})}/>
2016-06-06 15:40:36 +02:00
<MenuOption text='Three (custom)' customStyles={optionStyles}
2016-06-06 11:50:51 +02:00
onSelect={() => alert('Selected custom styled option')} />
<MenuOption disabled={true}>
<Text style={{color: '#ccc'}}>Four (disabled)</Text>
</MenuOption>
</MenuOptions>
</Menu>
);
}
}
const BasicExample = () => (
2017-12-19 11:08:34 +01:00
<MenuProvider customStyles={menuProviderStyles}>
<BasicExampleComponent />
2017-12-19 11:08:34 +01:00
</MenuProvider>
)
export default BasicExample
2016-06-06 11:50:51 +02:00
const triggerStyles = {
triggerText: {
color: 'white',
},
2017-01-19 11:34:18 +01:00
triggerOuterWrapper: {
backgroundColor: 'orange',
2016-06-06 11:50:51 +02:00
padding: 5,
2017-01-19 11:34:18 +01:00
flex: 1,
},
triggerWrapper: {
2016-06-06 15:08:15 +02:00
backgroundColor: 'blue',
2017-01-19 11:34:18 +01:00
alignItems: 'center',
justifyContent: 'center',
flex: 1,
2016-06-06 11:50:51 +02:00
},
triggerTouchable: {
2016-06-06 15:08:15 +02:00
underlayColor: 'darkblue',
activeOpacity: 70,
2017-01-22 00:31:16 +01:00
style : {
flex: 1,
},
2016-06-06 11:50:51 +02:00
},
};
const optionsStyles = {
optionsContainer: {
backgroundColor: 'green',
padding: 5,
},
optionsWrapper: {
backgroundColor: 'purple',
},
optionWrapper: {
backgroundColor: 'yellow',
margin: 5,
},
2016-06-06 15:08:15 +02:00
optionTouchable: {
underlayColor: 'gold',
activeOpacity: 70,
},
2016-06-06 11:50:51 +02:00
optionText: {
color: 'brown',
},
};
const optionStyles = {
optionTouchable: {
2016-06-06 15:08:15 +02:00
underlayColor: 'red',
activeOpacity: 40,
2016-06-06 11:50:51 +02:00
},
optionWrapper: {
backgroundColor: 'pink',
margin: 5,
},
optionText: {
color: 'black',
},
};
const styles = StyleSheet.create({
container: {
flexDirection: 'column',
padding: 30,
},
2016-12-01 14:31:49 +01:00
backdrop: {
backgroundColor: 'red',
opacity: 0.5,
},
2017-12-08 15:57:59 +01:00
anchorStyle: {
backgroundColor: 'blue',
},
2016-06-06 11:50:51 +02:00
});
2017-12-19 11:08:34 +01:00
const menuProviderStyles = {
menuProviderWrapper: styles.container,
2016-12-01 14:31:49 +01:00
backdrop: styles.backdrop,
};