1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-15 09:04:04 +02:00
joplin/ReactNativeClient/lib/components/ModalDialog.js

81 lines
2.1 KiB
JavaScript
Raw Normal View History

const React = require('react');
const { Text, Modal, View, StyleSheet, Button } = require('react-native');
const { themeStyle } = require('lib/components/global-style.js');
const { _ } = require('lib/locale');
class ModalDialog extends React.Component {
constructor() {
super();
this.styles_ = {};
}
styles() {
const themeId = this.props.theme;
const theme = themeStyle(themeId);
if (this.styles_[themeId]) return this.styles_[themeId];
this.styles_ = {};
const styles = {
modalWrapper: {
flex: 1,
justifyContent: 'center',
},
modalContentWrapper: {
2019-07-29 15:43:53 +02:00
flex: 1,
flexDirection: 'column',
backgroundColor: theme.backgroundColor,
borderWidth: 1,
2019-07-29 15:43:53 +02:00
borderColor: theme.dividerColor,
margin: 20,
padding: 10,
2018-03-18 01:00:01 +02:00
borderRadius: 5,
},
modalContentWrapper2: {
2019-07-29 15:43:53 +02:00
flex: 1,
},
title: Object.assign({}, theme.normalText, {
borderBottomWidth: 1,
borderBottomColor: theme.dividerColor,
paddingBottom: 10,
2018-03-18 01:00:01 +02:00
fontWeight: 'bold',
}),
buttonRow: {
flexDirection: 'row',
borderTopWidth: 1,
borderTopColor: theme.dividerColor,
paddingTop: 10,
},
};
this.styles_[themeId] = StyleSheet.create(styles);
return this.styles_[themeId];
}
render() {
const ContentComponent = this.props.ContentComponent;
2018-03-18 01:00:01 +02:00
const buttonBarEnabled = this.props.buttonBarEnabled !== false;
return (
<View style={this.styles().modalWrapper}>
2019-07-29 15:43:53 +02:00
<Modal transparent={true} visible={true} onRequestClose={() => {}}>
2018-03-18 01:00:01 +02:00
<View elevation={10} style={this.styles().modalContentWrapper}>
<Text style={this.styles().title}>{this.props.title}</Text>
2019-07-29 15:43:53 +02:00
<View style={this.styles().modalContentWrapper2}>{ContentComponent}</View>
<View style={this.styles().buttonRow}>
2019-07-29 15:43:53 +02:00
<View style={{ flex: 1 }}>
2018-03-18 01:00:01 +02:00
<Button disabled={!buttonBarEnabled} title={_('OK')} onPress={this.props.onOkPress}></Button>
</View>
2019-07-29 15:43:53 +02:00
<View style={{ flex: 1, marginLeft: 5 }}>
2018-03-18 01:00:01 +02:00
<Button disabled={!buttonBarEnabled} title={_('Cancel')} onPress={this.props.onCancelPress}></Button>
</View>
</View>
</View>
</Modal>
</View>
);
}
}
2019-07-29 15:43:53 +02:00
module.exports = ModalDialog;