@plusscommunities/pluss-maintenance-app 2.1.4-beta.0 → 2.2.1-beta.0
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/actions/JobActions.js +7 -1
- package/dist/module/actions/JobActions.js.map +1 -1
- package/dist/module/actions/types.js +1 -0
- package/dist/module/actions/types.js.map +1 -1
- package/dist/module/apis/generalActions.js +17 -3
- package/dist/module/apis/generalActions.js.map +1 -1
- package/dist/module/components/FilterPopupMenu.js +249 -0
- package/dist/module/components/FilterPopupMenu.js.map +1 -0
- package/dist/module/components/MaintenanceList.js +166 -65
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +23 -5
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/dist/module/reducers/JobsReducer.js +14 -1
- package/dist/module/reducers/JobsReducer.js.map +1 -1
- package/package.json +2 -2
- package/src/actions/JobActions.js +8 -1
- package/src/actions/types.js +1 -0
- package/src/apis/generalActions.js +10 -3
- package/src/components/FilterPopupMenu.js +224 -0
- package/src/components/MaintenanceList.js +129 -54
- package/src/components/MaintenanceListItem.js +17 -3
- package/src/reducers/JobsReducer.js +8 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
import { JOBS_LOADED, JOB_ADDED } from './types';
|
1
|
+
import { JOBS_LOADED, JOB_ADDED, JOBS_ADDED } from './types';
|
2
2
|
export const jobsLoaded = jobs => {
|
3
3
|
return {
|
4
4
|
type: JOBS_LOADED,
|
@@ -11,4 +11,10 @@ export const jobAdded = job => {
|
|
11
11
|
payload: job
|
12
12
|
};
|
13
13
|
};
|
14
|
+
export const jobsAdded = jobs => {
|
15
|
+
return {
|
16
|
+
type: JOBS_ADDED,
|
17
|
+
payload: jobs
|
18
|
+
};
|
19
|
+
};
|
14
20
|
//# sourceMappingURL=JobActions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["JOBS_LOADED","JOB_ADDED","jobsLoaded","jobs","type","payload","jobAdded","job"],"sources":["JobActions.js"],"sourcesContent":["import { JOBS_LOADED, JOB_ADDED } from './types';\n\nexport const jobsLoaded = jobs => {\n return {\n type: JOBS_LOADED,\n payload: jobs,\n };\n};\n\nexport const jobAdded = job => {\n return {\n type: JOB_ADDED,\n payload: job,\n };\n};\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,SAAtB,
|
1
|
+
{"version":3,"names":["JOBS_LOADED","JOB_ADDED","JOBS_ADDED","jobsLoaded","jobs","type","payload","jobAdded","job","jobsAdded"],"sources":["JobActions.js"],"sourcesContent":["import { JOBS_LOADED, JOB_ADDED, JOBS_ADDED } from './types';\n\nexport const jobsLoaded = jobs => {\n return {\n type: JOBS_LOADED,\n payload: jobs,\n };\n};\n\nexport const jobAdded = job => {\n return {\n type: JOB_ADDED,\n payload: job,\n };\n};\n\nexport const jobsAdded = jobs => {\n return {\n type: JOBS_ADDED,\n payload: jobs,\n };\n};\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,SAAtB,EAAiCC,UAAjC,QAAmD,SAAnD;AAEA,OAAO,MAAMC,UAAU,GAAGC,IAAI,IAAI;EAChC,OAAO;IACLC,IAAI,EAAEL,WADD;IAELM,OAAO,EAAEF;EAFJ,CAAP;AAID,CALM;AAOP,OAAO,MAAMG,QAAQ,GAAGC,GAAG,IAAI;EAC7B,OAAO;IACLH,IAAI,EAAEJ,SADD;IAELK,OAAO,EAAEE;EAFJ,CAAP;AAID,CALM;AAOP,OAAO,MAAMC,SAAS,GAAGL,IAAI,IAAI;EAC/B,OAAO;IACLC,IAAI,EAAEH,UADD;IAELI,OAAO,EAAEF;EAFJ,CAAP;AAID,CALM"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["JOBS_LOADED","JOB_ADDED"],"sources":["types.js"],"sourcesContent":["export const JOBS_LOADED = 'JOBS_LOADED';\nexport const JOB_ADDED = 'JOB_ADDED';\n"],"mappings":"AAAA,OAAO,MAAMA,WAAW,GAAG,aAApB;AACP,OAAO,MAAMC,SAAS,GAAG,WAAlB"}
|
1
|
+
{"version":3,"names":["JOBS_LOADED","JOB_ADDED","JOBS_ADDED"],"sources":["types.js"],"sourcesContent":["export const JOBS_LOADED = 'JOBS_LOADED';\nexport const JOB_ADDED = 'JOB_ADDED';\nexport const JOBS_ADDED = 'JOBS_ADDED';\n"],"mappings":"AAAA,OAAO,MAAMA,WAAW,GAAG,aAApB;AACP,OAAO,MAAMC,SAAS,GAAG,WAAlB;AACP,OAAO,MAAMC,UAAU,GAAG,YAAnB"}
|
@@ -3,7 +3,17 @@
|
|
3
3
|
// import { authedFunction } from '../js';
|
4
4
|
import { Helper, Session } from '../core.config';
|
5
5
|
export const generalActions = {
|
6
|
-
getJob: (site,
|
6
|
+
getJob: (site, id) => {
|
7
|
+
return Session.authedFunction({
|
8
|
+
method: 'POST',
|
9
|
+
url: Helper.getUrl('maintenance', 'getJob'),
|
10
|
+
data: {
|
11
|
+
site,
|
12
|
+
id
|
13
|
+
}
|
14
|
+
});
|
15
|
+
},
|
16
|
+
getJobByJobId: (site, jobId) => {
|
7
17
|
return Session.authedFunction({
|
8
18
|
method: 'POST',
|
9
19
|
url: Helper.getUrl('maintenance', 'getJob'),
|
@@ -13,12 +23,16 @@ export const generalActions = {
|
|
13
23
|
}
|
14
24
|
});
|
15
25
|
},
|
16
|
-
getJobs: site
|
26
|
+
getJobs: function (site) {
|
27
|
+
let status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
28
|
+
let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
17
29
|
return Session.authedFunction({
|
18
30
|
method: 'POST',
|
19
31
|
url: Helper.getUrl('maintenance', 'getJobs'),
|
20
32
|
data: {
|
21
|
-
site
|
33
|
+
site,
|
34
|
+
status,
|
35
|
+
type
|
22
36
|
}
|
23
37
|
});
|
24
38
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Helper","Session","generalActions","getJob","site","
|
1
|
+
{"version":3,"names":["Helper","Session","generalActions","getJob","site","id","authedFunction","method","url","getUrl","data","getJobByJobId","jobId","getJobs","status","type","sendMaintenanceRequest","userID","userName","phone","room","title","description","date","images","location","isHome","homeText","request","editJob","job","editJobStatus","addNote","note","attachments","action","editNote","noteId","deleteNote","getJobTypes"],"sources":["generalActions.js"],"sourcesContent":["// import axios from 'axios';\n// import { getUrl } from './helper';\n// import { authedFunction } from '../js';\nimport { Helper, Session } from '../core.config';\n\nexport const generalActions = {\n getJob: (site, id) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJob'),\n data: { site, id },\n });\n },\n getJobByJobId: (site, jobId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJob'),\n data: { site, jobId },\n });\n },\n getJobs: (site, status = '', type = '') => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJobs'),\n data: { site, status, type },\n });\n },\n sendMaintenanceRequest: (userID, userName, phone, room, title, description, date, type, images, location, isHome, homeText) => {\n const request = {\n method: 'POST',\n url: Helper.getUrl('maintenance', 'sendMaintenance'),\n data: {\n userID,\n userName,\n phone,\n room,\n title,\n description,\n date,\n type,\n images,\n location,\n isHome,\n homeText,\n },\n };\n return Session.authedFunction(request);\n },\n editJob: (job, site) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'editJob'),\n data: { job, site },\n });\n },\n editJobStatus: (id, status) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'editJobStatus'),\n data: { id, status },\n });\n },\n addNote: (jobId, note, attachments) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n action: 'AddNote',\n },\n });\n },\n editNote: (jobId, noteId, note, attachments) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n noteId,\n action: 'EditNote',\n },\n });\n },\n deleteNote: (jobId, noteId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n noteId,\n action: 'DeleteNote',\n },\n });\n },\n // getWeeklyMenu: async time => {\n // //deprecated\n // return null;\n // },\n getJobTypes: async site => {\n const url = Helper.getUrl('maintenance', 'getjobtypes');\n return Session.authedFunction({\n method: 'POST',\n url,\n data: { site },\n });\n },\n // sendBookingRequest: async bookingInfo => {\n // return authedFunction({\n // method: 'POST',\n // data: {\n // bookingInfo,\n // },\n // url: getUrl('utility', 'sendBookingRequest'),\n // });\n // },\n // getString: async (site, id, useDefault) => {\n // return axios({\n // method: 'GET',\n // url: getUrl('strings', `get/${site}_${id}`, useDefault ? { useDefault } : undefined),\n // }).catch(error => {\n // console.log('getString error', error);\n // throw error;\n // });\n // },\n // getGeneralTerms: async () => {\n // return axios({\n // method: 'GET',\n // url: 'https://pluss.plussapp.com.au/strings-prd/get/plussSpace_termsofuse',\n // });\n // },\n // declineTerms: async (site, userID) => {\n // //deprecated\n // return null;\n // },\n};\n"],"mappings":"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"}
|
@@ -0,0 +1,249 @@
|
|
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, Text, TouchableOpacity, Modal } from 'react-native';
|
5
|
+
import { connect } from 'react-redux';
|
6
|
+
import _ from 'lodash';
|
7
|
+
import { generalActions } from '../apis';
|
8
|
+
import { Colours, Helper } from '../core.config';
|
9
|
+
|
10
|
+
class FilterPopupMenu extends Component {
|
11
|
+
constructor(props) {
|
12
|
+
super(props);
|
13
|
+
|
14
|
+
_defineProperty(this, "refreshTypes", async () => {
|
15
|
+
const {
|
16
|
+
data
|
17
|
+
} = await generalActions.getJobTypes(Helper.getSite(this.props.site));
|
18
|
+
const types = data.map(t => {
|
19
|
+
return {
|
20
|
+
label: t.typeName,
|
21
|
+
value: t.typeName
|
22
|
+
};
|
23
|
+
});
|
24
|
+
types.splice(0, 0, {
|
25
|
+
label: 'All',
|
26
|
+
value: ''
|
27
|
+
}); // console.log('refreshTypes', types);
|
28
|
+
|
29
|
+
this.setState({
|
30
|
+
types
|
31
|
+
});
|
32
|
+
});
|
33
|
+
|
34
|
+
_defineProperty(this, "onSelectOption", (key, value) => {
|
35
|
+
const newState = {};
|
36
|
+
newState[key] = value;
|
37
|
+
this.setState(newState);
|
38
|
+
});
|
39
|
+
|
40
|
+
_defineProperty(this, "onDone", () => {
|
41
|
+
const {
|
42
|
+
onClose
|
43
|
+
} = this.props;
|
44
|
+
const {
|
45
|
+
selectedStatus,
|
46
|
+
selectedType
|
47
|
+
} = this.state;
|
48
|
+
if (onClose) onClose({
|
49
|
+
status: selectedStatus,
|
50
|
+
type: selectedType
|
51
|
+
});
|
52
|
+
});
|
53
|
+
|
54
|
+
this.state = {
|
55
|
+
types: props.types || [],
|
56
|
+
selectedStatus: props.status || '',
|
57
|
+
selectedType: props.type || ''
|
58
|
+
};
|
59
|
+
this.statusOptions = [{
|
60
|
+
label: 'All',
|
61
|
+
value: ''
|
62
|
+
}, {
|
63
|
+
label: 'Incomplete',
|
64
|
+
value: 'Unassigned|In Progress'
|
65
|
+
}, {
|
66
|
+
label: 'Unassigned',
|
67
|
+
value: 'Unassigned'
|
68
|
+
}, {
|
69
|
+
label: 'In Progress',
|
70
|
+
value: 'In Progress'
|
71
|
+
}, {
|
72
|
+
label: 'Completed',
|
73
|
+
value: 'Completed'
|
74
|
+
}];
|
75
|
+
}
|
76
|
+
|
77
|
+
componentDidMount() {
|
78
|
+
if (_.isEmpty(this.state.types)) this.refreshTypes();
|
79
|
+
}
|
80
|
+
|
81
|
+
componentDidUpdate(prevProps) {
|
82
|
+
if (prevProps.site !== this.props.site) {
|
83
|
+
this.refreshTypes();
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
renderTitle() {
|
88
|
+
const {
|
89
|
+
title
|
90
|
+
} = this.props;
|
91
|
+
return /*#__PURE__*/React.createElement(View, {
|
92
|
+
style: styles.titleContainer
|
93
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
94
|
+
style: styles.titleText
|
95
|
+
}, title || 'Filter By'));
|
96
|
+
}
|
97
|
+
|
98
|
+
renderCancel() {
|
99
|
+
const {
|
100
|
+
colourBrandingMain,
|
101
|
+
cancelText
|
102
|
+
} = this.props;
|
103
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
104
|
+
onPress: this.onDone
|
105
|
+
}, /*#__PURE__*/React.createElement(View, {
|
106
|
+
style: styles.cancelContainer
|
107
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
108
|
+
style: [styles.cancelText, {
|
109
|
+
color: colourBrandingMain
|
110
|
+
}]
|
111
|
+
}, cancelText || 'Done')));
|
112
|
+
}
|
113
|
+
|
114
|
+
renderOptions(title, options, selectedKey) {
|
115
|
+
const {
|
116
|
+
colourBrandingMain
|
117
|
+
} = this.props;
|
118
|
+
return /*#__PURE__*/React.createElement(View, {
|
119
|
+
style: styles.optionsContainer
|
120
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
121
|
+
style: styles.optionsTitle
|
122
|
+
}, title), /*#__PURE__*/React.createElement(View, {
|
123
|
+
style: styles.options
|
124
|
+
}, options.map(o => {
|
125
|
+
const selected = this.state[selectedKey];
|
126
|
+
const backgroundColor = o.value === selected ? colourBrandingMain : '#fff';
|
127
|
+
const color = o.value === selected ? '#fff' : colourBrandingMain;
|
128
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
129
|
+
key: o.label,
|
130
|
+
onPress: () => this.onSelectOption(selectedKey, o.value)
|
131
|
+
}, /*#__PURE__*/React.createElement(View, {
|
132
|
+
style: [styles.optionContainer, {
|
133
|
+
backgroundColor,
|
134
|
+
borderColor: colourBrandingMain
|
135
|
+
}]
|
136
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
137
|
+
style: [styles.optionText, {
|
138
|
+
color
|
139
|
+
}]
|
140
|
+
}, o.label)));
|
141
|
+
})));
|
142
|
+
}
|
143
|
+
|
144
|
+
render() {
|
145
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
146
|
+
visible: true,
|
147
|
+
transparent: true,
|
148
|
+
animationType: "slide",
|
149
|
+
onRequestClose: this.onDone
|
150
|
+
}, /*#__PURE__*/React.createElement(View, {
|
151
|
+
style: styles.container
|
152
|
+
}, /*#__PURE__*/React.createElement(View, {
|
153
|
+
style: styles.menu
|
154
|
+
}, this.renderTitle(), /*#__PURE__*/React.createElement(View, {
|
155
|
+
style: styles.optionContent
|
156
|
+
}, this.renderOptions('Status', this.statusOptions, 'selectedStatus'), this.renderOptions('Type', this.state.types, 'selectedType')), this.renderCancel())));
|
157
|
+
}
|
158
|
+
|
159
|
+
}
|
160
|
+
|
161
|
+
const styles = {
|
162
|
+
container: {
|
163
|
+
position: 'absolute',
|
164
|
+
bottom: 0,
|
165
|
+
left: 0,
|
166
|
+
right: 0,
|
167
|
+
top: 0,
|
168
|
+
backgroundColor: 'rgba(0,0,0,0.5)',
|
169
|
+
zIndex: 1000
|
170
|
+
},
|
171
|
+
menu: {
|
172
|
+
position: 'absolute',
|
173
|
+
bottom: 0,
|
174
|
+
left: 0,
|
175
|
+
right: 0,
|
176
|
+
backgroundColor: '#fff',
|
177
|
+
borderTopLeftRadius: 12,
|
178
|
+
borderTopRightRadius: 12
|
179
|
+
},
|
180
|
+
cancelContainer: {
|
181
|
+
paddingVertical: 16,
|
182
|
+
borderColor: Colours.LINEGREY,
|
183
|
+
borderTopWidth: 1,
|
184
|
+
paddingHorizontal: 16
|
185
|
+
},
|
186
|
+
cancelText: {
|
187
|
+
fontFamily: 'sf-medium',
|
188
|
+
fontSize: 16,
|
189
|
+
textAlign: 'center',
|
190
|
+
color: Colours.TEXT_DARK
|
191
|
+
},
|
192
|
+
titleContainer: {
|
193
|
+
padding: 16,
|
194
|
+
borderColor: Colours.LINEGREY,
|
195
|
+
borderBottomWidth: 1
|
196
|
+
},
|
197
|
+
titleText: {
|
198
|
+
fontFamily: 'sf-semibold',
|
199
|
+
fontSize: 16,
|
200
|
+
textAlign: 'center',
|
201
|
+
color: Colours.TEXT_DARK
|
202
|
+
},
|
203
|
+
optionContent: {
|
204
|
+
paddingVertical: 10
|
205
|
+
},
|
206
|
+
optionsContainer: {
|
207
|
+
marginHorizontal: 14
|
208
|
+
},
|
209
|
+
optionsTitle: {
|
210
|
+
fontFamily: 'sf-semibold',
|
211
|
+
marginBottom: 4
|
212
|
+
},
|
213
|
+
options: {
|
214
|
+
flex: 1,
|
215
|
+
flexDirection: 'row',
|
216
|
+
flexWrap: 'wrap'
|
217
|
+
},
|
218
|
+
optionContainer: {
|
219
|
+
flexDirection: 'row',
|
220
|
+
alignItems: 'center',
|
221
|
+
justifyContent: 'center',
|
222
|
+
minWidth: 50,
|
223
|
+
height: 30,
|
224
|
+
paddingHorizontal: 8,
|
225
|
+
borderRadius: 4,
|
226
|
+
borderWidth: 1,
|
227
|
+
marginRight: 8,
|
228
|
+
marginBottom: 8
|
229
|
+
},
|
230
|
+
optionText: {
|
231
|
+
color: '#fff',
|
232
|
+
textAlign: 'center',
|
233
|
+
fontFamily: 'sf-semibold',
|
234
|
+
fontSize: 13
|
235
|
+
}
|
236
|
+
};
|
237
|
+
|
238
|
+
const mapStateToProps = state => {
|
239
|
+
const {
|
240
|
+
user
|
241
|
+
} = state;
|
242
|
+
return {
|
243
|
+
site: user.site,
|
244
|
+
colourBrandingMain: Colours.getMainBrandingColourFromState(state)
|
245
|
+
};
|
246
|
+
};
|
247
|
+
|
248
|
+
export default connect(mapStateToProps, {})(FilterPopupMenu);
|
249
|
+
//# sourceMappingURL=FilterPopupMenu.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["React","Component","View","Text","TouchableOpacity","Modal","connect","_","generalActions","Colours","Helper","FilterPopupMenu","constructor","props","data","getJobTypes","getSite","site","types","map","t","label","typeName","value","splice","setState","key","newState","onClose","selectedStatus","selectedType","state","status","type","statusOptions","componentDidMount","isEmpty","refreshTypes","componentDidUpdate","prevProps","renderTitle","title","styles","titleContainer","titleText","renderCancel","colourBrandingMain","cancelText","onDone","cancelContainer","color","renderOptions","options","selectedKey","optionsContainer","optionsTitle","o","selected","backgroundColor","onSelectOption","optionContainer","borderColor","optionText","render","container","menu","optionContent","position","bottom","left","right","top","zIndex","borderTopLeftRadius","borderTopRightRadius","paddingVertical","LINEGREY","borderTopWidth","paddingHorizontal","fontFamily","fontSize","textAlign","TEXT_DARK","padding","borderBottomWidth","marginHorizontal","marginBottom","flex","flexDirection","flexWrap","alignItems","justifyContent","minWidth","height","borderRadius","borderWidth","marginRight","mapStateToProps","user","getMainBrandingColourFromState"],"sources":["FilterPopupMenu.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableOpacity, Modal } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { generalActions } from '../apis';\nimport { Colours, Helper } from '../core.config';\n\nclass FilterPopupMenu extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n types: props.types || [],\n selectedStatus: props.status || '',\n selectedType: props.type || '',\n };\n this.statusOptions = [\n {\n label: 'All',\n value: '',\n },\n {\n label: 'Incomplete',\n value: 'Unassigned|In Progress',\n },\n {\n label: 'Unassigned',\n value: 'Unassigned',\n },\n {\n label: 'In Progress',\n value: 'In Progress',\n },\n {\n label: 'Completed',\n value: 'Completed',\n },\n ];\n }\n\n componentDidMount() {\n if (_.isEmpty(this.state.types)) this.refreshTypes();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.site !== this.props.site) {\n this.refreshTypes();\n }\n }\n\n refreshTypes = async () => {\n const { data } = await generalActions.getJobTypes(Helper.getSite(this.props.site));\n const types = data.map(t => {\n return { label: t.typeName, value: t.typeName };\n });\n types.splice(0, 0, { label: 'All', value: '' });\n // console.log('refreshTypes', types);\n this.setState({ types });\n };\n\n onSelectOption = (key, value) => {\n const newState = {};\n newState[key] = value;\n this.setState(newState);\n };\n\n onDone = () => {\n const { onClose } = this.props;\n const { selectedStatus, selectedType } = this.state;\n if (onClose)\n onClose({\n status: selectedStatus,\n type: selectedType,\n });\n };\n\n renderTitle() {\n const { title } = this.props;\n return (\n <View style={styles.titleContainer}>\n <Text style={styles.titleText}>{title || 'Filter By'}</Text>\n </View>\n );\n }\n\n renderCancel() {\n const { colourBrandingMain, cancelText } = this.props;\n return (\n <TouchableOpacity onPress={this.onDone}>\n <View style={styles.cancelContainer}>\n <Text style={[styles.cancelText, { color: colourBrandingMain }]}>{cancelText || 'Done'}</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderOptions(title, options, selectedKey) {\n const { colourBrandingMain } = this.props;\n return (\n <View style={styles.optionsContainer}>\n <Text style={styles.optionsTitle}>{title}</Text>\n <View style={styles.options}>\n {options.map(o => {\n const selected = this.state[selectedKey];\n const backgroundColor = o.value === selected ? colourBrandingMain : '#fff';\n const color = o.value === selected ? '#fff' : colourBrandingMain;\n return (\n <TouchableOpacity key={o.label} onPress={() => this.onSelectOption(selectedKey, o.value)}>\n <View style={[styles.optionContainer, { backgroundColor, borderColor: colourBrandingMain }]}>\n <Text style={[styles.optionText, { color }]}>{o.label}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n );\n }\n\n render() {\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onDone}>\n <View style={styles.container}>\n <View style={styles.menu}>\n {this.renderTitle()}\n <View style={styles.optionContent}>\n {this.renderOptions('Status', this.statusOptions, 'selectedStatus')}\n {this.renderOptions('Type', this.state.types, 'selectedType')}\n </View>\n {this.renderCancel()}\n </View>\n </View>\n </Modal>\n );\n }\n}\n\nconst styles = {\n container: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n menu: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n },\n cancelContainer: {\n paddingVertical: 16,\n borderColor: Colours.LINEGREY,\n borderTopWidth: 1,\n paddingHorizontal: 16,\n },\n cancelText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n textAlign: 'center',\n color: Colours.TEXT_DARK,\n },\n titleContainer: {\n padding: 16,\n borderColor: Colours.LINEGREY,\n borderBottomWidth: 1,\n },\n titleText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: Colours.TEXT_DARK,\n },\n optionContent: {\n paddingVertical: 10,\n },\n optionsContainer: {\n marginHorizontal: 14,\n },\n optionsTitle: {\n fontFamily: 'sf-semibold',\n marginBottom: 4,\n },\n options: {\n flex: 1,\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n optionContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 50,\n height: 30,\n paddingHorizontal: 8,\n borderRadius: 4,\n borderWidth: 1,\n marginRight: 8,\n marginBottom: 8,\n },\n optionText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n};\n\nconst mapStateToProps = state => {\n const { user } = state;\n\n return {\n site: user.site,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, {})(FilterPopupMenu);\n"],"mappings":"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"}
|