@plusscommunities/pluss-maintenance-app 2.2.1-beta.0 → 2.2.3-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.
@@ -90,11 +90,10 @@ class MaintenanceList extends Component {
90
90
  if (searchText) {
91
91
  filteredList = jobs.filter(j => j.jobId === searchText);
92
92
  if (filteredList.length === 0) _this.fetchJob(searchText);
93
- } else if (source !== 'search') {
93
+ } else {
94
94
  if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));
95
95
  if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));
96
-
97
- _this.refresh();
96
+ if (source !== 'search') _this.refresh();
98
97
  }
99
98
 
100
99
  _this.setState({
@@ -207,7 +206,14 @@ class MaintenanceList extends Component {
207
206
  }
208
207
 
209
208
  renderListHeader() {
210
- return /*#__PURE__*/React.createElement(View, null, this.props.ListHeaderComponent, this.renderFilterButton(), this.renderSearch());
209
+ const {
210
+ ListHeaderComponent
211
+ } = this.props;
212
+ return /*#__PURE__*/React.createElement(View, null, ListHeaderComponent ? ListHeaderComponent : /*#__PURE__*/React.createElement(View, {
213
+ style: {
214
+ height: 32
215
+ }
216
+ }), this.renderFilterButton(), this.renderSearch());
211
217
  }
212
218
 
213
219
  renderList() {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","_","connect","generalActions","jobsLoaded","jobAdded","jobsAdded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Config","Helper","MaintenanceList","constructor","props","onLoadingChanged","selectedStatus","selectedType","state","res","getJobs","site","data","error","console","log","getJobTypes","getSite","types","map","t","label","typeName","value","splice","setState","jobId","loading","job","getJobByJobId","source","searchText","jobs","filteredList","filter","j","length","fetchJob","includes","status","type","refresh","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","hasPermission","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","env","strings","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","renderEmptyList","marginHorizontal","renderFilterButton","styles","filterButton","filterButtonText","color","colourBrandingMain","renderSearch","searchContainer","onSearchText","onSearchSubmit","renderListHeader","ListHeaderComponent","renderList","flex","paddingBottom","item","id","itemStyle","renderFilterPopup","onSelectFilter","render","container","style","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","position","right","top","mapStateToProps","user","notifications","jobsOrdered","orderBy","permissions","category","getMainBrandingColourFromState","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { generalActions } from '../apis';\nimport { jobsLoaded, jobAdded, jobsAdded } from '../actions';\nimport MaintenanceListItem from '../components/MaintenanceListItem';\nimport FilterPopupMenu from './FilterPopupMenu';\nimport { Components, Colours, Config, Helper } from '../core.config';\n\nclass MaintenanceList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n types: [],\n filteredList: props.jobs,\n loading: false,\n searchText: '',\n showFilterPopup: false,\n selectedStatus: props.hasPermission ? 'Unassigned|In Progress' : '',\n selectedType: '',\n };\n }\n\n componentDidMount() {\n this.refresh();\n this.refreshTypes();\n\n this.resetDataSource();\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n if (!_.isEqual(prevProps.jobs, this.props.jobs)) this.resetDataSource();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const { selectedStatus, selectedType } = this.state;\n // console.log('filters', { selectedStatus, selectedType });\n const res = await generalActions.getJobs(this.props.site, selectedStatus, selectedType);\n // console.log('refresh', res?.data);\n if (selectedStatus || selectedType) {\n this.props.jobsAdded(res.data);\n } else {\n this.props.jobsLoaded(res.data);\n }\n } catch (error) {\n console.log('refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\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 fetchJob = jobId => {\n if (this.state.loading) return;\n\n this.onLoadingChanged(true, async () => {\n try {\n const job = await generalActions.getJobByJobId(this.props.site, jobId);\n // console.log('fetchJob', job?.data);\n this.props.jobAdded(job.data);\n } catch (error) {\n console.log('fetchJob error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return this.props.userCategory === 'staff' ? Config.env.strings.EMPTY_REQUESTS_STAFF : Config.env.strings.EMPTY_REQUESTS_USER;\n }\n\n resetDataSource = (source = '') => {\n const { searchText, selectedStatus, selectedType } = this.state;\n const { jobs } = this.props;\n\n let filteredList = jobs;\n if (searchText) {\n filteredList = jobs.filter(j => j.jobId === searchText);\n if (filteredList.length === 0) this.fetchJob(searchText);\n } else if (source !== 'search') {\n if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));\n if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));\n this.refresh();\n }\n\n this.setState({ filteredList });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onSearchText = value => {\n this.setState({ searchText: value }, () => {\n if (_.isEmpty(this.state.searchText)) this.resetDataSource('search');\n });\n };\n\n onSearchSubmit = () => {\n this.resetDataSource('search');\n };\n\n onToggleFilter = () => {\n this.setState({ showFilterPopup: !this.state.showFilterPopup });\n };\n\n onSelectFilter = selected => {\n this.setState({ selectedStatus: selected.status, selectedType: selected.type }, () => {\n this.resetDataSource();\n this.onToggleFilter();\n });\n };\n\n renderEmptyList() {\n return this.state.loading ? null : <Components.EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderFilterButton() {\n return (\n <TouchableOpacity onPress={this.onToggleFilter}>\n <View style={styles.filterButton}>\n <Text style={[styles.filterButtonText, { color: this.props.colourBrandingMain }]}>Filter</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSearch() {\n if (!this.props.hasPermission) return null;\n\n return (\n <View style={styles.searchContainer}>\n <Components.GenericInput\n placeholder=\"Search by Job ID\"\n value={this.state.searchText}\n onChangeText={this.onSearchText}\n onSubmitEditing={this.onSearchSubmit}\n squaredCorners\n hasClear\n keyboardType={'numeric'}\n returnKeyType={'done'}\n />\n </View>\n );\n }\n\n renderListHeader() {\n return (\n <View>\n {this.props.ListHeaderComponent}\n {this.renderFilterButton()}\n {this.renderSearch()}\n </View>\n );\n }\n\n renderList() {\n const { filteredList } = this.state;\n\n return (\n <FlatList\n keyboardShouldPersistTaps=\"always\"\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 16 }}\n data={filteredList}\n keyExtractor={item => item.id}\n renderItem={({ item }) => <MaintenanceListItem style={this.props.itemStyle} job={item} />}\n ListEmptyComponent={this.renderEmptyList()}\n ListHeaderComponent={this.renderListHeader()}\n />\n );\n }\n\n renderFilterPopup() {\n const { showFilterPopup, types, selectedStatus, selectedType } = this.state;\n if (!showFilterPopup) return null;\n\n return (\n <FilterPopupMenu site={this.props.site} types={types} status={selectedStatus} type={selectedType} onClose={this.onSelectFilter} />\n );\n }\n\n render() {\n return (\n <View style={[styles.container, this.props.style]}>\n {this.renderList()}\n {this.renderFilterPopup()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n filterContainerOuter: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n },\n filterTitle: {\n fontFamily: 'sf-bold',\n fontSize: 11,\n letterSpacing: 0.8,\n color: '#4d4d4d',\n },\n filterContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n filterText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n marginRight: 6,\n },\n filterIcon: {\n fontSize: 20,\n },\n searchContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 8,\n paddingHorizontal: 16,\n },\n filterButton: {\n position: 'absolute',\n right: 20,\n top: -32,\n },\n filterButtonText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, jobs, notifications } = state;\n const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);\n const hasPermission = _.includes(user.permissions, 'maintenanceTracking');\n\n return {\n hasPermission,\n jobs: jobsOrdered,\n site: user.site,\n userCategory: user.category,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated['jobs'],\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded, jobAdded, jobsAdded }, null, { forwardRef: true })(MaintenanceList);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","_","connect","generalActions","jobsLoaded","jobAdded","jobsAdded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Config","Helper","MaintenanceList","constructor","props","onLoadingChanged","selectedStatus","selectedType","state","res","getJobs","site","data","error","console","log","getJobTypes","getSite","types","map","t","label","typeName","value","splice","setState","jobId","loading","job","getJobByJobId","source","searchText","jobs","filteredList","filter","j","length","fetchJob","includes","status","type","refresh","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","hasPermission","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","env","strings","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","renderEmptyList","marginHorizontal","renderFilterButton","styles","filterButton","filterButtonText","color","colourBrandingMain","renderSearch","searchContainer","onSearchText","onSearchSubmit","renderListHeader","ListHeaderComponent","height","renderList","flex","paddingBottom","item","id","itemStyle","renderFilterPopup","onSelectFilter","render","container","style","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","position","right","top","mapStateToProps","user","notifications","jobsOrdered","orderBy","permissions","category","getMainBrandingColourFromState","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { generalActions } from '../apis';\nimport { jobsLoaded, jobAdded, jobsAdded } from '../actions';\nimport MaintenanceListItem from '../components/MaintenanceListItem';\nimport FilterPopupMenu from './FilterPopupMenu';\nimport { Components, Colours, Config, Helper } from '../core.config';\n\nclass MaintenanceList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n types: [],\n filteredList: props.jobs,\n loading: false,\n searchText: '',\n showFilterPopup: false,\n selectedStatus: props.hasPermission ? 'Unassigned|In Progress' : '',\n selectedType: '',\n };\n }\n\n componentDidMount() {\n this.refresh();\n this.refreshTypes();\n\n this.resetDataSource();\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n if (!_.isEqual(prevProps.jobs, this.props.jobs)) this.resetDataSource();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const { selectedStatus, selectedType } = this.state;\n // console.log('filters', { selectedStatus, selectedType });\n const res = await generalActions.getJobs(this.props.site, selectedStatus, selectedType);\n // console.log('refresh', res?.data);\n if (selectedStatus || selectedType) {\n this.props.jobsAdded(res.data);\n } else {\n this.props.jobsLoaded(res.data);\n }\n } catch (error) {\n console.log('refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\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 fetchJob = jobId => {\n if (this.state.loading) return;\n\n this.onLoadingChanged(true, async () => {\n try {\n const job = await generalActions.getJobByJobId(this.props.site, jobId);\n // console.log('fetchJob', job?.data);\n this.props.jobAdded(job.data);\n } catch (error) {\n console.log('fetchJob error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return this.props.userCategory === 'staff' ? Config.env.strings.EMPTY_REQUESTS_STAFF : Config.env.strings.EMPTY_REQUESTS_USER;\n }\n\n resetDataSource = (source = '') => {\n const { searchText, selectedStatus, selectedType } = this.state;\n const { jobs } = this.props;\n\n let filteredList = jobs;\n if (searchText) {\n filteredList = jobs.filter(j => j.jobId === searchText);\n if (filteredList.length === 0) this.fetchJob(searchText);\n } else {\n if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));\n if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));\n if (source !== 'search') this.refresh();\n }\n\n this.setState({ filteredList });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onSearchText = value => {\n this.setState({ searchText: value }, () => {\n if (_.isEmpty(this.state.searchText)) this.resetDataSource('search');\n });\n };\n\n onSearchSubmit = () => {\n this.resetDataSource('search');\n };\n\n onToggleFilter = () => {\n this.setState({ showFilterPopup: !this.state.showFilterPopup });\n };\n\n onSelectFilter = selected => {\n this.setState({ selectedStatus: selected.status, selectedType: selected.type }, () => {\n this.resetDataSource();\n this.onToggleFilter();\n });\n };\n\n renderEmptyList() {\n return this.state.loading ? null : <Components.EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderFilterButton() {\n return (\n <TouchableOpacity onPress={this.onToggleFilter}>\n <View style={styles.filterButton}>\n <Text style={[styles.filterButtonText, { color: this.props.colourBrandingMain }]}>Filter</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSearch() {\n if (!this.props.hasPermission) return null;\n\n return (\n <View style={styles.searchContainer}>\n <Components.GenericInput\n placeholder=\"Search by Job ID\"\n value={this.state.searchText}\n onChangeText={this.onSearchText}\n onSubmitEditing={this.onSearchSubmit}\n squaredCorners\n hasClear\n keyboardType={'numeric'}\n returnKeyType={'done'}\n />\n </View>\n );\n }\n\n renderListHeader() {\n const { ListHeaderComponent } = this.props;\n return (\n <View>\n {ListHeaderComponent ? ListHeaderComponent : <View style={{ height: 32 }} />}\n {this.renderFilterButton()}\n {this.renderSearch()}\n </View>\n );\n }\n\n renderList() {\n const { filteredList } = this.state;\n\n return (\n <FlatList\n keyboardShouldPersistTaps=\"always\"\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 16 }}\n data={filteredList}\n keyExtractor={item => item.id}\n renderItem={({ item }) => <MaintenanceListItem style={this.props.itemStyle} job={item} />}\n ListEmptyComponent={this.renderEmptyList()}\n ListHeaderComponent={this.renderListHeader()}\n />\n );\n }\n\n renderFilterPopup() {\n const { showFilterPopup, types, selectedStatus, selectedType } = this.state;\n if (!showFilterPopup) return null;\n\n return (\n <FilterPopupMenu site={this.props.site} types={types} status={selectedStatus} type={selectedType} onClose={this.onSelectFilter} />\n );\n }\n\n render() {\n return (\n <View style={[styles.container, this.props.style]}>\n {this.renderList()}\n {this.renderFilterPopup()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n filterContainerOuter: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n },\n filterTitle: {\n fontFamily: 'sf-bold',\n fontSize: 11,\n letterSpacing: 0.8,\n color: '#4d4d4d',\n },\n filterContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n filterText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n marginRight: 6,\n },\n filterIcon: {\n fontSize: 20,\n },\n searchContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 8,\n paddingHorizontal: 16,\n },\n filterButton: {\n position: 'absolute',\n right: 20,\n top: -32,\n },\n filterButtonText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, jobs, notifications } = state;\n const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);\n const hasPermission = _.includes(user.permissions, 'maintenanceTracking');\n\n return {\n hasPermission,\n jobs: jobsOrdered,\n site: user.site,\n userCategory: user.category,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated['jobs'],\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded, jobAdded, jobsAdded }, null, { forwardRef: true })(MaintenanceList);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-maintenance-app",
3
- "version": "2.2.1-beta.0",
3
+ "version": "2.2.3-beta.0",
4
4
  "description": "Extension package to enable maintenance on Pluss Communities Platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -96,10 +96,10 @@ class MaintenanceList extends Component {
96
96
  if (searchText) {
97
97
  filteredList = jobs.filter(j => j.jobId === searchText);
98
98
  if (filteredList.length === 0) this.fetchJob(searchText);
99
- } else if (source !== 'search') {
99
+ } else {
100
100
  if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));
101
101
  if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));
102
- this.refresh();
102
+ if (source !== 'search') this.refresh();
103
103
  }
104
104
 
105
105
  this.setState({ filteredList });
@@ -167,9 +167,10 @@ class MaintenanceList extends Component {
167
167
  }
168
168
 
169
169
  renderListHeader() {
170
+ const { ListHeaderComponent } = this.props;
170
171
  return (
171
172
  <View>
172
- {this.props.ListHeaderComponent}
173
+ {ListHeaderComponent ? ListHeaderComponent : <View style={{ height: 32 }} />}
173
174
  {this.renderFilterButton()}
174
175
  {this.renderSearch()}
175
176
  </View>