@plusscommunities/pluss-maintenance-app 8.0.8 → 8.0.9-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 +4 -4
- package/dist/module/actions/JobActions.js.map +1 -1
- package/dist/module/actions/index.js +1 -1
- package/dist/module/actions/index.js.map +1 -1
- package/dist/module/actions/types.js +1 -1
- package/dist/module/actions/types.js.map +1 -1
- package/dist/module/apis/index.js +3 -3
- package/dist/module/apis/index.js.map +1 -1
- package/dist/module/apis/maintenanceActions.js +36 -36
- package/dist/module/apis/maintenanceActions.js.map +1 -1
- package/dist/module/apis/userActions.js +5 -5
- package/dist/module/apis/userActions.js.map +1 -1
- package/dist/module/components/FilterPopupMenu.js +49 -49
- package/dist/module/components/FilterPopupMenu.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +38 -38
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +62 -62
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/dist/module/components/MaintenanceWidgetItem.js +27 -27
- package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
- package/dist/module/components/PrioritySelectorPopup.js +15 -15
- package/dist/module/components/PrioritySelectorPopup.js.map +1 -1
- package/dist/module/components/StatusSelectorPopup.js +16 -16
- package/dist/module/components/StatusSelectorPopup.js.map +1 -1
- package/dist/module/components/WidgetLarge.js +2 -2
- package/dist/module/components/WidgetLarge.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +19 -19
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/core.config.js +1 -1
- package/dist/module/core.config.js.map +1 -1
- package/dist/module/feature.config.js +17 -17
- package/dist/module/feature.config.js.map +1 -1
- package/dist/module/helper.js +10 -10
- package/dist/module/helper.js.map +1 -1
- package/dist/module/index.js +11 -11
- package/dist/module/index.js.map +1 -1
- package/dist/module/reducers/JobsReducer.js +13 -13
- package/dist/module/reducers/JobsReducer.js.map +1 -1
- package/dist/module/screens/JobTypePicker.js +17 -17
- package/dist/module/screens/JobTypePicker.js.map +1 -1
- package/dist/module/screens/MaintenancePage.js +10 -10
- package/dist/module/screens/MaintenancePage.js.map +1 -1
- package/dist/module/screens/MaintenanceUserPicker.js +121 -24
- package/dist/module/screens/MaintenanceUserPicker.js.map +1 -1
- package/dist/module/screens/RequestDetail.js +147 -149
- package/dist/module/screens/RequestDetail.js.map +1 -1
- package/dist/module/screens/RequestNotes.js +59 -59
- package/dist/module/screens/RequestNotes.js.map +1 -1
- package/dist/module/screens/ServiceRequest.js +196 -194
- package/dist/module/screens/ServiceRequest.js.map +1 -1
- package/dist/module/values.config.a.js +31 -30
- package/dist/module/values.config.a.js.map +1 -1
- package/dist/module/values.config.default.js +35 -34
- package/dist/module/values.config.default.js.map +1 -1
- package/dist/module/values.config.enquiry.js +35 -34
- package/dist/module/values.config.enquiry.js.map +1 -1
- package/dist/module/values.config.feedback.js +35 -34
- package/dist/module/values.config.feedback.js.map +1 -1
- package/dist/module/values.config.food.js +35 -34
- package/dist/module/values.config.food.js.map +1 -1
- package/dist/module/values.config.forms.js +34 -34
- package/dist/module/values.config.forms.js.map +1 -1
- package/dist/module/values.config.js +35 -34
- package/dist/module/values.config.js.map +1 -1
- package/package.json +52 -53
- package/src/actions/JobActions.js +60 -67
- package/src/actions/index.js +1 -1
- package/src/actions/types.js +2 -1
- package/src/apis/index.js +3 -3
- package/src/apis/maintenanceActions.js +178 -189
- package/src/apis/userActions.js +17 -17
- package/src/components/FilterPopupMenu.js +256 -313
- package/src/components/MaintenanceList.js +317 -396
- package/src/components/MaintenanceListItem.js +288 -347
- package/src/components/MaintenanceWidgetItem.js +124 -145
- package/src/components/PrioritySelectorPopup.js +68 -81
- package/src/components/StatusSelectorPopup.js +70 -81
- package/src/components/WidgetLarge.js +5 -5
- package/src/components/WidgetSmall.js +133 -153
- package/src/core.config.js +3 -27
- package/src/feature.config.js +62 -62
- package/src/helper.js +53 -58
- package/src/index.js +22 -22
- package/src/reducers/JobsReducer.js +66 -85
- package/src/screens/JobTypePicker.js +92 -115
- package/src/screens/MaintenancePage.js +80 -89
- package/src/screens/MaintenanceUserPicker.js +186 -117
- package/src/screens/RequestDetail.js +1125 -1347
- package/src/screens/RequestNotes.js +806 -947
- package/src/screens/ServiceRequest.js +1557 -1783
- package/src/values.config.a.js +34 -33
- package/src/values.config.default.js +40 -39
- package/src/values.config.enquiry.js +40 -39
- package/src/values.config.feedback.js +40 -39
- package/src/values.config.food.js +40 -39
- package/src/values.config.forms.js +39 -39
- package/src/values.config.js +40 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_","REHYDRATE","JOBS_LOADED","JOB_ADDED","JOBS_ADDED","JOBS_STATUSES_LOADED","JOBS_HIDE_SEEN","JOB_FILTER_LOADED","ActionTypes","values","REDUCER_KEY","reducerKey","INITIAL_STATE","jobs","jobstatuses","hideSeen","jobfilters","status","statusText","priority","priorityText","type","assignee","assigneeName","state","action","updateJobs","index","LOGOUT","CHANGE_ROLE","payload","map","job","title","description","unionWith","j1","j2","id","findIndex","item","push","orderBy","v1","v2","text"],"sources":["JobsReducer.js"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport _ from
|
|
1
|
+
{"version":3,"names":["_","REHYDRATE","JOBS_LOADED","JOB_ADDED","JOBS_ADDED","JOBS_STATUSES_LOADED","JOBS_HIDE_SEEN","JOB_FILTER_LOADED","ActionTypes","values","REDUCER_KEY","reducerKey","INITIAL_STATE","jobs","jobstatuses","hideSeen","jobfilters","status","statusText","priority","priorityText","type","assignee","assigneeName","state","action","updateJobs","index","LOGOUT","CHANGE_ROLE","payload","map","job","title","description","unionWith","j1","j2","id","findIndex","item","push","orderBy","v1","v2","text"],"sources":["JobsReducer.js"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport _ from 'lodash';\nimport { REHYDRATE } from 'redux-persist';\nimport { JOBS_LOADED, JOB_ADDED, JOBS_ADDED, JOBS_STATUSES_LOADED, JOBS_HIDE_SEEN, JOB_FILTER_LOADED } from '../actions/types';\nimport { ActionTypes } from '../core.config';\nimport { values } from '../values.config';\n\nconst REDUCER_KEY = values.reducerKey;\n\nconst INITIAL_STATE = {\n jobs: [],\n jobstatuses: [],\n hideSeen: false,\n jobfilters: {\n status: '',\n statusText: '',\n priority: '',\n priorityText: '',\n type: '',\n assignee: '',\n assigneeName: '',\n },\n};\n\nexport default (state = INITIAL_STATE, action) => {\n let updateJobs = [];\n let index = 0;\n let jobstatuses = [];\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 JOBS_ADDED:\n updateJobs = action.payload.map(job => ({ title: job.title || job.description, ...job }));\n updateJobs = _.unionWith(updateJobs, state.jobs, (j1, j2) => {\n return j1.id === j2.id;\n });\n return { ...state, jobs: updateJobs };\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 JOBS_STATUSES_LOADED:\n jobstatuses = _.orderBy(\n _.unionWith(action.payload, state.jobstatuses, (v1, v2) => {\n return v1 != null && v2 != null && v1.text === v2.text;\n }),\n 'order',\n 'asc',\n );\n return { ...state, jobstatuses };\n case JOBS_HIDE_SEEN:\n return { ...state, hideSeen: action.payload };\n case JOB_FILTER_LOADED:\n return { ...state, jobfilters: action.payload || INITIAL_STATE.jobfilters };\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
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
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
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
|
|
5
|
-
import _ from
|
|
6
|
-
import { TouchableOpacity, View, ScrollView, Text } from
|
|
7
|
-
import { connect } from
|
|
8
|
-
import { Icon } from
|
|
9
|
-
import { Services } from
|
|
10
|
-
import { Components, Colours } from
|
|
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
11
|
class JobTypePicker extends Component {
|
|
12
12
|
constructor(...args) {
|
|
13
13
|
super(...args);
|
|
@@ -69,7 +69,7 @@ class JobTypePicker extends Component {
|
|
|
69
69
|
,
|
|
70
70
|
type: "font-awesome",
|
|
71
71
|
iconStyle: [{
|
|
72
|
-
color:
|
|
72
|
+
color: '#d5d9e0',
|
|
73
73
|
fontSize: 20
|
|
74
74
|
}, rep.typeName === this.state.currentType && {
|
|
75
75
|
color: Colours.COLOUR_GREEN
|
|
@@ -96,33 +96,33 @@ class JobTypePicker extends Component {
|
|
|
96
96
|
const styles = {
|
|
97
97
|
container: {
|
|
98
98
|
flex: 1,
|
|
99
|
-
position:
|
|
100
|
-
backgroundColor:
|
|
99
|
+
position: 'relative',
|
|
100
|
+
backgroundColor: '#f0f0f5'
|
|
101
101
|
},
|
|
102
102
|
row: {
|
|
103
|
-
flexDirection:
|
|
104
|
-
alignItems:
|
|
103
|
+
flexDirection: 'row',
|
|
104
|
+
alignItems: 'center',
|
|
105
105
|
minHeight: 22
|
|
106
106
|
},
|
|
107
107
|
text: {
|
|
108
108
|
flex: 1,
|
|
109
|
-
fontFamily:
|
|
109
|
+
fontFamily: 'sf-regular',
|
|
110
110
|
fontSize: 14,
|
|
111
111
|
color: Colours.TEXT_DARK
|
|
112
112
|
},
|
|
113
113
|
labelContainer: {
|
|
114
|
-
flexDirection:
|
|
115
|
-
justifyContent:
|
|
114
|
+
flexDirection: 'row',
|
|
115
|
+
justifyContent: 'space-between'
|
|
116
116
|
},
|
|
117
117
|
labelText: {
|
|
118
|
-
fontFamily:
|
|
118
|
+
fontFamily: 'sf-medium',
|
|
119
119
|
fontSize: 16,
|
|
120
120
|
color: Colours.TEXT_DARK
|
|
121
121
|
},
|
|
122
122
|
description: {
|
|
123
123
|
marginTop: 5,
|
|
124
124
|
fontSize: 14,
|
|
125
|
-
fontFamily:
|
|
125
|
+
fontFamily: 'sf-regular',
|
|
126
126
|
color: Colours.TEXT_DARK
|
|
127
127
|
}
|
|
128
128
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","_","TouchableOpacity","View","ScrollView","Text","connect","Icon","Services","Components","Colours","JobTypePicker","constructor","args","_defineProperty","currentType","UNSAFE_componentWillMount","setState","props","onPressBack","navigation","goBack","onTypePress","type","onSelectType","setTimeout","renderMain","isEmpty","types","createElement","style","marginTop","Spinner","FormCard","renderOptions","map","rep","index","key","onPress","bind","typeName","FormCardSection","label","labelStyle","height","margin","hasUnderline","hasContent","styles","labelContainer","labelText","name","iconStyle","color","fontSize","state","COLOUR_GREEN","description","render","container","Header","leftIcon","onPressLeft","text","flex","position","backgroundColor","row","flexDirection","alignItems","minHeight","fontFamily","TEXT_DARK","justifyContent"],"sources":["JobTypePicker.js"],"sourcesContent":["import React, { Component } from
|
|
1
|
+
{"version":3,"names":["React","Component","_","TouchableOpacity","View","ScrollView","Text","connect","Icon","Services","Components","Colours","JobTypePicker","constructor","args","_defineProperty","currentType","UNSAFE_componentWillMount","setState","props","onPressBack","navigation","goBack","onTypePress","type","onSelectType","setTimeout","renderMain","isEmpty","types","createElement","style","marginTop","Spinner","FormCard","renderOptions","map","rep","index","key","onPress","bind","typeName","FormCardSection","label","labelStyle","height","margin","hasUnderline","hasContent","styles","labelContainer","labelText","name","iconStyle","color","fontSize","state","COLOUR_GREEN","description","render","container","Header","leftIcon","onPressLeft","text","flex","position","backgroundColor","row","flexDirection","alignItems","minHeight","fontFamily","TEXT_DARK","justifyContent"],"sources":["JobTypePicker.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 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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
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
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
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
|
|
5
|
-
import { View, StyleSheet } from
|
|
6
|
-
import { connect } from
|
|
7
|
-
import _ from
|
|
8
|
-
import MaintenanceList from
|
|
9
|
-
import { Services, BaseComponents } from
|
|
10
|
-
import { Components, Helper, Styles, Config } from
|
|
11
|
-
import { values } from
|
|
4
|
+
import React, { Component } from 'react';
|
|
5
|
+
import { View, StyleSheet } from 'react-native';
|
|
6
|
+
import { connect } from 'react-redux';
|
|
7
|
+
import _ from 'lodash';
|
|
8
|
+
import MaintenanceList from '../components/MaintenanceList';
|
|
9
|
+
import { Services, BaseComponents } from '../feature.config';
|
|
10
|
+
import { Components, Helper, Styles, Config } from '../core.config';
|
|
11
|
+
import { values } from '../values.config';
|
|
12
12
|
class MaintenancePage extends Component {
|
|
13
13
|
constructor(props) {
|
|
14
14
|
super(props);
|
|
@@ -36,7 +36,7 @@ class MaintenancePage extends Component {
|
|
|
36
36
|
if (this.state.isHomeTab) {
|
|
37
37
|
return /*#__PURE__*/React.createElement(Components.Header, {
|
|
38
38
|
text: title,
|
|
39
|
-
rightContent: _.includes(this.props.user.hidden,
|
|
39
|
+
rightContent: _.includes(this.props.user.hidden, 'notifications') ? null : /*#__PURE__*/React.createElement(View, {
|
|
40
40
|
style: styles.notificationContainer
|
|
41
41
|
}, /*#__PURE__*/React.createElement(BaseComponents.NotificationBell, {
|
|
42
42
|
colourBrandingHeader: this.props.colourBrandingHeader,
|
|
@@ -71,7 +71,7 @@ const styles = StyleSheet.create({
|
|
|
71
71
|
flex: 1
|
|
72
72
|
},
|
|
73
73
|
notificationContainer: {
|
|
74
|
-
position:
|
|
74
|
+
position: 'absolute',
|
|
75
75
|
top: 0,
|
|
76
76
|
bottom: 0,
|
|
77
77
|
right: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","View","StyleSheet","connect","_","MaintenanceList","Services","BaseComponents","Components","Helper","Styles","Config","values","MaintenancePage","constructor","props","_defineProperty","navigation","goBack","loading","setState","state","isHomeTab","componentDidMount","getParentRoute","renderHeader","title","strings","featureKey","textFeatureTitle","createElement","Header","text","rightContent","includes","user","hidden","style","styles","notificationContainer","NotificationBell","colourBrandingHeader","containerStyle","notificationBell","leftIcon","onPressLeft","onPressBack","render","container","LoadingIndicator","visible","maintenanceList","onLoadingChanged","enableAdd","options","create","flex","position","top","bottom","right","paddingTop","StatusBarHeight","marginTop","mapStateToProps","_state$strings","config"],"sources":["MaintenancePage.js"],"sourcesContent":["import React, { Component } from
|
|
1
|
+
{"version":3,"names":["React","Component","View","StyleSheet","connect","_","MaintenanceList","Services","BaseComponents","Components","Helper","Styles","Config","values","MaintenancePage","constructor","props","_defineProperty","navigation","goBack","loading","setState","state","isHomeTab","componentDidMount","getParentRoute","renderHeader","title","strings","featureKey","textFeatureTitle","createElement","Header","text","rightContent","includes","user","hidden","style","styles","notificationContainer","NotificationBell","colourBrandingHeader","containerStyle","notificationBell","leftIcon","onPressLeft","onPressBack","render","container","LoadingIndicator","visible","maintenanceList","onLoadingChanged","enableAdd","options","create","flex","position","top","bottom","right","paddingTop","StatusBarHeight","marginTop","mapStateToProps","_state$strings","config"],"sources":["MaintenancePage.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport MaintenanceList from '../components/MaintenanceList';\nimport { Services, BaseComponents } from '../feature.config';\nimport { Components, Helper, Styles, Config } from '../core.config';\nimport { values } from '../values.config';\n\nclass MaintenancePage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isHomeTab: false,\n loading: false,\n };\n }\n\n componentDidMount() {\n // console.log('!Services.navigation.getParentRoute()', !Services.navigation.getParentRoute());\n this.setState({ isHomeTab: !Services.navigation.getParentRoute() });\n }\n\n onPressBack = () => {\n Services.navigation.goBack();\n };\n\n onLoadingChanged = loading => {\n this.setState({ loading });\n };\n\n renderHeader() {\n const title = this.props.title || this.props.strings[`${values.featureKey}_textFeatureTitle`] || values.textFeatureTitle;\n if (this.state.isHomeTab) {\n return (\n <Components.Header\n text={title}\n rightContent={\n _.includes(this.props.user.hidden, 'notifications') ? null : (\n <View style={styles.notificationContainer}>\n <BaseComponents.NotificationBell\n colourBrandingHeader={this.props.colourBrandingHeader}\n containerStyle={Styles.notificationBell}\n />\n </View>\n )\n }\n />\n );\n }\n return <Components.Header leftIcon=\"angle-left\" onPressLeft={this.onPressBack} text={values.textFeatureTitle} />;\n }\n\n render() {\n const { isHomeTab } = this.state;\n\n return (\n <View style={styles.container}>\n {this.renderHeader()}\n <Components.LoadingIndicator visible={this.state.loading} />\n <MaintenanceList\n style={styles.maintenanceList}\n onLoadingChanged={this.onLoadingChanged}\n enableAdd={!isHomeTab}\n options={this.props.options}\n />\n {/* {isHomeTab && <Components.AddContentButton />} */}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n notificationContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n right: 0,\n paddingTop: Helper.StatusBarHeight(0),\n },\n maintenanceList: {\n marginTop: 12,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n strings: state.strings?.config || {},\n };\n};\n\nexport default connect(mapStateToProps, {})(MaintenancePage);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,18 +1,40 @@
|
|
|
1
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
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
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
|
|
5
|
-
import _ from
|
|
6
|
-
import { TouchableOpacity, View, ScrollView, Text } from
|
|
7
|
-
import { connect } from
|
|
8
|
-
import { Icon } from
|
|
9
|
-
import { Services } from
|
|
10
|
-
import { Components, Colours } from
|
|
4
|
+
import React, { Component } from 'react';
|
|
5
|
+
import _ from 'lodash';
|
|
6
|
+
import { TouchableOpacity, View, ScrollView, Text, TextInput, Keyboard } 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
11
|
class MaintenanceUserPicker extends Component {
|
|
12
12
|
constructor(...args) {
|
|
13
13
|
super(...args);
|
|
14
14
|
_defineProperty(this, "state", {
|
|
15
|
-
currentUser: null
|
|
15
|
+
currentUser: null,
|
|
16
|
+
searchText: ''
|
|
17
|
+
});
|
|
18
|
+
_defineProperty(this, "onChangeSearch", text => {
|
|
19
|
+
this.setState({
|
|
20
|
+
searchText: text
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
_defineProperty(this, "getFilteredUsers", () => {
|
|
24
|
+
const {
|
|
25
|
+
searchText
|
|
26
|
+
} = this.state;
|
|
27
|
+
const {
|
|
28
|
+
users
|
|
29
|
+
} = this.props;
|
|
30
|
+
if (!users) return [];
|
|
31
|
+
if (!searchText || searchText.length === 0) return users;
|
|
32
|
+
const searchLower = searchText.toLowerCase();
|
|
33
|
+
return users.filter(user => {
|
|
34
|
+
const displayName = (user.displayName || '').toLowerCase();
|
|
35
|
+
const unit = (user.unit || '').toLowerCase();
|
|
36
|
+
return displayName.includes(searchLower) || unit.includes(searchLower);
|
|
37
|
+
});
|
|
16
38
|
});
|
|
17
39
|
}
|
|
18
40
|
UNSAFE_componentWillMount() {
|
|
@@ -24,6 +46,7 @@ class MaintenanceUserPicker extends Component {
|
|
|
24
46
|
Services.navigation.goBack();
|
|
25
47
|
}
|
|
26
48
|
onUserPress(user) {
|
|
49
|
+
Keyboard.dismiss();
|
|
27
50
|
this.props.onSelectUser(user);
|
|
28
51
|
this.setState({
|
|
29
52
|
currentUser: user
|
|
@@ -40,14 +63,22 @@ class MaintenanceUserPicker extends Component {
|
|
|
40
63
|
}
|
|
41
64
|
}, /*#__PURE__*/React.createElement(Components.Spinner, null));
|
|
42
65
|
}
|
|
66
|
+
const filteredUsers = this.getFilteredUsers();
|
|
67
|
+
if (filteredUsers.length === 0 && this.state.searchText.length > 0) {
|
|
68
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
69
|
+
style: styles.noResultsContainer
|
|
70
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
71
|
+
style: styles.noResultsText
|
|
72
|
+
}, "No users found"));
|
|
73
|
+
}
|
|
43
74
|
return /*#__PURE__*/React.createElement(Components.FormCard, {
|
|
44
75
|
style: {
|
|
45
76
|
marginTop: 16
|
|
46
77
|
}
|
|
47
|
-
}, this.renderOptions());
|
|
78
|
+
}, this.renderOptions(filteredUsers));
|
|
48
79
|
}
|
|
49
|
-
renderOptions() {
|
|
50
|
-
return
|
|
80
|
+
renderOptions(users) {
|
|
81
|
+
return users.map((user, index) => {
|
|
51
82
|
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
52
83
|
key: index,
|
|
53
84
|
onPress: this.onUserPress.bind(this, user)
|
|
@@ -72,7 +103,7 @@ class MaintenanceUserPicker extends Component {
|
|
|
72
103
|
name: "check-circle",
|
|
73
104
|
type: "font-awesome",
|
|
74
105
|
iconStyle: [{
|
|
75
|
-
color:
|
|
106
|
+
color: '#d5d9e0',
|
|
76
107
|
fontSize: 20
|
|
77
108
|
}, _.isEqual(user, this.state.currentUser) && {
|
|
78
109
|
color: Colours.COLOUR_GREEN
|
|
@@ -80,6 +111,31 @@ class MaintenanceUserPicker extends Component {
|
|
|
80
111
|
}))));
|
|
81
112
|
});
|
|
82
113
|
}
|
|
114
|
+
renderSearch() {
|
|
115
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
116
|
+
style: styles.searchContainer
|
|
117
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
118
|
+
name: "search",
|
|
119
|
+
type: "font-awesome",
|
|
120
|
+
iconStyle: styles.searchIcon
|
|
121
|
+
}), /*#__PURE__*/React.createElement(TextInput, {
|
|
122
|
+
placeholder: "Search by name or unit",
|
|
123
|
+
autoCorrect: false,
|
|
124
|
+
placeholderTextColor: Colours.TEXT_DARK_ALPHA10,
|
|
125
|
+
onChangeText: this.onChangeSearch,
|
|
126
|
+
value: this.state.searchText,
|
|
127
|
+
style: styles.searchText,
|
|
128
|
+
underlineColorAndroid: 'rgba(0,0,0,0)',
|
|
129
|
+
returnKeyType: "search"
|
|
130
|
+
}), this.state.searchText.length > 0 && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
131
|
+
onPress: () => this.onChangeSearch(''),
|
|
132
|
+
style: styles.clearButton
|
|
133
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
134
|
+
name: "times-circle",
|
|
135
|
+
type: "font-awesome",
|
|
136
|
+
iconStyle: styles.clearIcon
|
|
137
|
+
})));
|
|
138
|
+
}
|
|
83
139
|
render() {
|
|
84
140
|
return /*#__PURE__*/React.createElement(View, {
|
|
85
141
|
style: styles.container
|
|
@@ -87,43 +143,84 @@ class MaintenanceUserPicker extends Component {
|
|
|
87
143
|
leftIcon: "angle-left",
|
|
88
144
|
onPressLeft: this.onPressBack.bind(this),
|
|
89
145
|
text: "Select user"
|
|
90
|
-
}), /*#__PURE__*/React.createElement(ScrollView, {
|
|
146
|
+
}), this.renderSearch(), /*#__PURE__*/React.createElement(ScrollView, {
|
|
91
147
|
style: {
|
|
92
148
|
flex: 1
|
|
93
|
-
}
|
|
149
|
+
},
|
|
150
|
+
keyboardShouldPersistTaps: "handled",
|
|
151
|
+
keyboardDismissMode: "on-drag"
|
|
94
152
|
}, this.renderMain()));
|
|
95
153
|
}
|
|
96
154
|
}
|
|
97
155
|
const styles = {
|
|
98
156
|
container: {
|
|
99
157
|
flex: 1,
|
|
100
|
-
position:
|
|
101
|
-
backgroundColor:
|
|
158
|
+
position: 'relative',
|
|
159
|
+
backgroundColor: '#f0f0f5'
|
|
102
160
|
},
|
|
103
161
|
row: {
|
|
104
|
-
flexDirection:
|
|
105
|
-
alignItems:
|
|
162
|
+
flexDirection: 'row',
|
|
163
|
+
alignItems: 'center',
|
|
106
164
|
minHeight: 22
|
|
107
165
|
},
|
|
108
166
|
text: {
|
|
109
167
|
flex: 1,
|
|
110
|
-
fontFamily:
|
|
168
|
+
fontFamily: 'sf-regular',
|
|
111
169
|
fontSize: 14,
|
|
112
170
|
color: Colours.TEXT_DARK
|
|
113
171
|
},
|
|
114
172
|
rowContainer: {
|
|
115
|
-
flexDirection:
|
|
116
|
-
justifyContent:
|
|
173
|
+
flexDirection: 'row',
|
|
174
|
+
justifyContent: 'space-between'
|
|
117
175
|
},
|
|
118
176
|
userContainer: {
|
|
119
|
-
flexDirection:
|
|
120
|
-
alignItems:
|
|
177
|
+
flexDirection: 'row',
|
|
178
|
+
alignItems: 'center'
|
|
121
179
|
},
|
|
122
180
|
labelText: {
|
|
123
|
-
fontFamily:
|
|
181
|
+
fontFamily: 'sf-medium',
|
|
124
182
|
fontSize: 16,
|
|
125
183
|
color: Colours.TEXT_DARK,
|
|
126
184
|
marginLeft: 8
|
|
185
|
+
},
|
|
186
|
+
searchContainer: {
|
|
187
|
+
flexDirection: 'row',
|
|
188
|
+
alignItems: 'center',
|
|
189
|
+
margin: 15,
|
|
190
|
+
backgroundColor: '#fff',
|
|
191
|
+
borderRadius: 8,
|
|
192
|
+
paddingHorizontal: 12,
|
|
193
|
+
paddingVertical: 8
|
|
194
|
+
},
|
|
195
|
+
searchIcon: {
|
|
196
|
+
fontSize: 16,
|
|
197
|
+
marginRight: 10,
|
|
198
|
+
color: Colours.TEXT_MID_ALPHA50
|
|
199
|
+
},
|
|
200
|
+
searchText: {
|
|
201
|
+
flex: 1,
|
|
202
|
+
fontSize: 16,
|
|
203
|
+
fontFamily: 'sf-regular',
|
|
204
|
+
color: Colours.TEXT_DARK,
|
|
205
|
+
padding: 0
|
|
206
|
+
},
|
|
207
|
+
clearButton: {
|
|
208
|
+
padding: 4
|
|
209
|
+
},
|
|
210
|
+
clearIcon: {
|
|
211
|
+
fontSize: 16,
|
|
212
|
+
color: Colours.TEXT_MID_ALPHA50
|
|
213
|
+
},
|
|
214
|
+
noResultsContainer: {
|
|
215
|
+
alignItems: 'center',
|
|
216
|
+
justifyContent: 'center',
|
|
217
|
+
paddingVertical: 40
|
|
218
|
+
},
|
|
219
|
+
noResultsText: {
|
|
220
|
+
fontSize: 16,
|
|
221
|
+
fontFamily: 'sf-regular',
|
|
222
|
+
color: Colours.TEXT_LIGHT,
|
|
223
|
+
textAlign: 'center'
|
|
127
224
|
}
|
|
128
225
|
};
|
|
129
226
|
export default connect(null, {})(MaintenanceUserPicker);
|
|
@@ -1 +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 \"@rneui/themed\";\nimport { Services } from \"../feature.config\";\nimport { Components, Colours } from \"../core.config\";\n\nclass MaintenanceUserPicker extends Component {\n\tstate = {\n\t\tcurrentUser: null,\n\t};\n\n\tUNSAFE_componentWillMount() {\n\t\tthis.setState({ currentUser: this.props.currentUser });\n\t}\n\n\tonPressBack() {\n\t\tServices.navigation.goBack();\n\t}\n\n\tonUserPress(user) {\n\t\tthis.props.onSelectUser(user);\n\t\tthis.setState({ currentUser: user });\n\t\tsetTimeout(() => {\n\t\t\tthis.onPressBack();\n\t\t}, 200);\n\t}\n\n\trenderMain() {\n\t\tif (_.isEmpty(this.props.users)) {\n\t\t\treturn (\n\t\t\t\t<View style={{ marginTop: 16 }}>\n\t\t\t\t\t<Components.Spinner />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<Components.FormCard style={{ marginTop: 16 }}>\n\t\t\t\t{this.renderOptions()}\n\t\t\t</Components.FormCard>\n\t\t);\n\t}\n\n\trenderOptions() {\n\t\treturn this.props.users.map((user, index) => {\n\t\t\treturn (\n\t\t\t\t<TouchableOpacity\n\t\t\t\t\tkey={index}\n\t\t\t\t\tonPress={this.onUserPress.bind(this, user)}\n\t\t\t\t>\n\t\t\t\t\t<Components.FormCardSection\n\t\t\t\t\t\tlabel={user.displayName}\n\t\t\t\t\t\tlabelStyle={{ height: 0, margin: 0 }}\n\t\t\t\t\t\thasUnderline\n\t\t\t\t\t\thasContent\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={styles.rowContainer}>\n\t\t\t\t\t\t\t<View style={styles.userContainer}>\n\t\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\t\tProfilePic={user.profilePic}\n\t\t\t\t\t\t\t\t\tDiameter={30}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text style={styles.labelText}>{user.displayName}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"check-circle\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\t\t\t{ color: \"#d5d9e0\", fontSize: 20 },\n\t\t\t\t\t\t\t\t\t_.isEqual(user, this.state.currentUser) && {\n\t\t\t\t\t\t\t\t\t\tcolor: Colours.COLOUR_GREEN,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</Components.FormCardSection>\n\t\t\t\t</TouchableOpacity>\n\t\t\t);\n\t\t});\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t<Components.Header\n\t\t\t\t\tleftIcon=\"angle-left\"\n\t\t\t\t\tonPressLeft={this.onPressBack.bind(this)}\n\t\t\t\t\ttext=\"Select user\"\n\t\t\t\t/>\n\t\t\t\t<ScrollView style={{ flex: 1 }}>{this.renderMain()}</ScrollView>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tcontainer: {\n\t\tflex: 1,\n\t\tposition: \"relative\",\n\t\tbackgroundColor: \"#f0f0f5\",\n\t},\n\trow: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tminHeight: 22,\n\t},\n\ttext: {\n\t\tflex: 1,\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\trowContainer: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tuserContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tlabelText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginLeft: 8,\n\t},\n};\n\nexport default connect(null, {})(MaintenanceUserPicker);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","_","TouchableOpacity","View","ScrollView","Text","TextInput","Keyboard","connect","Icon","Services","Components","Colours","MaintenanceUserPicker","constructor","args","_defineProperty","currentUser","searchText","text","setState","state","users","props","length","searchLower","toLowerCase","filter","user","displayName","unit","includes","UNSAFE_componentWillMount","onPressBack","navigation","goBack","onUserPress","dismiss","onSelectUser","setTimeout","renderMain","isEmpty","createElement","style","marginTop","Spinner","filteredUsers","getFilteredUsers","styles","noResultsContainer","noResultsText","FormCard","renderOptions","map","index","key","onPress","bind","FormCardSection","label","labelStyle","height","margin","hasUnderline","hasContent","rowContainer","userContainer","ProfilePic","profilePic","Diameter","labelText","name","type","iconStyle","color","fontSize","isEqual","COLOUR_GREEN","renderSearch","searchContainer","searchIcon","placeholder","autoCorrect","placeholderTextColor","TEXT_DARK_ALPHA10","onChangeText","onChangeSearch","value","underlineColorAndroid","returnKeyType","clearButton","clearIcon","render","container","Header","leftIcon","onPressLeft","flex","keyboardShouldPersistTaps","keyboardDismissMode","position","backgroundColor","row","flexDirection","alignItems","minHeight","fontFamily","TEXT_DARK","justifyContent","marginLeft","borderRadius","paddingHorizontal","paddingVertical","marginRight","TEXT_MID_ALPHA50","padding","TEXT_LIGHT","textAlign"],"sources":["MaintenanceUserPicker.js"],"sourcesContent":["import React, { Component } from 'react';\nimport _ from 'lodash';\nimport { TouchableOpacity, View, ScrollView, Text, TextInput, Keyboard } 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 searchText: '',\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 Keyboard.dismiss();\n this.props.onSelectUser(user);\n this.setState({ currentUser: user });\n setTimeout(() => {\n this.onPressBack();\n }, 200);\n }\n\n onChangeSearch = (text) => {\n this.setState({ searchText: text });\n };\n\n getFilteredUsers = () => {\n const { searchText } = this.state;\n const { users } = this.props;\n if (!users) return [];\n if (!searchText || searchText.length === 0) return users;\n const searchLower = searchText.toLowerCase();\n return users.filter(user => {\n const displayName = (user.displayName || '').toLowerCase();\n const unit = (user.unit || '').toLowerCase();\n return displayName.includes(searchLower) || unit.includes(searchLower);\n });\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 const filteredUsers = this.getFilteredUsers();\n if (filteredUsers.length === 0 && this.state.searchText.length > 0) {\n return (\n <View style={styles.noResultsContainer}>\n <Text style={styles.noResultsText}>No users found</Text>\n </View>\n );\n }\n\n return <Components.FormCard style={{ marginTop: 16 }}>{this.renderOptions(filteredUsers)}</Components.FormCard>;\n }\n\n renderOptions(users) {\n return 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 renderSearch() {\n return (\n <View style={styles.searchContainer}>\n <Icon name=\"search\" type=\"font-awesome\" iconStyle={styles.searchIcon} />\n <TextInput\n placeholder=\"Search by name or unit\"\n autoCorrect={false}\n placeholderTextColor={Colours.TEXT_DARK_ALPHA10}\n onChangeText={this.onChangeSearch}\n value={this.state.searchText}\n style={styles.searchText}\n underlineColorAndroid={'rgba(0,0,0,0)'}\n returnKeyType=\"search\"\n />\n {this.state.searchText.length > 0 && (\n <TouchableOpacity onPress={() => this.onChangeSearch('')} style={styles.clearButton}>\n <Icon name=\"times-circle\" type=\"font-awesome\" iconStyle={styles.clearIcon} />\n </TouchableOpacity>\n )}\n </View>\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 {this.renderSearch()}\n <ScrollView style={{ flex: 1 }} keyboardShouldPersistTaps=\"handled\" keyboardDismissMode=\"on-drag\">\n {this.renderMain()}\n </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 searchContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n margin: 15,\n backgroundColor: '#fff',\n borderRadius: 8,\n paddingHorizontal: 12,\n paddingVertical: 8,\n },\n searchIcon: {\n fontSize: 16,\n marginRight: 10,\n color: Colours.TEXT_MID_ALPHA50,\n },\n searchText: {\n flex: 1,\n fontSize: 16,\n fontFamily: 'sf-regular',\n color: Colours.TEXT_DARK,\n padding: 0,\n },\n clearButton: {\n padding: 4,\n },\n clearIcon: {\n fontSize: 16,\n color: Colours.TEXT_MID_ALPHA50,\n },\n noResultsContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 40,\n },\n noResultsText: {\n fontSize: 16,\n fontFamily: 'sf-regular',\n color: Colours.TEXT_LIGHT,\n textAlign: 'center',\n },\n};\n\nexport default connect(null, {})(MaintenanceUserPicker);"],"mappings":"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","ignoreList":[]}
|