@plusscommunities/pluss-maintenance-app-forms 7.0.21 → 8.0.1-auth.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.
Files changed (58) hide show
  1. package/dist/module/apis/maintenanceActions.js +12 -4
  2. package/dist/module/apis/maintenanceActions.js.map +1 -1
  3. package/dist/module/components/FilterPopupMenu.js +30 -14
  4. package/dist/module/components/FilterPopupMenu.js.map +1 -1
  5. package/dist/module/components/MaintenanceList.js +199 -25
  6. package/dist/module/components/MaintenanceList.js.map +1 -1
  7. package/dist/module/components/MaintenanceListItem.js +2 -1
  8. package/dist/module/components/MaintenanceListItem.js.map +1 -1
  9. package/dist/module/components/MaintenanceWidgetItem.js +2 -1
  10. package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
  11. package/dist/module/components/PrioritySelectorPopup.js +2 -1
  12. package/dist/module/components/PrioritySelectorPopup.js.map +1 -1
  13. package/dist/module/components/StatusSelectorPopup.js +2 -1
  14. package/dist/module/components/StatusSelectorPopup.js.map +1 -1
  15. package/dist/module/components/WidgetSmall.js +5 -4
  16. package/dist/module/components/WidgetSmall.js.map +1 -1
  17. package/dist/module/core.config.js +1 -2
  18. package/dist/module/core.config.js.map +1 -1
  19. package/dist/module/screens/JobTypePicker.js +2 -1
  20. package/dist/module/screens/JobTypePicker.js.map +1 -1
  21. package/dist/module/screens/MaintenanceUserPicker.js +73 -91
  22. package/dist/module/screens/MaintenanceUserPicker.js.map +1 -1
  23. package/dist/module/screens/RequestDetail.js +76 -29
  24. package/dist/module/screens/RequestDetail.js.map +1 -1
  25. package/dist/module/screens/RequestNotes.js +11 -7
  26. package/dist/module/screens/RequestNotes.js.map +1 -1
  27. package/dist/module/screens/ServiceRequest.js +43 -42
  28. package/dist/module/screens/ServiceRequest.js.map +1 -1
  29. package/dist/module/values.config.a.js +1 -2
  30. package/dist/module/values.config.a.js.map +1 -1
  31. package/dist/module/values.config.default.js +1 -2
  32. package/dist/module/values.config.default.js.map +1 -1
  33. package/dist/module/values.config.enquiry.js +1 -2
  34. package/dist/module/values.config.enquiry.js.map +1 -1
  35. package/dist/module/values.config.feedback.js +1 -2
  36. package/dist/module/values.config.feedback.js.map +1 -1
  37. package/dist/module/values.config.food.js +1 -2
  38. package/dist/module/values.config.food.js.map +1 -1
  39. package/package.json +18 -14
  40. package/src/apis/maintenanceActions.js +17 -7
  41. package/src/components/FilterPopupMenu.js +67 -40
  42. package/src/components/MaintenanceList.js +234 -40
  43. package/src/components/MaintenanceListItem.js +2 -1
  44. package/src/components/MaintenanceWidgetItem.js +2 -1
  45. package/src/components/PrioritySelectorPopup.js +2 -1
  46. package/src/components/StatusSelectorPopup.js +2 -1
  47. package/src/components/WidgetSmall.js +12 -4
  48. package/src/core.config.js +0 -2
  49. package/src/screens/JobTypePicker.js +2 -1
  50. package/src/screens/MaintenanceUserPicker.js +77 -114
  51. package/src/screens/RequestDetail.js +88 -32
  52. package/src/screens/RequestNotes.js +17 -10
  53. package/src/screens/ServiceRequest.js +85 -44
  54. package/src/values.config.a.js +0 -1
  55. package/src/values.config.default.js +0 -1
  56. package/src/values.config.enquiry.js +0 -1
  57. package/src/values.config.feedback.js +0 -1
  58. package/src/values.config.food.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","_","TouchableOpacity","View","ScrollView","Text","TextInput","connect","Icon","Services","Components","Colours","Fonts","MaintenanceUserPicker","constructor","args","_defineProperty","currentUser","searchText","filteredUsers","text","setState","getFilteredUsers","users","usersList","props","length","filter","user","displayName","unit","searchLower","toLowerCase","includes","createElement","style","styles","searchContainer","PlIcon","name","searchIcon","placeholder","autoCorrect","placeholderTextColor","onChangeText","onChangeSearch","value","state","underlineColorAndroid","returnKeyType","onPress","clearButton","type","iconStyle","clearIcon","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","nextProps","onPressBack","navigation","goBack","onUserPress","onSelectUser","setTimeout","renderMain","isEmpty","marginTop","Spinner","FormCard","renderOptions","noResultsContainer","noResultsText","map","index","key","bind","FormCardSection","label","labelStyle","height","margin","hasUnderline","hasContent","rowContainer","userContainer","ProfilePic","profilePic","Diameter","labelText","color","fontSize","isEqual","COLOUR_GREEN","render","container","Header","leftIcon","onPressLeft","renderSearch","flex","position","backgroundColor","row","flexDirection","alignItems","minHeight","fontFamily","TEXT_DARK","justifyContent","marginLeft","paddingHorizontal","paddingVertical","borderBottomWidth","borderBottomColor","marginRight","padding","TEXT_LIGHT","textAlign"],"sources":["MaintenanceUserPicker.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport _ from \"lodash\";\nimport {\n\tTouchableOpacity,\n\tView,\n\tScrollView,\n\tText,\n\tTextInput,\n} from \"react-native\";\nimport { connect } from \"react-redux\";\nimport { Icon } from \"@rneui/themed\";\nimport { Services } from \"../feature.config\";\nimport { Components, Colours, Fonts } from \"../core.config\";\n\nclass MaintenanceUserPicker extends Component {\n\tstate = {\n\t\tcurrentUser: null,\n\t\tsearchText: \"\",\n\t\tfilteredUsers: [],\n\t};\n\n\tUNSAFE_componentWillMount() {\n\t\tthis.setState({\n\t\t\tcurrentUser: this.props.currentUser,\n\t\t\tfilteredUsers: this.props.users || [],\n\t\t});\n\t}\n\n\tUNSAFE_componentWillReceiveProps(nextProps) {\n\t\tif (nextProps.users !== this.props.users) {\n\t\t\tthis.setState({\n\t\t\t\tfilteredUsers: this.getFilteredUsers(\n\t\t\t\t\tthis.state.searchText,\n\t\t\t\t\tnextProps.users,\n\t\t\t\t),\n\t\t\t});\n\t\t}\n\t\tif (nextProps.currentUser !== this.props.currentUser) {\n\t\t\tthis.setState({\n\t\t\t\tcurrentUser: nextProps.currentUser,\n\t\t\t});\n\t\t}\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\tonChangeSearch = (text) => {\n\t\tthis.setState({\n\t\t\tsearchText: text,\n\t\t\tfilteredUsers: this.getFilteredUsers(text),\n\t\t});\n\t};\n\n\tgetFilteredUsers = (searchText, users) => {\n\t\tconst usersList = users || this.props.users || [];\n\n\t\tif (!searchText || searchText.length === 0) {\n\t\t\treturn usersList;\n\t\t}\n\n\t\tif (!usersList || usersList.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn usersList.filter((user) => {\n\t\t\tconst displayName = user.displayName || \"\";\n\t\t\tconst unit = user.unit || \"\";\n\t\t\tconst searchLower = searchText.toLowerCase();\n\n\t\t\treturn (\n\t\t\t\tdisplayName.toLowerCase().includes(searchLower) ||\n\t\t\t\tunit.toLowerCase().includes(searchLower)\n\t\t\t);\n\t\t});\n\t};\n\n\trenderSearch = () => {\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Fonts.PlIcon name=\"nav-search\" style={styles.searchIcon} />\n\t\t\t\t<TextInput\n\t\t\t\t\tplaceholder=\"Search by name or unit\"\n\t\t\t\t\tautoCorrect={false}\n\t\t\t\t\tplaceholderTextColor={\"rgba(60, 60, 80, .1)\"}\n\t\t\t\t\tonChangeText={this.onChangeSearch}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tstyle={styles.searchText}\n\t\t\t\t\tunderlineColorAndroid={\"rgba(0,0,0,0)\"}\n\t\t\t\t\treturnKeyType=\"search\"\n\t\t\t\t/>\n\t\t\t\t{this.state.searchText.length > 0 && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={() => this.onChangeSearch(\"\")}\n\t\t\t\t\t\tstyle={styles.clearButton}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname=\"times-circle\"\n\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\ticonStyle={styles.clearIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\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\tconst users = this.state.filteredUsers;\n\n\t\tif (users.length === 0 && this.state.searchText.length > 0) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.noResultsContainer}>\n\t\t\t\t\t<Text style={styles.noResultsText}>\n\t\t\t\t\t\tNo users found matching \"{this.state.searchText}\"\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn 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{this.renderSearch()}\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\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 12,\n\t\tbackgroundColor: \"#fff\",\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: \"#f0f0f5\",\n\t},\n\tsearchIcon: {\n\t\tfontSize: 20,\n\t\tmarginRight: 10,\n\t\tcolor: \"rgba(90, 90, 110, .5)\",\n\t},\n\tsearchText: {\n\t\tflex: 1,\n\t\tfontSize: 16,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\tclearButton: {\n\t\tpadding: 8,\n\t},\n\tclearIcon: {\n\t\tfontSize: 18,\n\t\tcolor: \"rgba(90, 90, 110, .5)\",\n\t},\n\tnoResultsContainer: {\n\t\tflex: 1,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tpaddingVertical: 40,\n\t},\n\tnoResultsText: {\n\t\tfontSize: 16,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\ttextAlign: \"center\",\n\t},\n};\n\nexport default connect(null, {})(MaintenanceUserPicker);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","Text","_","TouchableOpacity","View","ScrollView","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_MID_ALPHA50","onChangeText","onChangeSearch","value","underlineColorAndroid","COLOUR_TRANSPARENT","returnKeyType","clearButton","clearIcon","render","container","Header","leftIcon","onPressLeft","flex","keyboardShouldPersistTaps","keyboardDismissMode","position","backgroundColor","flexDirection","justifyContent","alignItems","fontFamily","TEXT_DARK","marginLeft","marginHorizontal","marginBottom","borderRadius","paddingHorizontal","paddingVertical","marginRight","padding","TEXT_LIGHT","textAlign"],"sources":["MaintenanceUserPicker.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport _ from \"lodash\";\nimport {\n\tTouchableOpacity,\n\tView,\n\tScrollView,\n\tTextInput,\n\tKeyboard,\n} 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\tsearchText: \"\",\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\tKeyboard.dismiss();\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\tonChangeSearch = (text) => {\n\t\tthis.setState({ searchText: text });\n\t};\n\n\tgetFilteredUsers = () => {\n\t\tconst { searchText } = this.state;\n\t\tconst { users } = this.props;\n\t\tif (!users) return [];\n\t\tif (!searchText || searchText.length === 0) return users;\n\t\tconst searchLower = searchText.toLowerCase();\n\t\treturn users.filter((user) => {\n\t\t\tconst displayName = (user.displayName || \"\").toLowerCase();\n\t\t\tconst unit = (user.unit || \"\").toLowerCase();\n\t\t\treturn displayName.includes(searchLower) || unit.includes(searchLower);\n\t\t});\n\t};\n\n\trenderMain() {\n\t\tif (_.isEmpty(this.props.users)) {\n\t\t\treturn (\n\t\t\t\t<View style={{ marginTop: 8 }}>\n\t\t\t\t\t<Components.Spinner />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\tconst filteredUsers = this.getFilteredUsers();\n\t\tif (filteredUsers.length === 0 && this.state.searchText.length > 0) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.noResultsContainer}>\n\t\t\t\t\t<Text style={styles.noResultsText}>No users found</Text>\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: 8 }}>\n\t\t\t\t{this.renderOptions(filteredUsers)}\n\t\t\t</Components.FormCard>\n\t\t);\n\t}\n\n\trenderOptions(users) {\n\t\treturn 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\trenderSearch() {\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Icon name=\"search\" type=\"font-awesome\" iconStyle={styles.searchIcon} />\n\t\t\t\t<TextInput\n\t\t\t\t\tplaceholder=\"Search by name or address\"\n\t\t\t\t\tautoCorrect={false}\n\t\t\t\t\tplaceholderTextColor={Colours.TEXT_MID_ALPHA50}\n\t\t\t\t\tonChangeText={this.onChangeSearch}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tstyle={styles.searchText}\n\t\t\t\t\tunderlineColorAndroid={Colours.COLOUR_TRANSPARENT}\n\t\t\t\t\treturnKeyType=\"search\"\n\t\t\t\t/>\n\t\t\t\t{this.state.searchText.length > 0 && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={() => this.onChangeSearch(\"\")}\n\t\t\t\t\t\tstyle={styles.clearButton}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname=\"times-circle\"\n\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\ticonStyle={styles.clearIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</View>\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{this.renderSearch()}\n\t\t\t\t<ScrollView\n\t\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\t\tkeyboardShouldPersistTaps=\"handled\"\n\t\t\t\t\tkeyboardDismissMode=\"on-drag\"\n\t\t\t\t>\n\t\t\t\t\t{this.renderMain()}\n\t\t\t\t</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\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\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tmarginHorizontal: 15,\n\t\tmarginTop: 10,\n\t\tmarginBottom: 0,\n\t\tbackgroundColor: \"#fff\",\n\t\tborderRadius: 8,\n\t\tpaddingHorizontal: 12,\n\t\tpaddingVertical: 8,\n\t},\n\tsearchIcon: {\n\t\tfontSize: 16,\n\t\tmarginRight: 10,\n\t\tcolor: Colours.TEXT_MID_ALPHA50,\n\t},\n\tsearchText: {\n\t\tflex: 1,\n\t\tfontSize: 16,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_DARK,\n\t\tpadding: 0,\n\t},\n\tclearButton: {\n\t\tpadding: 4,\n\t},\n\tclearIcon: {\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_MID_ALPHA50,\n\t},\n\tnoResultsContainer: {\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tpaddingVertical: 40,\n\t},\n\tnoResultsText: {\n\t\tfontSize: 16,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\ttextAlign: \"center\",\n\t},\n};\n\nexport default connect(null, {})(MaintenanceUserPicker);\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,8 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
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
4
  import React, { Component } from "react";
5
- import { ScrollView, View, StyleSheet, Text, KeyboardAvoidingView, TouchableOpacity, ImageBackground, Platform } from "react-native";
5
+ import { Text } from "@plusscommunities/pluss-core-app/components";
6
+ import { ScrollView, View, StyleSheet, KeyboardAvoidingView, TouchableOpacity, ImageBackground, Platform } from "react-native";
6
7
  import DateTimePicker from "react-native-modal-datetime-picker";
7
8
  import { Icon } from "@rneui/themed";
8
9
  import _ from "lodash";
@@ -21,24 +22,49 @@ class RequestDetail extends Component {
21
22
  super(props);
22
23
  _defineProperty(this, "getJob", async () => {
23
24
  this.setState({
24
- loading: true
25
+ loading: true,
26
+ loadError: false
25
27
  }, async () => {
28
+ // Timeout fallback: if API doesn't respond in 15s, show error
29
+ const timeoutId = setTimeout(() => {
30
+ if (this.state.loading) {
31
+ this.setState({
32
+ loading: false,
33
+ loadError: true
34
+ });
35
+ }
36
+ }, 15000);
26
37
  try {
27
38
  const res = await maintenanceActions.getJob(this.props.job.site, this.props.job.id);
28
39
  // console.log('getJob', JSON.stringify(res.data, null, 2));
29
- this.props.jobAdded(res.data);
30
- this.updateJobState(res.data);
31
- // Refresh external sync data when job is refreshed
32
- this.getExternalSync();
40
+ clearTimeout(timeoutId);
41
+ if (!this.state.loadError) {
42
+ this.props.jobAdded(res.data);
43
+ this.updateJobState(res.data);
44
+ // Refresh external sync data when job is refreshed
45
+ this.getExternalSync();
46
+ }
33
47
  } catch (error) {
48
+ var _error$response, _error$response2, _error$response3, _error$response4;
49
+ clearTimeout(timeoutId);
34
50
  console.log("getJob error", error.toString());
35
- // check for 403 or 404 error
36
- if (error.response.status === 403 || error.response.status === 404) {
51
+ // Log full error details for debugging
52
+ console.log("getJob error details:", {
53
+ message: error.message,
54
+ code: error.code,
55
+ responseStatus: (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status,
56
+ responseData: (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data
57
+ });
58
+ // check for 403 or 404 error (use optional chaining to prevent crash)
59
+ if (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) === 403 || ((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.status) === 404) {
37
60
  this.setState({
38
61
  forbidden: true
39
62
  });
63
+ } else {
64
+ this.setState({
65
+ loadError: true
66
+ });
40
67
  }
41
- console.log("getJob error", error);
42
68
  } finally {
43
69
  this.setState({
44
70
  loading: false
@@ -72,9 +98,9 @@ class RequestDetail extends Component {
72
98
  loadingExternalSync: false
73
99
  });
74
100
  } catch (error) {
75
- var _error$response;
101
+ var _error$response5;
76
102
  // 404 is expected if no sync - don't show error
77
- if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) !== 404) {
103
+ if (((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.status) !== 404) {
78
104
  console.log("getExternalSync error", error);
79
105
  }
80
106
  this.setState({
@@ -106,7 +132,6 @@ class RequestDetail extends Component {
106
132
  const res = await maintenanceActions.editJob(updated, user.site);
107
133
  // console.log('markSeen updated');
108
134
  this.props.jobAdded(res.data.job);
109
- this.getJob();
110
135
  this.setState({
111
136
  loading: false,
112
137
  seen: true
@@ -354,6 +379,7 @@ class RequestDetail extends Component {
354
379
  showStatusPopup: false,
355
380
  showPriorityPopup: false,
356
381
  loading: false,
382
+ loadError: false,
357
383
  showFullscreenVideo: false,
358
384
  currentVideoUrl: "",
359
385
  galleryOpen: false,
@@ -367,6 +393,7 @@ class RequestDetail extends Component {
367
393
  this.scrollView = /*#__PURE__*/React.createRef();
368
394
  this.commentReply = /*#__PURE__*/React.createRef();
369
395
  this.commentSection = /*#__PURE__*/React.createRef();
396
+ this.imagePopup = /*#__PURE__*/React.createRef();
370
397
  }
371
398
  componentDidMount() {
372
399
  this.props.jobStatusesUpdate(this.props.job.site);
@@ -400,7 +427,7 @@ class RequestDetail extends Component {
400
427
  galleryOpen: true,
401
428
  galleryImages
402
429
  });
403
- this.refs.imagePopup.scrollTo(index);
430
+ this.imagePopup.current.scrollTo(index);
404
431
  }
405
432
  closeGallery() {
406
433
  this.setState({
@@ -429,11 +456,13 @@ class RequestDetail extends Component {
429
456
  }, /*#__PURE__*/React.createElement(View, {
430
457
  style: styles.jobTitleContainer
431
458
  }, job.jobId ? /*#__PURE__*/React.createElement(Text, {
459
+ maxFontSizeMultiplier: 1.5,
432
460
  style: [styles.jobIdText, {
433
461
  color: this.props.colourBrandingMain
434
462
  }]
435
463
  }, `${values.textEntityName} #${job.jobId}`) : null, /*#__PURE__*/React.createElement(Text, {
436
- style: styles.jobTitleText
464
+ style: styles.jobTitleText,
465
+ maxFontSizeMultiplier: 1.4
437
466
  }, job.title), /*#__PURE__*/React.createElement(View, {
438
467
  style: styles.jobTypeSeenContainer
439
468
  }, /*#__PURE__*/React.createElement(View, {
@@ -460,7 +489,8 @@ class RequestDetail extends Component {
460
489
  }, "Seen"))), job.lastActivityUnix && /*#__PURE__*/React.createElement(View, {
461
490
  style: styles.textSectionInner
462
491
  }, /*#__PURE__*/React.createElement(Text, {
463
- style: styles.textSectionLabel
492
+ style: styles.textSectionLabel,
493
+ maxFontSizeMultiplier: 1.5
464
494
  }, "Last Updated On"), /*#__PURE__*/React.createElement(View, {
465
495
  style: styles.textSectionTextContainer
466
496
  }, /*#__PURE__*/React.createElement(Text, {
@@ -472,7 +502,8 @@ class RequestDetail extends Component {
472
502
  }, /*#__PURE__*/React.createElement(View, {
473
503
  style: styles.jobStatusOuterContainer
474
504
  }, /*#__PURE__*/React.createElement(Text, {
475
- style: styles.jobStatusHeading
505
+ style: styles.jobStatusHeading,
506
+ maxFontSizeMultiplier: 1.5
476
507
  }, "STATUS"), /*#__PURE__*/React.createElement(TouchableOpacity, {
477
508
  onPress: canEdit ? this.onOpenStatusPicker : null
478
509
  }, /*#__PURE__*/React.createElement(View, {
@@ -480,7 +511,8 @@ class RequestDetail extends Component {
480
511
  backgroundColor: statusOption.color
481
512
  }]
482
513
  }, /*#__PURE__*/React.createElement(Text, {
483
- style: styles.jobStatusText
514
+ style: styles.jobStatusText,
515
+ maxFontSizeMultiplier: 1.4
484
516
  }, statusOption === null || statusOption === void 0 ? void 0 : statusOption.text)))), this.hasPermission() && /*#__PURE__*/React.createElement(View, {
485
517
  style: styles.jobStatusOuterContainer
486
518
  }, /*#__PURE__*/React.createElement(Text, {
@@ -597,7 +629,7 @@ class RequestDetail extends Component {
597
629
  visible: this.state.galleryOpen,
598
630
  images: this.state.galleryImages,
599
631
  onClose: this.closeGallery.bind(this),
600
- ref: "imagePopup"
632
+ ref: this.imagePopup
601
633
  });
602
634
  }
603
635
  renderDocumentPopup() {
@@ -693,19 +725,23 @@ class RequestDetail extends Component {
693
725
  switch (field.type) {
694
726
  case "date":
695
727
  return /*#__PURE__*/React.createElement(Text, {
696
- style: styles.customText
728
+ style: styles.customText,
729
+ maxFontSizeMultiplier: 1.5
697
730
  }, field.answer ? moment(field.answer, "YYYY-MM-DD").format("DD MMM YYYY") : "");
698
731
  case "time":
699
732
  return /*#__PURE__*/React.createElement(Text, {
700
- style: styles.customText
733
+ style: styles.customText,
734
+ maxFontSizeMultiplier: 1.5
701
735
  }, field.answer ? moment(field.answer, "HH:mm").format("h:mm a") : "");
702
736
  case "yn":
703
737
  return /*#__PURE__*/React.createElement(Text, {
704
- style: styles.customText
738
+ style: styles.customText,
739
+ maxFontSizeMultiplier: 1.5
705
740
  }, field.answer ? "Yes" : "No");
706
741
  case "checkbox":
707
742
  return /*#__PURE__*/React.createElement(Text, {
708
- style: styles.customText
743
+ style: styles.customText,
744
+ maxFontSizeMultiplier: 1.5
709
745
  }, field.answer && Array.isArray(field.answer) ? field.answer.join(", ") : "");
710
746
  case "image":
711
747
  return /*#__PURE__*/React.createElement(View, {
@@ -717,7 +753,8 @@ class RequestDetail extends Component {
717
753
  }, this.renderDocument(field.answer));
718
754
  default:
719
755
  return /*#__PURE__*/React.createElement(Text, {
720
- style: styles.customText
756
+ style: styles.customText,
757
+ maxFontSizeMultiplier: 1.5
721
758
  }, field.answer);
722
759
  }
723
760
  };
@@ -727,7 +764,8 @@ class RequestDetail extends Component {
727
764
  return /*#__PURE__*/React.createElement(View, {
728
765
  key: index
729
766
  }, /*#__PURE__*/React.createElement(Text, {
730
- style: styles.customLabel
767
+ style: styles.customLabel,
768
+ maxFontSizeMultiplier: 1.5
731
769
  }, field.label), renderAnswer(field));
732
770
  });
733
771
  }
@@ -746,12 +784,14 @@ class RequestDetail extends Component {
746
784
  textStyle: styles.detailsText,
747
785
  sectionStyle: styles.detailsSection
748
786
  }), this.state.showMore && /*#__PURE__*/React.createElement(View, null, hasCustomFields ? this.renderCustomFields() : null, !hasCustomFields ? /*#__PURE__*/React.createElement(React.Fragment, null, this.renderImage(job.images, job.image), !_.isEmpty(job.description) && /*#__PURE__*/React.createElement(Text, {
749
- numberOfLines: 10,
750
- style: styles.jobDescriptionText
787
+ style: styles.jobDescriptionText,
788
+ maxFontSizeMultiplier: 1.5
751
789
  }, job.description)) : null, /*#__PURE__*/React.createElement(Text, {
752
- style: styles.locationLabel
790
+ style: styles.locationLabel,
791
+ maxFontSizeMultiplier: 1.5
753
792
  }, "Address"), /*#__PURE__*/React.createElement(Text, {
754
- style: styles.locationText
793
+ style: styles.locationText,
794
+ maxFontSizeMultiplier: 1.5
755
795
  }, job.room), !hasCustomFields && job.isHome ? /*#__PURE__*/React.createElement(View, {
756
796
  style: styles.detailsSection
757
797
  }, /*#__PURE__*/React.createElement(Text, {
@@ -842,6 +882,12 @@ class RequestDetail extends Component {
842
882
  if (this.state.forbidden) {
843
883
  return /*#__PURE__*/React.createElement(Components.Forbidden, null);
844
884
  }
885
+ if (this.state.loadError) {
886
+ return /*#__PURE__*/React.createElement(Components.Forbidden, {
887
+ title: "Something went wrong",
888
+ description: "Failed to load this request. Please check your connection and try again."
889
+ });
890
+ }
845
891
  return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
846
892
  behavior: "padding",
847
893
  style: styles.container
@@ -864,7 +910,8 @@ class RequestDetail extends Component {
864
910
  onConfirm: this.onDateSelected,
865
911
  onCancel: this.onCloseDatePicker,
866
912
  mode: this.state.popUpType,
867
- headerTextIOS: `Pick a ${this.state.popUpType}`
913
+ headerTextIOS: `Pick a ${this.state.popUpType}`,
914
+ date: new Date()
868
915
  }));
869
916
  }
870
917
  }