@plusscommunities/pluss-maintenance-app-a 6.0.13 → 6.0.16

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 (40) hide show
  1. package/dist/module/apis/index.js +1 -0
  2. package/dist/module/apis/index.js.map +1 -1
  3. package/dist/module/apis/userActions.js +23 -0
  4. package/dist/module/apis/userActions.js.map +1 -0
  5. package/dist/module/index.js +2 -0
  6. package/dist/module/index.js.map +1 -1
  7. package/dist/module/screens/MaintenanceUserPicker.js +130 -0
  8. package/dist/module/screens/MaintenanceUserPicker.js.map +1 -0
  9. package/dist/module/screens/RequestDetail.js +77 -5
  10. package/dist/module/screens/RequestDetail.js.map +1 -1
  11. package/dist/module/screens/ServiceRequest.js +346 -28
  12. package/dist/module/screens/ServiceRequest.js.map +1 -1
  13. package/dist/module/values.config.a.js +1 -0
  14. package/dist/module/values.config.a.js.map +1 -1
  15. package/dist/module/values.config.default.js +1 -0
  16. package/dist/module/values.config.default.js.map +1 -1
  17. package/dist/module/values.config.enquiry.js +43 -0
  18. package/dist/module/values.config.enquiry.js.map +1 -0
  19. package/dist/module/values.config.feedback.js +43 -0
  20. package/dist/module/values.config.feedback.js.map +1 -0
  21. package/dist/module/values.config.food.js +43 -0
  22. package/dist/module/values.config.food.js.map +1 -0
  23. package/dist/module/values.config.forms.js +1 -0
  24. package/dist/module/values.config.forms.js.map +1 -1
  25. package/dist/module/values.config.js +1 -0
  26. package/dist/module/values.config.js.map +1 -1
  27. package/package.json +3 -2
  28. package/src/apis/index.js +1 -0
  29. package/src/apis/userActions.js +21 -0
  30. package/src/index.js +2 -0
  31. package/src/screens/MaintenanceUserPicker.js +107 -0
  32. package/src/screens/RequestDetail.js +70 -4
  33. package/src/screens/ServiceRequest.js +365 -43
  34. package/src/values.config.a.js +1 -0
  35. package/src/values.config.default.js +1 -0
  36. package/src/values.config.enquiry.js +43 -0
  37. package/src/values.config.feedback.js +43 -0
  38. package/src/values.config.food.js +43 -0
  39. package/src/values.config.forms.js +1 -0
  40. package/src/values.config.js +1 -0
@@ -1,4 +1,5 @@
1
1
  import { Apis } from '../core.config';
2
2
  export const stringActions = Apis.stringActions;
3
3
  export * from './maintenanceActions';
4
+ export * from './userActions';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Apis","stringActions"],"sources":["index.js"],"sourcesContent":["import { Apis } from '../core.config';\n\nexport const stringActions = Apis.stringActions;\n\nexport * from './maintenanceActions';\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,gBAAgB;AAErC,OAAO,MAAMC,aAAa,GAAGD,IAAI,CAACC,aAAa;AAE/C,cAAc,sBAAsB","ignoreList":[]}
1
+ {"version":3,"names":["Apis","stringActions"],"sources":["index.js"],"sourcesContent":["import { Apis } from '../core.config';\n\nexport const stringActions = Apis.stringActions;\n\nexport * from './maintenanceActions';\nexport * from './userActions';\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,gBAAgB;AAErC,OAAO,MAAMC,aAAa,GAAGD,IAAI,CAACC,aAAa;AAE/C,cAAc,sBAAsB;AACpC,cAAc,eAAe","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ import { Helper, Session } from '../core.config';
2
+ export const userActions = {
3
+ getSiteUsers: async site => {
4
+ return Session.authedFunction({
5
+ method: 'GET',
6
+ url: Helper.getUrl('users', 'users/site', {
7
+ site,
8
+ compact: true
9
+ })
10
+ });
11
+ },
12
+ fetchUser: async (site, userId) => {
13
+ return Session.authedFunction({
14
+ method: 'POST',
15
+ url: Helper.getUrl('users', 'getsingle'),
16
+ data: {
17
+ site,
18
+ userId
19
+ }
20
+ });
21
+ }
22
+ };
23
+ //# sourceMappingURL=userActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Helper","Session","userActions","getSiteUsers","site","authedFunction","method","url","getUrl","compact","fetchUser","userId","data"],"sources":["userActions.js"],"sourcesContent":["import { Helper, Session } from '../core.config';\n\nexport const userActions = {\n getSiteUsers: async site => {\n return Session.authedFunction({\n method: 'GET',\n url: Helper.getUrl('users', 'users/site', { site, compact: true }),\n });\n },\n\n fetchUser: async (site, userId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('users', 'getsingle'),\n data: {\n site,\n userId,\n },\n });\n },\n};\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,gBAAgB;AAEhD,OAAO,MAAMC,WAAW,GAAG;EACzBC,YAAY,EAAE,MAAMC,IAAI,IAAI;IAC1B,OAAOH,OAAO,CAACI,cAAc,CAAC;MAC5BC,MAAM,EAAE,KAAK;MACbC,GAAG,EAAEP,MAAM,CAACQ,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE;QAAEJ,IAAI;QAAEK,OAAO,EAAE;MAAK,CAAC;IACnE,CAAC,CAAC;EACJ,CAAC;EAEDC,SAAS,EAAE,MAAAA,CAAON,IAAI,EAAEO,MAAM,KAAK;IACjC,OAAOV,OAAO,CAACI,cAAc,CAAC;MAC5BC,MAAM,EAAE,MAAM;MACdC,GAAG,EAAEP,MAAM,CAACQ,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;MACxCI,IAAI,EAAE;QACJR,IAAI;QACJO;MACF;IACF,CAAC,CAAC;EACJ;AACF,CAAC","ignoreList":[]}
@@ -3,6 +3,7 @@ import RequestDetail from './screens/RequestDetail';
3
3
  import ServiceRequest from './screens/ServiceRequest';
4
4
  import JobTypePicker from './screens/JobTypePicker';
5
5
  import RequestNotes from './screens/RequestNotes';
6
+ import MaintenanceUserPicker from './screens/MaintenanceUserPicker';
6
7
  import JobsReducer from './reducers/JobsReducer';
7
8
  import { values } from './values.config';
8
9
  export const Reducers = (() => {
@@ -17,6 +18,7 @@ export const Screens = (() => {
17
18
  screens[values.screenServiceRequest] = ServiceRequest;
18
19
  screens[values.screenJobTypePicker] = JobTypePicker;
19
20
  screens[values.screenRequestNotes] = RequestNotes;
21
+ screens[values.screenUserPicker] = MaintenanceUserPicker;
20
22
  return screens;
21
23
  })();
22
24
  export { default as Config } from './feature.config';
@@ -1 +1 @@
1
- {"version":3,"names":["MaintenancePage","RequestDetail","ServiceRequest","JobTypePicker","RequestNotes","JobsReducer","values","Reducers","reducers","reducerKey","Screens","screens","screenMaintenance","screenRequestDetail","screenServiceRequest","screenJobTypePicker","screenRequestNotes","default","Config","WidgetSmall","WidgetLarge"],"sources":["index.js"],"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';\nimport { values } from './values.config';\n\nexport const Reducers = (() => {\n const reducers = {};\n reducers[values.reducerKey] = JobsReducer;\n return reducers;\n})();\nexport const Screens = (() => {\n const screens = {};\n screens[values.screenMaintenance] = MaintenancePage;\n screens[values.screenRequestDetail] = RequestDetail;\n screens[values.screenServiceRequest] = ServiceRequest;\n screens[values.screenJobTypePicker] = JobTypePicker;\n screens[values.screenRequestNotes] = RequestNotes;\n return screens;\n})();\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,eAAe,MAAM,2BAA2B;AACvD,OAAOC,aAAa,MAAM,yBAAyB;AACnD,OAAOC,cAAc,MAAM,0BAA0B;AACrD,OAAOC,aAAa,MAAM,yBAAyB;AACnD,OAAOC,YAAY,MAAM,wBAAwB;AACjD,OAAOC,WAAW,MAAM,wBAAwB;AAChD,SAASC,MAAM,QAAQ,iBAAiB;AAExC,OAAO,MAAMC,QAAQ,GAAG,CAAC,MAAM;EAC7B,MAAMC,QAAQ,GAAG,CAAC,CAAC;EACnBA,QAAQ,CAACF,MAAM,CAACG,UAAU,CAAC,GAAGJ,WAAW;EACzC,OAAOG,QAAQ;AACjB,CAAC,EAAE,CAAC;AACJ,OAAO,MAAME,OAAO,GAAG,CAAC,MAAM;EAC5B,MAAMC,OAAO,GAAG,CAAC,CAAC;EAClBA,OAAO,CAACL,MAAM,CAACM,iBAAiB,CAAC,GAAGZ,eAAe;EACnDW,OAAO,CAACL,MAAM,CAACO,mBAAmB,CAAC,GAAGZ,aAAa;EACnDU,OAAO,CAACL,MAAM,CAACQ,oBAAoB,CAAC,GAAGZ,cAAc;EACrDS,OAAO,CAACL,MAAM,CAACS,mBAAmB,CAAC,GAAGZ,aAAa;EACnDQ,OAAO,CAACL,MAAM,CAACU,kBAAkB,CAAC,GAAGZ,YAAY;EACjD,OAAOO,OAAO;AAChB,CAAC,EAAE,CAAC;AACJ,SAASM,OAAO,IAAIC,MAAM,QAAQ,kBAAkB;AACpD,SAASD,OAAO,IAAIE,WAAW,QAAQ,0BAA0B;AACjE,SAASF,OAAO,IAAIG,WAAW,QAAQ,0BAA0B","ignoreList":[]}
1
+ {"version":3,"names":["MaintenancePage","RequestDetail","ServiceRequest","JobTypePicker","RequestNotes","MaintenanceUserPicker","JobsReducer","values","Reducers","reducers","reducerKey","Screens","screens","screenMaintenance","screenRequestDetail","screenServiceRequest","screenJobTypePicker","screenRequestNotes","screenUserPicker","default","Config","WidgetSmall","WidgetLarge"],"sources":["index.js"],"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 MaintenanceUserPicker from './screens/MaintenanceUserPicker';\nimport JobsReducer from './reducers/JobsReducer';\nimport { values } from './values.config';\n\nexport const Reducers = (() => {\n const reducers = {};\n reducers[values.reducerKey] = JobsReducer;\n return reducers;\n})();\nexport const Screens = (() => {\n const screens = {};\n screens[values.screenMaintenance] = MaintenancePage;\n screens[values.screenRequestDetail] = RequestDetail;\n screens[values.screenServiceRequest] = ServiceRequest;\n screens[values.screenJobTypePicker] = JobTypePicker;\n screens[values.screenRequestNotes] = RequestNotes;\n screens[values.screenUserPicker] = MaintenanceUserPicker;\n return screens;\n})();\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,eAAe,MAAM,2BAA2B;AACvD,OAAOC,aAAa,MAAM,yBAAyB;AACnD,OAAOC,cAAc,MAAM,0BAA0B;AACrD,OAAOC,aAAa,MAAM,yBAAyB;AACnD,OAAOC,YAAY,MAAM,wBAAwB;AACjD,OAAOC,qBAAqB,MAAM,iCAAiC;AACnE,OAAOC,WAAW,MAAM,wBAAwB;AAChD,SAASC,MAAM,QAAQ,iBAAiB;AAExC,OAAO,MAAMC,QAAQ,GAAG,CAAC,MAAM;EAC7B,MAAMC,QAAQ,GAAG,CAAC,CAAC;EACnBA,QAAQ,CAACF,MAAM,CAACG,UAAU,CAAC,GAAGJ,WAAW;EACzC,OAAOG,QAAQ;AACjB,CAAC,EAAE,CAAC;AACJ,OAAO,MAAME,OAAO,GAAG,CAAC,MAAM;EAC5B,MAAMC,OAAO,GAAG,CAAC,CAAC;EAClBA,OAAO,CAACL,MAAM,CAACM,iBAAiB,CAAC,GAAGb,eAAe;EACnDY,OAAO,CAACL,MAAM,CAACO,mBAAmB,CAAC,GAAGb,aAAa;EACnDW,OAAO,CAACL,MAAM,CAACQ,oBAAoB,CAAC,GAAGb,cAAc;EACrDU,OAAO,CAACL,MAAM,CAACS,mBAAmB,CAAC,GAAGb,aAAa;EACnDS,OAAO,CAACL,MAAM,CAACU,kBAAkB,CAAC,GAAGb,YAAY;EACjDQ,OAAO,CAACL,MAAM,CAACW,gBAAgB,CAAC,GAAGb,qBAAqB;EACxD,OAAOO,OAAO;AAChB,CAAC,EAAE,CAAC;AACJ,SAASO,OAAO,IAAIC,MAAM,QAAQ,kBAAkB;AACpD,SAASD,OAAO,IAAIE,WAAW,QAAQ,0BAA0B;AACjE,SAASF,OAAO,IAAIG,WAAW,QAAQ,0BAA0B","ignoreList":[]}
@@ -0,0 +1,130 @@
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ import React, { Component } from 'react';
5
+ import _ from 'lodash';
6
+ import { TouchableOpacity, View, ScrollView, Text } from 'react-native';
7
+ import { connect } from 'react-redux';
8
+ import { Icon } from 'react-native-elements';
9
+ import { Services } from '../feature.config';
10
+ import { Components, Colours } from '../core.config';
11
+ class MaintenanceUserPicker extends Component {
12
+ constructor(...args) {
13
+ super(...args);
14
+ _defineProperty(this, "state", {
15
+ currentUser: null
16
+ });
17
+ }
18
+ UNSAFE_componentWillMount() {
19
+ this.setState({
20
+ currentUser: this.props.currentUser
21
+ });
22
+ }
23
+ onPressBack() {
24
+ Services.navigation.goBack();
25
+ }
26
+ onUserPress(user) {
27
+ this.props.onSelectUser(user);
28
+ this.setState({
29
+ currentUser: user
30
+ });
31
+ setTimeout(() => {
32
+ this.onPressBack();
33
+ }, 200);
34
+ }
35
+ renderMain() {
36
+ if (_.isEmpty(this.props.users)) {
37
+ return /*#__PURE__*/React.createElement(View, {
38
+ style: {
39
+ marginTop: 16
40
+ }
41
+ }, /*#__PURE__*/React.createElement(Components.Spinner, null));
42
+ }
43
+ return /*#__PURE__*/React.createElement(Components.FormCard, {
44
+ style: {
45
+ marginTop: 16
46
+ }
47
+ }, this.renderOptions());
48
+ }
49
+ renderOptions() {
50
+ return this.props.users.map((user, index) => {
51
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
52
+ key: index,
53
+ onPress: this.onUserPress.bind(this, user)
54
+ }, /*#__PURE__*/React.createElement(Components.FormCardSection, {
55
+ label: user.displayName,
56
+ labelStyle: {
57
+ height: 0,
58
+ margin: 0
59
+ },
60
+ hasUnderline: true,
61
+ hasContent: true
62
+ }, /*#__PURE__*/React.createElement(View, {
63
+ style: styles.rowContainer
64
+ }, /*#__PURE__*/React.createElement(View, {
65
+ style: styles.userContainer
66
+ }, /*#__PURE__*/React.createElement(Components.ProfilePic, {
67
+ ProfilePic: user.profilePic,
68
+ Diameter: 30
69
+ }), /*#__PURE__*/React.createElement(Text, {
70
+ style: styles.labelText
71
+ }, user.displayName)), /*#__PURE__*/React.createElement(Icon, {
72
+ name: "check-circle",
73
+ type: "font-awesome",
74
+ iconStyle: [{
75
+ color: '#d5d9e0',
76
+ fontSize: 20
77
+ }, _.isEqual(user, this.state.currentUser) && {
78
+ color: Colours.COLOUR_GREEN
79
+ }]
80
+ }))));
81
+ });
82
+ }
83
+ render() {
84
+ return /*#__PURE__*/React.createElement(View, {
85
+ style: styles.container
86
+ }, /*#__PURE__*/React.createElement(Components.Header, {
87
+ leftIcon: "angle-left",
88
+ onPressLeft: this.onPressBack.bind(this),
89
+ text: "Select user"
90
+ }), /*#__PURE__*/React.createElement(ScrollView, {
91
+ style: {
92
+ flex: 1
93
+ }
94
+ }, this.renderMain()));
95
+ }
96
+ }
97
+ const styles = {
98
+ container: {
99
+ flex: 1,
100
+ position: 'relative',
101
+ backgroundColor: '#f0f0f5'
102
+ },
103
+ row: {
104
+ flexDirection: 'row',
105
+ alignItems: 'center',
106
+ minHeight: 22
107
+ },
108
+ text: {
109
+ flex: 1,
110
+ fontFamily: 'sf-regular',
111
+ fontSize: 14,
112
+ color: Colours.TEXT_DARK
113
+ },
114
+ rowContainer: {
115
+ flexDirection: 'row',
116
+ justifyContent: 'space-between'
117
+ },
118
+ userContainer: {
119
+ flexDirection: 'row',
120
+ alignItems: 'center'
121
+ },
122
+ labelText: {
123
+ fontFamily: 'sf-medium',
124
+ fontSize: 16,
125
+ color: Colours.TEXT_DARK,
126
+ marginLeft: 8
127
+ }
128
+ };
129
+ export default connect(null, {})(MaintenanceUserPicker);
130
+ //# sourceMappingURL=MaintenanceUserPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Component","_","TouchableOpacity","View","ScrollView","Text","connect","Icon","Services","Components","Colours","MaintenanceUserPicker","constructor","args","_defineProperty","currentUser","UNSAFE_componentWillMount","setState","props","onPressBack","navigation","goBack","onUserPress","user","onSelectUser","setTimeout","renderMain","isEmpty","users","createElement","style","marginTop","Spinner","FormCard","renderOptions","map","index","key","onPress","bind","FormCardSection","label","displayName","labelStyle","height","margin","hasUnderline","hasContent","styles","rowContainer","userContainer","ProfilePic","profilePic","Diameter","labelText","name","type","iconStyle","color","fontSize","isEqual","state","COLOUR_GREEN","render","container","Header","leftIcon","onPressLeft","text","flex","position","backgroundColor","row","flexDirection","alignItems","minHeight","fontFamily","TEXT_DARK","justifyContent","marginLeft"],"sources":["MaintenanceUserPicker.js"],"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 MaintenanceUserPicker extends Component {\n state = {\n currentUser: null,\n };\n\n UNSAFE_componentWillMount() {\n this.setState({ currentUser: this.props.currentUser });\n }\n\n onPressBack() {\n Services.navigation.goBack();\n }\n\n onUserPress(user) {\n this.props.onSelectUser(user);\n this.setState({ currentUser: user });\n setTimeout(() => {\n this.onPressBack();\n }, 200);\n }\n\n renderMain() {\n if (_.isEmpty(this.props.users)) {\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.users.map((user, index) => {\n return (\n <TouchableOpacity key={index} onPress={this.onUserPress.bind(this, user)}>\n <Components.FormCardSection label={user.displayName} labelStyle={{ height: 0, margin: 0 }} hasUnderline hasContent>\n <View style={styles.rowContainer}>\n <View style={styles.userContainer}>\n <Components.ProfilePic ProfilePic={user.profilePic} Diameter={30} />\n <Text style={styles.labelText}>{user.displayName}</Text>\n </View>\n <Icon\n name=\"check-circle\"\n type=\"font-awesome\"\n iconStyle={[{ color: '#d5d9e0', fontSize: 20 }, _.isEqual(user, this.state.currentUser) && { color: Colours.COLOUR_GREEN }]}\n />\n </View>\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 user\" />\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 rowContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n userContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n labelText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n color: Colours.TEXT_DARK,\n marginLeft: 8,\n },\n};\n\nexport default connect(null, {})(MaintenanceUserPicker);"],"mappings":"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","ignoreList":[]}
@@ -332,7 +332,8 @@ class RequestDetail extends Component {
332
332
  galleryOpen: false,
333
333
  galleryImages: [],
334
334
  showMessages: false,
335
- assignees: []
335
+ assignees: [],
336
+ selectedPDF: null
336
337
  };
337
338
  this.scrollView = /*#__PURE__*/React.createRef();
338
339
  this.commentReply = /*#__PURE__*/React.createRef();
@@ -535,6 +536,32 @@ class RequestDetail extends Component {
535
536
  }
536
537
  return null;
537
538
  }
539
+ renderDocument(documents) {
540
+ const {
541
+ colourBrandingMain
542
+ } = this.props;
543
+ if (!_.isNil(documents) && !_.isEmpty(documents)) {
544
+ return documents.map((document, index) => {
545
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
546
+ key: index,
547
+ style: styles.documentContainer,
548
+ onPress: () => this.setState({
549
+ selectedPDF: document
550
+ })
551
+ }, /*#__PURE__*/React.createElement(View, {
552
+ style: {
553
+ ...styles.documentTypeContainer,
554
+ backgroundColor: colourBrandingMain
555
+ }
556
+ }, /*#__PURE__*/React.createElement(Text, {
557
+ style: styles.documentTypeText
558
+ }, document.ext)), /*#__PURE__*/React.createElement(Text, {
559
+ style: styles.documentText
560
+ }, `${document.name}${document.uploading ? ` - ${document.uploadProgress}` : ''}`));
561
+ });
562
+ }
563
+ return null;
564
+ }
538
565
  renderImagePopup() {
539
566
  return /*#__PURE__*/React.createElement(Components.ImagePopup, {
540
567
  visible: this.state.galleryOpen,
@@ -543,6 +570,17 @@ class RequestDetail extends Component {
543
570
  ref: "imagePopup"
544
571
  });
545
572
  }
573
+ renderDocumentPopup() {
574
+ if (_.isEmpty(this.state.selectedPDF)) return null;
575
+ return /*#__PURE__*/React.createElement(Components.PDFPopup, {
576
+ source: this.state.selectedPDF.url,
577
+ onClose: () => this.setState({
578
+ selectedPDF: null
579
+ }),
580
+ title: this.state.selectedPDF.name,
581
+ pdfCount: 1
582
+ });
583
+ }
546
584
  renderAssignee() {
547
585
  const {
548
586
  job
@@ -598,10 +636,12 @@ class RequestDetail extends Component {
598
636
  }, field.answer && Array.isArray(field.answer) ? field.answer.join(', ') : '');
599
637
  case 'image':
600
638
  return /*#__PURE__*/React.createElement(View, {
601
- style: {
602
- marginTop: 8
603
- }
639
+ style: styles.customImage
604
640
  }, this.renderImage(field.answer));
641
+ case 'document':
642
+ return /*#__PURE__*/React.createElement(View, {
643
+ style: styles.customDocument
644
+ }, this.renderDocument(field.answer));
605
645
  default:
606
646
  return /*#__PURE__*/React.createElement(Text, {
607
647
  style: styles.customText
@@ -746,7 +786,7 @@ class RequestDetail extends Component {
746
786
  }
747
787
  }, /*#__PURE__*/React.createElement(View, {
748
788
  style: styles.innerContainer
749
- }, this.renderTop(), this.renderAssignee(), this.rendeDetails(), this.renderMessages())), this.renderMessagesReply(), this.renderStatusPopup(), this.renderPriorityPopup(), this.renderImagePopup(), /*#__PURE__*/React.createElement(DateTimePicker, {
789
+ }, this.renderTop(), this.renderAssignee(), this.rendeDetails(), this.renderMessages())), this.renderMessagesReply(), this.renderStatusPopup(), this.renderPriorityPopup(), this.renderImagePopup(), this.renderDocumentPopup(), /*#__PURE__*/React.createElement(DateTimePicker, {
750
790
  isVisible: this.state.isDateTimePickerVisible,
751
791
  onConfirm: this.onDateSelected,
752
792
  onCancel: this.onCloseDatePicker,
@@ -1020,6 +1060,13 @@ const styles = StyleSheet.create({
1020
1060
  color: Colours.TEXT_DARKEST,
1021
1061
  paddingVertical: 8
1022
1062
  },
1063
+ customImage: {
1064
+ marginTop: 8
1065
+ },
1066
+ customDocument: {
1067
+ marginTop: 8,
1068
+ marginBottom: 16
1069
+ },
1023
1070
  customStaticTitle: {
1024
1071
  fontSize: 20,
1025
1072
  fontFamily: 'sf-semibold',
@@ -1032,6 +1079,31 @@ const styles = StyleSheet.create({
1032
1079
  color: Colours.TEXT_DARKEST,
1033
1080
  lineHeight: 24,
1034
1081
  marginBottom: 10
1082
+ },
1083
+ documentContainer: {
1084
+ flexDirection: 'row',
1085
+ alignItems: 'center',
1086
+ justifyContent: 'space-between',
1087
+ paddingVertical: 4
1088
+ },
1089
+ documentTypeContainer: {
1090
+ width: 50,
1091
+ height: 60,
1092
+ justifyContent: 'center',
1093
+ alignItems: 'center',
1094
+ borderRadius: 5,
1095
+ marginRight: 8
1096
+ },
1097
+ documentTypeText: {
1098
+ color: '#fff',
1099
+ fontFamily: 'sf-semibold',
1100
+ textAlign: 'center'
1101
+ },
1102
+ documentText: {
1103
+ flex: 1,
1104
+ fontFamily: 'sf-semibold',
1105
+ fontSize: 16,
1106
+ color: '#65686D'
1035
1107
  }
1036
1108
  });
1037
1109
  const mapStateToProps = state => {