@plusscommunities/pluss-feature-builder-app-d 8.0.6-beta.0 → 8.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/actions/featureBuilderActions.js +1 -1
- package/dist/module/actions/featureBuilderActions.js.map +1 -1
- package/dist/module/components/FeatureListScreen.js +69 -40
- package/dist/module/components/FeatureListScreen.js.map +1 -1
- package/dist/module/components/Widget.js +8 -0
- package/dist/module/components/Widget.js.map +1 -0
- package/dist/module/components/WidgetLarge.js +80 -163
- package/dist/module/components/WidgetLarge.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +82 -208
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/components/layouts/CondensedList.js +3 -2
- package/dist/module/components/layouts/CondensedList.js.map +1 -1
- package/dist/module/components/layouts/FeatureImageList.js +3 -2
- package/dist/module/components/layouts/FeatureImageList.js.map +1 -1
- package/dist/module/components/layouts/RoundImageList.js +3 -2
- package/dist/module/components/layouts/RoundImageList.js.map +1 -1
- package/dist/module/components/layouts/SquareImageList.js +3 -2
- package/dist/module/components/layouts/SquareImageList.js.map +1 -1
- package/dist/module/feature.config.js +3 -2
- package/dist/module/feature.config.js.map +1 -1
- package/dist/module/index.js +2 -2
- package/dist/module/index.js.map +1 -1
- package/package.json +1 -1
- package/src/actions/featureBuilderActions.js +1 -1
- package/src/components/FeatureListScreen.js +85 -60
- package/src/components/Widget.js +6 -0
- package/src/components/WidgetLarge.js +81 -193
- package/src/components/WidgetSmall.js +82 -233
- package/src/components/layouts/CondensedList.js +2 -1
- package/src/components/layouts/FeatureImageList.js +2 -1
- package/src/components/layouts/RoundImageList.js +2 -1
- package/src/components/layouts/SquareImageList.js +2 -1
- package/src/feature.config.js +2 -1
- package/src/index.js +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useRef","useEffect","View","Text","StyleSheet","FlatList","TouchableOpacity","Image","Dimensions","Animated","FontAwesome","Components","Colours","values","getSummaryFieldValue","width","screenWidth","get","CARD_WIDTH","IMAGE_HEIGHT","getEmptyStateMessage","title","featureName","FeatureImageList","listings","onItemPress","colourBrandingMain","refreshing","onRefresh","featureDefinition","getImageSource","imageField","uri","url","renderListingItem","item","listing","_listing$fields","_listing$fields2","fields","mandatoryFields","summary","featureImage","imageSource","createElement","style","styles","cardContainer","onPress","imageContainer","source","placeholderImage","placeholderText","contentContainer","cardTitle","numberOfLines","cardSummary","length","emptyContainer","EmptyStateWidget","height","container","LoadingIndicator","visible","data","keyExtractor","id","renderItem","contentContainerStyle","listContainer","showsVerticalScrollIndicator","create","flex","backgroundColor","padding","borderRadius","marginBottom","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","overflow","justifyContent","alignItems","fontSize","color","fontFamily","fontWeight","lineHeight"],"sources":["FeatureImageList.js"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport {\n\tView,\n\tText,\n\tStyleSheet,\n\tFlatList,\n\tTouchableOpacity,\n\tImage,\n\tDimensions,\n\tAnimated,\n} from \"react-native\";\nimport { FontAwesome } from \"@expo/vector-icons\";\nimport { Components, Colours } from \"../../core.config\";\nimport { values } from \"../../values.config\";\nimport { getSummaryFieldValue } from \"../../js/helpers\";\n\nconst { width: screenWidth } = Dimensions.get(\"window\");\nconst CARD_WIDTH = screenWidth - 32; // 16px padding on each side\nconst IMAGE_HEIGHT = (CARD_WIDTH * 9) / 16; // 16:9 aspect ratio\n\nconst getEmptyStateMessage = (title) => {\n\tconst featureName = title || \"Feature\";\n\treturn `${featureName} listings will appear here once they're available.\\nCome back soon to see what's new!`;\n};\n\nconst FeatureImageList = ({\n\tlistings,\n\tonItemPress,\n\tcolourBrandingMain,\n\trefreshing,\n\tonRefresh,\n\tfeatureDefinition,\n\ttitle,\n}) => {\n\tconst getImageSource = (imageField) => {\n\t\tif (!imageField) return null;\n\n\t\t// Handle different image field formats\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.uri) {\n\t\t\treturn imageField;\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.url) {\n\t\t\treturn { uri: imageField.url };\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst renderListingItem = ({ item: listing }) => {\n\t\tconst title = listing.fields?.[values.mandatoryFields.title] || \"Untitled\";\n\t\tconst summary = getSummaryFieldValue(listing, featureDefinition);\n\t\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\t\tconst imageSource = getImageSource(imageField);\n\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={styles.cardContainer}\n\t\t\t\tonPress={() => onItemPress && onItemPress(listing)}\n\t\t\t>\n\t\t\t\t<View style={styles.imageContainer}>\n\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t<Image source={imageSource} style={styles.featureImage} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.featureImage, styles.placeholderImage]}>\n\t\t\t\t\t\t\t<Text style={styles.placeholderText}>No Image</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.contentContainer}>\n\t\t\t\t\t<Text style={styles.cardTitle} numberOfLines={2}>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{summary && (\n\t\t\t\t\t\t<Text style={styles.cardSummary} numberOfLines={2}>\n\t\t\t\t\t\t\t{summary}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t};\n\n\tif (!listings || listings.length === 0) {\n\t\treturn (\n\t\t\t<View style={styles.emptyContainer}>\n\t\t\t\t<Components.EmptyStateWidget\n\t\t\t\t\ttitle={getEmptyStateMessage(title)}\n\t\t\t\t\theight={120}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\tif (onRefresh) {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t<Components.LoadingIndicator visible={refreshing} />\n\t\t\t\t<FlatList\n\t\t\t\t\tdata={listings}\n\t\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\t\trenderItem={renderListingItem}\n\t\t\t\t\tcontentContainerStyle={styles.listContainer}\n\t\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\treturn (\n\t\t<View style={styles.container}>\n\t\t\t<FlatList\n\t\t\t\tdata={listings}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={renderListingItem}\n\t\t\t\tcontentContainerStyle={styles.listContainer}\n\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t/>\n\t\t</View>\n\t);\n};\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#f5f5f5\",\n\t},\n\tlistContainer: {\n\t\tpadding: 16,\n\t},\n\tcardContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tborderRadius: 8,\n\t\tmarginBottom: 16,\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 2,\n\t\t},\n\t\tshadowOpacity: 0.1,\n\t\tshadowRadius: 4,\n\t\televation: 3,\n\t\toverflow: \"hidden\",\n\t},\n\timageContainer: {\n\t\twidth: CARD_WIDTH,\n\t\theight: IMAGE_HEIGHT,\n\t},\n\tfeatureImage: {\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\tbackgroundColor: \"#f0f0f0\",\n\t},\n\tplaceholderImage: {\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tbackgroundColor: \"#e0e0e0\",\n\t},\n\tplaceholderText: {\n\t\tfontSize: 16,\n\t\tcolor: \"#999\",\n\t\tfontFamily: \"sf-medium\",\n\t},\n\tcontentContainer: {\n\t\tpadding: 16,\n\t},\n\tcardTitle: {\n\t\tfontSize: 18,\n\t\tfontWeight: \"600\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tcolor: \"#333\",\n\t\tmarginBottom: 8,\n\t\tlineHeight: 24,\n\t},\n\tcardSummary: {\n\t\tfontSize: 14,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: \"#666\",\n\t\tlineHeight: 18,\n\t},\n\temptyContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpadding: 32,\n\t},\n});\n\nexport default FeatureImageList;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useState","useRef","useEffect","View","Text","StyleSheet","FlatList","TouchableOpacity","Image","Dimensions","Animated","FontAwesome","Components","Colours","values","getSummaryFieldValue","width","screenWidth","get","CARD_WIDTH","IMAGE_HEIGHT","getEmptyStateMessage","title","featureName","FeatureImageList","listings","onItemPress","colourBrandingMain","refreshing","onRefresh","featureDefinition","isWidget","getImageSource","imageField","uri","url","renderListingItem","item","listing","_listing$fields","_listing$fields2","fields","mandatoryFields","summary","featureImage","imageSource","createElement","style","styles","cardContainer","onPress","imageContainer","source","placeholderImage","placeholderText","contentContainer","cardTitle","numberOfLines","cardSummary","length","emptyContainer","EmptyStateWidget","height","container","LoadingIndicator","visible","data","keyExtractor","id","renderItem","contentContainerStyle","listContainer","showsVerticalScrollIndicator","create","flex","backgroundColor","padding","borderRadius","marginBottom","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","overflow","justifyContent","alignItems","fontSize","color","fontFamily","fontWeight","lineHeight"],"sources":["FeatureImageList.js"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport {\n\tView,\n\tText,\n\tStyleSheet,\n\tFlatList,\n\tTouchableOpacity,\n\tImage,\n\tDimensions,\n\tAnimated,\n} from \"react-native\";\nimport { FontAwesome } from \"@expo/vector-icons\";\nimport { Components, Colours } from \"../../core.config\";\nimport { values } from \"../../values.config\";\nimport { getSummaryFieldValue } from \"../../js/helpers\";\n\nconst { width: screenWidth } = Dimensions.get(\"window\");\nconst CARD_WIDTH = screenWidth - 32; // 16px padding on each side\nconst IMAGE_HEIGHT = (CARD_WIDTH * 9) / 16; // 16:9 aspect ratio\n\nconst getEmptyStateMessage = (title) => {\n\tconst featureName = title || \"Feature\";\n\treturn `${featureName} listings will appear here once they're available.\\nCome back soon to see what's new!`;\n};\n\nconst FeatureImageList = ({\n\tlistings,\n\tonItemPress,\n\tcolourBrandingMain,\n\trefreshing,\n\tonRefresh,\n\tfeatureDefinition,\n\ttitle,\n\tisWidget,\n}) => {\n\tconst getImageSource = (imageField) => {\n\t\tif (!imageField) return null;\n\n\t\t// Handle different image field formats\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.uri) {\n\t\t\treturn imageField;\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.url) {\n\t\t\treturn { uri: imageField.url };\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst renderListingItem = ({ item: listing }) => {\n\t\tconst title = listing.fields?.[values.mandatoryFields.title] || \"Untitled\";\n\t\tconst summary = getSummaryFieldValue(listing, featureDefinition);\n\t\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\t\tconst imageSource = getImageSource(imageField);\n\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={styles.cardContainer}\n\t\t\t\tonPress={() => onItemPress && onItemPress(listing)}\n\t\t\t>\n\t\t\t\t<View style={styles.imageContainer}>\n\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t<Image source={imageSource} style={styles.featureImage} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.featureImage, styles.placeholderImage]}>\n\t\t\t\t\t\t\t<Text style={styles.placeholderText}>No Image</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.contentContainer}>\n\t\t\t\t\t<Text style={styles.cardTitle} numberOfLines={2}>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{summary && (\n\t\t\t\t\t\t<Text style={styles.cardSummary} numberOfLines={2}>\n\t\t\t\t\t\t\t{summary}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t};\n\n\tif (!listings || listings.length === 0) {\n\t\treturn (\n\t\t\t<View style={styles.emptyContainer}>\n\t\t\t\t<Components.EmptyStateWidget\n\t\t\t\t\ttitle={getEmptyStateMessage(title)}\n\t\t\t\t\theight={120}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\tif (onRefresh) {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t{!isWidget && <Components.LoadingIndicator visible={refreshing} />}\n\t\t\t\t<FlatList\n\t\t\t\t\tdata={listings}\n\t\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\t\trenderItem={renderListingItem}\n\t\t\t\t\tcontentContainerStyle={styles.listContainer}\n\t\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\treturn (\n\t\t<View style={styles.container}>\n\t\t\t<FlatList\n\t\t\t\tdata={listings}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={renderListingItem}\n\t\t\t\tcontentContainerStyle={styles.listContainer}\n\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t/>\n\t\t</View>\n\t);\n};\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#f5f5f5\",\n\t},\n\tlistContainer: {\n\t\tpadding: 16,\n\t},\n\tcardContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tborderRadius: 8,\n\t\tmarginBottom: 16,\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 2,\n\t\t},\n\t\tshadowOpacity: 0.1,\n\t\tshadowRadius: 4,\n\t\televation: 3,\n\t\toverflow: \"hidden\",\n\t},\n\timageContainer: {\n\t\twidth: CARD_WIDTH,\n\t\theight: IMAGE_HEIGHT,\n\t},\n\tfeatureImage: {\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\tbackgroundColor: \"#f0f0f0\",\n\t},\n\tplaceholderImage: {\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tbackgroundColor: \"#e0e0e0\",\n\t},\n\tplaceholderText: {\n\t\tfontSize: 16,\n\t\tcolor: \"#999\",\n\t\tfontFamily: \"sf-medium\",\n\t},\n\tcontentContainer: {\n\t\tpadding: 16,\n\t},\n\tcardTitle: {\n\t\tfontSize: 18,\n\t\tfontWeight: \"600\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tcolor: \"#333\",\n\t\tmarginBottom: 8,\n\t\tlineHeight: 24,\n\t},\n\tcardSummary: {\n\t\tfontSize: 14,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: \"#666\",\n\t\tlineHeight: 18,\n\t},\n\temptyContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpadding: 32,\n\t},\n});\n\nexport default FeatureImageList;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,7 +16,8 @@ const RoundImageList = ({
|
|
|
16
16
|
refreshing,
|
|
17
17
|
onRefresh,
|
|
18
18
|
title,
|
|
19
|
-
featureDefinition
|
|
19
|
+
featureDefinition,
|
|
20
|
+
isWidget
|
|
20
21
|
}) => {
|
|
21
22
|
const getImageSource = imageField => {
|
|
22
23
|
if (!imageField) {
|
|
@@ -87,7 +88,7 @@ const RoundImageList = ({
|
|
|
87
88
|
if (onRefresh) {
|
|
88
89
|
return /*#__PURE__*/React.createElement(View, {
|
|
89
90
|
style: styles.container
|
|
90
|
-
}, /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
|
|
91
|
+
}, !isWidget && /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
|
|
91
92
|
visible: refreshing
|
|
92
93
|
}), /*#__PURE__*/React.createElement(FlatList, {
|
|
93
94
|
data: listings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","Image","StyleSheet","TouchableOpacity","FlatList","FontAwesome","Components","values","SPACING","getSummaryFieldValue","getEmptyStateMessage","title","featureName","RoundImageList","listings","onItemPress","colourBrandingMain","refreshing","onRefresh","featureDefinition","getImageSource","imageField","uri","url","renderListingItem","item","listing","_listing$fields","_listing$fields2","fields","mandatoryFields","summary","featureImage","imageSource","createElement","style","styles","cardContainer","onPress","borderContainer","source","roundImage","placeholderImage","contentContainer","textContainer","titleText","numberOfLines","descriptionText","chevronContainer","name","size","color","chevron","length","emptyContainer","EmptyStateWidget","height","container","LoadingIndicator","visible","data","keyExtractor","id","renderItem","contentContainerStyle","scrollContainer","showsVerticalScrollIndicator","create","flex","paddingLeft","XL","paddingRight","MD","paddingVertical","SM","paddingHorizontal","borderRadius","backgroundColor","shadowColor","shadowOffset","width","shadowOpacity","shadowRadius","elevation","position","minHeight","justifyContent","borderWidth","borderColor","left","top","marginTop","alignItems","flexDirection","fontSize","fontFamily","marginBottom","XS","lineHeight","padding","opacity"],"sources":["RoundImageList.js"],"sourcesContent":["import React from \"react\";\nimport {\n\tView,\n\tText,\n\tImage,\n\tStyleSheet,\n\tTouchableOpacity,\n\tFlatList,\n} from \"react-native\";\nimport { FontAwesome } from \"@expo/vector-icons\";\nimport { Components } from \"../../core.config\";\nimport { values } from \"../../values.config\";\nimport { SPACING } from \"../../js/spacing\";\nimport { getSummaryFieldValue } from \"../../js/helpers\";\n\nconst getEmptyStateMessage = (title) => {\n\tconst featureName = title || \"Feature\";\n\treturn `${featureName} listings will appear here once they're available.\\nCome back soon to see what's new!`;\n};\n\nconst RoundImageList = ({\n\tlistings,\n\tonItemPress,\n\tcolourBrandingMain,\n\trefreshing,\n\tonRefresh,\n\ttitle,\n\tfeatureDefinition,\n}) => {\n\tconst getImageSource = (imageField) => {\n\t\tif (!imageField) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Handle different image field formats\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.uri) {\n\t\t\treturn imageField;\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.url) {\n\t\t\treturn { uri: imageField.url };\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst renderListingItem = ({ item: listing }) => {\n\t\tconst title = listing.fields?.[values.mandatoryFields.title] || \"Untitled\";\n\t\tconst summary = getSummaryFieldValue(listing, featureDefinition);\n\t\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\n\t\tconst imageSource = getImageSource(imageField);\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={styles.cardContainer}\n\t\t\t\tonPress={() => onItemPress && onItemPress(listing)}\n\t\t\t>\n\t\t\t\t<View style={styles.borderContainer}>\n\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t<Image source={imageSource} style={styles.roundImage} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.roundImage, styles.placeholderImage]}></View>\n\t\t\t\t\t)}\n\t\t\t\t\t<View style={styles.contentContainer}>\n\t\t\t\t\t\t<View style={styles.textContainer}>\n\t\t\t\t\t\t\t<Text style={styles.titleText} numberOfLines={1}>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text style={styles.descriptionText} numberOfLines={2}>\n\t\t\t\t\t\t\t\t{summary}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<View style={styles.chevronContainer}>\n\t\t\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\t\t\tname=\"chevron-right\"\n\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t\tcolor=\"#ccc\"\n\t\t\t\t\t\t\t\tstyle={styles.chevron}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t};\n\n\tif (!listings || listings.length === 0) {\n\t\treturn (\n\t\t\t<View style={styles.emptyContainer}>\n\t\t\t\t<Components.EmptyStateWidget\n\t\t\t\t\ttitle={getEmptyStateMessage(title)}\n\t\t\t\t\theight={120}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\tif (onRefresh) {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t<Components.LoadingIndicator visible={refreshing} />\n\t\t\t\t<FlatList\n\t\t\t\t\tdata={listings}\n\t\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\t\trenderItem={renderListingItem}\n\t\t\t\t\tcontentContainerStyle={styles.scrollContainer}\n\t\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\treturn (\n\t\t<FlatList\n\t\t\tdata={listings}\n\t\t\tkeyExtractor={(item) => item.id}\n\t\t\trenderItem={renderListingItem}\n\t\t\tcontentContainerStyle={styles.scrollContainer}\n\t\t\tshowsVerticalScrollIndicator={false}\n\t\t/>\n\t);\n};\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t},\n\tscrollContainer: {\n\t\tpaddingLeft: SPACING.XL + 16,\n\t\tpaddingRight: SPACING.MD,\n\t\tpaddingVertical: SPACING.SM,\n\t},\n\tcardContainer: {\n\t\tpaddingHorizontal: SPACING.SM + 2,\n\t\tpaddingVertical: SPACING.SM,\n\t},\n\tborderContainer: {\n\t\tborderRadius: SPACING.SM * 1,\n\t\tbackgroundColor: \"#ffffff\",\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 2,\n\t\t},\n\t\tshadowOpacity: 0.1,\n\t\tshadowRadius: 3.84,\n\t\televation: 5,\n\t\tposition: \"relative\",\n\t\tminHeight: 100,\n\t\tjustifyContent: \"center\",\n\t\tpaddingLeft: SPACING.XL + 8,\n\t\tpaddingRight: SPACING.SM,\n\t},\n\troundImage: {\n\t\twidth: 88,\n\t\theight: 88,\n\t\tborderRadius: 44,\n\t\tbackgroundColor: \"#f0f0f0\",\n\t\tposition: \"absolute\",\n\t\tborderWidth: 2,\n\t\tborderColor: \"#fff\",\n\t\tleft: -44,\n\t\ttop: \"50%\",\n\t\tmarginTop: -44,\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 2,\n\t\t},\n\t\tshadowOpacity: 0.1,\n\t\tshadowRadius: 3.84,\n\t\televation: 6,\n\t},\n\tplaceholderImage: {\n\t\tbackgroundColor: \"#808080\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\tcontentContainer: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\ttextContainer: {\n\t\tflex: 1,\n\t\tpaddingLeft: SPACING.MD,\n\t\tpaddingVertical: SPACING.SM + 4,\n\t},\n\ttitleText: {\n\t\tfontSize: 20,\n\t\tfontFamily: \"sf-medium\",\n\t\tcolor: \"#333\",\n\t\tmarginBottom: SPACING.XS,\n\t},\n\tdescriptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: \"#666\",\n\t\tlineHeight: 18,\n\t},\n\temptyContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpadding: 32,\n\t},\n\tchevronContainer: {\n\t\tjustifyContent: \"center\",\n\t\tpaddingHorizontal: SPACING.SM,\n\t},\n\tchevron: {\n\t\topacity: 0.6,\n\t},\n});\n\nexport default RoundImageList;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","View","Text","Image","StyleSheet","TouchableOpacity","FlatList","FontAwesome","Components","values","SPACING","getSummaryFieldValue","getEmptyStateMessage","title","featureName","RoundImageList","listings","onItemPress","colourBrandingMain","refreshing","onRefresh","featureDefinition","isWidget","getImageSource","imageField","uri","url","renderListingItem","item","listing","_listing$fields","_listing$fields2","fields","mandatoryFields","summary","featureImage","imageSource","createElement","style","styles","cardContainer","onPress","borderContainer","source","roundImage","placeholderImage","contentContainer","textContainer","titleText","numberOfLines","descriptionText","chevronContainer","name","size","color","chevron","length","emptyContainer","EmptyStateWidget","height","container","LoadingIndicator","visible","data","keyExtractor","id","renderItem","contentContainerStyle","scrollContainer","showsVerticalScrollIndicator","create","flex","paddingLeft","XL","paddingRight","MD","paddingVertical","SM","paddingHorizontal","borderRadius","backgroundColor","shadowColor","shadowOffset","width","shadowOpacity","shadowRadius","elevation","position","minHeight","justifyContent","borderWidth","borderColor","left","top","marginTop","alignItems","flexDirection","fontSize","fontFamily","marginBottom","XS","lineHeight","padding","opacity"],"sources":["RoundImageList.js"],"sourcesContent":["import React from \"react\";\nimport {\n\tView,\n\tText,\n\tImage,\n\tStyleSheet,\n\tTouchableOpacity,\n\tFlatList,\n} from \"react-native\";\nimport { FontAwesome } from \"@expo/vector-icons\";\nimport { Components } from \"../../core.config\";\nimport { values } from \"../../values.config\";\nimport { SPACING } from \"../../js/spacing\";\nimport { getSummaryFieldValue } from \"../../js/helpers\";\n\nconst getEmptyStateMessage = (title) => {\n\tconst featureName = title || \"Feature\";\n\treturn `${featureName} listings will appear here once they're available.\\nCome back soon to see what's new!`;\n};\n\nconst RoundImageList = ({\n\tlistings,\n\tonItemPress,\n\tcolourBrandingMain,\n\trefreshing,\n\tonRefresh,\n\ttitle,\n\tfeatureDefinition,\n\tisWidget,\n}) => {\n\tconst getImageSource = (imageField) => {\n\t\tif (!imageField) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Handle different image field formats\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.uri) {\n\t\t\treturn imageField;\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.url) {\n\t\t\treturn { uri: imageField.url };\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst renderListingItem = ({ item: listing }) => {\n\t\tconst title = listing.fields?.[values.mandatoryFields.title] || \"Untitled\";\n\t\tconst summary = getSummaryFieldValue(listing, featureDefinition);\n\t\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\n\t\tconst imageSource = getImageSource(imageField);\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={styles.cardContainer}\n\t\t\t\tonPress={() => onItemPress && onItemPress(listing)}\n\t\t\t>\n\t\t\t\t<View style={styles.borderContainer}>\n\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t<Image source={imageSource} style={styles.roundImage} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.roundImage, styles.placeholderImage]}></View>\n\t\t\t\t\t)}\n\t\t\t\t\t<View style={styles.contentContainer}>\n\t\t\t\t\t\t<View style={styles.textContainer}>\n\t\t\t\t\t\t\t<Text style={styles.titleText} numberOfLines={1}>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text style={styles.descriptionText} numberOfLines={2}>\n\t\t\t\t\t\t\t\t{summary}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<View style={styles.chevronContainer}>\n\t\t\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\t\t\tname=\"chevron-right\"\n\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t\tcolor=\"#ccc\"\n\t\t\t\t\t\t\t\tstyle={styles.chevron}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t};\n\n\tif (!listings || listings.length === 0) {\n\t\treturn (\n\t\t\t<View style={styles.emptyContainer}>\n\t\t\t\t<Components.EmptyStateWidget\n\t\t\t\t\ttitle={getEmptyStateMessage(title)}\n\t\t\t\t\theight={120}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\tif (onRefresh) {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t{!isWidget && <Components.LoadingIndicator visible={refreshing} />}\n\t\t\t\t<FlatList\n\t\t\t\t\tdata={listings}\n\t\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\t\trenderItem={renderListingItem}\n\t\t\t\t\tcontentContainerStyle={styles.scrollContainer}\n\t\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\treturn (\n\t\t<FlatList\n\t\t\tdata={listings}\n\t\t\tkeyExtractor={(item) => item.id}\n\t\t\trenderItem={renderListingItem}\n\t\t\tcontentContainerStyle={styles.scrollContainer}\n\t\t\tshowsVerticalScrollIndicator={false}\n\t\t/>\n\t);\n};\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t},\n\tscrollContainer: {\n\t\tpaddingLeft: SPACING.XL + 16,\n\t\tpaddingRight: SPACING.MD,\n\t\tpaddingVertical: SPACING.SM,\n\t},\n\tcardContainer: {\n\t\tpaddingHorizontal: SPACING.SM + 2,\n\t\tpaddingVertical: SPACING.SM,\n\t},\n\tborderContainer: {\n\t\tborderRadius: SPACING.SM * 1,\n\t\tbackgroundColor: \"#ffffff\",\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 2,\n\t\t},\n\t\tshadowOpacity: 0.1,\n\t\tshadowRadius: 3.84,\n\t\televation: 5,\n\t\tposition: \"relative\",\n\t\tminHeight: 100,\n\t\tjustifyContent: \"center\",\n\t\tpaddingLeft: SPACING.XL + 8,\n\t\tpaddingRight: SPACING.SM,\n\t},\n\troundImage: {\n\t\twidth: 88,\n\t\theight: 88,\n\t\tborderRadius: 44,\n\t\tbackgroundColor: \"#f0f0f0\",\n\t\tposition: \"absolute\",\n\t\tborderWidth: 2,\n\t\tborderColor: \"#fff\",\n\t\tleft: -44,\n\t\ttop: \"50%\",\n\t\tmarginTop: -44,\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 2,\n\t\t},\n\t\tshadowOpacity: 0.1,\n\t\tshadowRadius: 3.84,\n\t\televation: 6,\n\t},\n\tplaceholderImage: {\n\t\tbackgroundColor: \"#808080\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\tcontentContainer: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\ttextContainer: {\n\t\tflex: 1,\n\t\tpaddingLeft: SPACING.MD,\n\t\tpaddingVertical: SPACING.SM + 4,\n\t},\n\ttitleText: {\n\t\tfontSize: 20,\n\t\tfontFamily: \"sf-medium\",\n\t\tcolor: \"#333\",\n\t\tmarginBottom: SPACING.XS,\n\t},\n\tdescriptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: \"#666\",\n\t\tlineHeight: 18,\n\t},\n\temptyContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpadding: 32,\n\t},\n\tchevronContainer: {\n\t\tjustifyContent: \"center\",\n\t\tpaddingHorizontal: SPACING.SM,\n\t},\n\tchevron: {\n\t\topacity: 0.6,\n\t},\n});\n\nexport default RoundImageList;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACCC,IAAI,EACJC,IAAI,EACJC,KAAK,EACLC,UAAU,EACVC,gBAAgB,EAChBC,QAAQ,QACF,cAAc;AACrB,SAASC,WAAW,QAAQ,oBAAoB;AAChD,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,SAASC,oBAAoB,QAAQ,kBAAkB;AAEvD,MAAMC,oBAAoB,GAAIC,KAAK,IAAK;EACvC,MAAMC,WAAW,GAAGD,KAAK,IAAI,SAAS;EACtC,OAAO,GAAGC,WAAW,uFAAuF;AAC7G,CAAC;AAED,MAAMC,cAAc,GAAGA,CAAC;EACvBC,QAAQ;EACRC,WAAW;EACXC,kBAAkB;EAClBC,UAAU;EACVC,SAAS;EACTP,KAAK;EACLQ,iBAAiB;EACjBC;AACD,CAAC,KAAK;EACL,MAAMC,cAAc,GAAIC,UAAU,IAAK;IACtC,IAAI,CAACA,UAAU,EAAE;MAChB,OAAO,IAAI;IACZ;;IAEA;IACA,IAAI,OAAOA,UAAU,KAAK,QAAQ,EAAE;MACnC,OAAO;QAAEC,GAAG,EAAED;MAAW,CAAC;IAC3B;IAEA,IAAI,OAAOA,UAAU,KAAK,QAAQ,IAAIA,UAAU,CAACC,GAAG,EAAE;MACrD,OAAOD,UAAU;IAClB;IAEA,IAAI,OAAOA,UAAU,KAAK,QAAQ,IAAIA,UAAU,CAACE,GAAG,EAAE;MACrD,OAAO;QAAED,GAAG,EAAED,UAAU,CAACE;MAAI,CAAC;IAC/B;IAEA,OAAO,IAAI;EACZ,CAAC;EAED,MAAMC,iBAAiB,GAAGA,CAAC;IAAEC,IAAI,EAAEC;EAAQ,CAAC,KAAK;IAAA,IAAAC,eAAA,EAAAC,gBAAA;IAChD,MAAMlB,KAAK,GAAG,EAAAiB,eAAA,GAAAD,OAAO,CAACG,MAAM,cAAAF,eAAA,uBAAdA,eAAA,CAAiBrB,MAAM,CAACwB,eAAe,CAACpB,KAAK,CAAC,KAAI,UAAU;IAC1E,MAAMqB,OAAO,GAAGvB,oBAAoB,CAACkB,OAAO,EAAER,iBAAiB,CAAC;IAChE,MAAMG,UAAU,IAAAO,gBAAA,GAAGF,OAAO,CAACG,MAAM,cAAAD,gBAAA,uBAAdA,gBAAA,CAAiBtB,MAAM,CAACwB,eAAe,CAACE,YAAY,CAAC;IAExE,MAAMC,WAAW,GAAGb,cAAc,CAACC,UAAU,CAAC;IAC9C,oBACCxB,KAAA,CAAAqC,aAAA,CAAChC,gBAAgB;MAChBiC,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BC,OAAO,EAAEA,CAAA,KAAMxB,WAAW,IAAIA,WAAW,CAACY,OAAO;IAAE,gBAEnD7B,KAAA,CAAAqC,aAAA,CAACpC,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACG;IAAgB,GAClCN,WAAW,gBACXpC,KAAA,CAAAqC,aAAA,CAAClC,KAAK;MAACwC,MAAM,EAAEP,WAAY;MAACE,KAAK,EAAEC,MAAM,CAACK;IAAW,CAAE,CAAC,gBAExD5C,KAAA,CAAAqC,aAAA,CAACpC,IAAI;MAACqC,KAAK,EAAE,CAACC,MAAM,CAACK,UAAU,EAAEL,MAAM,CAACM,gBAAgB;IAAE,CAAO,CACjE,eACD7C,KAAA,CAAAqC,aAAA,CAACpC,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACO;IAAiB,gBACpC9C,KAAA,CAAAqC,aAAA,CAACpC,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACQ;IAAc,gBACjC/C,KAAA,CAAAqC,aAAA,CAACnC,IAAI;MAACoC,KAAK,EAAEC,MAAM,CAACS,SAAU;MAACC,aAAa,EAAE;IAAE,GAC9CpC,KACI,CAAC,eACPb,KAAA,CAAAqC,aAAA,CAACnC,IAAI;MAACoC,KAAK,EAAEC,MAAM,CAACW,eAAgB;MAACD,aAAa,EAAE;IAAE,GACpDf,OACI,CACD,CAAC,eACPlC,KAAA,CAAAqC,aAAA,CAACpC,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACY;IAAiB,gBACpCnD,KAAA,CAAAqC,aAAA,CAAC9B,WAAW;MACX6C,IAAI,EAAC,eAAe;MACpBC,IAAI,EAAE,EAAG;MACTC,KAAK,EAAC,MAAM;MACZhB,KAAK,EAAEC,MAAM,CAACgB;IAAQ,CACtB,CACI,CACD,CACD,CACW,CAAC;EAErB,CAAC;EAED,IAAI,CAACvC,QAAQ,IAAIA,QAAQ,CAACwC,MAAM,KAAK,CAAC,EAAE;IACvC,oBACCxD,KAAA,CAAAqC,aAAA,CAACpC,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACkB;IAAe,gBAClCzD,KAAA,CAAAqC,aAAA,CAAC7B,UAAU,CAACkD,gBAAgB;MAC3B7C,KAAK,EAAED,oBAAoB,CAACC,KAAK,CAAE;MACnC8C,MAAM,EAAE;IAAI,CACZ,CACI,CAAC;EAET;EAEA,IAAIvC,SAAS,EAAE;IACd,oBACCpB,KAAA,CAAAqC,aAAA,CAACpC,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACqB;IAAU,GAC5B,CAACtC,QAAQ,iBAAItB,KAAA,CAAAqC,aAAA,CAAC7B,UAAU,CAACqD,gBAAgB;MAACC,OAAO,EAAE3C;IAAW,CAAE,CAAC,eAClEnB,KAAA,CAAAqC,aAAA,CAAC/B,QAAQ;MACRyD,IAAI,EAAE/C,QAAS;MACfgD,YAAY,EAAGpC,IAAI,IAAKA,IAAI,CAACqC,EAAG;MAChCC,UAAU,EAAEvC,iBAAkB;MAC9BwC,qBAAqB,EAAE5B,MAAM,CAAC6B,eAAgB;MAC9CC,4BAA4B,EAAE;IAAM,CACpC,CACI,CAAC;EAET;EAEA,oBACCrE,KAAA,CAAAqC,aAAA,CAAC/B,QAAQ;IACRyD,IAAI,EAAE/C,QAAS;IACfgD,YAAY,EAAGpC,IAAI,IAAKA,IAAI,CAACqC,EAAG;IAChCC,UAAU,EAAEvC,iBAAkB;IAC9BwC,qBAAqB,EAAE5B,MAAM,CAAC6B,eAAgB;IAC9CC,4BAA4B,EAAE;EAAM,CACpC,CAAC;AAEJ,CAAC;AAED,MAAM9B,MAAM,GAAGnC,UAAU,CAACkE,MAAM,CAAC;EAChCV,SAAS,EAAE;IACVW,IAAI,EAAE;EACP,CAAC;EACDH,eAAe,EAAE;IAChBI,WAAW,EAAE9D,OAAO,CAAC+D,EAAE,GAAG,EAAE;IAC5BC,YAAY,EAAEhE,OAAO,CAACiE,EAAE;IACxBC,eAAe,EAAElE,OAAO,CAACmE;EAC1B,CAAC;EACDrC,aAAa,EAAE;IACdsC,iBAAiB,EAAEpE,OAAO,CAACmE,EAAE,GAAG,CAAC;IACjCD,eAAe,EAAElE,OAAO,CAACmE;EAC1B,CAAC;EACDnC,eAAe,EAAE;IAChBqC,YAAY,EAAErE,OAAO,CAACmE,EAAE,GAAG,CAAC;IAC5BG,eAAe,EAAE,SAAS;IAC1BC,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE;MACbC,KAAK,EAAE,CAAC;MACRxB,MAAM,EAAE;IACT,CAAC;IACDyB,aAAa,EAAE,GAAG;IAClBC,YAAY,EAAE,IAAI;IAClBC,SAAS,EAAE,CAAC;IACZC,QAAQ,EAAE,UAAU;IACpBC,SAAS,EAAE,GAAG;IACdC,cAAc,EAAE,QAAQ;IACxBjB,WAAW,EAAE9D,OAAO,CAAC+D,EAAE,GAAG,CAAC;IAC3BC,YAAY,EAAEhE,OAAO,CAACmE;EACvB,CAAC;EACDjC,UAAU,EAAE;IACXuC,KAAK,EAAE,EAAE;IACTxB,MAAM,EAAE,EAAE;IACVoB,YAAY,EAAE,EAAE;IAChBC,eAAe,EAAE,SAAS;IAC1BO,QAAQ,EAAE,UAAU;IACpBG,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,MAAM;IACnBC,IAAI,EAAE,CAAC,EAAE;IACTC,GAAG,EAAE,KAAK;IACVC,SAAS,EAAE,CAAC,EAAE;IACdb,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE;MACbC,KAAK,EAAE,CAAC;MACRxB,MAAM,EAAE;IACT,CAAC;IACDyB,aAAa,EAAE,GAAG;IAClBC,YAAY,EAAE,IAAI;IAClBC,SAAS,EAAE;EACZ,CAAC;EACDzC,gBAAgB,EAAE;IACjBmC,eAAe,EAAE,SAAS;IAC1BS,cAAc,EAAE,QAAQ;IACxBM,UAAU,EAAE;EACb,CAAC;EACDjD,gBAAgB,EAAE;IACjByB,IAAI,EAAE,CAAC;IACPyB,aAAa,EAAE,KAAK;IACpBD,UAAU,EAAE;EACb,CAAC;EACDhD,aAAa,EAAE;IACdwB,IAAI,EAAE,CAAC;IACPC,WAAW,EAAE9D,OAAO,CAACiE,EAAE;IACvBC,eAAe,EAAElE,OAAO,CAACmE,EAAE,GAAG;EAC/B,CAAC;EACD7B,SAAS,EAAE;IACViD,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,WAAW;IACvB5C,KAAK,EAAE,MAAM;IACb6C,YAAY,EAAEzF,OAAO,CAAC0F;EACvB,CAAC;EACDlD,eAAe,EAAE;IAChBgD,UAAU,EAAE,YAAY;IACxBD,QAAQ,EAAE,EAAE;IACZ3C,KAAK,EAAE,MAAM;IACb+C,UAAU,EAAE;EACb,CAAC;EACD5C,cAAc,EAAE;IACfc,IAAI,EAAE,CAAC;IACPkB,cAAc,EAAE,QAAQ;IACxBM,UAAU,EAAE,QAAQ;IACpBO,OAAO,EAAE;EACV,CAAC;EACDnD,gBAAgB,EAAE;IACjBsC,cAAc,EAAE,QAAQ;IACxBX,iBAAiB,EAAEpE,OAAO,CAACmE;EAC5B,CAAC;EACDtB,OAAO,EAAE;IACRgD,OAAO,EAAE;EACV;AACD,CAAC,CAAC;AAEF,eAAexF,cAAc","ignoreList":[]}
|
|
@@ -16,7 +16,8 @@ const SquareImageList = ({
|
|
|
16
16
|
refreshing,
|
|
17
17
|
onRefresh,
|
|
18
18
|
title,
|
|
19
|
-
featureDefinition
|
|
19
|
+
featureDefinition,
|
|
20
|
+
isWidget
|
|
20
21
|
}) => {
|
|
21
22
|
const getImageSource = imageField => {
|
|
22
23
|
if (!imageField) return null;
|
|
@@ -85,7 +86,7 @@ const SquareImageList = ({
|
|
|
85
86
|
if (onRefresh) {
|
|
86
87
|
return /*#__PURE__*/React.createElement(View, {
|
|
87
88
|
style: styles.container
|
|
88
|
-
}, /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
|
|
89
|
+
}, !isWidget && /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
|
|
89
90
|
visible: refreshing
|
|
90
91
|
}), /*#__PURE__*/React.createElement(FlatList, {
|
|
91
92
|
data: listings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","Image","StyleSheet","TouchableOpacity","FlatList","FontAwesome","Components","values","SPACING","getSummaryFieldValue","getEmptyStateMessage","title","featureName","SquareImageList","listings","onItemPress","colourBrandingMain","refreshing","onRefresh","featureDefinition","getImageSource","imageField","uri","url","renderListingItem","item","listing","_listing$fields","_listing$fields2","fields","mandatoryFields","summary","featureImage","imageSource","createElement","style","styles","cardContainer","onPress","borderContainer","source","squareImage","placeholderImage","contentContainer","textContainer","titleText","numberOfLines","descriptionText","chevronContainer","name","size","color","chevron","length","emptyContainer","EmptyStateWidget","height","container","LoadingIndicator","visible","data","keyExtractor","id","renderItem","contentContainerStyle","scrollContainer","showsVerticalScrollIndicator","create","flex","paddingHorizontal","MD","paddingVertical","marginBottom","backgroundColor","shadowColor","shadowOffset","width","shadowOpacity","shadowRadius","borderRadius","XS","elevation","flexDirection","alignItems","overflow","minHeight","paddingRight","SM","aspectRatio","marginRight","justifyContent","fontSize","fontFamily","lineHeight","padding","opacity"],"sources":["SquareImageList.js"],"sourcesContent":["import React from \"react\";\nimport {\n\tView,\n\tText,\n\tImage,\n\tStyleSheet,\n\tTouchableOpacity,\n\tFlatList,\n} from \"react-native\";\nimport { FontAwesome } from \"@expo/vector-icons\";\nimport { Components } from \"../../core.config\";\nimport { values } from \"../../values.config\";\nimport { SPACING } from \"../../js/spacing\";\nimport { getSummaryFieldValue } from \"../../js/helpers\";\n\nconst getEmptyStateMessage = (title) => {\n\tconst featureName = title || \"Feature\";\n\treturn `${featureName} listings will appear here once they're available.\\nCome back soon to see what's new!`;\n};\n\nconst SquareImageList = ({\n\tlistings,\n\tonItemPress,\n\tcolourBrandingMain,\n\trefreshing,\n\tonRefresh,\n\ttitle,\n\tfeatureDefinition,\n}) => {\n\tconst getImageSource = (imageField) => {\n\t\tif (!imageField) return null;\n\n\t\t// Handle different image field formats\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.uri) {\n\t\t\treturn imageField;\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.url) {\n\t\t\treturn { uri: imageField.url };\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst renderListingItem = ({ item: listing }) => {\n\t\tconst title = listing.fields?.[values.mandatoryFields.title] || \"Untitled\";\n\t\tconst summary = getSummaryFieldValue(listing, featureDefinition);\n\t\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\t\tconst imageSource = getImageSource(imageField);\n\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={styles.cardContainer}\n\t\t\t\tonPress={() => onItemPress && onItemPress(listing)}\n\t\t\t>\n\t\t\t\t<View style={styles.borderContainer}>\n\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t<Image source={imageSource} style={styles.squareImage} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.squareImage, styles.placeholderImage]}></View>\n\t\t\t\t\t)}\n\t\t\t\t\t<View style={styles.contentContainer}>\n\t\t\t\t\t\t<View style={styles.textContainer}>\n\t\t\t\t\t\t\t<Text style={styles.titleText} numberOfLines={1}>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text style={styles.descriptionText} numberOfLines={2}>\n\t\t\t\t\t\t\t\t{summary}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<View style={styles.chevronContainer}>\n\t\t\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\t\t\tname=\"chevron-right\"\n\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t\tcolor=\"#ccc\"\n\t\t\t\t\t\t\t\tstyle={styles.chevron}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t};\n\n\tif (!listings || listings.length === 0) {\n\t\treturn (\n\t\t\t<View style={styles.emptyContainer}>\n\t\t\t\t<Components.EmptyStateWidget\n\t\t\t\t\ttitle={getEmptyStateMessage(title)}\n\t\t\t\t\theight={120}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\tif (onRefresh) {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t<Components.LoadingIndicator visible={refreshing} />\n\t\t\t\t<FlatList\n\t\t\t\t\tdata={listings}\n\t\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\t\trenderItem={renderListingItem}\n\t\t\t\t\tcontentContainerStyle={styles.scrollContainer}\n\t\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\treturn (\n\t\t<FlatList\n\t\t\tdata={listings}\n\t\t\tkeyExtractor={(item) => item.id}\n\t\t\trenderItem={renderListingItem}\n\t\t\tcontentContainerStyle={styles.scrollContainer}\n\t\t\tshowsVerticalScrollIndicator={false}\n\t\t/>\n\t);\n};\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t},\n\tscrollContainer: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingVertical: SPACING.MD,\n\t},\n\tcardContainer: {\n\t\tmarginBottom: SPACING.MD,\n\t\tbackgroundColor: \"#ffffff\",\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 2,\n\t\t},\n\t\tshadowOpacity: 0.1,\n\t\tshadowRadius: 3.84,\n\t},\n\tborderContainer: {\n\t\tborderRadius: SPACING.XS,\n\t\tbackgroundColor: \"#ffffff\",\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 4,\n\t\t},\n\t\tshadowOpacity: 0.15,\n\t\tshadowRadius: 8,\n\t\televation: 4,\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\toverflow: \"hidden\",\n\t\tminHeight: 100,\n\t\tpaddingRight: SPACING.SM,\n\t},\n\tsquareImage: {\n\t\theight: 100,\n\t\taspectRatio: 1,\n\t\tbackgroundColor: \"#f0f0f0\",\n\t\tmarginRight: SPACING.MD,\n\t},\n\tplaceholderImage: {\n\t\tbackgroundColor: \"#808080\",\n\t\tjustifyContent: \"center\",\n\t},\n\tcontentContainer: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\ttextContainer: {\n\t\tflex: 1,\n\t},\n\ttitleText: {\n\t\tfontSize: 18,\n\t\tfontFamily: \"sf-medium\",\n\t\tcolor: \"#333\",\n\t\tmarginBottom: SPACING.XS,\n\t},\n\tdescriptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: \"#666\",\n\t\tlineHeight: 18,\n\t},\n\temptyContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpadding: 32,\n\t},\n\tchevronContainer: {\n\t\tjustifyContent: \"center\",\n\t\tpaddingHorizontal: SPACING.SM,\n\t},\n\tchevron: {\n\t\topacity: 0.6,\n\t},\n});\n\nexport default SquareImageList;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","View","Text","Image","StyleSheet","TouchableOpacity","FlatList","FontAwesome","Components","values","SPACING","getSummaryFieldValue","getEmptyStateMessage","title","featureName","SquareImageList","listings","onItemPress","colourBrandingMain","refreshing","onRefresh","featureDefinition","isWidget","getImageSource","imageField","uri","url","renderListingItem","item","listing","_listing$fields","_listing$fields2","fields","mandatoryFields","summary","featureImage","imageSource","createElement","style","styles","cardContainer","onPress","borderContainer","source","squareImage","placeholderImage","contentContainer","textContainer","titleText","numberOfLines","descriptionText","chevronContainer","name","size","color","chevron","length","emptyContainer","EmptyStateWidget","height","container","LoadingIndicator","visible","data","keyExtractor","id","renderItem","contentContainerStyle","scrollContainer","showsVerticalScrollIndicator","create","flex","paddingHorizontal","MD","paddingVertical","marginBottom","backgroundColor","shadowColor","shadowOffset","width","shadowOpacity","shadowRadius","borderRadius","XS","elevation","flexDirection","alignItems","overflow","minHeight","paddingRight","SM","aspectRatio","marginRight","justifyContent","fontSize","fontFamily","lineHeight","padding","opacity"],"sources":["SquareImageList.js"],"sourcesContent":["import React from \"react\";\nimport {\n\tView,\n\tText,\n\tImage,\n\tStyleSheet,\n\tTouchableOpacity,\n\tFlatList,\n} from \"react-native\";\nimport { FontAwesome } from \"@expo/vector-icons\";\nimport { Components } from \"../../core.config\";\nimport { values } from \"../../values.config\";\nimport { SPACING } from \"../../js/spacing\";\nimport { getSummaryFieldValue } from \"../../js/helpers\";\n\nconst getEmptyStateMessage = (title) => {\n\tconst featureName = title || \"Feature\";\n\treturn `${featureName} listings will appear here once they're available.\\nCome back soon to see what's new!`;\n};\n\nconst SquareImageList = ({\n\tlistings,\n\tonItemPress,\n\tcolourBrandingMain,\n\trefreshing,\n\tonRefresh,\n\ttitle,\n\tfeatureDefinition,\n\tisWidget,\n}) => {\n\tconst getImageSource = (imageField) => {\n\t\tif (!imageField) return null;\n\n\t\t// Handle different image field formats\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.uri) {\n\t\t\treturn imageField;\n\t\t}\n\n\t\tif (typeof imageField === \"object\" && imageField.url) {\n\t\t\treturn { uri: imageField.url };\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst renderListingItem = ({ item: listing }) => {\n\t\tconst title = listing.fields?.[values.mandatoryFields.title] || \"Untitled\";\n\t\tconst summary = getSummaryFieldValue(listing, featureDefinition);\n\t\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\t\tconst imageSource = getImageSource(imageField);\n\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={styles.cardContainer}\n\t\t\t\tonPress={() => onItemPress && onItemPress(listing)}\n\t\t\t>\n\t\t\t\t<View style={styles.borderContainer}>\n\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t<Image source={imageSource} style={styles.squareImage} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.squareImage, styles.placeholderImage]}></View>\n\t\t\t\t\t)}\n\t\t\t\t\t<View style={styles.contentContainer}>\n\t\t\t\t\t\t<View style={styles.textContainer}>\n\t\t\t\t\t\t\t<Text style={styles.titleText} numberOfLines={1}>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text style={styles.descriptionText} numberOfLines={2}>\n\t\t\t\t\t\t\t\t{summary}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<View style={styles.chevronContainer}>\n\t\t\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\t\t\tname=\"chevron-right\"\n\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t\tcolor=\"#ccc\"\n\t\t\t\t\t\t\t\tstyle={styles.chevron}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t};\n\n\tif (!listings || listings.length === 0) {\n\t\treturn (\n\t\t\t<View style={styles.emptyContainer}>\n\t\t\t\t<Components.EmptyStateWidget\n\t\t\t\t\ttitle={getEmptyStateMessage(title)}\n\t\t\t\t\theight={120}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\tif (onRefresh) {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t{!isWidget && <Components.LoadingIndicator visible={refreshing} />}\n\t\t\t\t<FlatList\n\t\t\t\t\tdata={listings}\n\t\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\t\trenderItem={renderListingItem}\n\t\t\t\t\tcontentContainerStyle={styles.scrollContainer}\n\t\t\t\t\tshowsVerticalScrollIndicator={false}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\treturn (\n\t\t<FlatList\n\t\t\tdata={listings}\n\t\t\tkeyExtractor={(item) => item.id}\n\t\t\trenderItem={renderListingItem}\n\t\t\tcontentContainerStyle={styles.scrollContainer}\n\t\t\tshowsVerticalScrollIndicator={false}\n\t\t/>\n\t);\n};\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t},\n\tscrollContainer: {\n\t\tpaddingHorizontal: SPACING.MD,\n\t\tpaddingVertical: SPACING.MD,\n\t},\n\tcardContainer: {\n\t\tmarginBottom: SPACING.MD,\n\t\tbackgroundColor: \"#ffffff\",\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 2,\n\t\t},\n\t\tshadowOpacity: 0.1,\n\t\tshadowRadius: 3.84,\n\t},\n\tborderContainer: {\n\t\tborderRadius: SPACING.XS,\n\t\tbackgroundColor: \"#ffffff\",\n\t\tshadowColor: \"#000\",\n\t\tshadowOffset: {\n\t\t\twidth: 0,\n\t\t\theight: 4,\n\t\t},\n\t\tshadowOpacity: 0.15,\n\t\tshadowRadius: 8,\n\t\televation: 4,\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\toverflow: \"hidden\",\n\t\tminHeight: 100,\n\t\tpaddingRight: SPACING.SM,\n\t},\n\tsquareImage: {\n\t\theight: 100,\n\t\taspectRatio: 1,\n\t\tbackgroundColor: \"#f0f0f0\",\n\t\tmarginRight: SPACING.MD,\n\t},\n\tplaceholderImage: {\n\t\tbackgroundColor: \"#808080\",\n\t\tjustifyContent: \"center\",\n\t},\n\tcontentContainer: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\ttextContainer: {\n\t\tflex: 1,\n\t},\n\ttitleText: {\n\t\tfontSize: 18,\n\t\tfontFamily: \"sf-medium\",\n\t\tcolor: \"#333\",\n\t\tmarginBottom: SPACING.XS,\n\t},\n\tdescriptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: \"#666\",\n\t\tlineHeight: 18,\n\t},\n\temptyContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpadding: 32,\n\t},\n\tchevronContainer: {\n\t\tjustifyContent: \"center\",\n\t\tpaddingHorizontal: SPACING.SM,\n\t},\n\tchevron: {\n\t\topacity: 0.6,\n\t},\n});\n\nexport default SquareImageList;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -100,9 +100,10 @@ const FeatureConfig = {
|
|
|
100
100
|
PlussCore.Config.init(environment, navigation);
|
|
101
101
|
},
|
|
102
102
|
afterStoreInit: (dispatch, getState) => {
|
|
103
|
-
var
|
|
103
|
+
var _state$user;
|
|
104
104
|
// Get the site from state (guaranteed to be available due to polling)
|
|
105
|
-
const
|
|
105
|
+
const state = getState();
|
|
106
|
+
const site = state === null || state === void 0 || (_state$user = state.user) === null || _state$user === void 0 ? void 0 : _state$user.site;
|
|
106
107
|
if (site) {
|
|
107
108
|
// Show loading state before fetching
|
|
108
109
|
dispatch(updateFeatureBuilderString("Loading..."));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_","PlussCore","values","loadTargetFeature","updateFeatureBuilderString","updateFeatureBuilderIcon","Services","navigation","BaseComponents","NotificationBell","fetchFeatured","getFeatured","state","features","_state$values$reducer","includes","featureKey","listings","reducerKey","length","latestListings","orderBy","item","createdAt","updatedAt","slice","map","listing","_listing$fields","_listing$fields2","title","fields","mandatoryFields","labels","defaultTitle","imageField","featureImage","imageSource","url","uri","id","type","description","image","date","data","FeatureConfig","key","aliases","featureName","gridMenu","icon","viewBox","navigate","options","addMenu","moreMenu","kioskAction","notification","submission","featured","prop","reducer","updateKey","fetch","get","hideTabBar","env","baseStage","baseAPIUrl","hasGradientHeader","defaultProfileImage","tinyChatDefault","baseUploadsUrl","allowMediaDownload","allowMediaSharing","awsUploadsBucket","awsStorageBucket","preferredSite","strings","newEventDefaults","defaultAllowComments","init","environment","notificationBell","Config","afterStoreInit","dispatch","getState","
|
|
1
|
+
{"version":3,"names":["_","PlussCore","values","loadTargetFeature","updateFeatureBuilderString","updateFeatureBuilderIcon","Services","navigation","BaseComponents","NotificationBell","fetchFeatured","getFeatured","state","features","_state$values$reducer","includes","featureKey","listings","reducerKey","length","latestListings","orderBy","item","createdAt","updatedAt","slice","map","listing","_listing$fields","_listing$fields2","title","fields","mandatoryFields","labels","defaultTitle","imageField","featureImage","imageSource","url","uri","id","type","description","image","date","data","FeatureConfig","key","aliases","featureName","gridMenu","icon","viewBox","navigate","options","addMenu","moreMenu","kioskAction","notification","submission","featured","prop","reducer","updateKey","fetch","get","hideTabBar","env","baseStage","baseAPIUrl","hasGradientHeader","defaultProfileImage","tinyChatDefault","baseUploadsUrl","allowMediaDownload","allowMediaSharing","awsUploadsBucket","awsStorageBucket","preferredSite","strings","newEventDefaults","defaultAllowComments","init","environment","notificationBell","Config","afterStoreInit","dispatch","getState","_state$user","site","user"],"sources":["feature.config.js"],"sourcesContent":["import _ from \"lodash\";\n// import * as PlussCore from '../../pluss-core/src';\nimport * as PlussCore from \"@plusscommunities/pluss-core-app\";\nimport { values } from \"./values.config\";\nimport { loadTargetFeature } from \"./actions/featureBuilderActions\";\nimport {\n\tupdateFeatureBuilderString,\n\tupdateFeatureBuilderIcon,\n} from \"./actions/featureBuilderStringsActions\";\n\nexport const Services = {\n\tnavigation: null,\n};\n\nexport const BaseComponents = {\n\tNotificationBell: null,\n};\n\nconst fetchFeatured = async () => {\n\treturn [];\n};\n\nconst getFeatured = (state, features) => {\n\tif (!_.includes(features, values.featureKey)) return null;\n\n\tconst listings = state[values.reducerKey]?.listings || [];\n\tif (!listings || listings.length === 0) return [];\n\n\tconst latestListings = _.orderBy(\n\t\tlistings,\n\t\t[(item) => item.createdAt || item.updatedAt],\n\t\t[\"desc\"],\n\t).slice(0, 4);\n\n\treturn latestListings.map((listing) => {\n\t\tconst title =\n\t\t\tlisting.fields?.[values.mandatoryFields.title] ||\n\t\t\tvalues.labels.defaultTitle;\n\t\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\t\tlet imageSource = null;\n\n\t\tif (imageField) {\n\t\t\tif (typeof imageField === \"string\") {\n\t\t\t\timageSource = imageField;\n\t\t\t} else if (imageField?.url) {\n\t\t\t\timageSource = imageField.url;\n\t\t\t} else if (imageField?.uri) {\n\t\t\t\timageSource = imageField.uri;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tid: listing.id,\n\t\t\ttype: values.featureKey,\n\t\t\ttitle: title,\n\t\t\tdescription: \"\",\n\t\t\timage: imageSource,\n\t\t\tdate: listing.createdAt || listing.updatedAt || 0,\n\t\t\tdata: listing,\n\t\t};\n\t});\n};\n\nconst FeatureConfig = {\n\tkey: values.featureKey,\n\taliases: [\"feature-builder\", \"custom-features\"],\n\ttitle: values.featureName,\n\n\tgridMenu: {\n\t\ticon: values.navigation.gridMenu.icon,\n\t\tviewBox: values.navigation.gridMenu.viewBox,\n\t\tnavigate: values.navigation.gridMenu.navigate,\n\t\toptions: values.navigation.gridMenu.options,\n\t},\n\n\t// For now, keep other menus minimal since this is primarily a display feature\n\taddMenu: null,\n\tmoreMenu: null,\n\tkioskAction: null,\n\n\tnotification: null, // No notifications for MVP\n\tsubmission: null, // No submissions for MVP\n\n\tfeatured: {\n\t\ttype: values.featureKey,\n\t\tprop: values.featureKey,\n\t\treducer: {\n\t\t\tkey: values.featureKey,\n\t\t\tprop: \"list\",\n\t\t},\n\t\tupdateKey: values.featureKey,\n\t\tfetch: fetchFeatured,\n\t\tget: getFeatured,\n\t},\n\n\thideTabBar: [], // No special tab bar hiding needed\n\n\tenv: {\n\t\tbaseStage: \"\",\n\t\tbaseAPIUrl: \"\",\n\t\thasGradientHeader: false,\n\t\tdefaultProfileImage: \"\",\n\t\ttinyChatDefault: \"\",\n\t\tbaseUploadsUrl: \"\",\n\t\tallowMediaDownload: false,\n\t\tallowMediaSharing: false,\n\t\tawsUploadsBucket: \"\",\n\t\tawsStorageBucket: \"\",\n\t\tpreferredSite: \"\",\n\t\tstrings: {},\n\t\tnewEventDefaults: \"\",\n\t\tdefaultAllowComments: true,\n\t},\n\n\tinit: (environment, navigation, notificationBell) => {\n\t\tFeatureConfig.env = environment;\n\t\tServices.navigation = navigation;\n\t\tBaseComponents.NotificationBell = notificationBell;\n\t\tPlussCore.Config.init(environment, navigation);\n\t},\n\n\tafterStoreInit: (dispatch, getState) => {\n\t\t// Get the site from state (guaranteed to be available due to polling)\n\t\tconst state = getState();\n\t\tconst site = state?.user?.site;\n\n\t\tif (site) {\n\t\t\t// Show loading state before fetching\n\t\t\tdispatch(updateFeatureBuilderString(\"Loading...\"));\n\t\t\tdispatch(updateFeatureBuilderIcon(\"spinner\"));\n\n\t\t\t// Load the target feature definition and listings\n\t\t\t// This will also update the title and icon from the definition\n\t\t\tdispatch(loadTargetFeature());\n\t\t}\n\t},\n};\n\nexport default FeatureConfig;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/module/index.js
CHANGED
|
@@ -11,8 +11,8 @@ export const Screens = {
|
|
|
11
11
|
[values.screens.featureDetail]: FeatureDetailScreen
|
|
12
12
|
};
|
|
13
13
|
export { default as Config } from "./feature.config";
|
|
14
|
-
export { default as WidgetSmall } from "./components/
|
|
15
|
-
export { default as WidgetLarge } from "./components/
|
|
14
|
+
export { default as WidgetSmall } from "./components/Widget";
|
|
15
|
+
export { default as WidgetLarge } from "./components/Widget";
|
|
16
16
|
export { default as WidgetGrid } from "./components/WidgetGrid";
|
|
17
17
|
export { FeatureConfig };
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FeatureConfig","featureBuilderReducer","FeatureListScreen","FeatureDetailScreen","values","Reducers","reducerKey","Screens","screens","featureList","featureDetail","default","Config","WidgetSmall","WidgetLarge","WidgetGrid"],"sources":["index.js"],"sourcesContent":["import FeatureConfig from \"./feature.config\";\nimport featureBuilderReducer from \"./reducers/featureBuilderReducer\";\nimport FeatureListScreen from \"./components/FeatureListScreen\";\nimport FeatureDetailScreen from \"./components/FeatureDetailScreen\";\nimport { values } from \"./values.config\";\n\nexport const Reducers = {\n\t[values.reducerKey]: featureBuilderReducer,\n};\n\nexport const Screens = {\n\t[values.screens.featureList]: FeatureListScreen,\n\t[values.screens.featureDetail]: FeatureDetailScreen,\n};\n\nexport { default as Config } from \"./feature.config\";\nexport { default as WidgetSmall } from \"./components/
|
|
1
|
+
{"version":3,"names":["FeatureConfig","featureBuilderReducer","FeatureListScreen","FeatureDetailScreen","values","Reducers","reducerKey","Screens","screens","featureList","featureDetail","default","Config","WidgetSmall","WidgetLarge","WidgetGrid"],"sources":["index.js"],"sourcesContent":["import FeatureConfig from \"./feature.config\";\nimport featureBuilderReducer from \"./reducers/featureBuilderReducer\";\nimport FeatureListScreen from \"./components/FeatureListScreen\";\nimport FeatureDetailScreen from \"./components/FeatureDetailScreen\";\nimport { values } from \"./values.config\";\n\nexport const Reducers = {\n\t[values.reducerKey]: featureBuilderReducer,\n};\n\nexport const Screens = {\n\t[values.screens.featureList]: FeatureListScreen,\n\t[values.screens.featureDetail]: FeatureDetailScreen,\n};\n\nexport { default as Config } from \"./feature.config\";\nexport { default as WidgetSmall } from \"./components/Widget\";\nexport { default as WidgetLarge } from \"./components/Widget\";\nexport { default as WidgetGrid } from \"./components/WidgetGrid\";\n\nexport { FeatureConfig };\n"],"mappings":"AAAA,OAAOA,aAAa,MAAM,kBAAkB;AAC5C,OAAOC,qBAAqB,MAAM,kCAAkC;AACpE,OAAOC,iBAAiB,MAAM,gCAAgC;AAC9D,OAAOC,mBAAmB,MAAM,kCAAkC;AAClE,SAASC,MAAM,QAAQ,iBAAiB;AAExC,OAAO,MAAMC,QAAQ,GAAG;EACvB,CAACD,MAAM,CAACE,UAAU,GAAGL;AACtB,CAAC;AAED,OAAO,MAAMM,OAAO,GAAG;EACtB,CAACH,MAAM,CAACI,OAAO,CAACC,WAAW,GAAGP,iBAAiB;EAC/C,CAACE,MAAM,CAACI,OAAO,CAACE,aAAa,GAAGP;AACjC,CAAC;AAED,SAASQ,OAAO,IAAIC,MAAM,QAAQ,kBAAkB;AACpD,SAASD,OAAO,IAAIE,WAAW,QAAQ,qBAAqB;AAC5D,SAASF,OAAO,IAAIG,WAAW,QAAQ,qBAAqB;AAC5D,SAASH,OAAO,IAAII,UAAU,QAAQ,yBAAyB;AAE/D,SAASf,aAAa","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -41,7 +41,7 @@ export const loadTargetFeature = () => {
|
|
|
41
41
|
|
|
42
42
|
try {
|
|
43
43
|
const state = getState();
|
|
44
|
-
const site = state
|
|
44
|
+
const site = state?.user?.site;
|
|
45
45
|
const targetId = values.targetFeatureDefinitionId;
|
|
46
46
|
|
|
47
47
|
const defResponse = await featureBuilderAPI.getFeatureDefinitions(site);
|
|
@@ -4,6 +4,7 @@ import { connect } from "react-redux";
|
|
|
4
4
|
import { Components, Colours } from "../core.config";
|
|
5
5
|
import { values } from "../values.config";
|
|
6
6
|
import { loadTargetFeature } from "../actions/featureBuilderActions";
|
|
7
|
+
import { Services } from "../feature.config";
|
|
7
8
|
|
|
8
9
|
// Helper function to title case a string
|
|
9
10
|
const toTitleCase = (str) => {
|
|
@@ -40,92 +41,97 @@ class FeatureListScreen extends Component {
|
|
|
40
41
|
}
|
|
41
42
|
};
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
const { definition,
|
|
44
|
+
getTitle = () => {
|
|
45
|
+
const { definition, options } = this.props;
|
|
46
|
+
if (options?.Title) return options.Title;
|
|
47
|
+
return toTitleCase(definition?.title || values.featureName);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
renderContent() {
|
|
51
|
+
const { definition, listings, loading, error, mainColor, isWidget } =
|
|
45
52
|
this.props;
|
|
46
53
|
|
|
47
54
|
// 1. Error
|
|
48
55
|
if (error) {
|
|
49
56
|
return (
|
|
50
|
-
<View style={styles.
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
/>
|
|
56
|
-
<View style={styles.center}>
|
|
57
|
-
<Text style={styles.errorText}>{error}</Text>
|
|
58
|
-
<Components.InlineButton onPress={this.props.loadTargetFeature}>
|
|
59
|
-
Retry
|
|
60
|
-
</Components.InlineButton>
|
|
61
|
-
</View>
|
|
57
|
+
<View style={styles.center}>
|
|
58
|
+
<Text style={styles.errorText}>{error}</Text>
|
|
59
|
+
<Components.InlineButton onPress={this.props.loadTargetFeature}>
|
|
60
|
+
Retry
|
|
61
|
+
</Components.InlineButton>
|
|
62
62
|
</View>
|
|
63
63
|
);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
// 2. Loading
|
|
66
|
+
// 2. Loading
|
|
67
67
|
if (loading && !definition) {
|
|
68
|
-
|
|
69
|
-
return
|
|
70
|
-
<View style={styles.container}>
|
|
71
|
-
<Components.Header
|
|
72
|
-
text={title}
|
|
73
|
-
leftIcon="angle-left"
|
|
74
|
-
onPressLeft={() => navigation.goBack()}
|
|
75
|
-
/>
|
|
76
|
-
<Components.LoadingIndicator visible={true} />
|
|
77
|
-
</View>
|
|
78
|
-
);
|
|
68
|
+
if (this.props.isWidget) return null;
|
|
69
|
+
return <Components.LoadingIndicator visible={true} />;
|
|
79
70
|
}
|
|
80
71
|
|
|
81
|
-
// 3.
|
|
72
|
+
// 3. List
|
|
82
73
|
if (definition) {
|
|
83
|
-
// Since we flattened the data, definition.layout is now available directly
|
|
84
74
|
const layoutType = definition.layout?.type || "condensed";
|
|
85
75
|
const LayoutComponent = this.getLayoutComponent(layoutType);
|
|
86
|
-
const title =
|
|
76
|
+
const title = this.getTitle();
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<LayoutComponent
|
|
80
|
+
listings={listings}
|
|
81
|
+
featureDefinition={definition}
|
|
82
|
+
colourBrandingMain={mainColor}
|
|
83
|
+
title={title}
|
|
84
|
+
onItemPress={(item) => {
|
|
85
|
+
Services.navigation.navigate(values.screens.featureDetail, {
|
|
86
|
+
listing: item,
|
|
87
|
+
featureDefinition: definition,
|
|
88
|
+
featureTitle: title,
|
|
89
|
+
});
|
|
90
|
+
}}
|
|
91
|
+
refreshing={loading}
|
|
92
|
+
isWidget={isWidget}
|
|
93
|
+
onRefresh={this.props.loadTargetFeature}
|
|
94
|
+
/>
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// 4. Empty
|
|
99
|
+
return (
|
|
100
|
+
<View style={styles.center}>
|
|
101
|
+
<Components.EmptyStateWidget
|
|
102
|
+
title="Feature not available"
|
|
103
|
+
height={120}
|
|
104
|
+
/>
|
|
105
|
+
</View>
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
render() {
|
|
110
|
+
const { isWidget } = this.props;
|
|
111
|
+
const title = this.getTitle();
|
|
112
|
+
const content = this.renderContent();
|
|
87
113
|
|
|
114
|
+
if (isWidget) {
|
|
88
115
|
return (
|
|
89
|
-
<View style={styles.
|
|
90
|
-
<
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
<LayoutComponent
|
|
97
|
-
listings={listings}
|
|
98
|
-
featureDefinition={definition}
|
|
99
|
-
colourBrandingMain={mainColor}
|
|
100
|
-
title={title}
|
|
101
|
-
onItemPress={(item) => {
|
|
102
|
-
navigation.navigate(values.screens.featureDetail, {
|
|
103
|
-
listing: item,
|
|
104
|
-
featureDefinition: definition,
|
|
105
|
-
featureTitle: title,
|
|
106
|
-
});
|
|
107
|
-
}}
|
|
108
|
-
refreshing={loading}
|
|
109
|
-
onRefresh={this.props.loadTargetFeature}
|
|
110
|
-
/>
|
|
116
|
+
<View style={styles.widgetContainer}>
|
|
117
|
+
<View style={styles.widgetPadding}>
|
|
118
|
+
<View style={styles.widgetHeading}>
|
|
119
|
+
<Text style={styles.widgetTitle}>{title}</Text>
|
|
120
|
+
</View>
|
|
121
|
+
</View>
|
|
122
|
+
{content}
|
|
111
123
|
</View>
|
|
112
124
|
);
|
|
113
125
|
}
|
|
114
126
|
|
|
115
|
-
// 4. Default empty state - should not reach here if logic is correct
|
|
116
127
|
return (
|
|
117
128
|
<View style={styles.container}>
|
|
118
129
|
<Components.Header
|
|
119
|
-
text={
|
|
130
|
+
text={title}
|
|
120
131
|
leftIcon="angle-left"
|
|
121
|
-
onPressLeft={() => navigation.goBack()}
|
|
132
|
+
onPressLeft={() => Services.navigation.goBack()}
|
|
122
133
|
/>
|
|
123
|
-
|
|
124
|
-
<Components.EmptyStateWidget
|
|
125
|
-
title="Feature not available"
|
|
126
|
-
height={120}
|
|
127
|
-
/>
|
|
128
|
-
</View>
|
|
134
|
+
{content}
|
|
129
135
|
</View>
|
|
130
136
|
);
|
|
131
137
|
}
|
|
@@ -145,6 +151,25 @@ const styles = StyleSheet.create({
|
|
|
145
151
|
color: "#666",
|
|
146
152
|
textAlign: "center",
|
|
147
153
|
},
|
|
154
|
+
widgetContainer: {
|
|
155
|
+
backgroundColor: "#fff",
|
|
156
|
+
paddingTop: 16,
|
|
157
|
+
},
|
|
158
|
+
widgetPadding: {
|
|
159
|
+
paddingHorizontal: 16,
|
|
160
|
+
paddingBottom: 6,
|
|
161
|
+
},
|
|
162
|
+
widgetHeading: {
|
|
163
|
+
marginBottom: 4,
|
|
164
|
+
flexDirection: "row",
|
|
165
|
+
alignContent: "flex-start",
|
|
166
|
+
justifyContent: "space-between",
|
|
167
|
+
},
|
|
168
|
+
widgetTitle: {
|
|
169
|
+
fontFamily: "sf-bold",
|
|
170
|
+
fontSize: 24,
|
|
171
|
+
color: Colours.TEXT_DARKEST,
|
|
172
|
+
},
|
|
148
173
|
});
|
|
149
174
|
|
|
150
175
|
const mapStateToProps = (state) => ({
|