@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.
@@ -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 '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';
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 './layouts/RoundImageList';
20
- import CondensedList from './layouts/CondensedList';
21
- import SquareImageList from './layouts/SquareImageList';
22
- import FeatureImageList from './layouts/FeatureImageList';
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 || 'Custom Features';
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 || 'Feature';
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) || 'condensed';
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: '#fff',
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: 'sf-bold',
164
+ fontFamily: "sf-bold",
165
165
  fontSize: 24,
166
- color: '#000'
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 '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';
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 './layouts/RoundImageList';
18
- import CondensedList from './layouts/CondensedList';
19
- import SquareImageList from './layouts/SquareImageList';
20
- import FeatureImageList from './layouts/FeatureImageList';
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 || 'Features';
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 || 'Feature';
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) || 'condensed';
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: '#fff',
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: 'sf-bold',
161
+ fontFamily: "sf-bold",
162
162
  fontSize: 24,
163
- color: '#000'
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.9",
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 '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';
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 './layouts/RoundImageList';
17
- import CondensedList from './layouts/CondensedList';
18
- import SquareImageList from './layouts/SquareImageList';
19
- import FeatureImageList from './layouts/FeatureImageList';
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 || 'Custom Features';
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 = featureDefinition?.title || featureDefinition?.displayName || values.featureName || 'Feature';
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) this.props.onLoadingChanged(this.state.loading);
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 || 'condensed';
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: '#fff',
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: 'sf-bold',
166
+ fontFamily: "sf-bold",
162
167
  fontSize: 24,
163
- color: '#000',
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 })(WidgetLarge);
185
+ export default connect(mapStateToProps, null, null, { forwardRef: true })(
186
+ WidgetLarge,
187
+ );
@@ -1,20 +1,20 @@
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';
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 './layouts/RoundImageList';
15
- import CondensedList from './layouts/CondensedList';
16
- import SquareImageList from './layouts/SquareImageList';
17
- import FeatureImageList from './layouts/FeatureImageList';
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 || 'Features';
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 = featureDefinition?.title || featureDefinition?.displayName || values.featureName || 'Feature';
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) this.props.onLoadingChanged(this.state.loading);
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 || 'condensed';
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: '#fff',
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: 'sf-bold',
163
+ fontFamily: "sf-bold",
159
164
  fontSize: 24,
160
- color: '#000',
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 })(WidgetSmall);
184
+ export default connect(mapStateToProps, null, null, { forwardRef: true })(
185
+ WidgetSmall,
186
+ );