@plusscommunities/pluss-feature-builder-app-d 8.0.9 → 8.0.10
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/components/WidgetLarge.js +23 -23
- package/dist/module/components/WidgetLarge.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +21 -21
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/package.json +5 -6
- package/src/components/WidgetLarge.js +35 -28
- package/src/components/WidgetSmall.js +33 -26
|
@@ -1,25 +1,25 @@
|
|
|
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 { Text, View, StyleSheet } from
|
|
6
|
-
import { connect } from
|
|
7
|
-
import _ from
|
|
8
|
-
import { FontAwesome } from
|
|
9
|
-
import { Services } from
|
|
10
|
-
import { Components, Colours } from
|
|
11
|
-
import { values } from
|
|
12
|
-
import { selectListings, selectFeatureDefinition } from
|
|
13
|
-
import { SPACING } from
|
|
14
|
-
import { getMainBrandingColourFromState } from
|
|
15
|
-
import { getSummaryFieldValue } from
|
|
16
|
-
import { loadTargetFeature } from
|
|
4
|
+
import React, { Component } from "react";
|
|
5
|
+
import { Text, View, StyleSheet } from "react-native";
|
|
6
|
+
import { connect } from "react-redux";
|
|
7
|
+
import _ from "lodash";
|
|
8
|
+
import { FontAwesome } from "@expo/vector-icons";
|
|
9
|
+
import { Services } from "../feature.config";
|
|
10
|
+
import { Components, Colours } from "../core.config";
|
|
11
|
+
import { values } from "../values.config";
|
|
12
|
+
import { selectListings, selectFeatureDefinition } from "../utils/selectors";
|
|
13
|
+
import { SPACING } from "../js/spacing";
|
|
14
|
+
import { getMainBrandingColourFromState } from "../js";
|
|
15
|
+
import { getSummaryFieldValue } from "../js/helpers";
|
|
16
|
+
import { loadTargetFeature } from "../actions/featureBuilderActions";
|
|
17
17
|
|
|
18
18
|
// Layouts
|
|
19
|
-
import RoundImageList from
|
|
20
|
-
import CondensedList from
|
|
21
|
-
import SquareImageList from
|
|
22
|
-
import FeatureImageList from
|
|
19
|
+
import RoundImageList from "./layouts/RoundImageList";
|
|
20
|
+
import CondensedList from "./layouts/CondensedList";
|
|
21
|
+
import SquareImageList from "./layouts/SquareImageList";
|
|
22
|
+
import FeatureImageList from "./layouts/FeatureImageList";
|
|
23
23
|
class WidgetLarge extends Component {
|
|
24
24
|
constructor(props) {
|
|
25
25
|
super(props);
|
|
@@ -33,7 +33,7 @@ class WidgetLarge extends Component {
|
|
|
33
33
|
if (featureDefinition !== null && featureDefinition !== void 0 && featureDefinition.title || featureDefinition !== null && featureDefinition !== void 0 && featureDefinition.displayName) {
|
|
34
34
|
return featureDefinition.title || featureDefinition.displayName;
|
|
35
35
|
}
|
|
36
|
-
return values.featureName ||
|
|
36
|
+
return values.featureName || "Custom Features";
|
|
37
37
|
});
|
|
38
38
|
_defineProperty(this, "getEmptyStateText", () => {
|
|
39
39
|
const {
|
|
@@ -41,7 +41,7 @@ class WidgetLarge extends Component {
|
|
|
41
41
|
featureDefinition
|
|
42
42
|
} = this.props;
|
|
43
43
|
if (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;
|
|
44
|
-
const featureName = (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.title) || (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.displayName) || values.featureName ||
|
|
44
|
+
const featureName = (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.title) || (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.displayName) || values.featureName || "Feature";
|
|
45
45
|
return `No listings for ${featureName}`;
|
|
46
46
|
});
|
|
47
47
|
_defineProperty(this, "getLayoutComponent", layoutType => {
|
|
@@ -123,7 +123,7 @@ class WidgetLarge extends Component {
|
|
|
123
123
|
height: 120
|
|
124
124
|
}));
|
|
125
125
|
}
|
|
126
|
-
const layoutType = ((_featureDefinition$la = featureDefinition.layout) === null || _featureDefinition$la === void 0 ? void 0 : _featureDefinition$la.type) ||
|
|
126
|
+
const layoutType = ((_featureDefinition$la = featureDefinition.layout) === null || _featureDefinition$la === void 0 ? void 0 : _featureDefinition$la.type) || "condensed";
|
|
127
127
|
const LayoutComponent = this.getLayoutComponent(layoutType);
|
|
128
128
|
const title = this.getTitle();
|
|
129
129
|
return /*#__PURE__*/React.createElement(LayoutComponent, {
|
|
@@ -146,7 +146,7 @@ class WidgetLarge extends Component {
|
|
|
146
146
|
}
|
|
147
147
|
const styles = StyleSheet.create({
|
|
148
148
|
sectionContainer: {
|
|
149
|
-
backgroundColor:
|
|
149
|
+
backgroundColor: "#fff",
|
|
150
150
|
flex: 1
|
|
151
151
|
},
|
|
152
152
|
sectionPadding: {
|
|
@@ -161,9 +161,9 @@ const styles = StyleSheet.create({
|
|
|
161
161
|
paddingHorizontal: SPACING.MD
|
|
162
162
|
},
|
|
163
163
|
sectionTitle: {
|
|
164
|
-
fontFamily:
|
|
164
|
+
fontFamily: "sf-bold",
|
|
165
165
|
fontSize: 24,
|
|
166
|
-
color:
|
|
166
|
+
color: "#000"
|
|
167
167
|
}
|
|
168
168
|
});
|
|
169
169
|
const mapStateToProps = state => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","Text","View","StyleSheet","connect","_","FontAwesome","Services","Components","Colours","values","selectListings","selectFeatureDefinition","SPACING","getMainBrandingColourFromState","getSummaryFieldValue","loadTargetFeature","RoundImageList","CondensedList","SquareImageList","FeatureImageList","WidgetLarge","constructor","props","_defineProperty","options","featureDefinition","isEmpty","Title","title","displayName","featureName","EmptyText","layoutType","layoutTypes","round","square","feature","onLoadingChanged","dispatch","loading","callback","setState","state","item","navigation","navigate","screens","featureDetail","listing","featureTitle","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","_featureDefinition$la","listings","colourBrandingMain","createElement","style","styles","loadingPadding","LoadingStateWidget","height","emptyPadding","EmptyStateWidget","getTitle","layout","type","LayoutComponent","getLayoutComponent","onItemPress","render","sectionContainer","sectionPadding","sectionTitle","create","backgroundColor","flex","paddingHorizontal","MD","paddingBottom","XS","paddingTop","fontFamily","fontSize","color","mapStateToProps","_state$strings","user","notifications","site","notificationKey","strings","config","forwardRef"],"sources":["WidgetLarge.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Text, View, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { FontAwesome } from '@expo/vector-icons';\nimport { Services } from '../feature.config';\nimport { Components, Colours } from '../core.config';\nimport { values } from '../values.config';\nimport { selectListings, selectFeatureDefinition } from '../utils/selectors';\nimport { SPACING } from '../js/spacing';\nimport { getMainBrandingColourFromState } from '../js';\nimport { getSummaryFieldValue } from '../js/helpers';\nimport { loadTargetFeature } from '../actions/featureBuilderActions';\n\n// Layouts\nimport RoundImageList from './layouts/RoundImageList';\nimport CondensedList from './layouts/CondensedList';\nimport SquareImageList from './layouts/SquareImageList';\nimport FeatureImageList from './layouts/FeatureImageList';\n\nclass WidgetLarge extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { loading: false };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.refresh();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) {\n\t\t\tthis.refresh();\n\t\t}\n\t}\n\n\tgetTitle = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.Title)) return options.Title;\n\t\t// Use feature definition title\n\t\tif (featureDefinition?.title || featureDefinition?.displayName) {\n\t\t\treturn featureDefinition.title || featureDefinition.displayName;\n\t\t}\n\t\treturn values.featureName || 'Custom Features';\n\t};\n\n\tgetEmptyStateText = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n\n\t\tconst featureName = featureDefinition?.title || featureDefinition?.displayName || values.featureName || 'Feature';\n\t\treturn `No listings for ${featureName}`;\n\t};\n\n\tgetLayoutComponent = layoutType => {\n\t\tswitch (layoutType) {\n\t\t\tcase values.layoutTypes.round:\n\t\t\t\treturn RoundImageList;\n\t\t\tcase values.layoutTypes.square:\n\t\t\t\treturn SquareImageList;\n\t\t\tcase values.layoutTypes.feature:\n\t\t\t\treturn FeatureImageList;\n\t\t\tdefault:\n\t\t\t\treturn CondensedList;\n\t\t}\n\t};\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tawait this.props.dispatch(loadTargetFeature());\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonItemPress = item => {\n\t\tconst { featureDefinition } = this.props;\n\t\tif (featureDefinition) {\n\t\t\tServices.navigation.navigate(values.screens.featureDetail, {\n\t\t\t\tlisting: item,\n\t\t\t\tfeatureDefinition: featureDefinition,\n\t\t\t\tfeatureTitle: featureDefinition.title || featureDefinition.displayName,\n\t\t\t});\n\t\t}\n\t};\n\n\trenderContent() {\n\t\tconst { listings, featureDefinition, colourBrandingMain } = this.props;\n\n\t\t// Show loading state if no definition or loading\n\t\tif (!featureDefinition || this.state.loading) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.loadingPadding}>\n\t\t\t\t\t<Components.LoadingStateWidget height={300} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\t// Show empty state if no listings are available\n\t\tif (_.isEmpty(listings)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.emptyPadding}>\n\t\t\t\t\t<Components.EmptyStateWidget title={this.getTitle()} height={120} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\tconst layoutType = featureDefinition.layout?.type || 'condensed';\n\t\tconst LayoutComponent = this.getLayoutComponent(layoutType);\n\t\tconst title = this.getTitle();\n\n\t\treturn (\n\t\t\t<LayoutComponent\n\t\t\t\tlistings={listings}\n\t\t\t\tfeatureDefinition={featureDefinition}\n\t\t\t\tcolourBrandingMain={colourBrandingMain}\n\t\t\t\ttitle={title}\n\t\t\t\tonItemPress={this.onItemPress}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={styles.sectionContainer}>\n\t\t\t\t<View style={styles.sectionPadding}>\n\t\t\t\t\t<Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n\t\t\t\t</View>\n\t\t\t\t{this.renderContent()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tsectionContainer: {\n\t\tbackgroundColor: '#fff',\n\t\tflex: 1,\n\t},\n\tsectionPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingBottom: SPACING.XS + 2,\n\t\tpaddingTop: SPACING.MD,\n\t},\n\tloadingPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\temptyPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\tsectionTitle: {\n\t\tfontFamily: 'sf-bold',\n\t\tfontSize: 24,\n\t\tcolor: '#000',\n\t},\n});\n\nconst mapStateToProps = state => {\n\tconst { user, notifications } = state;\n\n\treturn {\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t\tlistings: selectListings(state),\n\t\tfeatureDefinition: selectFeatureDefinition(state),\n\t\tsite: user.site,\n\t\tdataUpdated: notifications.dataUpdated[values.notificationKey],\n\t\tstrings: state.strings?.config || {},\n\t};\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(WidgetLarge);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","Text","View","StyleSheet","connect","_","FontAwesome","Services","Components","Colours","values","selectListings","selectFeatureDefinition","SPACING","getMainBrandingColourFromState","getSummaryFieldValue","loadTargetFeature","RoundImageList","CondensedList","SquareImageList","FeatureImageList","WidgetLarge","constructor","props","_defineProperty","options","featureDefinition","isEmpty","Title","title","displayName","featureName","EmptyText","layoutType","layoutTypes","round","square","feature","onLoadingChanged","dispatch","loading","callback","setState","state","item","navigation","navigate","screens","featureDetail","listing","featureTitle","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","_featureDefinition$la","listings","colourBrandingMain","createElement","style","styles","loadingPadding","LoadingStateWidget","height","emptyPadding","EmptyStateWidget","getTitle","layout","type","LayoutComponent","getLayoutComponent","onItemPress","render","sectionContainer","sectionPadding","sectionTitle","create","backgroundColor","flex","paddingHorizontal","MD","paddingBottom","XS","paddingTop","fontFamily","fontSize","color","mapStateToProps","_state$strings","user","notifications","site","notificationKey","strings","config","forwardRef"],"sources":["WidgetLarge.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text, View, StyleSheet } from \"react-native\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport { FontAwesome } from \"@expo/vector-icons\";\nimport { Services } from \"../feature.config\";\nimport { Components, Colours } from \"../core.config\";\nimport { values } from \"../values.config\";\nimport { selectListings, selectFeatureDefinition } from \"../utils/selectors\";\nimport { SPACING } from \"../js/spacing\";\nimport { getMainBrandingColourFromState } from \"../js\";\nimport { getSummaryFieldValue } from \"../js/helpers\";\nimport { loadTargetFeature } from \"../actions/featureBuilderActions\";\n\n// Layouts\nimport RoundImageList from \"./layouts/RoundImageList\";\nimport CondensedList from \"./layouts/CondensedList\";\nimport SquareImageList from \"./layouts/SquareImageList\";\nimport FeatureImageList from \"./layouts/FeatureImageList\";\n\nclass WidgetLarge extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { loading: false };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.refresh();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) {\n\t\t\tthis.refresh();\n\t\t}\n\t}\n\n\tgetTitle = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.Title)) return options.Title;\n\t\t// Use feature definition title\n\t\tif (featureDefinition?.title || featureDefinition?.displayName) {\n\t\t\treturn featureDefinition.title || featureDefinition.displayName;\n\t\t}\n\t\treturn values.featureName || \"Custom Features\";\n\t};\n\n\tgetEmptyStateText = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n\n\t\tconst featureName =\n\t\t\tfeatureDefinition?.title ||\n\t\t\tfeatureDefinition?.displayName ||\n\t\t\tvalues.featureName ||\n\t\t\t\"Feature\";\n\t\treturn `No listings for ${featureName}`;\n\t};\n\n\tgetLayoutComponent = (layoutType) => {\n\t\tswitch (layoutType) {\n\t\t\tcase values.layoutTypes.round:\n\t\t\t\treturn RoundImageList;\n\t\t\tcase values.layoutTypes.square:\n\t\t\t\treturn SquareImageList;\n\t\t\tcase values.layoutTypes.feature:\n\t\t\t\treturn FeatureImageList;\n\t\t\tdefault:\n\t\t\t\treturn CondensedList;\n\t\t}\n\t};\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tawait this.props.dispatch(loadTargetFeature());\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonItemPress = (item) => {\n\t\tconst { featureDefinition } = this.props;\n\t\tif (featureDefinition) {\n\t\t\tServices.navigation.navigate(values.screens.featureDetail, {\n\t\t\t\tlisting: item,\n\t\t\t\tfeatureDefinition: featureDefinition,\n\t\t\t\tfeatureTitle: featureDefinition.title || featureDefinition.displayName,\n\t\t\t});\n\t\t}\n\t};\n\n\trenderContent() {\n\t\tconst { listings, featureDefinition, colourBrandingMain } = this.props;\n\n\t\t// Show loading state if no definition or loading\n\t\tif (!featureDefinition || this.state.loading) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.loadingPadding}>\n\t\t\t\t\t<Components.LoadingStateWidget height={300} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\t// Show empty state if no listings are available\n\t\tif (_.isEmpty(listings)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.emptyPadding}>\n\t\t\t\t\t<Components.EmptyStateWidget title={this.getTitle()} height={120} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\tconst layoutType = featureDefinition.layout?.type || \"condensed\";\n\t\tconst LayoutComponent = this.getLayoutComponent(layoutType);\n\t\tconst title = this.getTitle();\n\n\t\treturn (\n\t\t\t<LayoutComponent\n\t\t\t\tlistings={listings}\n\t\t\t\tfeatureDefinition={featureDefinition}\n\t\t\t\tcolourBrandingMain={colourBrandingMain}\n\t\t\t\ttitle={title}\n\t\t\t\tonItemPress={this.onItemPress}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={styles.sectionContainer}>\n\t\t\t\t<View style={styles.sectionPadding}>\n\t\t\t\t\t<Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n\t\t\t\t</View>\n\t\t\t\t{this.renderContent()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tsectionContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tflex: 1,\n\t},\n\tsectionPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingBottom: SPACING.XS + 2,\n\t\tpaddingTop: SPACING.MD,\n\t},\n\tloadingPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\temptyPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\tsectionTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 24,\n\t\tcolor: \"#000\",\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\n\treturn {\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t\tlistings: selectListings(state),\n\t\tfeatureDefinition: selectFeatureDefinition(state),\n\t\tsite: user.site,\n\t\tdataUpdated: notifications.dataUpdated[values.notificationKey],\n\t\tstrings: state.strings?.config || {},\n\t};\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n\tWidgetLarge,\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,23 +1,23 @@
|
|
|
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 { Text, View, StyleSheet } from
|
|
6
|
-
import { connect } from
|
|
7
|
-
import _ from
|
|
8
|
-
import { Services } from
|
|
9
|
-
import { Components, Colours } from
|
|
10
|
-
import { values } from
|
|
11
|
-
import { selectListings, selectFeatureDefinition } from
|
|
12
|
-
import { SPACING } from
|
|
13
|
-
import { getMainBrandingColourFromState } from
|
|
14
|
-
import { loadTargetFeature } from
|
|
4
|
+
import React, { Component } from "react";
|
|
5
|
+
import { Text, View, StyleSheet } from "react-native";
|
|
6
|
+
import { connect } from "react-redux";
|
|
7
|
+
import _ from "lodash";
|
|
8
|
+
import { Services } from "../feature.config";
|
|
9
|
+
import { Components, Colours } from "../core.config";
|
|
10
|
+
import { values } from "../values.config";
|
|
11
|
+
import { selectListings, selectFeatureDefinition } from "../utils/selectors";
|
|
12
|
+
import { SPACING } from "../js/spacing";
|
|
13
|
+
import { getMainBrandingColourFromState } from "../js";
|
|
14
|
+
import { loadTargetFeature } from "../actions/featureBuilderActions";
|
|
15
15
|
|
|
16
16
|
// Layouts
|
|
17
|
-
import RoundImageList from
|
|
18
|
-
import CondensedList from
|
|
19
|
-
import SquareImageList from
|
|
20
|
-
import FeatureImageList from
|
|
17
|
+
import RoundImageList from "./layouts/RoundImageList";
|
|
18
|
+
import CondensedList from "./layouts/CondensedList";
|
|
19
|
+
import SquareImageList from "./layouts/SquareImageList";
|
|
20
|
+
import FeatureImageList from "./layouts/FeatureImageList";
|
|
21
21
|
class WidgetSmall extends Component {
|
|
22
22
|
constructor(props) {
|
|
23
23
|
super(props);
|
|
@@ -31,7 +31,7 @@ class WidgetSmall extends Component {
|
|
|
31
31
|
if (featureDefinition !== null && featureDefinition !== void 0 && featureDefinition.title || featureDefinition !== null && featureDefinition !== void 0 && featureDefinition.displayName) {
|
|
32
32
|
return featureDefinition.title || featureDefinition.displayName;
|
|
33
33
|
}
|
|
34
|
-
return values.featureName ||
|
|
34
|
+
return values.featureName || "Features";
|
|
35
35
|
});
|
|
36
36
|
_defineProperty(this, "getEmptyStateText", () => {
|
|
37
37
|
const {
|
|
@@ -39,7 +39,7 @@ class WidgetSmall extends Component {
|
|
|
39
39
|
featureDefinition
|
|
40
40
|
} = this.props;
|
|
41
41
|
if (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;
|
|
42
|
-
const featureName = (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.title) || (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.displayName) || values.featureName ||
|
|
42
|
+
const featureName = (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.title) || (featureDefinition === null || featureDefinition === void 0 ? void 0 : featureDefinition.displayName) || values.featureName || "Feature";
|
|
43
43
|
return `No listings for ${featureName}`;
|
|
44
44
|
});
|
|
45
45
|
_defineProperty(this, "getLayoutComponent", layoutType => {
|
|
@@ -121,7 +121,7 @@ class WidgetSmall extends Component {
|
|
|
121
121
|
height: 120
|
|
122
122
|
}));
|
|
123
123
|
}
|
|
124
|
-
const layoutType = ((_featureDefinition$la = featureDefinition.layout) === null || _featureDefinition$la === void 0 ? void 0 : _featureDefinition$la.type) ||
|
|
124
|
+
const layoutType = ((_featureDefinition$la = featureDefinition.layout) === null || _featureDefinition$la === void 0 ? void 0 : _featureDefinition$la.type) || "condensed";
|
|
125
125
|
const LayoutComponent = this.getLayoutComponent(layoutType);
|
|
126
126
|
const title = this.getTitle();
|
|
127
127
|
return /*#__PURE__*/React.createElement(LayoutComponent, {
|
|
@@ -144,7 +144,7 @@ class WidgetSmall extends Component {
|
|
|
144
144
|
}
|
|
145
145
|
const styles = StyleSheet.create({
|
|
146
146
|
sectionContainer: {
|
|
147
|
-
backgroundColor:
|
|
147
|
+
backgroundColor: "#fff",
|
|
148
148
|
paddingTop: SPACING.MD
|
|
149
149
|
},
|
|
150
150
|
sectionPadding: {
|
|
@@ -158,9 +158,9 @@ const styles = StyleSheet.create({
|
|
|
158
158
|
paddingHorizontal: SPACING.MD
|
|
159
159
|
},
|
|
160
160
|
sectionTitle: {
|
|
161
|
-
fontFamily:
|
|
161
|
+
fontFamily: "sf-bold",
|
|
162
162
|
fontSize: 24,
|
|
163
|
-
color:
|
|
163
|
+
color: "#000"
|
|
164
164
|
}
|
|
165
165
|
});
|
|
166
166
|
const mapStateToProps = state => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","Text","View","StyleSheet","connect","_","Services","Components","Colours","values","selectListings","selectFeatureDefinition","SPACING","getMainBrandingColourFromState","loadTargetFeature","RoundImageList","CondensedList","SquareImageList","FeatureImageList","WidgetSmall","constructor","props","_defineProperty","options","featureDefinition","isEmpty","Title","title","displayName","featureName","EmptyText","layoutType","layoutTypes","round","square","feature","onLoadingChanged","dispatch","loading","callback","setState","state","item","navigation","navigate","screens","featureDetail","listing","featureTitle","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","_featureDefinition$la","listings","colourBrandingMain","createElement","style","styles","loadingPadding","LoadingStateWidget","height","emptyPadding","EmptyStateWidget","getTitle","layout","type","LayoutComponent","getLayoutComponent","onItemPress","render","sectionContainer","sectionPadding","sectionTitle","create","backgroundColor","paddingTop","MD","paddingHorizontal","paddingBottom","XS","fontFamily","fontSize","color","mapStateToProps","_state$strings","user","notifications","site","notificationKey","strings","config","forwardRef"],"sources":["WidgetSmall.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Text, View, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { Services } from '../feature.config';\nimport { Components, Colours } from '../core.config';\nimport { values } from '../values.config';\nimport { selectListings, selectFeatureDefinition } from '../utils/selectors';\nimport { SPACING } from '../js/spacing';\nimport { getMainBrandingColourFromState } from '../js';\nimport { loadTargetFeature } from '../actions/featureBuilderActions';\n\n// Layouts\nimport RoundImageList from './layouts/RoundImageList';\nimport CondensedList from './layouts/CondensedList';\nimport SquareImageList from './layouts/SquareImageList';\nimport FeatureImageList from './layouts/FeatureImageList';\n\nclass WidgetSmall extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { loading: false };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.refresh();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) {\n\t\t\tthis.refresh();\n\t\t}\n\t}\n\n\tgetTitle = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.Title)) return options.Title;\n\t\t// Use feature definition title\n\t\tif (featureDefinition?.title || featureDefinition?.displayName) {\n\t\t\treturn featureDefinition.title || featureDefinition.displayName;\n\t\t}\n\t\treturn values.featureName || 'Features';\n\t};\n\n\tgetEmptyStateText = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n\n\t\tconst featureName = featureDefinition?.title || featureDefinition?.displayName || values.featureName || 'Feature';\n\t\treturn `No listings for ${featureName}`;\n\t};\n\n\tgetLayoutComponent = layoutType => {\n\t\tswitch (layoutType) {\n\t\t\tcase values.layoutTypes.round:\n\t\t\t\treturn RoundImageList;\n\t\t\tcase values.layoutTypes.square:\n\t\t\t\treturn SquareImageList;\n\t\t\tcase values.layoutTypes.feature:\n\t\t\t\treturn FeatureImageList;\n\t\t\tdefault:\n\t\t\t\treturn CondensedList;\n\t\t}\n\t};\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tawait this.props.dispatch(loadTargetFeature());\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonItemPress = item => {\n\t\tconst { featureDefinition } = this.props;\n\t\tif (featureDefinition) {\n\t\t\tServices.navigation.navigate(values.screens.featureDetail, {\n\t\t\t\tlisting: item,\n\t\t\t\tfeatureDefinition: featureDefinition,\n\t\t\t\tfeatureTitle: featureDefinition.title || featureDefinition.displayName,\n\t\t\t});\n\t\t}\n\t};\n\n\trenderContent() {\n\t\tconst { listings, featureDefinition, colourBrandingMain } = this.props;\n\n\t\t// Show loading state if no definition or loading\n\t\tif (!featureDefinition || this.state.loading) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.loadingPadding}>\n\t\t\t\t\t<Components.LoadingStateWidget height={180} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\t// Show empty state if no listings are available\n\t\tif (_.isEmpty(listings)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.emptyPadding}>\n\t\t\t\t\t<Components.EmptyStateWidget title={this.getTitle()} height={120} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\tconst layoutType = featureDefinition.layout?.type || 'condensed';\n\t\tconst LayoutComponent = this.getLayoutComponent(layoutType);\n\t\tconst title = this.getTitle();\n\n\t\treturn (\n\t\t\t<LayoutComponent\n\t\t\t\tlistings={listings}\n\t\t\t\tfeatureDefinition={featureDefinition}\n\t\t\t\tcolourBrandingMain={colourBrandingMain}\n\t\t\t\ttitle={title}\n\t\t\t\tonItemPress={this.onItemPress}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={styles.sectionContainer}>\n\t\t\t\t<View style={styles.sectionPadding}>\n\t\t\t\t\t<Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n\t\t\t\t</View>\n\t\t\t\t{this.renderContent()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tsectionContainer: {\n\t\tbackgroundColor: '#fff',\n\t\tpaddingTop: SPACING.MD,\n\t},\n\tsectionPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingBottom: SPACING.XS + 2,\n\t},\n\tloadingPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\temptyPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\tsectionTitle: {\n\t\tfontFamily: 'sf-bold',\n\t\tfontSize: 24,\n\t\tcolor: '#000',\n\t},\n});\n\nconst mapStateToProps = state => {\n\tconst { user, notifications } = state;\n\tconst listings = selectListings(state);\n\tconst featureDefinition = selectFeatureDefinition(state);\n\n\treturn {\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t\tlistings: listings,\n\t\tfeatureDefinition: featureDefinition,\n\t\tsite: user.site,\n\t\tdataUpdated: notifications.dataUpdated[values.notificationKey],\n\t\tstrings: state.strings?.config || {},\n\t};\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(WidgetSmall);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","Text","View","StyleSheet","connect","_","Services","Components","Colours","values","selectListings","selectFeatureDefinition","SPACING","getMainBrandingColourFromState","loadTargetFeature","RoundImageList","CondensedList","SquareImageList","FeatureImageList","WidgetSmall","constructor","props","_defineProperty","options","featureDefinition","isEmpty","Title","title","displayName","featureName","EmptyText","layoutType","layoutTypes","round","square","feature","onLoadingChanged","dispatch","loading","callback","setState","state","item","navigation","navigate","screens","featureDetail","listing","featureTitle","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","_featureDefinition$la","listings","colourBrandingMain","createElement","style","styles","loadingPadding","LoadingStateWidget","height","emptyPadding","EmptyStateWidget","getTitle","layout","type","LayoutComponent","getLayoutComponent","onItemPress","render","sectionContainer","sectionPadding","sectionTitle","create","backgroundColor","paddingTop","MD","paddingHorizontal","paddingBottom","XS","fontFamily","fontSize","color","mapStateToProps","_state$strings","user","notifications","site","notificationKey","strings","config","forwardRef"],"sources":["WidgetSmall.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text, View, StyleSheet } from \"react-native\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport { Services } from \"../feature.config\";\nimport { Components, Colours } from \"../core.config\";\nimport { values } from \"../values.config\";\nimport { selectListings, selectFeatureDefinition } from \"../utils/selectors\";\nimport { SPACING } from \"../js/spacing\";\nimport { getMainBrandingColourFromState } from \"../js\";\nimport { loadTargetFeature } from \"../actions/featureBuilderActions\";\n\n// Layouts\nimport RoundImageList from \"./layouts/RoundImageList\";\nimport CondensedList from \"./layouts/CondensedList\";\nimport SquareImageList from \"./layouts/SquareImageList\";\nimport FeatureImageList from \"./layouts/FeatureImageList\";\n\nclass WidgetSmall extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { loading: false };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.refresh();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) {\n\t\t\tthis.refresh();\n\t\t}\n\t}\n\n\tgetTitle = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.Title)) return options.Title;\n\t\t// Use feature definition title\n\t\tif (featureDefinition?.title || featureDefinition?.displayName) {\n\t\t\treturn featureDefinition.title || featureDefinition.displayName;\n\t\t}\n\t\treturn values.featureName || \"Features\";\n\t};\n\n\tgetEmptyStateText = () => {\n\t\tconst { options, featureDefinition } = this.props;\n\t\tif (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n\n\t\tconst featureName =\n\t\t\tfeatureDefinition?.title ||\n\t\t\tfeatureDefinition?.displayName ||\n\t\t\tvalues.featureName ||\n\t\t\t\"Feature\";\n\t\treturn `No listings for ${featureName}`;\n\t};\n\n\tgetLayoutComponent = (layoutType) => {\n\t\tswitch (layoutType) {\n\t\t\tcase values.layoutTypes.round:\n\t\t\t\treturn RoundImageList;\n\t\t\tcase values.layoutTypes.square:\n\t\t\t\treturn SquareImageList;\n\t\t\tcase values.layoutTypes.feature:\n\t\t\t\treturn FeatureImageList;\n\t\t\tdefault:\n\t\t\t\treturn CondensedList;\n\t\t}\n\t};\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tawait this.props.dispatch(loadTargetFeature());\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonItemPress = (item) => {\n\t\tconst { featureDefinition } = this.props;\n\t\tif (featureDefinition) {\n\t\t\tServices.navigation.navigate(values.screens.featureDetail, {\n\t\t\t\tlisting: item,\n\t\t\t\tfeatureDefinition: featureDefinition,\n\t\t\t\tfeatureTitle: featureDefinition.title || featureDefinition.displayName,\n\t\t\t});\n\t\t}\n\t};\n\n\trenderContent() {\n\t\tconst { listings, featureDefinition, colourBrandingMain } = this.props;\n\n\t\t// Show loading state if no definition or loading\n\t\tif (!featureDefinition || this.state.loading) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.loadingPadding}>\n\t\t\t\t\t<Components.LoadingStateWidget height={180} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\t// Show empty state if no listings are available\n\t\tif (_.isEmpty(listings)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.emptyPadding}>\n\t\t\t\t\t<Components.EmptyStateWidget title={this.getTitle()} height={120} />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\tconst layoutType = featureDefinition.layout?.type || \"condensed\";\n\t\tconst LayoutComponent = this.getLayoutComponent(layoutType);\n\t\tconst title = this.getTitle();\n\n\t\treturn (\n\t\t\t<LayoutComponent\n\t\t\t\tlistings={listings}\n\t\t\t\tfeatureDefinition={featureDefinition}\n\t\t\t\tcolourBrandingMain={colourBrandingMain}\n\t\t\t\ttitle={title}\n\t\t\t\tonItemPress={this.onItemPress}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={styles.sectionContainer}>\n\t\t\t\t<View style={styles.sectionPadding}>\n\t\t\t\t\t<Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n\t\t\t\t</View>\n\t\t\t\t{this.renderContent()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tsectionContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tpaddingTop: SPACING.MD,\n\t},\n\tsectionPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingBottom: SPACING.XS + 2,\n\t},\n\tloadingPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\temptyPadding: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t},\n\tsectionTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 24,\n\t\tcolor: \"#000\",\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\tconst listings = selectListings(state);\n\tconst featureDefinition = selectFeatureDefinition(state);\n\n\treturn {\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t\tlistings: listings,\n\t\tfeatureDefinition: featureDefinition,\n\t\tsite: user.site,\n\t\tdataUpdated: notifications.dataUpdated[values.notificationKey],\n\t\tstrings: state.strings?.config || {},\n\t};\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n\tWidgetSmall,\n);\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-feature-builder-app-d",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.10",
|
|
4
4
|
"description": "Feature Builder mobile extension for displaying custom features",
|
|
5
5
|
"main": "dist/module/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -25,13 +25,12 @@
|
|
|
25
25
|
},
|
|
26
26
|
"author": "Thorbjorn Kappel Davis",
|
|
27
27
|
"license": "ISC",
|
|
28
|
-
"dependencies": {
|
|
29
|
-
"axios": "^1.6.8",
|
|
30
|
-
"lodash": "^4.17.4",
|
|
31
|
-
"moment": "^2.30.1"
|
|
32
|
-
},
|
|
28
|
+
"dependencies": {},
|
|
33
29
|
"peerDependencies": {
|
|
34
30
|
"@plusscommunities/pluss-core-app": "*",
|
|
31
|
+
"axios": "*",
|
|
32
|
+
"lodash": "*",
|
|
33
|
+
"moment": "*",
|
|
35
34
|
"expo-constants": "*",
|
|
36
35
|
"expo-linear-gradient": "*",
|
|
37
36
|
"react": "*",
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import React, { Component } from
|
|
2
|
-
import { Text, View, StyleSheet } from
|
|
3
|
-
import { connect } from
|
|
4
|
-
import _ from
|
|
5
|
-
import { FontAwesome } from
|
|
6
|
-
import { Services } from
|
|
7
|
-
import { Components, Colours } from
|
|
8
|
-
import { values } from
|
|
9
|
-
import { selectListings, selectFeatureDefinition } from
|
|
10
|
-
import { SPACING } from
|
|
11
|
-
import { getMainBrandingColourFromState } from
|
|
12
|
-
import { getSummaryFieldValue } from
|
|
13
|
-
import { loadTargetFeature } from
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import { Text, View, StyleSheet } from "react-native";
|
|
3
|
+
import { connect } from "react-redux";
|
|
4
|
+
import _ from "lodash";
|
|
5
|
+
import { FontAwesome } from "@expo/vector-icons";
|
|
6
|
+
import { Services } from "../feature.config";
|
|
7
|
+
import { Components, Colours } from "../core.config";
|
|
8
|
+
import { values } from "../values.config";
|
|
9
|
+
import { selectListings, selectFeatureDefinition } from "../utils/selectors";
|
|
10
|
+
import { SPACING } from "../js/spacing";
|
|
11
|
+
import { getMainBrandingColourFromState } from "../js";
|
|
12
|
+
import { getSummaryFieldValue } from "../js/helpers";
|
|
13
|
+
import { loadTargetFeature } from "../actions/featureBuilderActions";
|
|
14
14
|
|
|
15
15
|
// Layouts
|
|
16
|
-
import RoundImageList from
|
|
17
|
-
import CondensedList from
|
|
18
|
-
import SquareImageList from
|
|
19
|
-
import FeatureImageList from
|
|
16
|
+
import RoundImageList from "./layouts/RoundImageList";
|
|
17
|
+
import CondensedList from "./layouts/CondensedList";
|
|
18
|
+
import SquareImageList from "./layouts/SquareImageList";
|
|
19
|
+
import FeatureImageList from "./layouts/FeatureImageList";
|
|
20
20
|
|
|
21
21
|
class WidgetLarge extends Component {
|
|
22
22
|
constructor(props) {
|
|
@@ -41,18 +41,22 @@ class WidgetLarge extends Component {
|
|
|
41
41
|
if (featureDefinition?.title || featureDefinition?.displayName) {
|
|
42
42
|
return featureDefinition.title || featureDefinition.displayName;
|
|
43
43
|
}
|
|
44
|
-
return values.featureName ||
|
|
44
|
+
return values.featureName || "Custom Features";
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
getEmptyStateText = () => {
|
|
48
48
|
const { options, featureDefinition } = this.props;
|
|
49
49
|
if (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;
|
|
50
50
|
|
|
51
|
-
const featureName =
|
|
51
|
+
const featureName =
|
|
52
|
+
featureDefinition?.title ||
|
|
53
|
+
featureDefinition?.displayName ||
|
|
54
|
+
values.featureName ||
|
|
55
|
+
"Feature";
|
|
52
56
|
return `No listings for ${featureName}`;
|
|
53
57
|
};
|
|
54
58
|
|
|
55
|
-
getLayoutComponent = layoutType => {
|
|
59
|
+
getLayoutComponent = (layoutType) => {
|
|
56
60
|
switch (layoutType) {
|
|
57
61
|
case values.layoutTypes.round:
|
|
58
62
|
return RoundImageList;
|
|
@@ -77,12 +81,13 @@ class WidgetLarge extends Component {
|
|
|
77
81
|
|
|
78
82
|
onLoadingChanged = (loading, callback) => {
|
|
79
83
|
this.setState({ loading }, () => {
|
|
80
|
-
if (this.props.onLoadingChanged)
|
|
84
|
+
if (this.props.onLoadingChanged)
|
|
85
|
+
this.props.onLoadingChanged(this.state.loading);
|
|
81
86
|
if (callback) callback();
|
|
82
87
|
});
|
|
83
88
|
};
|
|
84
89
|
|
|
85
|
-
onItemPress = item => {
|
|
90
|
+
onItemPress = (item) => {
|
|
86
91
|
const { featureDefinition } = this.props;
|
|
87
92
|
if (featureDefinition) {
|
|
88
93
|
Services.navigation.navigate(values.screens.featureDetail, {
|
|
@@ -114,7 +119,7 @@ class WidgetLarge extends Component {
|
|
|
114
119
|
);
|
|
115
120
|
}
|
|
116
121
|
|
|
117
|
-
const layoutType = featureDefinition.layout?.type ||
|
|
122
|
+
const layoutType = featureDefinition.layout?.type || "condensed";
|
|
118
123
|
const LayoutComponent = this.getLayoutComponent(layoutType);
|
|
119
124
|
const title = this.getTitle();
|
|
120
125
|
|
|
@@ -143,7 +148,7 @@ class WidgetLarge extends Component {
|
|
|
143
148
|
|
|
144
149
|
const styles = StyleSheet.create({
|
|
145
150
|
sectionContainer: {
|
|
146
|
-
backgroundColor:
|
|
151
|
+
backgroundColor: "#fff",
|
|
147
152
|
flex: 1,
|
|
148
153
|
},
|
|
149
154
|
sectionPadding: {
|
|
@@ -158,13 +163,13 @@ const styles = StyleSheet.create({
|
|
|
158
163
|
paddingHorizontal: SPACING.MD,
|
|
159
164
|
},
|
|
160
165
|
sectionTitle: {
|
|
161
|
-
fontFamily:
|
|
166
|
+
fontFamily: "sf-bold",
|
|
162
167
|
fontSize: 24,
|
|
163
|
-
color:
|
|
168
|
+
color: "#000",
|
|
164
169
|
},
|
|
165
170
|
});
|
|
166
171
|
|
|
167
|
-
const mapStateToProps = state => {
|
|
172
|
+
const mapStateToProps = (state) => {
|
|
168
173
|
const { user, notifications } = state;
|
|
169
174
|
|
|
170
175
|
return {
|
|
@@ -177,4 +182,6 @@ const mapStateToProps = state => {
|
|
|
177
182
|
};
|
|
178
183
|
};
|
|
179
184
|
|
|
180
|
-
export default connect(mapStateToProps, null, null, { forwardRef: true })(
|
|
185
|
+
export default connect(mapStateToProps, null, null, { forwardRef: true })(
|
|
186
|
+
WidgetLarge,
|
|
187
|
+
);
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import React, { Component } from
|
|
2
|
-
import { Text, View, StyleSheet } from
|
|
3
|
-
import { connect } from
|
|
4
|
-
import _ from
|
|
5
|
-
import { Services } from
|
|
6
|
-
import { Components, Colours } from
|
|
7
|
-
import { values } from
|
|
8
|
-
import { selectListings, selectFeatureDefinition } from
|
|
9
|
-
import { SPACING } from
|
|
10
|
-
import { getMainBrandingColourFromState } from
|
|
11
|
-
import { loadTargetFeature } from
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import { Text, View, StyleSheet } from "react-native";
|
|
3
|
+
import { connect } from "react-redux";
|
|
4
|
+
import _ from "lodash";
|
|
5
|
+
import { Services } from "../feature.config";
|
|
6
|
+
import { Components, Colours } from "../core.config";
|
|
7
|
+
import { values } from "../values.config";
|
|
8
|
+
import { selectListings, selectFeatureDefinition } from "../utils/selectors";
|
|
9
|
+
import { SPACING } from "../js/spacing";
|
|
10
|
+
import { getMainBrandingColourFromState } from "../js";
|
|
11
|
+
import { loadTargetFeature } from "../actions/featureBuilderActions";
|
|
12
12
|
|
|
13
13
|
// Layouts
|
|
14
|
-
import RoundImageList from
|
|
15
|
-
import CondensedList from
|
|
16
|
-
import SquareImageList from
|
|
17
|
-
import FeatureImageList from
|
|
14
|
+
import RoundImageList from "./layouts/RoundImageList";
|
|
15
|
+
import CondensedList from "./layouts/CondensedList";
|
|
16
|
+
import SquareImageList from "./layouts/SquareImageList";
|
|
17
|
+
import FeatureImageList from "./layouts/FeatureImageList";
|
|
18
18
|
|
|
19
19
|
class WidgetSmall extends Component {
|
|
20
20
|
constructor(props) {
|
|
@@ -39,18 +39,22 @@ class WidgetSmall extends Component {
|
|
|
39
39
|
if (featureDefinition?.title || featureDefinition?.displayName) {
|
|
40
40
|
return featureDefinition.title || featureDefinition.displayName;
|
|
41
41
|
}
|
|
42
|
-
return values.featureName ||
|
|
42
|
+
return values.featureName || "Features";
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
getEmptyStateText = () => {
|
|
46
46
|
const { options, featureDefinition } = this.props;
|
|
47
47
|
if (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;
|
|
48
48
|
|
|
49
|
-
const featureName =
|
|
49
|
+
const featureName =
|
|
50
|
+
featureDefinition?.title ||
|
|
51
|
+
featureDefinition?.displayName ||
|
|
52
|
+
values.featureName ||
|
|
53
|
+
"Feature";
|
|
50
54
|
return `No listings for ${featureName}`;
|
|
51
55
|
};
|
|
52
56
|
|
|
53
|
-
getLayoutComponent = layoutType => {
|
|
57
|
+
getLayoutComponent = (layoutType) => {
|
|
54
58
|
switch (layoutType) {
|
|
55
59
|
case values.layoutTypes.round:
|
|
56
60
|
return RoundImageList;
|
|
@@ -75,12 +79,13 @@ class WidgetSmall extends Component {
|
|
|
75
79
|
|
|
76
80
|
onLoadingChanged = (loading, callback) => {
|
|
77
81
|
this.setState({ loading }, () => {
|
|
78
|
-
if (this.props.onLoadingChanged)
|
|
82
|
+
if (this.props.onLoadingChanged)
|
|
83
|
+
this.props.onLoadingChanged(this.state.loading);
|
|
79
84
|
if (callback) callback();
|
|
80
85
|
});
|
|
81
86
|
};
|
|
82
87
|
|
|
83
|
-
onItemPress = item => {
|
|
88
|
+
onItemPress = (item) => {
|
|
84
89
|
const { featureDefinition } = this.props;
|
|
85
90
|
if (featureDefinition) {
|
|
86
91
|
Services.navigation.navigate(values.screens.featureDetail, {
|
|
@@ -112,7 +117,7 @@ class WidgetSmall extends Component {
|
|
|
112
117
|
);
|
|
113
118
|
}
|
|
114
119
|
|
|
115
|
-
const layoutType = featureDefinition.layout?.type ||
|
|
120
|
+
const layoutType = featureDefinition.layout?.type || "condensed";
|
|
116
121
|
const LayoutComponent = this.getLayoutComponent(layoutType);
|
|
117
122
|
const title = this.getTitle();
|
|
118
123
|
|
|
@@ -141,7 +146,7 @@ class WidgetSmall extends Component {
|
|
|
141
146
|
|
|
142
147
|
const styles = StyleSheet.create({
|
|
143
148
|
sectionContainer: {
|
|
144
|
-
backgroundColor:
|
|
149
|
+
backgroundColor: "#fff",
|
|
145
150
|
paddingTop: SPACING.MD,
|
|
146
151
|
},
|
|
147
152
|
sectionPadding: {
|
|
@@ -155,13 +160,13 @@ const styles = StyleSheet.create({
|
|
|
155
160
|
paddingHorizontal: SPACING.MD,
|
|
156
161
|
},
|
|
157
162
|
sectionTitle: {
|
|
158
|
-
fontFamily:
|
|
163
|
+
fontFamily: "sf-bold",
|
|
159
164
|
fontSize: 24,
|
|
160
|
-
color:
|
|
165
|
+
color: "#000",
|
|
161
166
|
},
|
|
162
167
|
});
|
|
163
168
|
|
|
164
|
-
const mapStateToProps = state => {
|
|
169
|
+
const mapStateToProps = (state) => {
|
|
165
170
|
const { user, notifications } = state;
|
|
166
171
|
const listings = selectListings(state);
|
|
167
172
|
const featureDefinition = selectFeatureDefinition(state);
|
|
@@ -176,4 +181,6 @@ const mapStateToProps = state => {
|
|
|
176
181
|
};
|
|
177
182
|
};
|
|
178
183
|
|
|
179
|
-
export default connect(mapStateToProps, null, null, { forwardRef: true })(
|
|
184
|
+
export default connect(mapStateToProps, null, null, { forwardRef: true })(
|
|
185
|
+
WidgetSmall,
|
|
186
|
+
);
|