@plusscommunities/pluss-maintenance-app 1.1.15 → 1.2.2

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.
Files changed (44) hide show
  1. package/dist/module/actions/JobActions.js +14 -0
  2. package/dist/module/actions/JobActions.js.map +1 -0
  3. package/dist/module/actions/index.js +2 -0
  4. package/dist/module/actions/index.js.map +1 -0
  5. package/dist/module/actions/types.js +3 -0
  6. package/dist/module/actions/types.js.map +1 -0
  7. package/dist/module/apis/generalActions.js +145 -0
  8. package/dist/module/apis/generalActions.js.map +1 -0
  9. package/dist/module/apis/index.js +2 -0
  10. package/dist/module/apis/index.js.map +1 -0
  11. package/dist/module/components/MaintenanceList.js +240 -0
  12. package/dist/module/components/MaintenanceList.js.map +1 -0
  13. package/dist/module/components/MaintenanceListItem.js +282 -0
  14. package/dist/module/components/MaintenanceListItem.js.map +1 -0
  15. package/dist/module/components/MaintenanceWidgetItem.js +161 -0
  16. package/dist/module/components/MaintenanceWidgetItem.js.map +1 -0
  17. package/dist/module/components/StatusSelectorPopup.js +93 -0
  18. package/dist/module/components/StatusSelectorPopup.js.map +1 -0
  19. package/dist/module/components/WidgetLarge.js +12 -0
  20. package/dist/module/components/WidgetLarge.js.map +1 -0
  21. package/dist/module/components/WidgetSmall.js +185 -0
  22. package/dist/module/components/WidgetSmall.js.map +1 -0
  23. package/dist/module/core.config.js +17 -0
  24. package/dist/module/core.config.js.map +1 -0
  25. package/dist/module/feature.config.js +91 -0
  26. package/dist/module/feature.config.js.map +1 -0
  27. package/dist/module/helper.js +28 -0
  28. package/dist/module/helper.js.map +1 -0
  29. package/dist/module/images/speechbubble.png +0 -0
  30. package/dist/module/index.js +20 -0
  31. package/dist/module/index.js.map +1 -0
  32. package/dist/module/reducers/JobsReducer.js +59 -0
  33. package/dist/module/reducers/JobsReducer.js.map +1 -0
  34. package/dist/module/screens/JobTypePicker.js +139 -0
  35. package/dist/module/screens/JobTypePicker.js.map +1 -0
  36. package/dist/module/screens/MaintenancePage.js +99 -0
  37. package/dist/module/screens/MaintenancePage.js.map +1 -0
  38. package/dist/module/screens/RequestDetail.js +839 -0
  39. package/dist/module/screens/RequestDetail.js.map +1 -0
  40. package/dist/module/screens/RequestNotes.js +420 -0
  41. package/dist/module/screens/RequestNotes.js.map +1 -0
  42. package/dist/module/screens/ServiceRequest.js +803 -0
  43. package/dist/module/screens/ServiceRequest.js.map +1 -0
  44. package/package.json +25 -12
@@ -0,0 +1,185 @@
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 { Text, View, ScrollView, StyleSheet } from 'react-native';
5
+ import { connect } from 'react-redux';
6
+ import _ from 'lodash';
7
+ import { generalActions } from '../apis';
8
+ import { jobsLoaded } from '../actions';
9
+ import MaintenanceWidgetItem from './MaintenanceWidgetItem';
10
+ import { Services } from '../feature.config';
11
+ import { Colours, Components, Config } from '../core.config';
12
+ const MAX_ITEMS = 10;
13
+
14
+ class WidgetSmall extends Component {
15
+ constructor(props) {
16
+ super(props);
17
+
18
+ _defineProperty(this, "getTitle", () => {
19
+ const {
20
+ options
21
+ } = this.props;
22
+ if (options && !_.isEmpty(options.Title)) return options.Title;
23
+ return Config.env.strings.MAINTENANCE;
24
+ });
25
+
26
+ _defineProperty(this, "getEmptyStateText", () => {
27
+ const {
28
+ options,
29
+ userCategory
30
+ } = this.props;
31
+ if (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;
32
+ return userCategory === 'staff' ? Config.env.strings.EMPTY_REQUESTS_STAFF : Config.env.strings.EMPTY_REQUESTS_USER;
33
+ });
34
+
35
+ _defineProperty(this, "refresh", () => {
36
+ this.onLoadingChanged(true, async () => {
37
+ try {
38
+ const res = await generalActions.getJobs(this.props.site); // console.log('WidgetSmall - refresh', res.data);
39
+
40
+ this.props.jobsLoaded(res.data);
41
+ } catch (error) {
42
+ console.log('refresh error', error);
43
+ } finally {
44
+ this.onLoadingChanged(false);
45
+ }
46
+ });
47
+ });
48
+
49
+ _defineProperty(this, "onLoadingChanged", (loading, callback) => {
50
+ this.setState({
51
+ loading
52
+ }, () => {
53
+ if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);
54
+ if (callback) callback();
55
+ });
56
+ });
57
+
58
+ _defineProperty(this, "onPressAll", () => {
59
+ Services.navigation.navigate('maintenance', {
60
+ options: this.props.options
61
+ });
62
+ });
63
+
64
+ this.state = {
65
+ loading: false
66
+ };
67
+ }
68
+
69
+ componentDidMount() {
70
+ this.refresh();
71
+ }
72
+
73
+ componentDidUpdate(prevProps) {
74
+ if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();
75
+ }
76
+
77
+ renderContent() {
78
+ const {
79
+ jobs
80
+ } = this.props;
81
+
82
+ if (_.isEmpty(jobs)) {
83
+ if (this.state.loading) {
84
+ return /*#__PURE__*/React.createElement(View, {
85
+ style: styles.loadingPadding
86
+ }, /*#__PURE__*/React.createElement(Components.LoadingStateWidget, {
87
+ height: 180
88
+ }));
89
+ }
90
+
91
+ return /*#__PURE__*/React.createElement(View, {
92
+ style: styles.loadingPadding
93
+ }, /*#__PURE__*/React.createElement(Components.EmptyStateWidget, {
94
+ title: this.getEmptyStateText(),
95
+ height: 180
96
+ }));
97
+ }
98
+
99
+ return /*#__PURE__*/React.createElement(ScrollView, {
100
+ horizontal: true,
101
+ contentContainerStyle: {
102
+ paddingLeft: 6,
103
+ paddingRight: 8
104
+ },
105
+ showsHorizontalScrollIndicator: false
106
+ }, jobs.slice(0, MAX_ITEMS).map(job => {
107
+ return /*#__PURE__*/React.createElement(MaintenanceWidgetItem, {
108
+ key: job.id,
109
+ job: job
110
+ });
111
+ }));
112
+ }
113
+
114
+ render() {
115
+ const {
116
+ colourBrandingMain
117
+ } = this.props;
118
+ return /*#__PURE__*/React.createElement(View, {
119
+ style: styles.sectionContainer
120
+ }, /*#__PURE__*/React.createElement(View, {
121
+ style: styles.sectionPadding
122
+ }, /*#__PURE__*/React.createElement(View, {
123
+ style: styles.sectionHeading
124
+ }, /*#__PURE__*/React.createElement(Text, {
125
+ style: styles.sectionTitle
126
+ }, this.getTitle()), /*#__PURE__*/React.createElement(Components.InlineButton, {
127
+ onPress: this.onPressAll,
128
+ color: colourBrandingMain,
129
+ touchableStyle: {
130
+ paddingTop: 6
131
+ },
132
+ textStyle: {
133
+ color: '#fff'
134
+ }
135
+ }, "View All"))), this.renderContent());
136
+ }
137
+
138
+ }
139
+
140
+ const styles = StyleSheet.create({
141
+ sectionContainer: {
142
+ backgroundColor: '#fff',
143
+ paddingTop: 16
144
+ },
145
+ sectionPadding: {
146
+ paddingHorizontal: 16,
147
+ paddingBottom: 6
148
+ },
149
+ loadingPadding: {
150
+ paddingHorizontal: 16
151
+ },
152
+ sectionHeading: {
153
+ marginBottom: 4,
154
+ flexDirection: 'row',
155
+ alignContent: 'flex-start',
156
+ justifyContent: 'space-between'
157
+ },
158
+ sectionTitle: {
159
+ fontFamily: 'sf-bold',
160
+ fontSize: 24,
161
+ color: Colours.TEXT_DARKEST
162
+ }
163
+ });
164
+
165
+ const mapStateToProps = state => {
166
+ const {
167
+ user,
168
+ jobs,
169
+ notifications
170
+ } = state;
171
+ return {
172
+ colourBrandingMain: Colours.getMainBrandingColourFromState(state),
173
+ jobs: _.orderBy(jobs.jobs, ['createdUnix'], ['desc']),
174
+ site: user.site,
175
+ userCategory: user.category,
176
+ dataUpdated: notifications.dataUpdated.jobs
177
+ };
178
+ };
179
+
180
+ export default connect(mapStateToProps, {
181
+ jobsLoaded
182
+ }, null, {
183
+ forwardRef: true
184
+ })(WidgetSmall);
185
+ //# sourceMappingURL=WidgetSmall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["WidgetSmall.js"],"names":["React","Component","Text","View","ScrollView","StyleSheet","connect","_","generalActions","jobsLoaded","MaintenanceWidgetItem","Services","Colours","Components","Config","MAX_ITEMS","WidgetSmall","constructor","props","options","isEmpty","Title","env","strings","MAINTENANCE","userCategory","EmptyText","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","onLoadingChanged","res","getJobs","site","data","error","console","log","loading","callback","setState","state","navigation","navigate","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","jobs","styles","loadingPadding","getEmptyStateText","paddingLeft","paddingRight","slice","map","job","id","render","colourBrandingMain","sectionContainer","sectionPadding","sectionHeading","sectionTitle","getTitle","onPressAll","paddingTop","color","create","backgroundColor","paddingHorizontal","paddingBottom","marginBottom","flexDirection","alignContent","justifyContent","fontFamily","fontSize","TEXT_DARKEST","mapStateToProps","user","notifications","getMainBrandingColourFromState","orderBy","category","forwardRef"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,SAASC,IAAT,EAAeC,IAAf,EAAqBC,UAArB,EAAiCC,UAAjC,QAAmD,cAAnD;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,OAAOC,CAAP,MAAc,QAAd;AACA,SAASC,cAAT,QAA+B,SAA/B;AACA,SAASC,UAAT,QAA2B,YAA3B;AACA,OAAOC,qBAAP,MAAkC,yBAAlC;AACA,SAASC,QAAT,QAAyB,mBAAzB;AACA,SAASC,OAAT,EAAkBC,UAAlB,EAA8BC,MAA9B,QAA4C,gBAA5C;AAEA,MAAMC,SAAS,GAAG,EAAlB;;AAEA,MAAMC,WAAN,SAA0Bf,SAA1B,CAAoC;AAClCgB,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;;AADiB,sCAaR,MAAM;AACf,YAAM;AAAEC,QAAAA;AAAF,UAAc,KAAKD,KAAzB;AACA,UAAIC,OAAO,IAAI,CAACZ,CAAC,CAACa,OAAF,CAAUD,OAAO,CAACE,KAAlB,CAAhB,EAA0C,OAAOF,OAAO,CAACE,KAAf;AAC1C,aAAOP,MAAM,CAACQ,GAAP,CAAWC,OAAX,CAAmBC,WAA1B;AACD,KAjBkB;;AAAA,+CAmBC,MAAM;AACxB,YAAM;AAAEL,QAAAA,OAAF;AAAWM,QAAAA;AAAX,UAA4B,KAAKP,KAAvC;AACA,UAAIC,OAAO,IAAI,CAACZ,CAAC,CAACa,OAAF,CAAUD,OAAO,CAACO,SAAlB,CAAhB,EAA8C,OAAOP,OAAO,CAACO,SAAf;AAC9C,aAAOD,YAAY,KAAK,OAAjB,GAA2BX,MAAM,CAACQ,GAAP,CAAWC,OAAX,CAAmBI,oBAA9C,GAAqEb,MAAM,CAACQ,GAAP,CAAWC,OAAX,CAAmBK,mBAA/F;AACD,KAvBkB;;AAAA,qCAyBT,MAAM;AACd,WAAKC,gBAAL,CAAsB,IAAtB,EAA4B,YAAY;AACtC,YAAI;AACF,gBAAMC,GAAG,GAAG,MAAMtB,cAAc,CAACuB,OAAf,CAAuB,KAAKb,KAAL,CAAWc,IAAlC,CAAlB,CADE,CAEF;;AACA,eAAKd,KAAL,CAAWT,UAAX,CAAsBqB,GAAG,CAACG,IAA1B;AACD,SAJD,CAIE,OAAOC,KAAP,EAAc;AACdC,UAAAA,OAAO,CAACC,GAAR,CAAY,eAAZ,EAA6BF,KAA7B;AACD,SAND,SAMU;AACR,eAAKL,gBAAL,CAAsB,KAAtB;AACD;AACF,OAVD;AAWD,KArCkB;;AAAA,8CAuCA,CAACQ,OAAD,EAAUC,QAAV,KAAuB;AACxC,WAAKC,QAAL,CAAc;AAAEF,QAAAA;AAAF,OAAd,EAA2B,MAAM;AAC/B,YAAI,KAAKnB,KAAL,CAAWW,gBAAf,EAAiC,KAAKX,KAAL,CAAWW,gBAAX,CAA4B,KAAKW,KAAL,CAAWH,OAAvC;AACjC,YAAIC,QAAJ,EAAcA,QAAQ;AACvB,OAHD;AAID,KA5CkB;;AAAA,wCA8CN,MAAM;AACjB3B,MAAAA,QAAQ,CAAC8B,UAAT,CAAoBC,QAApB,CAA6B,aAA7B,EAA4C;AAAEvB,QAAAA,OAAO,EAAE,KAAKD,KAAL,CAAWC;AAAtB,OAA5C;AACD,KAhDkB;;AAEjB,SAAKqB,KAAL,GAAa;AAAEH,MAAAA,OAAO,EAAE;AAAX,KAAb;AACD;;AAEDM,EAAAA,iBAAiB,GAAG;AAClB,SAAKC,OAAL;AACD;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAAY;AAC5B,QAAI,CAACA,SAAS,CAACC,WAAX,IAA0B,KAAK7B,KAAL,CAAW6B,WAAzC,EAAsD,KAAKH,OAAL;AACvD;;AAuCDI,EAAAA,aAAa,GAAG;AACd,UAAM;AAAEC,MAAAA;AAAF,QAAW,KAAK/B,KAAtB;;AACA,QAAIX,CAAC,CAACa,OAAF,CAAU6B,IAAV,CAAJ,EAAqB;AACnB,UAAI,KAAKT,KAAL,CAAWH,OAAf,EAAwB;AACtB,4BACE,oBAAC,IAAD;AAAM,UAAA,KAAK,EAAEa,MAAM,CAACC;AAApB,wBACE,oBAAC,UAAD,CAAY,kBAAZ;AAA+B,UAAA,MAAM,EAAE;AAAvC,UADF,CADF;AAKD;;AACD,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAED,MAAM,CAACC;AAApB,sBACE,oBAAC,UAAD,CAAY,gBAAZ;AAA6B,QAAA,KAAK,EAAE,KAAKC,iBAAL,EAApC;AAA8D,QAAA,MAAM,EAAE;AAAtE,QADF,CADF;AAKD;;AACD,wBACE,oBAAC,UAAD;AAAY,MAAA,UAAU,MAAtB;AAAuB,MAAA,qBAAqB,EAAE;AAAEC,QAAAA,WAAW,EAAE,CAAf;AAAkBC,QAAAA,YAAY,EAAE;AAAhC,OAA9C;AAAmF,MAAA,8BAA8B,EAAE;AAAnH,OACGL,IAAI,CAACM,KAAL,CAAW,CAAX,EAAcxC,SAAd,EAAyByC,GAAzB,CAA6BC,GAAG,IAAI;AACnC,0BAAO,oBAAC,qBAAD;AAAuB,QAAA,GAAG,EAAEA,GAAG,CAACC,EAAhC;AAAoC,QAAA,GAAG,EAAED;AAAzC,QAAP;AACD,KAFA,CADH,CADF;AAOD;;AAEDE,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEC,MAAAA;AAAF,QAAyB,KAAK1C,KAApC;AAEA,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEgC,MAAM,CAACW;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEX,MAAM,CAACY;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEZ,MAAM,CAACa;AAApB,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEb,MAAM,CAACc;AAApB,OAAmC,KAAKC,QAAL,EAAnC,CADF,eAEE,oBAAC,UAAD,CAAY,YAAZ;AACE,MAAA,OAAO,EAAE,KAAKC,UADhB;AAEE,MAAA,KAAK,EAAEN,kBAFT;AAGE,MAAA,cAAc,EAAE;AAAEO,QAAAA,UAAU,EAAE;AAAd,OAHlB;AAIE,MAAA,SAAS,EAAE;AAAEC,QAAAA,KAAK,EAAE;AAAT;AAJb,kBAFF,CADF,CADF,EAcG,KAAKpB,aAAL,EAdH,CADF;AAkBD;;AAjGiC;;AAoGpC,MAAME,MAAM,GAAG7C,UAAU,CAACgE,MAAX,CAAkB;AAC/BR,EAAAA,gBAAgB,EAAE;AAChBS,IAAAA,eAAe,EAAE,MADD;AAEhBH,IAAAA,UAAU,EAAE;AAFI,GADa;AAK/BL,EAAAA,cAAc,EAAE;AACdS,IAAAA,iBAAiB,EAAE,EADL;AAEdC,IAAAA,aAAa,EAAE;AAFD,GALe;AAS/BrB,EAAAA,cAAc,EAAE;AACdoB,IAAAA,iBAAiB,EAAE;AADL,GATe;AAY/BR,EAAAA,cAAc,EAAE;AACdU,IAAAA,YAAY,EAAE,CADA;AAEdC,IAAAA,aAAa,EAAE,KAFD;AAGdC,IAAAA,YAAY,EAAE,YAHA;AAIdC,IAAAA,cAAc,EAAE;AAJF,GAZe;AAkB/BZ,EAAAA,YAAY,EAAE;AACZa,IAAAA,UAAU,EAAE,SADA;AAEZC,IAAAA,QAAQ,EAAE,EAFE;AAGZV,IAAAA,KAAK,EAAExD,OAAO,CAACmE;AAHH;AAlBiB,CAAlB,CAAf;;AAyBA,MAAMC,eAAe,GAAGxC,KAAK,IAAI;AAC/B,QAAM;AAAEyC,IAAAA,IAAF;AAAQhC,IAAAA,IAAR;AAAciC,IAAAA;AAAd,MAAgC1C,KAAtC;AACA,SAAO;AACLoB,IAAAA,kBAAkB,EAAEhD,OAAO,CAACuE,8BAAR,CAAuC3C,KAAvC,CADf;AAELS,IAAAA,IAAI,EAAE1C,CAAC,CAAC6E,OAAF,CAAUnC,IAAI,CAACA,IAAf,EAAqB,CAAC,aAAD,CAArB,EAAsC,CAAC,MAAD,CAAtC,CAFD;AAGLjB,IAAAA,IAAI,EAAEiD,IAAI,CAACjD,IAHN;AAILP,IAAAA,YAAY,EAAEwD,IAAI,CAACI,QAJd;AAKLtC,IAAAA,WAAW,EAAEmC,aAAa,CAACnC,WAAd,CAA0BE;AALlC,GAAP;AAOD,CATD;;AAWA,eAAe3C,OAAO,CAAC0E,eAAD,EAAkB;AAAEvE,EAAAA;AAAF,CAAlB,EAAkC,IAAlC,EAAwC;AAAE6E,EAAAA,UAAU,EAAE;AAAd,CAAxC,CAAP,CAAqEtE,WAArE,CAAf","sourcesContent":["import React, { Component } from 'react';\nimport { Text, View, ScrollView, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { generalActions } from '../apis';\nimport { jobsLoaded } from '../actions';\nimport MaintenanceWidgetItem from './MaintenanceWidgetItem';\nimport { Services } from '../feature.config';\nimport { Colours, Components, Config } from '../core.config';\n\nconst MAX_ITEMS = 10;\n\nclass WidgetSmall extends Component {\n constructor(props) {\n super(props);\n this.state = { loading: false };\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n }\n\n getTitle = () => {\n const { options } = this.props;\n if (options && !_.isEmpty(options.Title)) return options.Title;\n return Config.env.strings.MAINTENANCE;\n };\n\n getEmptyStateText = () => {\n const { options, userCategory } = this.props;\n if (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n return userCategory === 'staff' ? Config.env.strings.EMPTY_REQUESTS_STAFF : Config.env.strings.EMPTY_REQUESTS_USER;\n };\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const res = await generalActions.getJobs(this.props.site);\n // console.log('WidgetSmall - refresh', res.data);\n this.props.jobsLoaded(res.data);\n } catch (error) {\n console.log('refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onPressAll = () => {\n Services.navigation.navigate('maintenance', { options: this.props.options });\n };\n\n renderContent() {\n const { jobs } = this.props;\n if (_.isEmpty(jobs)) {\n if (this.state.loading) {\n return (\n <View style={styles.loadingPadding}>\n <Components.LoadingStateWidget height={180} />\n </View>\n );\n }\n return (\n <View style={styles.loadingPadding}>\n <Components.EmptyStateWidget title={this.getEmptyStateText()} height={180} />\n </View>\n );\n }\n return (\n <ScrollView horizontal contentContainerStyle={{ paddingLeft: 6, paddingRight: 8 }} showsHorizontalScrollIndicator={false}>\n {jobs.slice(0, MAX_ITEMS).map(job => {\n return <MaintenanceWidgetItem key={job.id} job={job} />;\n })}\n </ScrollView>\n );\n }\n\n render() {\n const { colourBrandingMain } = this.props;\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 <Components.InlineButton\n onPress={this.onPressAll}\n color={colourBrandingMain}\n touchableStyle={{ paddingTop: 6 }}\n textStyle={{ color: '#fff' }}\n >\n View All\n </Components.InlineButton>\n </View>\n </View>\n {this.renderContent()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n sectionContainer: {\n backgroundColor: '#fff',\n paddingTop: 16,\n },\n sectionPadding: {\n paddingHorizontal: 16,\n paddingBottom: 6,\n },\n loadingPadding: {\n paddingHorizontal: 16,\n },\n sectionHeading: {\n marginBottom: 4,\n flexDirection: 'row',\n alignContent: 'flex-start',\n justifyContent: 'space-between',\n },\n sectionTitle: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n color: Colours.TEXT_DARKEST,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, jobs, notifications } = state;\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n jobs: _.orderBy(jobs.jobs, ['createdUnix'], ['desc']),\n site: user.site,\n userCategory: user.category,\n dataUpdated: notifications.dataUpdated.jobs,\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded }, null, { forwardRef: true })(WidgetSmall);\n"]}
@@ -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,"sources":["core.config.js"],"names":["PlussCore","Apis","Fonts","Actions","ActionTypes","Config","Components","Styles","Session","Helper","Constants","Colours"],"mappings":"AAAA;AACA,OAAO,KAAKA,SAAZ,MAA2B,kCAA3B;AAEA,MAAM;AAAEC,EAAAA,IAAF;AAAQC,EAAAA,KAAR;AAAeC,EAAAA,OAAf;AAAwBC,EAAAA,WAAxB;AAAqCC,EAAAA,MAArC;AAA6CC,EAAAA,UAA7C;AAAyDC,EAAAA,MAAzD;AAAiEC,EAAAA,OAAjE;AAA0EC,EAAAA,MAA1E;AAAkFC,EAAAA,SAAlF;AAA6FC,EAAAA;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","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"]}
@@ -0,0 +1,91 @@
1
+ // import * as PlussCore from '../../pluss-core/src';
2
+ import * as PlussCore from '@plusscommunities/pluss-core-app';
3
+ export const Services = {
4
+ navigation: null
5
+ };
6
+ export const BaseComponents = {
7
+ NotificationBell: null
8
+ };
9
+ const FeatureConfig = {
10
+ key: 'maintenance',
11
+ aliases: ['maintenanceRequest'],
12
+ title: 'Request',
13
+ gridMenu: {
14
+ icon: 'maintenance',
15
+ viewBox: '0 0 30 30',
16
+ navigate: 'maintenance'
17
+ },
18
+ addMenu: {
19
+ order: 5,
20
+ icon: 'request',
21
+ title: 'Request',
22
+ navigate: 'serviceRequest',
23
+ visibleExps: {
24
+ type: 'feature',
25
+ value: 'maintenance'
26
+ }
27
+ },
28
+ moreMenu: {
29
+ order: 4,
30
+ title: 'Request',
31
+ navigate: 'maintenance',
32
+ visibleExps: {
33
+ type: 'and',
34
+ exps: [{
35
+ type: 'notHidden',
36
+ value: 'maintenanceRequest'
37
+ }, {
38
+ type: 'notUserType',
39
+ value: 'KIOSK'
40
+ }]
41
+ }
42
+ },
43
+ kioskAction: {
44
+ order: 1,
45
+ icon: 'wrench',
46
+ title: 'Request',
47
+ navigate: 'serviceRequest'
48
+ },
49
+ hideTabBar: [],
50
+ env: {
51
+ baseStage: '',
52
+ baseAPIUrl: '',
53
+ hasGradientHeader: false,
54
+ defaultProfileImage: '',
55
+ tinyChatDefault: '',
56
+ baseUploadsUrl: '',
57
+ allowMediaDownload: false,
58
+ allowMediaSharing: false,
59
+ awsUploadsBucket: '',
60
+ awsStorageBucket: '',
61
+ preferredSite: '',
62
+ strings: {},
63
+ newEventDefaults: '',
64
+ defaultAllowComments: true
65
+ },
66
+ init: (environment, navigation, notificationBell) => {
67
+ FeatureConfig.env = environment;
68
+ Services.navigation = navigation;
69
+ BaseComponents.NotificationBell = notificationBell;
70
+ PlussCore.Config.init(environment, navigation); // Override strings
71
+
72
+ if (environment && environment.strings) {
73
+ const {
74
+ MAINTENANCE,
75
+ MAINTENANCE_REQUEST
76
+ } = environment.strings;
77
+
78
+ if (MAINTENANCE) {
79
+ FeatureConfig.addMenu.title = MAINTENANCE;
80
+ }
81
+
82
+ if (MAINTENANCE_REQUEST) {
83
+ FeatureConfig.title = MAINTENANCE_REQUEST;
84
+ FeatureConfig.moreMenu.title = MAINTENANCE_REQUEST;
85
+ FeatureConfig.kioskAction.title = MAINTENANCE_REQUEST;
86
+ }
87
+ }
88
+ }
89
+ };
90
+ export default FeatureConfig;
91
+ //# sourceMappingURL=feature.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["feature.config.js"],"names":["PlussCore","Services","navigation","BaseComponents","NotificationBell","FeatureConfig","key","aliases","title","gridMenu","icon","viewBox","navigate","addMenu","order","visibleExps","type","value","moreMenu","exps","kioskAction","hideTabBar","env","baseStage","baseAPIUrl","hasGradientHeader","defaultProfileImage","tinyChatDefault","baseUploadsUrl","allowMediaDownload","allowMediaSharing","awsUploadsBucket","awsStorageBucket","preferredSite","strings","newEventDefaults","defaultAllowComments","init","environment","notificationBell","Config","MAINTENANCE","MAINTENANCE_REQUEST"],"mappings":"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","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: 'maintenance',\n aliases: ['maintenanceRequest'],\n title: 'Request',\n gridMenu: {\n icon: 'maintenance',\n viewBox: '0 0 30 30',\n navigate: 'maintenance',\n },\n addMenu: {\n order: 5,\n icon: 'request',\n title: 'Request',\n navigate: 'serviceRequest',\n visibleExps: { type: 'feature', value: 'maintenance' },\n },\n moreMenu: {\n order: 4,\n title: 'Request',\n navigate: 'maintenance',\n visibleExps: {\n type: 'and',\n exps: [\n { type: 'notHidden', value: 'maintenanceRequest' },\n { type: 'notUserType', value: 'KIOSK' },\n ],\n },\n },\n kioskAction: {\n order: 1,\n icon: 'wrench',\n title: 'Request',\n navigate: 'serviceRequest',\n },\n hideTabBar: [],\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 FeatureConfig.env = environment;\n Services.navigation = navigation;\n BaseComponents.NotificationBell = notificationBell;\n PlussCore.Config.init(environment, navigation);\n\n // Override strings\n if (environment && environment.strings) {\n const { MAINTENANCE, MAINTENANCE_REQUEST } = environment.strings;\n if (MAINTENANCE) {\n FeatureConfig.addMenu.title = MAINTENANCE;\n }\n if (MAINTENANCE_REQUEST) {\n FeatureConfig.title = MAINTENANCE_REQUEST;\n FeatureConfig.moreMenu.title = MAINTENANCE_REQUEST;\n FeatureConfig.kioskAction.title = MAINTENANCE_REQUEST;\n }\n }\n },\n};\nexport default FeatureConfig;\n"]}
@@ -0,0 +1,28 @@
1
+ import { Colours } from './core.config';
2
+ const jobStatusOptions = [{
3
+ name: 'Unassigned',
4
+ color: Colours.LINEGREY
5
+ }, {
6
+ name: 'In Progress',
7
+ color: Colours.COLOUR_TEAL
8
+ }, {
9
+ name: 'Completed',
10
+ color: Colours.COLOUR_GREEN_LIGHT
11
+ }];
12
+
13
+ const getJobStatusColour = status => {
14
+ const option = jobStatusOptions.find(item => item.name === status);
15
+ return option ? option.color : jobStatusOptions[0].color;
16
+ };
17
+
18
+ const getJobStatusProps = status => {
19
+ const statusText = status || jobStatusOptions[0].name;
20
+ const statusColor = getJobStatusColour(statusText);
21
+ return {
22
+ statusText,
23
+ statusColor
24
+ };
25
+ };
26
+
27
+ export { jobStatusOptions, getJobStatusColour, getJobStatusProps };
28
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["helper.js"],"names":["Colours","jobStatusOptions","name","color","LINEGREY","COLOUR_TEAL","COLOUR_GREEN_LIGHT","getJobStatusColour","status","option","find","item","getJobStatusProps","statusText","statusColor"],"mappings":"AAAA,SAASA,OAAT,QAAwB,eAAxB;AAEA,MAAMC,gBAAgB,GAAG,CACvB;AACEC,EAAAA,IAAI,EAAE,YADR;AAEEC,EAAAA,KAAK,EAAEH,OAAO,CAACI;AAFjB,CADuB,EAKvB;AACEF,EAAAA,IAAI,EAAE,aADR;AAEEC,EAAAA,KAAK,EAAEH,OAAO,CAACK;AAFjB,CALuB,EASvB;AACEH,EAAAA,IAAI,EAAE,WADR;AAEEC,EAAAA,KAAK,EAAEH,OAAO,CAACM;AAFjB,CATuB,CAAzB;;AAeA,MAAMC,kBAAkB,GAAGC,MAAM,IAAI;AACnC,QAAMC,MAAM,GAAGR,gBAAgB,CAACS,IAAjB,CAAsBC,IAAI,IAAIA,IAAI,CAACT,IAAL,KAAcM,MAA5C,CAAf;AACA,SAAOC,MAAM,GAAGA,MAAM,CAACN,KAAV,GAAkBF,gBAAgB,CAAC,CAAD,CAAhB,CAAoBE,KAAnD;AACD,CAHD;;AAKA,MAAMS,iBAAiB,GAAGJ,MAAM,IAAI;AAClC,QAAMK,UAAU,GAAGL,MAAM,IAAIP,gBAAgB,CAAC,CAAD,CAAhB,CAAoBC,IAAjD;AACA,QAAMY,WAAW,GAAGP,kBAAkB,CAACM,UAAD,CAAtC;AAEA,SAAO;AAAEA,IAAAA,UAAF;AAAcC,IAAAA;AAAd,GAAP;AACD,CALD;;AAOA,SAASb,gBAAT,EAA2BM,kBAA3B,EAA+CK,iBAA/C","sourcesContent":["import { Colours } from './core.config';\n\nconst jobStatusOptions = [\n {\n name: 'Unassigned',\n color: Colours.LINEGREY,\n },\n {\n name: 'In Progress',\n color: Colours.COLOUR_TEAL,\n },\n {\n name: 'Completed',\n color: Colours.COLOUR_GREEN_LIGHT,\n },\n];\n\nconst getJobStatusColour = status => {\n const option = jobStatusOptions.find(item => item.name === status);\n return option ? option.color : jobStatusOptions[0].color;\n};\n\nconst getJobStatusProps = status => {\n const statusText = status || jobStatusOptions[0].name;\n const statusColor = getJobStatusColour(statusText);\n\n return { statusText, statusColor };\n};\n\nexport { jobStatusOptions, getJobStatusColour, getJobStatusProps };\n"]}
@@ -0,0 +1,20 @@
1
+ import MaintenancePage from './screens/MaintenancePage';
2
+ import RequestDetail from './screens/RequestDetail';
3
+ import ServiceRequest from './screens/ServiceRequest';
4
+ import JobTypePicker from './screens/JobTypePicker';
5
+ import RequestNotes from './screens/RequestNotes';
6
+ import JobsReducer from './reducers/JobsReducer';
7
+ export const Reducers = {
8
+ jobs: JobsReducer
9
+ };
10
+ export const Screens = {
11
+ maintenance: MaintenancePage,
12
+ requestDetail: RequestDetail,
13
+ serviceRequest: ServiceRequest,
14
+ jobTypePicker: JobTypePicker,
15
+ requestNotes: RequestNotes
16
+ };
17
+ export { default as Config } from './feature.config';
18
+ export { default as WidgetSmall } from './components/WidgetSmall';
19
+ export { default as WidgetLarge } from './components/WidgetLarge';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.js"],"names":["MaintenancePage","RequestDetail","ServiceRequest","JobTypePicker","RequestNotes","JobsReducer","Reducers","jobs","Screens","maintenance","requestDetail","serviceRequest","jobTypePicker","requestNotes","default","Config","WidgetSmall","WidgetLarge"],"mappings":"AAAA,OAAOA,eAAP,MAA4B,2BAA5B;AACA,OAAOC,aAAP,MAA0B,yBAA1B;AACA,OAAOC,cAAP,MAA2B,0BAA3B;AACA,OAAOC,aAAP,MAA0B,yBAA1B;AACA,OAAOC,YAAP,MAAyB,wBAAzB;AACA,OAAOC,WAAP,MAAwB,wBAAxB;AAEA,OAAO,MAAMC,QAAQ,GAAG;AAAEC,EAAAA,IAAI,EAAEF;AAAR,CAAjB;AACP,OAAO,MAAMG,OAAO,GAAG;AACrBC,EAAAA,WAAW,EAAET,eADQ;AAErBU,EAAAA,aAAa,EAAET,aAFM;AAGrBU,EAAAA,cAAc,EAAET,cAHK;AAIrBU,EAAAA,aAAa,EAAET,aAJM;AAKrBU,EAAAA,YAAY,EAAET;AALO,CAAhB;AAOP,SAASU,OAAO,IAAIC,MAApB,QAAkC,kBAAlC;AACA,SAASD,OAAO,IAAIE,WAApB,QAAuC,0BAAvC;AACA,SAASF,OAAO,IAAIG,WAApB,QAAuC,0BAAvC","sourcesContent":["import MaintenancePage from './screens/MaintenancePage';\nimport RequestDetail from './screens/RequestDetail';\nimport ServiceRequest from './screens/ServiceRequest';\nimport JobTypePicker from './screens/JobTypePicker';\nimport RequestNotes from './screens/RequestNotes';\nimport JobsReducer from './reducers/JobsReducer';\n\nexport const Reducers = { jobs: JobsReducer };\nexport const Screens = {\n maintenance: MaintenancePage,\n requestDetail: RequestDetail,\n serviceRequest: ServiceRequest,\n jobTypePicker: JobTypePicker,\n requestNotes: RequestNotes,\n};\nexport { default as Config } from './feature.config';\nexport { default as WidgetSmall } from './components/WidgetSmall';\nexport { default as WidgetLarge } from './components/WidgetLarge';\n"]}
@@ -0,0 +1,59 @@
1
+ /* eslint-disable no-param-reassign */
2
+ import { REHYDRATE } from 'redux-persist';
3
+ import { JOBS_LOADED, JOB_ADDED } from '../actions/types';
4
+ import { ActionTypes } from '../core.config';
5
+ const REDUCER_KEY = 'jobs';
6
+ const INITIAL_STATE = {
7
+ jobs: []
8
+ };
9
+ export default (function () {
10
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE;
11
+ let action = arguments.length > 1 ? arguments[1] : undefined;
12
+ let updateJobs = [];
13
+ let index = 0;
14
+
15
+ switch (action.type) {
16
+ case ActionTypes.LOGOUT:
17
+ case ActionTypes.CHANGE_ROLE:
18
+ return INITIAL_STATE;
19
+
20
+ case JOBS_LOADED:
21
+ return { ...state,
22
+ jobs: action.payload.map(job => ({
23
+ title: job.title || job.description,
24
+ ...job
25
+ }))
26
+ };
27
+
28
+ case JOB_ADDED:
29
+ updateJobs = [...state.jobs];
30
+ index = updateJobs.findIndex(item => item.id === action.payload.id);
31
+
32
+ if (index > -1) {
33
+ updateJobs[index] = action.payload;
34
+ } else {
35
+ updateJobs.push(action.payload);
36
+ }
37
+
38
+ return { ...state,
39
+ jobs: updateJobs
40
+ };
41
+
42
+ case REHYDRATE:
43
+ if (!action.payload) return state;
44
+
45
+ if (action.payload[REDUCER_KEY]) {
46
+ if (action.payload[REDUCER_KEY].jobs == null) {
47
+ action.payload[REDUCER_KEY].jobs = [];
48
+ }
49
+
50
+ return action.payload[REDUCER_KEY];
51
+ }
52
+
53
+ return state;
54
+
55
+ default:
56
+ return state;
57
+ }
58
+ });
59
+ //# sourceMappingURL=JobsReducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["JobsReducer.js"],"names":["REHYDRATE","JOBS_LOADED","JOB_ADDED","ActionTypes","REDUCER_KEY","INITIAL_STATE","jobs","state","action","updateJobs","index","type","LOGOUT","CHANGE_ROLE","payload","map","job","title","description","findIndex","item","id","push"],"mappings":"AAAA;AACA,SAASA,SAAT,QAA0B,eAA1B;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,kBAAvC;AACA,SAASC,WAAT,QAA4B,gBAA5B;AAEA,MAAMC,WAAW,GAAG,MAApB;AAEA,MAAMC,aAAa,GAAG;AACpBC,EAAAA,IAAI,EAAE;AADc,CAAtB;AAIA,gBAAe,YAAmC;AAAA,MAAlCC,KAAkC,uEAA1BF,aAA0B;AAAA,MAAXG,MAAW;AAChD,MAAIC,UAAU,GAAG,EAAjB;AACA,MAAIC,KAAK,GAAG,CAAZ;;AAEA,UAAQF,MAAM,CAACG,IAAf;AACE,SAAKR,WAAW,CAACS,MAAjB;AACA,SAAKT,WAAW,CAACU,WAAjB;AACE,aAAOR,aAAP;;AACF,SAAKJ,WAAL;AACE,aAAO,EAAE,GAAGM,KAAL;AAAYD,QAAAA,IAAI,EAAEE,MAAM,CAACM,OAAP,CAAeC,GAAf,CAAmBC,GAAG,KAAK;AAAEC,UAAAA,KAAK,EAAED,GAAG,CAACC,KAAJ,IAAaD,GAAG,CAACE,WAA1B;AAAuC,aAAGF;AAA1C,SAAL,CAAtB;AAAlB,OAAP;;AACF,SAAKd,SAAL;AACEO,MAAAA,UAAU,GAAG,CAAC,GAAGF,KAAK,CAACD,IAAV,CAAb;AACAI,MAAAA,KAAK,GAAGD,UAAU,CAACU,SAAX,CAAqBC,IAAI,IAAIA,IAAI,CAACC,EAAL,KAAYb,MAAM,CAACM,OAAP,CAAeO,EAAxD,CAAR;;AACA,UAAIX,KAAK,GAAG,CAAC,CAAb,EAAgB;AACdD,QAAAA,UAAU,CAACC,KAAD,CAAV,GAAoBF,MAAM,CAACM,OAA3B;AACD,OAFD,MAEO;AACLL,QAAAA,UAAU,CAACa,IAAX,CAAgBd,MAAM,CAACM,OAAvB;AACD;;AACD,aAAO,EAAE,GAAGP,KAAL;AAAYD,QAAAA,IAAI,EAAEG;AAAlB,OAAP;;AACF,SAAKT,SAAL;AACE,UAAI,CAACQ,MAAM,CAACM,OAAZ,EAAqB,OAAOP,KAAP;;AACrB,UAAIC,MAAM,CAACM,OAAP,CAAeV,WAAf,CAAJ,EAAiC;AAC/B,YAAII,MAAM,CAACM,OAAP,CAAeV,WAAf,EAA4BE,IAA5B,IAAoC,IAAxC,EAA8C;AAC5CE,UAAAA,MAAM,CAACM,OAAP,CAAeV,WAAf,EAA4BE,IAA5B,GAAmC,EAAnC;AACD;;AACD,eAAOE,MAAM,CAACM,OAAP,CAAeV,WAAf,CAAP;AACD;;AACD,aAAOG,KAAP;;AACF;AACE,aAAOA,KAAP;AAzBJ;AA2BD,CA/BD","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { REHYDRATE } from 'redux-persist';\nimport { JOBS_LOADED, JOB_ADDED } from '../actions/types';\nimport { ActionTypes } from '../core.config';\n\nconst REDUCER_KEY = 'jobs';\n\nconst INITIAL_STATE = {\n jobs: [],\n};\n\nexport default (state = INITIAL_STATE, action) => {\n let updateJobs = [];\n let index = 0;\n\n switch (action.type) {\n case ActionTypes.LOGOUT:\n case ActionTypes.CHANGE_ROLE:\n return INITIAL_STATE;\n case JOBS_LOADED:\n return { ...state, jobs: action.payload.map(job => ({ title: job.title || job.description, ...job })) };\n case JOB_ADDED:\n updateJobs = [...state.jobs];\n index = updateJobs.findIndex(item => item.id === action.payload.id);\n if (index > -1) {\n updateJobs[index] = action.payload;\n } else {\n updateJobs.push(action.payload);\n }\n return { ...state, jobs: updateJobs };\n case REHYDRATE:\n if (!action.payload) return state;\n if (action.payload[REDUCER_KEY]) {\n if (action.payload[REDUCER_KEY].jobs == null) {\n action.payload[REDUCER_KEY].jobs = [];\n }\n return action.payload[REDUCER_KEY];\n }\n return state;\n default:\n return state;\n }\n};\n"]}
@@ -0,0 +1,139 @@
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 _ from 'lodash';
5
+ import { TouchableOpacity, View, ScrollView, Text } from 'react-native';
6
+ import { connect } from 'react-redux';
7
+ import { Icon } from 'react-native-elements';
8
+ import { Services } from '../feature.config';
9
+ import { Components, Colours } from '../core.config';
10
+
11
+ class JobTypePicker extends Component {
12
+ constructor() {
13
+ super(...arguments);
14
+
15
+ _defineProperty(this, "state", {
16
+ currentType: null
17
+ });
18
+ }
19
+
20
+ UNSAFE_componentWillMount() {
21
+ this.setState({
22
+ currentType: this.props.currentType
23
+ });
24
+ }
25
+
26
+ onPressBack() {
27
+ Services.navigation.goBack();
28
+ }
29
+
30
+ onTypePress(type) {
31
+ this.props.onSelectType(type);
32
+ this.setState({
33
+ currentType: type
34
+ });
35
+ setTimeout(() => {
36
+ this.onPressBack();
37
+ }, 200);
38
+ }
39
+
40
+ renderMain() {
41
+ if (_.isEmpty(this.props.types)) {
42
+ return /*#__PURE__*/React.createElement(View, {
43
+ style: {
44
+ marginTop: 16
45
+ }
46
+ }, /*#__PURE__*/React.createElement(Components.Spinner, null));
47
+ }
48
+
49
+ return /*#__PURE__*/React.createElement(Components.FormCard, {
50
+ style: {
51
+ marginTop: 16
52
+ }
53
+ }, this.renderOptions());
54
+ }
55
+
56
+ renderOptions() {
57
+ return this.props.types.map((rep, index) => {
58
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
59
+ key: index,
60
+ onPress: this.onTypePress.bind(this, rep.typeName)
61
+ }, /*#__PURE__*/React.createElement(Components.FormCardSection, {
62
+ label: rep.typeName,
63
+ labelStyle: {
64
+ height: 0,
65
+ margin: 0
66
+ },
67
+ hasUnderline: true,
68
+ hasContent: true
69
+ }, /*#__PURE__*/React.createElement(View, {
70
+ style: styles.labelContainer
71
+ }, /*#__PURE__*/React.createElement(Text, {
72
+ style: styles.labelText
73
+ }, rep.typeName), /*#__PURE__*/React.createElement(Icon, {
74
+ name: "check-circle" //style={styles.uploadButtonInner}
75
+ ,
76
+ type: "font-awesome",
77
+ iconStyle: [{
78
+ color: '#d5d9e0',
79
+ fontSize: 20
80
+ }, rep.typeName === this.state.currentType && {
81
+ color: Colours.COLOUR_GREEN
82
+ }]
83
+ })), !_.isEmpty(rep.description) && /*#__PURE__*/React.createElement(Text, {
84
+ style: styles.description
85
+ }, rep.description)));
86
+ });
87
+ }
88
+
89
+ render() {
90
+ return /*#__PURE__*/React.createElement(View, {
91
+ style: styles.container
92
+ }, /*#__PURE__*/React.createElement(Components.Header, {
93
+ leftIcon: "angle-left",
94
+ onPressLeft: this.onPressBack.bind(this),
95
+ text: "Select type"
96
+ }), /*#__PURE__*/React.createElement(ScrollView, {
97
+ style: {
98
+ flex: 1
99
+ }
100
+ }, this.renderMain()));
101
+ }
102
+
103
+ }
104
+
105
+ const styles = {
106
+ container: {
107
+ flex: 1,
108
+ position: 'relative',
109
+ backgroundColor: '#f0f0f5'
110
+ },
111
+ row: {
112
+ flexDirection: 'row',
113
+ alignItems: 'center',
114
+ minHeight: 22
115
+ },
116
+ text: {
117
+ flex: 1,
118
+ fontFamily: 'sf-regular',
119
+ fontSize: 14,
120
+ color: Colours.TEXT_DARK
121
+ },
122
+ labelContainer: {
123
+ flexDirection: 'row',
124
+ justifyContent: 'space-between'
125
+ },
126
+ labelText: {
127
+ fontFamily: 'sf-medium',
128
+ fontSize: 16,
129
+ color: Colours.TEXT_DARK
130
+ },
131
+ description: {
132
+ marginTop: 5,
133
+ fontSize: 14,
134
+ fontFamily: 'sf-regular',
135
+ color: Colours.TEXT_DARK
136
+ }
137
+ };
138
+ export default connect(null, {})(JobTypePicker);
139
+ //# sourceMappingURL=JobTypePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["JobTypePicker.js"],"names":["React","Component","_","TouchableOpacity","View","ScrollView","Text","connect","Icon","Services","Components","Colours","JobTypePicker","currentType","UNSAFE_componentWillMount","setState","props","onPressBack","navigation","goBack","onTypePress","type","onSelectType","setTimeout","renderMain","isEmpty","types","marginTop","renderOptions","map","rep","index","bind","typeName","height","margin","styles","labelContainer","labelText","color","fontSize","state","COLOUR_GREEN","description","render","container","flex","position","backgroundColor","row","flexDirection","alignItems","minHeight","text","fontFamily","TEXT_DARK","justifyContent"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport _ from 'lodash';\nimport { TouchableOpacity, View, ScrollView, Text } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport { Services } from '../feature.config';\nimport { Components, Colours } from '../core.config';\n\nclass JobTypePicker extends Component {\n state = {\n currentType: null,\n };\n\n UNSAFE_componentWillMount() {\n this.setState({ currentType: this.props.currentType });\n }\n\n onPressBack() {\n Services.navigation.goBack();\n }\n\n onTypePress(type) {\n this.props.onSelectType(type);\n this.setState({ currentType: type });\n setTimeout(() => {\n this.onPressBack();\n }, 200);\n }\n\n renderMain() {\n if (_.isEmpty(this.props.types)) {\n return (\n <View style={{ marginTop: 16 }}>\n <Components.Spinner />\n </View>\n );\n }\n\n return <Components.FormCard style={{ marginTop: 16 }}>{this.renderOptions()}</Components.FormCard>;\n }\n\n renderOptions() {\n return this.props.types.map((rep, index) => {\n return (\n <TouchableOpacity key={index} onPress={this.onTypePress.bind(this, rep.typeName)}>\n <Components.FormCardSection label={rep.typeName} labelStyle={{ height: 0, margin: 0 }} hasUnderline hasContent>\n <View style={styles.labelContainer}>\n <Text style={styles.labelText}>{rep.typeName}</Text>\n <Icon\n name=\"check-circle\"\n //style={styles.uploadButtonInner}\n type=\"font-awesome\"\n iconStyle={[{ color: '#d5d9e0', fontSize: 20 }, rep.typeName === this.state.currentType && { color: Colours.COLOUR_GREEN }]}\n />\n </View>\n {!_.isEmpty(rep.description) && <Text style={styles.description}>{rep.description}</Text>}\n </Components.FormCardSection>\n </TouchableOpacity>\n );\n });\n }\n\n render() {\n return (\n <View style={styles.container}>\n <Components.Header leftIcon=\"angle-left\" onPressLeft={this.onPressBack.bind(this)} text=\"Select type\" />\n <ScrollView style={{ flex: 1 }}>{this.renderMain()}</ScrollView>\n </View>\n );\n }\n}\n\nconst styles = {\n container: {\n flex: 1,\n position: 'relative',\n backgroundColor: '#f0f0f5',\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n minHeight: 22,\n },\n text: {\n flex: 1,\n fontFamily: 'sf-regular',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n },\n labelContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n labelText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n color: Colours.TEXT_DARK,\n },\n description: {\n marginTop: 5,\n fontSize: 14,\n fontFamily: 'sf-regular',\n color: Colours.TEXT_DARK,\n },\n};\n\nexport default connect(null, {})(JobTypePicker);\n"]}