@plusscommunities/pluss-webview-app 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/components/WidgetLarge.js +93 -3
- package/dist/module/components/WidgetLarge.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +93 -3
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/core.config.js +17 -0
- package/dist/module/core.config.js.map +1 -0
- package/dist/module/feature.config.js +9 -1
- package/dist/module/feature.config.js.map +1 -1
- package/dist/module/index.js +3 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/screens/WebViewPage.js +58 -0
- package/dist/module/screens/WebViewPage.js.map +1 -0
- package/package.json +3 -1
- package/src/components/WidgetLarge.js +77 -3
- package/src/components/WidgetSmall.js +77 -3
- package/src/core.config.js +5 -0
- package/src/feature.config.js +11 -1
- package/src/index.js +2 -1
- package/src/screens/WebViewPage.js +42 -0
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
3
|
import React, { Component } from 'react';
|
|
4
|
-
import { View, StyleSheet } from 'react-native';
|
|
4
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
5
5
|
import { WebView } from 'react-native-webview';
|
|
6
|
+
import { connect } from 'react-redux';
|
|
7
|
+
import _ from 'lodash';
|
|
8
|
+
import { Colours, Components } from '../core.config';
|
|
9
|
+
import { Services } from '../feature.config';
|
|
6
10
|
|
|
7
11
|
class WidgetLarge extends Component {
|
|
8
12
|
constructor(props) {
|
|
@@ -12,13 +16,71 @@ class WidgetLarge extends Component {
|
|
|
12
16
|
|
|
13
17
|
_defineProperty(this, "onLoadEnd", () => {});
|
|
14
18
|
|
|
19
|
+
_defineProperty(this, "onGoToFullpage", () => {
|
|
20
|
+
const {
|
|
21
|
+
options
|
|
22
|
+
} = this.props;
|
|
23
|
+
Services.navigation.navigate('webViewPage', {
|
|
24
|
+
url: options['webUrl'],
|
|
25
|
+
headerTitle: this.getTitle()
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
_defineProperty(this, "getTitle", () => {
|
|
30
|
+
const {
|
|
31
|
+
options
|
|
32
|
+
} = this.props;
|
|
33
|
+
if (options && !_.isEmpty(options.Title)) return options.Title;
|
|
34
|
+
return 'Web View';
|
|
35
|
+
});
|
|
36
|
+
|
|
15
37
|
this.state = {};
|
|
16
38
|
}
|
|
17
39
|
|
|
18
40
|
render() {
|
|
19
41
|
const {
|
|
20
|
-
options
|
|
42
|
+
options,
|
|
43
|
+
colourBrandingMain
|
|
21
44
|
} = this.props;
|
|
45
|
+
|
|
46
|
+
if (options.isWebViewSeparatePage) {
|
|
47
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
48
|
+
style: [styles.buttonContainer, {
|
|
49
|
+
backgroundColor: Colours.hexToRGBAstring(colourBrandingMain, 0.2)
|
|
50
|
+
}]
|
|
51
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
52
|
+
style: styles.upperContainer
|
|
53
|
+
}, /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(Text, {
|
|
54
|
+
style: [styles.title, {
|
|
55
|
+
color: colourBrandingMain
|
|
56
|
+
}]
|
|
57
|
+
}, this.getTitle()))), /*#__PURE__*/React.createElement(Components.InlineButton, {
|
|
58
|
+
onPress: this.onGoToFullpage,
|
|
59
|
+
color: colourBrandingMain,
|
|
60
|
+
style: styles.button,
|
|
61
|
+
large: true
|
|
62
|
+
}, options.buttonText)); // return (
|
|
63
|
+
// <View style={styles.sectionContainer}>
|
|
64
|
+
// <View style={styles.sectionPadding}>
|
|
65
|
+
// <View style={styles.sectionHeading}>
|
|
66
|
+
// <Text style={styles.sectionTitle}>{this.getTitle()}</Text>
|
|
67
|
+
// </View>
|
|
68
|
+
// </View>
|
|
69
|
+
// <View style={styles.buttonContainer}>
|
|
70
|
+
// <Components.InlineButton
|
|
71
|
+
// onPress={this.onGoToFullpage}
|
|
72
|
+
// color={colourBrandingMain}
|
|
73
|
+
// touchableStyle={{ paddingTop: 6 }}
|
|
74
|
+
// textStyle={{ color: '#fff' }}
|
|
75
|
+
// large
|
|
76
|
+
// >
|
|
77
|
+
// {options.buttonText}
|
|
78
|
+
// </Components.InlineButton>
|
|
79
|
+
// </View>
|
|
80
|
+
// </View>
|
|
81
|
+
// );
|
|
82
|
+
}
|
|
83
|
+
|
|
22
84
|
return /*#__PURE__*/React.createElement(View, {
|
|
23
85
|
style: styles.container
|
|
24
86
|
}, this.props.ListHeaderComponent, /*#__PURE__*/React.createElement(WebView, {
|
|
@@ -41,7 +103,35 @@ const styles = StyleSheet.create({
|
|
|
41
103
|
flex: 1,
|
|
42
104
|
alignItems: 'center',
|
|
43
105
|
justifyContent: 'center'
|
|
106
|
+
},
|
|
107
|
+
buttonContainer: {
|
|
108
|
+
width: '100%',
|
|
109
|
+
alignItems: 'center',
|
|
110
|
+
justifyContent: 'center',
|
|
111
|
+
padding: 16
|
|
112
|
+
},
|
|
113
|
+
upperContainer: {
|
|
114
|
+
flexDirection: 'row',
|
|
115
|
+
alignItems: 'center',
|
|
116
|
+
justifyContent: 'space-between'
|
|
117
|
+
},
|
|
118
|
+
title: {
|
|
119
|
+
fontFamily: 'sf-semibold',
|
|
120
|
+
fontSize: 16
|
|
121
|
+
},
|
|
122
|
+
button: {
|
|
123
|
+
paddingHorizontal: 40,
|
|
124
|
+
marginTop: 16
|
|
44
125
|
}
|
|
45
126
|
});
|
|
46
|
-
|
|
127
|
+
|
|
128
|
+
const mapStateToProps = state => {
|
|
129
|
+
return {
|
|
130
|
+
colourBrandingMain: Colours.getMainBrandingColourFromState(state)
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
export default connect(mapStateToProps, {}, null, {
|
|
135
|
+
forwardRef: true
|
|
136
|
+
})(WidgetLarge);
|
|
47
137
|
//# sourceMappingURL=WidgetLarge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","View","StyleSheet","WebView","WidgetLarge","constructor","props","state","render","
|
|
1
|
+
{"version":3,"names":["React","Component","View","Text","StyleSheet","WebView","connect","_","Colours","Components","Services","WidgetLarge","constructor","props","options","navigation","navigate","url","headerTitle","getTitle","isEmpty","Title","state","render","colourBrandingMain","isWebViewSeparatePage","styles","buttonContainer","backgroundColor","hexToRGBAstring","upperContainer","title","color","onGoToFullpage","button","buttonText","container","ListHeaderComponent","uri","webContainer","onLoadStart","onLoadEnd","create","flex","alignItems","justifyContent","width","padding","flexDirection","fontFamily","fontSize","paddingHorizontal","marginTop","mapStateToProps","getMainBrandingColourFromState","forwardRef"],"sources":["WidgetLarge.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { WebView } from 'react-native-webview';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { Colours, Components } from '../core.config';\nimport { Services } from '../feature.config';\n\nclass WidgetLarge extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n onLoadStart = () => {};\n onLoadEnd = () => {};\n\n onGoToFullpage = () => {\n const { options } = this.props;\n Services.navigation.navigate('webViewPage', { url: options['webUrl'], headerTitle: this.getTitle() });\n };\n\n getTitle = () => {\n const { options } = this.props;\n if (options && !_.isEmpty(options.Title)) return options.Title;\n return 'Web View';\n };\n\n render() {\n const { options, colourBrandingMain } = this.props;\n if (options.isWebViewSeparatePage) {\n return (\n <View style={[styles.buttonContainer, { backgroundColor: Colours.hexToRGBAstring(colourBrandingMain, 0.2) }]}>\n <View style={styles.upperContainer}>\n <View>\n <Text style={[styles.title, { color: colourBrandingMain }]}>{this.getTitle()}</Text>\n </View>\n </View>\n <Components.InlineButton onPress={this.onGoToFullpage} color={colourBrandingMain} style={styles.button} large>\n {options.buttonText}\n </Components.InlineButton>\n </View>\n );\n // return (\n // <View style={styles.sectionContainer}>\n // <View style={styles.sectionPadding}>\n // <View style={styles.sectionHeading}>\n // <Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n // </View>\n // </View>\n // <View style={styles.buttonContainer}>\n // <Components.InlineButton\n // onPress={this.onGoToFullpage}\n // color={colourBrandingMain}\n // touchableStyle={{ paddingTop: 6 }}\n // textStyle={{ color: '#fff' }}\n // large\n // >\n // {options.buttonText}\n // </Components.InlineButton>\n // </View>\n // </View>\n // );\n }\n return (\n <View style={styles.container}>\n {this.props.ListHeaderComponent}\n <WebView\n source={{ uri: options['webUrl'] }}\n style={styles.webContainer}\n onLoadStart={this.onLoadStart}\n onLoadEnd={this.onLoadEnd}\n />\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n webContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n buttonContainer: {\n width: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 16,\n },\n upperContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n title: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n },\n button: {\n paddingHorizontal: 40,\n marginTop: 16,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, {}, null, { forwardRef: true })(WidgetLarge);\n"],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
3
|
import React, { Component } from 'react';
|
|
4
|
-
import { View, StyleSheet } from 'react-native';
|
|
4
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
5
5
|
import { WebView } from 'react-native-webview';
|
|
6
|
+
import { connect } from 'react-redux';
|
|
7
|
+
import _ from 'lodash';
|
|
8
|
+
import { Colours, Components } from '../core.config';
|
|
9
|
+
import { Services } from '../feature.config';
|
|
6
10
|
|
|
7
11
|
class WidgetSmall extends Component {
|
|
8
12
|
constructor(props) {
|
|
@@ -12,13 +16,71 @@ class WidgetSmall extends Component {
|
|
|
12
16
|
|
|
13
17
|
_defineProperty(this, "onLoadEnd", () => {});
|
|
14
18
|
|
|
19
|
+
_defineProperty(this, "onGoToFullpage", () => {
|
|
20
|
+
const {
|
|
21
|
+
options
|
|
22
|
+
} = this.props;
|
|
23
|
+
Services.navigation.navigate('webViewPage', {
|
|
24
|
+
url: options['webUrl'],
|
|
25
|
+
headerTitle: this.getTitle()
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
_defineProperty(this, "getTitle", () => {
|
|
30
|
+
const {
|
|
31
|
+
options
|
|
32
|
+
} = this.props;
|
|
33
|
+
if (options && !_.isEmpty(options.Title)) return options.Title;
|
|
34
|
+
return 'Web View';
|
|
35
|
+
});
|
|
36
|
+
|
|
15
37
|
this.state = {};
|
|
16
38
|
}
|
|
17
39
|
|
|
18
40
|
render() {
|
|
19
41
|
const {
|
|
20
|
-
options
|
|
42
|
+
options,
|
|
43
|
+
colourBrandingMain
|
|
21
44
|
} = this.props;
|
|
45
|
+
|
|
46
|
+
if (options.isWebViewSeparatePage) {
|
|
47
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
48
|
+
style: [styles.buttonContainer, {
|
|
49
|
+
backgroundColor: Colours.hexToRGBAstring(colourBrandingMain, 0.2)
|
|
50
|
+
}]
|
|
51
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
52
|
+
style: styles.upperContainer
|
|
53
|
+
}, /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(Text, {
|
|
54
|
+
style: [styles.title, {
|
|
55
|
+
color: colourBrandingMain
|
|
56
|
+
}]
|
|
57
|
+
}, this.getTitle()))), /*#__PURE__*/React.createElement(Components.InlineButton, {
|
|
58
|
+
onPress: this.onGoToFullpage,
|
|
59
|
+
color: colourBrandingMain,
|
|
60
|
+
style: styles.button,
|
|
61
|
+
large: true
|
|
62
|
+
}, options.buttonText)); // return (
|
|
63
|
+
// <View style={styles.sectionContainer}>
|
|
64
|
+
// <View style={styles.sectionPadding}>
|
|
65
|
+
// <View style={styles.sectionHeading}>
|
|
66
|
+
// <Text style={styles.sectionTitle}>{this.getTitle()}</Text>
|
|
67
|
+
// </View>
|
|
68
|
+
// </View>
|
|
69
|
+
// <View style={styles.buttonContainer}>
|
|
70
|
+
// <Components.InlineButton
|
|
71
|
+
// onPress={this.onGoToFullpage}
|
|
72
|
+
// color={colourBrandingMain}
|
|
73
|
+
// touchableStyle={{ paddingTop: 6 }}
|
|
74
|
+
// textStyle={{ color: '#fff' }}
|
|
75
|
+
// large
|
|
76
|
+
// >
|
|
77
|
+
// {options.buttonText}
|
|
78
|
+
// </Components.InlineButton>
|
|
79
|
+
// </View>
|
|
80
|
+
// </View>
|
|
81
|
+
// );
|
|
82
|
+
}
|
|
83
|
+
|
|
22
84
|
return /*#__PURE__*/React.createElement(View, {
|
|
23
85
|
style: styles.container
|
|
24
86
|
}, /*#__PURE__*/React.createElement(WebView, {
|
|
@@ -43,7 +105,35 @@ const styles = StyleSheet.create({
|
|
|
43
105
|
flex: 1,
|
|
44
106
|
alignItems: 'center',
|
|
45
107
|
justifyContent: 'center'
|
|
108
|
+
},
|
|
109
|
+
buttonContainer: {
|
|
110
|
+
width: '100%',
|
|
111
|
+
alignItems: 'center',
|
|
112
|
+
justifyContent: 'center',
|
|
113
|
+
padding: 16
|
|
114
|
+
},
|
|
115
|
+
upperContainer: {
|
|
116
|
+
flexDirection: 'row',
|
|
117
|
+
alignItems: 'center',
|
|
118
|
+
justifyContent: 'space-between'
|
|
119
|
+
},
|
|
120
|
+
title: {
|
|
121
|
+
fontFamily: 'sf-semibold',
|
|
122
|
+
fontSize: 16
|
|
123
|
+
},
|
|
124
|
+
button: {
|
|
125
|
+
paddingHorizontal: 40,
|
|
126
|
+
marginTop: 16
|
|
46
127
|
}
|
|
47
128
|
});
|
|
48
|
-
|
|
129
|
+
|
|
130
|
+
const mapStateToProps = state => {
|
|
131
|
+
return {
|
|
132
|
+
colourBrandingMain: Colours.getMainBrandingColourFromState(state)
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export default connect(mapStateToProps, {}, null, {
|
|
137
|
+
forwardRef: true
|
|
138
|
+
})(WidgetSmall);
|
|
49
139
|
//# sourceMappingURL=WidgetSmall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","View","StyleSheet","WebView","WidgetSmall","constructor","props","state","render","
|
|
1
|
+
{"version":3,"names":["React","Component","View","Text","StyleSheet","WebView","connect","_","Colours","Components","Services","WidgetSmall","constructor","props","options","navigation","navigate","url","headerTitle","getTitle","isEmpty","Title","state","render","colourBrandingMain","isWebViewSeparatePage","styles","buttonContainer","backgroundColor","hexToRGBAstring","upperContainer","title","color","onGoToFullpage","button","buttonText","container","uri","webContainer","onLoadStart","onLoadEnd","create","height","paddingTop","paddingBottom","flex","alignItems","justifyContent","width","padding","flexDirection","fontFamily","fontSize","paddingHorizontal","marginTop","mapStateToProps","getMainBrandingColourFromState","forwardRef"],"sources":["WidgetSmall.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { WebView } from 'react-native-webview';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { Colours, Components } from '../core.config';\nimport { Services } from '../feature.config';\n\nclass WidgetSmall extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n onLoadStart = () => {};\n onLoadEnd = () => {};\n\n onGoToFullpage = () => {\n const { options } = this.props;\n Services.navigation.navigate('webViewPage', { url: options['webUrl'], headerTitle: this.getTitle() });\n };\n\n getTitle = () => {\n const { options } = this.props;\n if (options && !_.isEmpty(options.Title)) return options.Title;\n return 'Web View';\n };\n\n render() {\n const { options, colourBrandingMain } = this.props;\n if (options.isWebViewSeparatePage) {\n return (\n <View style={[styles.buttonContainer, { backgroundColor: Colours.hexToRGBAstring(colourBrandingMain, 0.2) }]}>\n <View style={styles.upperContainer}>\n <View>\n <Text style={[styles.title, { color: colourBrandingMain }]}>{this.getTitle()}</Text>\n </View>\n </View>\n <Components.InlineButton onPress={this.onGoToFullpage} color={colourBrandingMain} style={styles.button} large>\n {options.buttonText}\n </Components.InlineButton>\n </View>\n );\n // return (\n // <View style={styles.sectionContainer}>\n // <View style={styles.sectionPadding}>\n // <View style={styles.sectionHeading}>\n // <Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n // </View>\n // </View>\n // <View style={styles.buttonContainer}>\n // <Components.InlineButton\n // onPress={this.onGoToFullpage}\n // color={colourBrandingMain}\n // touchableStyle={{ paddingTop: 6 }}\n // textStyle={{ color: '#fff' }}\n // large\n // >\n // {options.buttonText}\n // </Components.InlineButton>\n // </View>\n // </View>\n // );\n }\n return (\n <View style={styles.container}>\n <WebView\n source={{ uri: options['webUrl'] }}\n style={styles.webContainer}\n onLoadStart={this.onLoadStart}\n onLoadEnd={this.onLoadEnd}\n />\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n height: 300,\n paddingTop: 8,\n paddingBottom: 8,\n },\n webContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n buttonContainer: {\n width: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 16,\n },\n upperContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n title: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n },\n button: {\n paddingHorizontal: 40,\n marginTop: 16,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, {}, null, { forwardRef: true })(WidgetSmall);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// import * as PlussCore from '../../pluss-core/src';
|
|
2
|
+
import * as PlussCore from '@plusscommunities/pluss-core-app';
|
|
3
|
+
const {
|
|
4
|
+
Apis,
|
|
5
|
+
Fonts,
|
|
6
|
+
Actions,
|
|
7
|
+
ActionTypes,
|
|
8
|
+
Config,
|
|
9
|
+
Components,
|
|
10
|
+
Styles,
|
|
11
|
+
Session,
|
|
12
|
+
Helper,
|
|
13
|
+
Constants,
|
|
14
|
+
Colours
|
|
15
|
+
} = PlussCore;
|
|
16
|
+
export { Apis, Fonts, Actions, ActionTypes, Config, Components, Styles, Session, Helper, Constants, Colours };
|
|
17
|
+
//# sourceMappingURL=core.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PlussCore","Apis","Fonts","Actions","ActionTypes","Config","Components","Styles","Session","Helper","Constants","Colours"],"sources":["core.config.js"],"sourcesContent":["// import * as PlussCore from '../../pluss-core/src';\nimport * as PlussCore from '@plusscommunities/pluss-core-app';\n\nconst { Apis, Fonts, Actions, ActionTypes, Config, Components, Styles, Session, Helper, Constants, Colours } = PlussCore;\nexport { Apis, Fonts, Actions, ActionTypes, Config, Components, Styles, Session, Helper, Constants, Colours };\n"],"mappings":"AAAA;AACA,OAAO,KAAKA,SAAZ,MAA2B,kCAA3B;AAEA,MAAM;EAAEC,IAAF;EAAQC,KAAR;EAAeC,OAAf;EAAwBC,WAAxB;EAAqCC,MAArC;EAA6CC,UAA7C;EAAyDC,MAAzD;EAAiEC,OAAjE;EAA0EC,MAA1E;EAAkFC,SAAlF;EAA6FC;AAA7F,IAAyGX,SAA/G;AACA,SAASC,IAAT,EAAeC,KAAf,EAAsBC,OAAtB,EAA+BC,WAA/B,EAA4CC,MAA5C,EAAoDC,UAApD,EAAgEC,MAAhE,EAAwEC,OAAxE,EAAiFC,MAAjF,EAAyFC,SAAzF,EAAoGC,OAApG"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
// import * as PlussCore from '../../pluss-core/src';
|
|
2
|
+
import * as PlussCore from '@plusscommunities/pluss-core-app';
|
|
1
3
|
export const Services = {
|
|
2
4
|
navigation: null
|
|
3
5
|
};
|
|
6
|
+
export const BaseComponents = {
|
|
7
|
+
NotificationBell: null
|
|
8
|
+
};
|
|
4
9
|
const FeatureConfig = {
|
|
5
10
|
key: 'web',
|
|
6
11
|
title: 'Web',
|
|
@@ -9,6 +14,7 @@ const FeatureConfig = {
|
|
|
9
14
|
viewBox: '0 0 24 24',
|
|
10
15
|
navigate: 'web'
|
|
11
16
|
},
|
|
17
|
+
hideTabBar: ['webViewPage'],
|
|
12
18
|
env: {
|
|
13
19
|
baseStage: '',
|
|
14
20
|
baseAPIUrl: '',
|
|
@@ -25,7 +31,9 @@ const FeatureConfig = {
|
|
|
25
31
|
newEventDefaults: '',
|
|
26
32
|
defaultAllowComments: true
|
|
27
33
|
},
|
|
28
|
-
init: (environment, navigation) => {
|
|
34
|
+
init: (environment, navigation, notificationBell) => {
|
|
35
|
+
BaseComponents.NotificationBell = notificationBell;
|
|
36
|
+
PlussCore.Config.init(environment, navigation);
|
|
29
37
|
FeatureConfig.env = environment;
|
|
30
38
|
Services.navigation = navigation;
|
|
31
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Services","navigation","FeatureConfig","key","title","gridMenu","icon","viewBox","navigate","env","baseStage","baseAPIUrl","hasGradientHeader","defaultProfileImage","tinyChatDefault","baseUploadsUrl","allowMediaDownload","allowMediaSharing","awsUploadsBucket","awsStorageBucket","preferredSite","strings","newEventDefaults","defaultAllowComments","init","environment"],"sources":["feature.config.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":["PlussCore","Services","navigation","BaseComponents","NotificationBell","FeatureConfig","key","title","gridMenu","icon","viewBox","navigate","hideTabBar","env","baseStage","baseAPIUrl","hasGradientHeader","defaultProfileImage","tinyChatDefault","baseUploadsUrl","allowMediaDownload","allowMediaSharing","awsUploadsBucket","awsStorageBucket","preferredSite","strings","newEventDefaults","defaultAllowComments","init","environment","notificationBell","Config"],"sources":["feature.config.js"],"sourcesContent":["// import * as PlussCore from '../../pluss-core/src';\nimport * as PlussCore from '@plusscommunities/pluss-core-app';\n\nexport const Services = {\n navigation: null,\n};\n\nexport const BaseComponents = {\n NotificationBell: null,\n};\n\nconst FeatureConfig = {\n key: 'web',\n title: 'Web',\n gridMenu: {\n icon: 'tab_news2',\n viewBox: '0 0 24 24',\n navigate: 'web',\n },\n hideTabBar: ['webViewPage'],\n env: {\n baseStage: '',\n baseAPIUrl: '',\n hasGradientHeader: false,\n defaultProfileImage: '',\n tinyChatDefault: '',\n baseUploadsUrl: '',\n allowMediaDownload: false,\n allowMediaSharing: false,\n awsUploadsBucket: '',\n awsStorageBucket: '',\n preferredSite: '',\n strings: {},\n newEventDefaults: '',\n defaultAllowComments: true,\n },\n init: (environment, navigation, notificationBell) => {\n BaseComponents.NotificationBell = notificationBell;\n PlussCore.Config.init(environment, navigation);\n FeatureConfig.env = environment;\n Services.navigation = navigation;\n },\n};\nexport default FeatureConfig;\n"],"mappings":"AAAA;AACA,OAAO,KAAKA,SAAZ,MAA2B,kCAA3B;AAEA,OAAO,MAAMC,QAAQ,GAAG;EACtBC,UAAU,EAAE;AADU,CAAjB;AAIP,OAAO,MAAMC,cAAc,GAAG;EAC5BC,gBAAgB,EAAE;AADU,CAAvB;AAIP,MAAMC,aAAa,GAAG;EACpBC,GAAG,EAAE,KADe;EAEpBC,KAAK,EAAE,KAFa;EAGpBC,QAAQ,EAAE;IACRC,IAAI,EAAE,WADE;IAERC,OAAO,EAAE,WAFD;IAGRC,QAAQ,EAAE;EAHF,CAHU;EAQpBC,UAAU,EAAE,CAAC,aAAD,CARQ;EASpBC,GAAG,EAAE;IACHC,SAAS,EAAE,EADR;IAEHC,UAAU,EAAE,EAFT;IAGHC,iBAAiB,EAAE,KAHhB;IAIHC,mBAAmB,EAAE,EAJlB;IAKHC,eAAe,EAAE,EALd;IAMHC,cAAc,EAAE,EANb;IAOHC,kBAAkB,EAAE,KAPjB;IAQHC,iBAAiB,EAAE,KARhB;IASHC,gBAAgB,EAAE,EATf;IAUHC,gBAAgB,EAAE,EAVf;IAWHC,aAAa,EAAE,EAXZ;IAYHC,OAAO,EAAE,EAZN;IAaHC,gBAAgB,EAAE,EAbf;IAcHC,oBAAoB,EAAE;EAdnB,CATe;EAyBpBC,IAAI,EAAE,CAACC,WAAD,EAAc3B,UAAd,EAA0B4B,gBAA1B,KAA+C;IACnD3B,cAAc,CAACC,gBAAf,GAAkC0B,gBAAlC;IACA9B,SAAS,CAAC+B,MAAV,CAAiBH,IAAjB,CAAsBC,WAAtB,EAAmC3B,UAAnC;IACAG,aAAa,CAACQ,GAAd,GAAoBgB,WAApB;IACA5B,QAAQ,CAACC,UAAT,GAAsBA,UAAtB;EACD;AA9BmB,CAAtB;AAgCA,eAAeG,aAAf"}
|
package/dist/module/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import WebPage from './screens/WebPage';
|
|
2
|
+
import WebViewPage from './screens/WebViewPage';
|
|
2
3
|
export const Screens = {
|
|
3
|
-
web: WebPage
|
|
4
|
+
web: WebPage,
|
|
5
|
+
webViewPage: WebViewPage
|
|
4
6
|
};
|
|
5
7
|
export { default as Config } from './feature.config';
|
|
6
8
|
export { default as WidgetSmall } from './components/WidgetSmall';
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebPage","Screens","web","default","Config","WidgetSmall","WidgetLarge"],"sources":["index.js"],"sourcesContent":["import WebPage from './screens/WebPage';\n\nexport const Screens = { web: WebPage };\nexport { default as Config } from './feature.config';\nexport { default as WidgetSmall } from './components/WidgetSmall';\nexport { default as WidgetLarge } from './components/WidgetLarge';\n"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,mBAApB;AAEA,OAAO,MAAMC,OAAO,GAAG;EAAEC,GAAG,
|
|
1
|
+
{"version":3,"names":["WebPage","WebViewPage","Screens","web","webViewPage","default","Config","WidgetSmall","WidgetLarge"],"sources":["index.js"],"sourcesContent":["import WebPage from './screens/WebPage';\nimport WebViewPage from './screens/WebViewPage';\n\nexport const Screens = { web: WebPage, webViewPage: WebViewPage };\nexport { default as Config } from './feature.config';\nexport { default as WidgetSmall } from './components/WidgetSmall';\nexport { default as WidgetLarge } from './components/WidgetLarge';\n"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,mBAApB;AACA,OAAOC,WAAP,MAAwB,uBAAxB;AAEA,OAAO,MAAMC,OAAO,GAAG;EAAEC,GAAG,EAAEH,OAAP;EAAgBI,WAAW,EAAEH;AAA7B,CAAhB;AACP,SAASI,OAAO,IAAIC,MAApB,QAAkC,kBAAlC;AACA,SAASD,OAAO,IAAIE,WAApB,QAAuC,0BAAvC;AACA,SAASF,OAAO,IAAIG,WAApB,QAAuC,0BAAvC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import React, { Component } from 'react';
|
|
4
|
+
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import { WebView } from 'react-native-webview';
|
|
6
|
+
import { Components } from '../core.config';
|
|
7
|
+
import { Services } from '../feature.config';
|
|
8
|
+
|
|
9
|
+
class WebViewPage extends Component {
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super(props);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "onLoadStart", () => {});
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "onLoadEnd", () => {});
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "onPressBack", () => {
|
|
18
|
+
Services.navigation.goBack();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
this.state = {};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
render() {
|
|
25
|
+
const {
|
|
26
|
+
url,
|
|
27
|
+
headerTitle
|
|
28
|
+
} = this.props;
|
|
29
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
30
|
+
style: styles.container
|
|
31
|
+
}, /*#__PURE__*/React.createElement(Components.Header, {
|
|
32
|
+
leftIcon: "angle-left",
|
|
33
|
+
onPressLeft: this.onPressBack,
|
|
34
|
+
text: headerTitle
|
|
35
|
+
}), /*#__PURE__*/React.createElement(WebView, {
|
|
36
|
+
source: {
|
|
37
|
+
uri: url
|
|
38
|
+
},
|
|
39
|
+
style: styles.webContainer,
|
|
40
|
+
onLoadStart: this.onLoadStart,
|
|
41
|
+
onLoadEnd: this.onLoadEnd
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const styles = StyleSheet.create({
|
|
48
|
+
container: {
|
|
49
|
+
flex: 1
|
|
50
|
+
},
|
|
51
|
+
webContainer: {
|
|
52
|
+
flex: 1,
|
|
53
|
+
alignItems: 'center',
|
|
54
|
+
justifyContent: 'center'
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
export default WebViewPage;
|
|
58
|
+
//# sourceMappingURL=WebViewPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Component","View","StyleSheet","WebView","Components","Services","WebViewPage","constructor","props","navigation","goBack","state","render","url","headerTitle","styles","container","onPressBack","uri","webContainer","onLoadStart","onLoadEnd","create","flex","alignItems","justifyContent"],"sources":["WebViewPage.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { WebView } from 'react-native-webview';\nimport { Components } from '../core.config';\nimport { Services } from '../feature.config';\n\nclass WebViewPage extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n onLoadStart = () => {};\n onLoadEnd = () => {};\n\n onPressBack = () => {\n Services.navigation.goBack();\n };\n\n render() {\n const { url, headerTitle } = this.props;\n return (\n <View style={styles.container}>\n <Components.Header leftIcon=\"angle-left\" onPressLeft={this.onPressBack} text={headerTitle} />\n <WebView source={{ uri: url }} style={styles.webContainer} onLoadStart={this.onLoadStart} onLoadEnd={this.onLoadEnd} />\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n webContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default WebViewPage;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,SAASC,IAAT,EAAeC,UAAf,QAAiC,cAAjC;AACA,SAASC,OAAT,QAAwB,sBAAxB;AACA,SAASC,UAAT,QAA2B,gBAA3B;AACA,SAASC,QAAT,QAAyB,mBAAzB;;AAEA,MAAMC,WAAN,SAA0BN,SAA1B,CAAoC;EAClCO,WAAW,CAACC,KAAD,EAAQ;IACjB,MAAMA,KAAN;;IADiB,qCAKL,MAAM,CAAE,CALH;;IAAA,mCAMP,MAAM,CAAE,CAND;;IAAA,qCAQL,MAAM;MAClBH,QAAQ,CAACI,UAAT,CAAoBC,MAApB;IACD,CAVkB;;IAEjB,KAAKC,KAAL,GAAa,EAAb;EACD;;EASDC,MAAM,GAAG;IACP,MAAM;MAAEC,GAAF;MAAOC;IAAP,IAAuB,KAAKN,KAAlC;IACA,oBACE,oBAAC,IAAD;MAAM,KAAK,EAAEO,MAAM,CAACC;IAApB,gBACE,oBAAC,UAAD,CAAY,MAAZ;MAAmB,QAAQ,EAAC,YAA5B;MAAyC,WAAW,EAAE,KAAKC,WAA3D;MAAwE,IAAI,EAAEH;IAA9E,EADF,eAEE,oBAAC,OAAD;MAAS,MAAM,EAAE;QAAEI,GAAG,EAAEL;MAAP,CAAjB;MAA+B,KAAK,EAAEE,MAAM,CAACI,YAA7C;MAA2D,WAAW,EAAE,KAAKC,WAA7E;MAA0F,SAAS,EAAE,KAAKC;IAA1G,EAFF,CADF;EAMD;;AArBiC;;AAwBpC,MAAMN,MAAM,GAAGb,UAAU,CAACoB,MAAX,CAAkB;EAC/BN,SAAS,EAAE;IACTO,IAAI,EAAE;EADG,CADoB;EAI/BJ,YAAY,EAAE;IACZI,IAAI,EAAE,CADM;IAEZC,UAAU,EAAE,QAFA;IAGZC,cAAc,EAAE;EAHJ;AAJiB,CAAlB,CAAf;AAWA,eAAenB,WAAf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-webview-app",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "Extension package to enable webview on Pluss Communities Platform",
|
|
5
5
|
"main": "dist/module/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
"author": "Phillip Suh",
|
|
22
22
|
"license": "ISC",
|
|
23
23
|
"dependencies": {
|
|
24
|
+
"@plusscommunities/pluss-core-app": "3.0.1",
|
|
25
|
+
"lodash": "^4.17.4",
|
|
24
26
|
"react": "18.2.0",
|
|
25
27
|
"react-native": "0.71.6",
|
|
26
28
|
"react-native-webview": "11.26.0"
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
|
-
import { View, StyleSheet } from 'react-native';
|
|
2
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
3
3
|
import { WebView } from 'react-native-webview';
|
|
4
|
+
import { connect } from 'react-redux';
|
|
5
|
+
import _ from 'lodash';
|
|
6
|
+
import { Colours, Components } from '../core.config';
|
|
7
|
+
import { Services } from '../feature.config';
|
|
4
8
|
|
|
5
9
|
class WidgetLarge extends Component {
|
|
6
10
|
constructor(props) {
|
|
@@ -11,8 +15,53 @@ class WidgetLarge extends Component {
|
|
|
11
15
|
onLoadStart = () => {};
|
|
12
16
|
onLoadEnd = () => {};
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
onGoToFullpage = () => {
|
|
19
|
+
const { options } = this.props;
|
|
20
|
+
Services.navigation.navigate('webViewPage', { url: options['webUrl'], headerTitle: this.getTitle() });
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
getTitle = () => {
|
|
15
24
|
const { options } = this.props;
|
|
25
|
+
if (options && !_.isEmpty(options.Title)) return options.Title;
|
|
26
|
+
return 'Web View';
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
render() {
|
|
30
|
+
const { options, colourBrandingMain } = this.props;
|
|
31
|
+
if (options.isWebViewSeparatePage) {
|
|
32
|
+
return (
|
|
33
|
+
<View style={[styles.buttonContainer, { backgroundColor: Colours.hexToRGBAstring(colourBrandingMain, 0.2) }]}>
|
|
34
|
+
<View style={styles.upperContainer}>
|
|
35
|
+
<View>
|
|
36
|
+
<Text style={[styles.title, { color: colourBrandingMain }]}>{this.getTitle()}</Text>
|
|
37
|
+
</View>
|
|
38
|
+
</View>
|
|
39
|
+
<Components.InlineButton onPress={this.onGoToFullpage} color={colourBrandingMain} style={styles.button} large>
|
|
40
|
+
{options.buttonText}
|
|
41
|
+
</Components.InlineButton>
|
|
42
|
+
</View>
|
|
43
|
+
);
|
|
44
|
+
// return (
|
|
45
|
+
// <View style={styles.sectionContainer}>
|
|
46
|
+
// <View style={styles.sectionPadding}>
|
|
47
|
+
// <View style={styles.sectionHeading}>
|
|
48
|
+
// <Text style={styles.sectionTitle}>{this.getTitle()}</Text>
|
|
49
|
+
// </View>
|
|
50
|
+
// </View>
|
|
51
|
+
// <View style={styles.buttonContainer}>
|
|
52
|
+
// <Components.InlineButton
|
|
53
|
+
// onPress={this.onGoToFullpage}
|
|
54
|
+
// color={colourBrandingMain}
|
|
55
|
+
// touchableStyle={{ paddingTop: 6 }}
|
|
56
|
+
// textStyle={{ color: '#fff' }}
|
|
57
|
+
// large
|
|
58
|
+
// >
|
|
59
|
+
// {options.buttonText}
|
|
60
|
+
// </Components.InlineButton>
|
|
61
|
+
// </View>
|
|
62
|
+
// </View>
|
|
63
|
+
// );
|
|
64
|
+
}
|
|
16
65
|
return (
|
|
17
66
|
<View style={styles.container}>
|
|
18
67
|
{this.props.ListHeaderComponent}
|
|
@@ -36,6 +85,31 @@ const styles = StyleSheet.create({
|
|
|
36
85
|
alignItems: 'center',
|
|
37
86
|
justifyContent: 'center',
|
|
38
87
|
},
|
|
88
|
+
buttonContainer: {
|
|
89
|
+
width: '100%',
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
justifyContent: 'center',
|
|
92
|
+
padding: 16,
|
|
93
|
+
},
|
|
94
|
+
upperContainer: {
|
|
95
|
+
flexDirection: 'row',
|
|
96
|
+
alignItems: 'center',
|
|
97
|
+
justifyContent: 'space-between',
|
|
98
|
+
},
|
|
99
|
+
title: {
|
|
100
|
+
fontFamily: 'sf-semibold',
|
|
101
|
+
fontSize: 16,
|
|
102
|
+
},
|
|
103
|
+
button: {
|
|
104
|
+
paddingHorizontal: 40,
|
|
105
|
+
marginTop: 16,
|
|
106
|
+
},
|
|
39
107
|
});
|
|
40
108
|
|
|
41
|
-
|
|
109
|
+
const mapStateToProps = state => {
|
|
110
|
+
return {
|
|
111
|
+
colourBrandingMain: Colours.getMainBrandingColourFromState(state),
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export default connect(mapStateToProps, {}, null, { forwardRef: true })(WidgetLarge);
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
|
-
import { View, StyleSheet } from 'react-native';
|
|
2
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
3
3
|
import { WebView } from 'react-native-webview';
|
|
4
|
+
import { connect } from 'react-redux';
|
|
5
|
+
import _ from 'lodash';
|
|
6
|
+
import { Colours, Components } from '../core.config';
|
|
7
|
+
import { Services } from '../feature.config';
|
|
4
8
|
|
|
5
9
|
class WidgetSmall extends Component {
|
|
6
10
|
constructor(props) {
|
|
@@ -11,8 +15,53 @@ class WidgetSmall extends Component {
|
|
|
11
15
|
onLoadStart = () => {};
|
|
12
16
|
onLoadEnd = () => {};
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
onGoToFullpage = () => {
|
|
19
|
+
const { options } = this.props;
|
|
20
|
+
Services.navigation.navigate('webViewPage', { url: options['webUrl'], headerTitle: this.getTitle() });
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
getTitle = () => {
|
|
15
24
|
const { options } = this.props;
|
|
25
|
+
if (options && !_.isEmpty(options.Title)) return options.Title;
|
|
26
|
+
return 'Web View';
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
render() {
|
|
30
|
+
const { options, colourBrandingMain } = this.props;
|
|
31
|
+
if (options.isWebViewSeparatePage) {
|
|
32
|
+
return (
|
|
33
|
+
<View style={[styles.buttonContainer, { backgroundColor: Colours.hexToRGBAstring(colourBrandingMain, 0.2) }]}>
|
|
34
|
+
<View style={styles.upperContainer}>
|
|
35
|
+
<View>
|
|
36
|
+
<Text style={[styles.title, { color: colourBrandingMain }]}>{this.getTitle()}</Text>
|
|
37
|
+
</View>
|
|
38
|
+
</View>
|
|
39
|
+
<Components.InlineButton onPress={this.onGoToFullpage} color={colourBrandingMain} style={styles.button} large>
|
|
40
|
+
{options.buttonText}
|
|
41
|
+
</Components.InlineButton>
|
|
42
|
+
</View>
|
|
43
|
+
);
|
|
44
|
+
// return (
|
|
45
|
+
// <View style={styles.sectionContainer}>
|
|
46
|
+
// <View style={styles.sectionPadding}>
|
|
47
|
+
// <View style={styles.sectionHeading}>
|
|
48
|
+
// <Text style={styles.sectionTitle}>{this.getTitle()}</Text>
|
|
49
|
+
// </View>
|
|
50
|
+
// </View>
|
|
51
|
+
// <View style={styles.buttonContainer}>
|
|
52
|
+
// <Components.InlineButton
|
|
53
|
+
// onPress={this.onGoToFullpage}
|
|
54
|
+
// color={colourBrandingMain}
|
|
55
|
+
// touchableStyle={{ paddingTop: 6 }}
|
|
56
|
+
// textStyle={{ color: '#fff' }}
|
|
57
|
+
// large
|
|
58
|
+
// >
|
|
59
|
+
// {options.buttonText}
|
|
60
|
+
// </Components.InlineButton>
|
|
61
|
+
// </View>
|
|
62
|
+
// </View>
|
|
63
|
+
// );
|
|
64
|
+
}
|
|
16
65
|
return (
|
|
17
66
|
<View style={styles.container}>
|
|
18
67
|
<WebView
|
|
@@ -37,6 +86,31 @@ const styles = StyleSheet.create({
|
|
|
37
86
|
alignItems: 'center',
|
|
38
87
|
justifyContent: 'center',
|
|
39
88
|
},
|
|
89
|
+
buttonContainer: {
|
|
90
|
+
width: '100%',
|
|
91
|
+
alignItems: 'center',
|
|
92
|
+
justifyContent: 'center',
|
|
93
|
+
padding: 16,
|
|
94
|
+
},
|
|
95
|
+
upperContainer: {
|
|
96
|
+
flexDirection: 'row',
|
|
97
|
+
alignItems: 'center',
|
|
98
|
+
justifyContent: 'space-between',
|
|
99
|
+
},
|
|
100
|
+
title: {
|
|
101
|
+
fontFamily: 'sf-semibold',
|
|
102
|
+
fontSize: 16,
|
|
103
|
+
},
|
|
104
|
+
button: {
|
|
105
|
+
paddingHorizontal: 40,
|
|
106
|
+
marginTop: 16,
|
|
107
|
+
},
|
|
40
108
|
});
|
|
41
109
|
|
|
42
|
-
|
|
110
|
+
const mapStateToProps = state => {
|
|
111
|
+
return {
|
|
112
|
+
colourBrandingMain: Colours.getMainBrandingColourFromState(state),
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export default connect(mapStateToProps, {}, null, { forwardRef: true })(WidgetSmall);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// import * as PlussCore from '../../pluss-core/src';
|
|
2
|
+
import * as PlussCore from '@plusscommunities/pluss-core-app';
|
|
3
|
+
|
|
4
|
+
const { Apis, Fonts, Actions, ActionTypes, Config, Components, Styles, Session, Helper, Constants, Colours } = PlussCore;
|
|
5
|
+
export { Apis, Fonts, Actions, ActionTypes, Config, Components, Styles, Session, Helper, Constants, Colours };
|
package/src/feature.config.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
// import * as PlussCore from '../../pluss-core/src';
|
|
2
|
+
import * as PlussCore from '@plusscommunities/pluss-core-app';
|
|
3
|
+
|
|
1
4
|
export const Services = {
|
|
2
5
|
navigation: null,
|
|
3
6
|
};
|
|
4
7
|
|
|
8
|
+
export const BaseComponents = {
|
|
9
|
+
NotificationBell: null,
|
|
10
|
+
};
|
|
11
|
+
|
|
5
12
|
const FeatureConfig = {
|
|
6
13
|
key: 'web',
|
|
7
14
|
title: 'Web',
|
|
@@ -10,6 +17,7 @@ const FeatureConfig = {
|
|
|
10
17
|
viewBox: '0 0 24 24',
|
|
11
18
|
navigate: 'web',
|
|
12
19
|
},
|
|
20
|
+
hideTabBar: ['webViewPage'],
|
|
13
21
|
env: {
|
|
14
22
|
baseStage: '',
|
|
15
23
|
baseAPIUrl: '',
|
|
@@ -26,7 +34,9 @@ const FeatureConfig = {
|
|
|
26
34
|
newEventDefaults: '',
|
|
27
35
|
defaultAllowComments: true,
|
|
28
36
|
},
|
|
29
|
-
init: (environment, navigation) => {
|
|
37
|
+
init: (environment, navigation, notificationBell) => {
|
|
38
|
+
BaseComponents.NotificationBell = notificationBell;
|
|
39
|
+
PlussCore.Config.init(environment, navigation);
|
|
30
40
|
FeatureConfig.env = environment;
|
|
31
41
|
Services.navigation = navigation;
|
|
32
42
|
},
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import WebPage from './screens/WebPage';
|
|
2
|
+
import WebViewPage from './screens/WebViewPage';
|
|
2
3
|
|
|
3
|
-
export const Screens = { web: WebPage };
|
|
4
|
+
export const Screens = { web: WebPage, webViewPage: WebViewPage };
|
|
4
5
|
export { default as Config } from './feature.config';
|
|
5
6
|
export { default as WidgetSmall } from './components/WidgetSmall';
|
|
6
7
|
export { default as WidgetLarge } from './components/WidgetLarge';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import { View, StyleSheet } from 'react-native';
|
|
3
|
+
import { WebView } from 'react-native-webview';
|
|
4
|
+
import { Components } from '../core.config';
|
|
5
|
+
import { Services } from '../feature.config';
|
|
6
|
+
|
|
7
|
+
class WebViewPage extends Component {
|
|
8
|
+
constructor(props) {
|
|
9
|
+
super(props);
|
|
10
|
+
this.state = {};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
onLoadStart = () => {};
|
|
14
|
+
onLoadEnd = () => {};
|
|
15
|
+
|
|
16
|
+
onPressBack = () => {
|
|
17
|
+
Services.navigation.goBack();
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
render() {
|
|
21
|
+
const { url, headerTitle } = this.props;
|
|
22
|
+
return (
|
|
23
|
+
<View style={styles.container}>
|
|
24
|
+
<Components.Header leftIcon="angle-left" onPressLeft={this.onPressBack} text={headerTitle} />
|
|
25
|
+
<WebView source={{ uri: url }} style={styles.webContainer} onLoadStart={this.onLoadStart} onLoadEnd={this.onLoadEnd} />
|
|
26
|
+
</View>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const styles = StyleSheet.create({
|
|
32
|
+
container: {
|
|
33
|
+
flex: 1,
|
|
34
|
+
},
|
|
35
|
+
webContainer: {
|
|
36
|
+
flex: 1,
|
|
37
|
+
alignItems: 'center',
|
|
38
|
+
justifyContent: 'center',
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export default WebViewPage;
|