@plusscommunities/pluss-feature-builder-app-c 1.0.1-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/module/actions/featureBuilderActions.js +106 -0
  2. package/dist/module/actions/featureBuilderActions.js.map +1 -0
  3. package/dist/module/actions/featureBuilderStringsActions.js +106 -0
  4. package/dist/module/actions/featureBuilderStringsActions.js.map +1 -0
  5. package/dist/module/actions/index.js +12 -0
  6. package/dist/module/actions/index.js.map +1 -0
  7. package/dist/module/actions/types.js +7 -0
  8. package/dist/module/actions/types.js.map +1 -0
  9. package/dist/module/components/FeatureDetailScreen.js +725 -0
  10. package/dist/module/components/FeatureDetailScreen.js.map +1 -0
  11. package/dist/module/components/FeatureListItem.js +174 -0
  12. package/dist/module/components/FeatureListItem.js.map +1 -0
  13. package/dist/module/components/FeatureListScreen.js +159 -0
  14. package/dist/module/components/FeatureListScreen.js.map +1 -0
  15. package/dist/module/components/FieldRenderer.js +218 -0
  16. package/dist/module/components/FieldRenderer.js.map +1 -0
  17. package/dist/module/components/FileDownload.js +74 -0
  18. package/dist/module/components/FileDownload.js.map +1 -0
  19. package/dist/module/components/WidgetGrid.js +158 -0
  20. package/dist/module/components/WidgetGrid.js.map +1 -0
  21. package/dist/module/components/WidgetLarge.js +274 -0
  22. package/dist/module/components/WidgetLarge.js.map +1 -0
  23. package/dist/module/components/WidgetSmall.js +315 -0
  24. package/dist/module/components/WidgetSmall.js.map +1 -0
  25. package/dist/module/components/common/index.js +25 -0
  26. package/dist/module/components/common/index.js.map +1 -0
  27. package/dist/module/components/layouts/CondensedList.js +195 -0
  28. package/dist/module/components/layouts/CondensedList.js.map +1 -0
  29. package/dist/module/components/layouts/FeatureImageList.js +172 -0
  30. package/dist/module/components/layouts/FeatureImageList.js.map +1 -0
  31. package/dist/module/components/layouts/RoundImageList.js +198 -0
  32. package/dist/module/components/layouts/RoundImageList.js.map +1 -0
  33. package/dist/module/components/layouts/SquareImageList.js +185 -0
  34. package/dist/module/components/layouts/SquareImageList.js.map +1 -0
  35. package/dist/module/config/index.js +10 -0
  36. package/dist/module/config/index.js.map +1 -0
  37. package/dist/module/core.config.js +17 -0
  38. package/dist/module/core.config.js.map +1 -0
  39. package/dist/module/feature.config.js +113 -0
  40. package/dist/module/feature.config.js.map +1 -0
  41. package/dist/module/index.js +24 -0
  42. package/dist/module/index.js.map +1 -0
  43. package/dist/module/js/Colors.js +25 -0
  44. package/dist/module/js/Colors.js.map +1 -0
  45. package/dist/module/js/FieldTypes.js +123 -0
  46. package/dist/module/js/FieldTypes.js.map +1 -0
  47. package/dist/module/js/NavigationService.js +10 -0
  48. package/dist/module/js/NavigationService.js.map +1 -0
  49. package/dist/module/js/Styles.js +3 -0
  50. package/dist/module/js/Styles.js.map +1 -0
  51. package/dist/module/js/helpers.js +29 -0
  52. package/dist/module/js/helpers.js.map +1 -0
  53. package/dist/module/js/index.js +24 -0
  54. package/dist/module/js/index.js.map +1 -0
  55. package/dist/module/js/spacing.js +29 -0
  56. package/dist/module/js/spacing.js.map +1 -0
  57. package/dist/module/js/types.js +254 -0
  58. package/dist/module/js/types.js.map +1 -0
  59. package/dist/module/reducers/featureBuilderReducer.js +75 -0
  60. package/dist/module/reducers/featureBuilderReducer.js.map +1 -0
  61. package/dist/module/utils/featureSelectors.js +9 -0
  62. package/dist/module/utils/featureSelectors.js.map +1 -0
  63. package/dist/module/values.config.a.js +96 -0
  64. package/dist/module/values.config.a.js.map +1 -0
  65. package/dist/module/values.config.b.js +96 -0
  66. package/dist/module/values.config.b.js.map +1 -0
  67. package/dist/module/values.config.c.js +96 -0
  68. package/dist/module/values.config.c.js.map +1 -0
  69. package/dist/module/values.config.d.js +96 -0
  70. package/dist/module/values.config.d.js.map +1 -0
  71. package/dist/module/values.config.js +96 -0
  72. package/dist/module/values.config.js.map +1 -0
  73. package/dist/module/webapi/featureBuilderAPI.js +59 -0
  74. package/dist/module/webapi/featureBuilderAPI.js.map +1 -0
  75. package/dist/module/webapi/helper.js +4 -0
  76. package/dist/module/webapi/helper.js.map +1 -0
  77. package/dist/module/webapi/index.js +8 -0
  78. package/dist/module/webapi/index.js.map +1 -0
  79. package/package.json +62 -0
  80. package/src/actions/featureBuilderActions.js +112 -0
  81. package/src/actions/featureBuilderStringsActions.js +114 -0
  82. package/src/actions/index.js +12 -0
  83. package/src/actions/types.js +7 -0
  84. package/src/components/FeatureDetailScreen.js +817 -0
  85. package/src/components/FeatureListItem.js +198 -0
  86. package/src/components/FeatureListScreen.js +160 -0
  87. package/src/components/FieldRenderer.js +272 -0
  88. package/src/components/FileDownload.js +79 -0
  89. package/src/components/WidgetGrid.js +181 -0
  90. package/src/components/WidgetLarge.js +305 -0
  91. package/src/components/WidgetSmall.js +344 -0
  92. package/src/components/common/index.js +25 -0
  93. package/src/components/layouts/CondensedList.js +230 -0
  94. package/src/components/layouts/FeatureImageList.js +193 -0
  95. package/src/components/layouts/RoundImageList.js +219 -0
  96. package/src/components/layouts/SquareImageList.js +205 -0
  97. package/src/config/index.js +10 -0
  98. package/src/core.config.js +29 -0
  99. package/src/feature.config.js +127 -0
  100. package/src/index.js +27 -0
  101. package/src/js/Colors.js +30 -0
  102. package/src/js/FieldTypes.js +131 -0
  103. package/src/js/NavigationService.js +12 -0
  104. package/src/js/Styles.js +3 -0
  105. package/src/js/helpers.js +30 -0
  106. package/src/js/index.js +24 -0
  107. package/src/js/spacing.js +30 -0
  108. package/src/js/types.js +253 -0
  109. package/src/reducers/featureBuilderReducer.js +64 -0
  110. package/src/utils/featureSelectors.js +8 -0
  111. package/src/values.config.a.js +104 -0
  112. package/src/values.config.b.js +104 -0
  113. package/src/values.config.c.js +104 -0
  114. package/src/values.config.d.js +104 -0
  115. package/src/values.config.js +104 -0
  116. package/src/webapi/featureBuilderAPI.js +65 -0
  117. package/src/webapi/helper.js +4 -0
  118. package/src/webapi/index.js +8 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Component","Text","View","ScrollView","StyleSheet","TouchableOpacity","Image","connect","_","Icon","Services","Components","Colours","values","selectListings","selectFeatureDefinition","SPACING","getMainBrandingColourFromState","getSummaryFieldValue","WidgetSmall","constructor","props","_defineProperty","options","featureDefinition","isEmpty","Title","title","displayName","featureName","EmptyText","labels","emptyState","onLoadingChanged","initializeFeatureBuilder","dispatch","getState","loading","callback","setState","state","navigation","navigate","screens","featureList","imageField","uri","url","listing","getTitle","featureDetail","featureTitle","_listing$fields","_listing$fields2","colourBrandingMain","fields","mandatoryFields","summary","featureImage","imageSource","getImageSource","createElement","key","id","style","styles","cardContainer","onPress","onListingPress","borderContainer","source","cardImage","resizeMode","placeholderImage","name","type","size","color","TEXT_LIGHT","cardTitle","numberOfLines","cardSummary","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","listings","loadingPadding","LoadingStateWidget","height","listingsToShow","slice","widget","maxItems","horizontal","contentContainerStyle","paddingLeft","XS","paddingRight","SM","showsHorizontalScrollIndicator","map","renderListingCard","length","viewMoreCard","onPressAll","viewMoreContainer","viewMoreText","viewMoreCount","render","content","sectionContainer","sectionPadding","sectionHeading","sectionTitle","InlineButton","touchableStyle","paddingTop","textStyle","viewAll","create","backgroundColor","MD","paddingHorizontal","paddingBottom","marginBottom","flexDirection","alignContent","justifyContent","fontFamily","fontSize","marginRight","width","itemMaxWidth","borderRadius","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","padding","minHeight","itemMinWidth","alignSelf","alignItems","textAlign","TEXT_DARK","marginTop","mapStateToProps","_state$strings","user","notifications","site","notificationKey","strings","config","forwardRef"],"sources":["WidgetSmall.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport {\n\tText,\n\tView,\n\tScrollView,\n\tStyleSheet,\n\tTouchableOpacity,\n\tImage,\n} from \"react-native\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport { Icon } from \"react-native-elements\";\nimport { Services } from \"../feature.config\";\nimport { Components, Colours } from \"../core.config\";\nimport { values } from \"../values.config\";\nimport { selectListings, selectFeatureDefinition } from \"../reducers/featureBuilderReducer\";\nimport { SPACING } from \"../js/spacing\";\nimport { getMainBrandingColourFromState } from \"../js\";\nimport { getSummaryFieldValue } from \"../js/helpers\";\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 (\n\t\t\tfeatureDefinition?.title ||\n\t\t\tfeatureDefinition?.displayName\n\t\t) {\n\t\t\treturn (\n\t\t\t\tfeatureDefinition.title || featureDefinition.displayName\n\t\t\t);\n\t\t}\n\t\treturn values.featureName || \"Features\";\n\t};\n\n\tgetEmptyStateText = () => {\n\t\tconst { options } = this.props;\n\t\tif (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n\t\treturn values.labels.emptyState;\n\t};\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\t// Import actions dynamically to avoid circular dependencies\n\t\t\t\tconst { initializeFeatureBuilder } = await import(\n\t\t\t\t\t\"../actions/featureBuilderActions\"\n\t\t\t\t);\n\t\t\t\tawait initializeFeatureBuilder()(\n\t\t\t\t\tthis.props.dispatch,\n\t\t\t\t\t() => this.props.getState,\n\t\t\t\t);\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\tonPressAll = () => {\n\t\tServices.navigation.navigate(values.screens.featureList, {\n\t\t\toptions: this.props.options,\n\t\t});\n\t};\n\n\tgetImageSource = (imageField) => {\n\t\tif (!imageField) return null;\n\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\tonListingPress = (listing) => {\n\t\tconst { featureDefinition } = this.props;\n\t\tconst title = this.getTitle();\n\t\tServices.navigation.navigate(values.screens.featureDetail, {\n\t\t\tlisting: listing,\n\t\t\tfeatureDefinition: featureDefinition,\n\t\t\tfeatureTitle: title,\n\t\t});\n\t};\n\n\trenderListingCard = (listing) => {\n\t\tconst { colourBrandingMain, featureDefinition } = this.props;\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 = this.getImageSource(imageField);\n\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tkey={listing.id}\n\t\t\t\tstyle={styles.cardContainer}\n\t\t\t\tonPress={() => this.onListingPress(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\n\t\t\t\t\t\t\tsource={imageSource}\n\t\t\t\t\t\t\tstyle={styles.cardImage}\n\t\t\t\t\t\t\tresizeMode=\"cover\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.cardImage, styles.placeholderImage]}>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"image\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\tsize={24}\n\t\t\t\t\t\t\t\tcolor={Colours.TEXT_LIGHT}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t<Text style={styles.cardTitle} numberOfLines={1}>\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={1}>\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\trenderContent() {\n\t\tconst { listings } = this.props;\n\n\t\t// Don't render widget if no listings are available (and not loading)\n\t\tif (_.isEmpty(listings) && !this.state.loading) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (_.isEmpty(listings)) {\n\t\t\tif (this.state.loading) {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.loadingPadding}>\n\t\t\t\t\t\t<Components.LoadingStateWidget height={180} />\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\t// Show first 3 listings with peeking indicator\n\t\tconst listingsToShow = listings.slice(0, values.widget.maxItems);\n\n\t\treturn (\n\t\t\t<ScrollView\n\t\t\t\thorizontal\n\t\t\t\tcontentContainerStyle={{\n\t\t\t\t\tpaddingLeft: SPACING.XS + 2,\n\t\t\t\t\tpaddingRight: SPACING.SM,\n\t\t\t\t}}\n\t\t\t\tshowsHorizontalScrollIndicator={false}\n\t\t\t>\n\t\t\t\t{listingsToShow.map((listing) => this.renderListingCard(listing))}\n\t\t\t\t{listings.length > values.widget.maxItems && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tstyle={[styles.cardContainer, styles.viewMoreCard]}\n\t\t\t\t\t\tonPress={this.onPressAll}\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={[styles.borderContainer, styles.viewMoreContainer]}>\n\t\t\t\t\t\t\t<Text style={styles.viewMoreText}>View all</Text>\n\t\t\t\t\t\t\t<Text style={styles.viewMoreCount}>\n\t\t\t\t\t\t\t\t{listings.length} items\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</ScrollView>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { colourBrandingMain } = this.props;\n\n\t\tconst content = this.renderContent();\n\t\t// Don't render widget section if content is null (no features available)\n\t\tif (content === null) {\n\t\t\treturn null;\n\t\t}\n\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<View style={styles.sectionHeading}>\n\t\t\t\t\t\t<Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n\t\t\t\t\t\t<Components.InlineButton\n\t\t\t\t\t\t\tonPress={this.onPressAll}\n\t\t\t\t\t\t\tcolor={colourBrandingMain}\n\t\t\t\t\t\t\ttouchableStyle={{ paddingTop: SPACING.XS + 2 }}\n\t\t\t\t\t\t\ttextStyle={{ color: \"#fff\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{values.labels.viewAll}\n\t\t\t\t\t\t</Components.InlineButton>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t\t{content}\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\tsectionHeading: {\n\t\tmarginBottom: SPACING.XS,\n\t\tflexDirection: \"row\",\n\t\talignContent: \"flex-start\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tsectionTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 24,\n\t\tcolor: \"#000\",\n\t},\n\t// Listing card styles\n\tcardContainer: {\n\t\tmarginRight: SPACING.SM + 4,\n\t\twidth: values.widget.itemMaxWidth,\n\t},\n\tborderContainer: {\n\t\tborderRadius: SPACING.SM,\n\t\tbackgroundColor: \"#fff\",\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: 4,\n\t\tpadding: SPACING.SM,\n\t\tminHeight: values.widget.itemMinWidth,\n\t},\n\tcardImage: {\n\t\twidth: 88,\n\t\theight: 88,\n\t\tborderRadius: 44,\n\t\tbackgroundColor: \"#f0f0f0\",\n\t\talignSelf: \"center\",\n\t\tmarginBottom: SPACING.XS,\n\t},\n\tplaceholderImage: {\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tbackgroundColor: \"#f0f0f0\",\n\t},\n\tcardTitle: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: \"#000\",\n\t\ttextAlign: \"center\",\n\t\tmarginBottom: 4,\n\t},\n\tcardSummary: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 12,\n\t\tcolor: \"#666\",\n\t\ttextAlign: \"center\",\n\t},\n\t// View more card\n\tviewMoreCard: {\n\t\tjustifyContent: \"center\",\n\t},\n\tviewMoreContainer: {\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tminHeight: values.widget.itemMinWidth,\n\t},\n\tviewMoreText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK || \"#000\",\n\t},\n\tviewMoreCount: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 12,\n\t\tcolor: \"#666\",\n\t\tmarginTop: 2,\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\tWidgetSmall,\n);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import { Components } from "../../core.config";
2
+ export const InlineButton = Components.InlineButton;
3
+ export const ProfilePic = Components.ProfilePic;
4
+ export const EmptyStateMain = Components.EmptyStateMain;
5
+ export const Spinner = Components.Spinner;
6
+ export const MiddlePopup = Components.MiddlePopup;
7
+ export const BackButton = Components.BackButton;
8
+ export const UserListing = Components.UserListing;
9
+ export const GenericInput = Components.GenericInput;
10
+ export const Toggle = Components.Toggle;
11
+ export const ImageUploader = Components.ImageUploader;
12
+ export const Header = Components.Header;
13
+ export const FormCard = Components.FormCard;
14
+ export const FormCardSection = Components.FormCardSection;
15
+ export const Input = Components.Input;
16
+ export const StickyFooter = Components.StickyFooter;
17
+ export const LoadingIndicator = Components.LoadingIndicator;
18
+ export const ConfirmPopup = Components.ConfirmPopup;
19
+ export const DropDownMenu = Components.DropDownMenu;
20
+ export const DropDownItem = Components.DropDownItem;
21
+ export const PlussChat = Components.PlussChat;
22
+ export const Attachment = Components.Attachment;
23
+
24
+ // TODO: Add core components as required
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Components","InlineButton","ProfilePic","EmptyStateMain","Spinner","MiddlePopup","BackButton","UserListing","GenericInput","Toggle","ImageUploader","Header","FormCard","FormCardSection","Input","StickyFooter","LoadingIndicator","ConfirmPopup","DropDownMenu","DropDownItem","PlussChat","Attachment"],"sources":["index.js"],"sourcesContent":["import { Components } from \"../../core.config\";\n\nexport const InlineButton = Components.InlineButton;\nexport const ProfilePic = Components.ProfilePic;\nexport const EmptyStateMain = Components.EmptyStateMain;\nexport const Spinner = Components.Spinner;\nexport const MiddlePopup = Components.MiddlePopup;\nexport const BackButton = Components.BackButton;\nexport const UserListing = Components.UserListing;\nexport const GenericInput = Components.GenericInput;\nexport const Toggle = Components.Toggle;\nexport const ImageUploader = Components.ImageUploader;\nexport const Header = Components.Header;\nexport const FormCard = Components.FormCard;\nexport const FormCardSection = Components.FormCardSection;\nexport const Input = Components.Input;\nexport const StickyFooter = Components.StickyFooter;\nexport const LoadingIndicator = Components.LoadingIndicator;\nexport const ConfirmPopup = Components.ConfirmPopup;\nexport const DropDownMenu = Components.DropDownMenu;\nexport const DropDownItem = Components.DropDownItem;\nexport const PlussChat = Components.PlussChat;\nexport const Attachment = Components.Attachment;\n\n// TODO: Add core components as required\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,mBAAmB;AAE9C,OAAO,MAAMC,YAAY,GAAGD,UAAU,CAACC,YAAY;AACnD,OAAO,MAAMC,UAAU,GAAGF,UAAU,CAACE,UAAU;AAC/C,OAAO,MAAMC,cAAc,GAAGH,UAAU,CAACG,cAAc;AACvD,OAAO,MAAMC,OAAO,GAAGJ,UAAU,CAACI,OAAO;AACzC,OAAO,MAAMC,WAAW,GAAGL,UAAU,CAACK,WAAW;AACjD,OAAO,MAAMC,UAAU,GAAGN,UAAU,CAACM,UAAU;AAC/C,OAAO,MAAMC,WAAW,GAAGP,UAAU,CAACO,WAAW;AACjD,OAAO,MAAMC,YAAY,GAAGR,UAAU,CAACQ,YAAY;AACnD,OAAO,MAAMC,MAAM,GAAGT,UAAU,CAACS,MAAM;AACvC,OAAO,MAAMC,aAAa,GAAGV,UAAU,CAACU,aAAa;AACrD,OAAO,MAAMC,MAAM,GAAGX,UAAU,CAACW,MAAM;AACvC,OAAO,MAAMC,QAAQ,GAAGZ,UAAU,CAACY,QAAQ;AAC3C,OAAO,MAAMC,eAAe,GAAGb,UAAU,CAACa,eAAe;AACzD,OAAO,MAAMC,KAAK,GAAGd,UAAU,CAACc,KAAK;AACrC,OAAO,MAAMC,YAAY,GAAGf,UAAU,CAACe,YAAY;AACnD,OAAO,MAAMC,gBAAgB,GAAGhB,UAAU,CAACgB,gBAAgB;AAC3D,OAAO,MAAMC,YAAY,GAAGjB,UAAU,CAACiB,YAAY;AACnD,OAAO,MAAMC,YAAY,GAAGlB,UAAU,CAACkB,YAAY;AACnD,OAAO,MAAMC,YAAY,GAAGnB,UAAU,CAACmB,YAAY;AACnD,OAAO,MAAMC,SAAS,GAAGpB,UAAU,CAACoB,SAAS;AAC7C,OAAO,MAAMC,UAAU,GAAGrB,UAAU,CAACqB,UAAU;;AAE/C","ignoreList":[]}
@@ -0,0 +1,195 @@
1
+ import React from "react";
2
+ import { View, StyleSheet, FlatList, Text, TouchableOpacity, Image } from "react-native";
3
+ import { Icon } from "react-native-elements";
4
+ import { Components, Colours, Helper } from "../../core.config";
5
+ import { values } from "../../values.config";
6
+ import { getSummaryFieldValue } from "../../js/helpers";
7
+ const CondensedListItem = ({
8
+ listing,
9
+ onItemPress,
10
+ colourBrandingMain,
11
+ featureDefinition
12
+ }) => {
13
+ var _listing$fields, _listing$fields2;
14
+ const getImageSource = imageField => {
15
+ if (!imageField) return null;
16
+ if (typeof imageField === "string") {
17
+ return {
18
+ uri: imageField
19
+ };
20
+ }
21
+ if (typeof imageField === "object" && imageField.uri) {
22
+ return imageField;
23
+ }
24
+ if (typeof imageField === "object" && imageField.url) {
25
+ return {
26
+ uri: imageField.url
27
+ };
28
+ }
29
+ return null;
30
+ };
31
+ const onPress = () => {
32
+ if (onItemPress) {
33
+ onItemPress(listing);
34
+ }
35
+ };
36
+
37
+ // Get data from feature builder fields
38
+ const title = ((_listing$fields = listing.fields) === null || _listing$fields === void 0 ? void 0 : _listing$fields[values.mandatoryFields.title]) || "Untitled";
39
+ const summary = getSummaryFieldValue(listing, featureDefinition);
40
+ const imageField = (_listing$fields2 = listing.fields) === null || _listing$fields2 === void 0 ? void 0 : _listing$fields2[values.mandatoryFields.featureImage];
41
+ const imageSource = getImageSource(imageField);
42
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
43
+ activeOpacity: 0.9,
44
+ onPress: onPress
45
+ }, /*#__PURE__*/React.createElement(View, {
46
+ style: styles.listItem
47
+ }, /*#__PURE__*/React.createElement(View, {
48
+ style: styles.avatarContainer
49
+ }, imageSource ? /*#__PURE__*/React.createElement(Image, {
50
+ source: imageSource,
51
+ style: styles.avatar,
52
+ resizeMode: "cover"
53
+ }) : /*#__PURE__*/React.createElement(View, {
54
+ style: [styles.avatar, styles.placeholderAvatar]
55
+ }, /*#__PURE__*/React.createElement(Icon, {
56
+ name: "image",
57
+ type: "font-awesome",
58
+ size: 16,
59
+ color: Colours.TEXT_LIGHT
60
+ }))), /*#__PURE__*/React.createElement(View, {
61
+ style: styles.textContainer
62
+ }, /*#__PURE__*/React.createElement(Text, {
63
+ style: styles.titleText,
64
+ numberOfLines: 1
65
+ }, title), summary && /*#__PURE__*/React.createElement(Text, {
66
+ style: styles.descriptionText,
67
+ numberOfLines: 1
68
+ }, summary)), /*#__PURE__*/React.createElement(View, {
69
+ style: styles.chevronContainer
70
+ }, /*#__PURE__*/React.createElement(Icon, {
71
+ name: "chevron-right",
72
+ type: "font-awesome",
73
+ size: 14,
74
+ color: Colours.TEXT_LIGHT
75
+ }))), /*#__PURE__*/React.createElement(View, {
76
+ style: styles.divider
77
+ }));
78
+ };
79
+ const getEmptyStateMessage = title => {
80
+ const featureName = title || "Feature";
81
+ return `${featureName} listings will appear here once they're available.\nCome back soon to see what's new!`;
82
+ };
83
+ const CondensedList = ({
84
+ listings,
85
+ onItemPress,
86
+ colourBrandingMain,
87
+ refreshing,
88
+ onRefresh,
89
+ featureDefinition,
90
+ title
91
+ }) => {
92
+ const renderListingItem = ({
93
+ item: listing
94
+ }) => {
95
+ // Get feature definition for this listing
96
+ const listingFeatureDefinition = featureDefinition;
97
+ return /*#__PURE__*/React.createElement(CondensedListItem, {
98
+ listing: listing,
99
+ onItemPress: onItemPress,
100
+ colourBrandingMain: colourBrandingMain,
101
+ featureDefinition: listingFeatureDefinition
102
+ });
103
+ };
104
+ if (!listings || listings.length === 0) {
105
+ return /*#__PURE__*/React.createElement(View, {
106
+ style: styles.emptyContainer
107
+ }, /*#__PURE__*/React.createElement(Components.EmptyStateWidget, {
108
+ title: getEmptyStateMessage(title),
109
+ height: 120
110
+ }));
111
+ }
112
+ if (onRefresh) {
113
+ return /*#__PURE__*/React.createElement(View, {
114
+ style: styles.container
115
+ }, /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
116
+ visible: refreshing
117
+ }), /*#__PURE__*/React.createElement(FlatList, {
118
+ data: listings,
119
+ keyExtractor: item => item.id,
120
+ renderItem: renderListingItem,
121
+ style: styles.scrollContainer,
122
+ showsVerticalScrollIndicator: false
123
+ }));
124
+ }
125
+ return /*#__PURE__*/React.createElement(View, {
126
+ style: styles.container
127
+ }, /*#__PURE__*/React.createElement(FlatList, {
128
+ data: listings,
129
+ keyExtractor: item => item.id,
130
+ renderItem: renderListingItem,
131
+ showsVerticalScrollIndicator: false
132
+ }));
133
+ };
134
+ const styles = StyleSheet.create({
135
+ container: {
136
+ flex: 1,
137
+ backgroundColor: Colours.BACKGROUND_WHITE || "#fff"
138
+ },
139
+ scrollContainer: {
140
+ flex: 1
141
+ },
142
+ emptyContainer: {
143
+ paddingVertical: 16
144
+ },
145
+ listItem: {
146
+ flexDirection: "row",
147
+ alignItems: "center",
148
+ paddingHorizontal: 16,
149
+ paddingVertical: 8,
150
+ backgroundColor: Colours.BACKGROUND_WHITE || "#fff"
151
+ },
152
+ avatarContainer: {
153
+ width: 40,
154
+ height: 40,
155
+ borderRadius: 20,
156
+ marginRight: 12
157
+ },
158
+ avatar: {
159
+ width: 40,
160
+ height: 40,
161
+ borderRadius: 20,
162
+ backgroundColor: Colours.BACKGROUND_LIGHT
163
+ },
164
+ placeholderAvatar: {
165
+ backgroundColor: Colours.BACKGROUND_LIGHT,
166
+ justifyContent: "center",
167
+ alignItems: "center"
168
+ },
169
+ textContainer: {
170
+ flex: 1,
171
+ justifyContent: "center"
172
+ },
173
+ titleText: {
174
+ fontFamily: "sf-semibold",
175
+ fontSize: 16,
176
+ color: Colours.TEXT_DARK,
177
+ marginBottom: 2
178
+ },
179
+ descriptionText: {
180
+ fontFamily: "sf-regular",
181
+ fontSize: 14,
182
+ color: Colours.TEXT_LIGHT,
183
+ lineHeight: 18
184
+ },
185
+ chevronContainer: {
186
+ paddingLeft: 8
187
+ },
188
+ divider: {
189
+ height: 1,
190
+ backgroundColor: Colours.LINE_GREY || "#e0e0e0",
191
+ marginLeft: 0 // Full width border
192
+ }
193
+ });
194
+ export default CondensedList;
195
+ //# sourceMappingURL=CondensedList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","FlatList","Text","TouchableOpacity","Image","Icon","Components","Colours","Helper","values","getSummaryFieldValue","CondensedListItem","listing","onItemPress","colourBrandingMain","featureDefinition","_listing$fields","_listing$fields2","getImageSource","imageField","uri","url","onPress","title","fields","mandatoryFields","summary","featureImage","imageSource","createElement","activeOpacity","style","styles","listItem","avatarContainer","source","avatar","resizeMode","placeholderAvatar","name","type","size","color","TEXT_LIGHT","textContainer","titleText","numberOfLines","descriptionText","chevronContainer","divider","getEmptyStateMessage","featureName","CondensedList","listings","refreshing","onRefresh","renderListingItem","item","listingFeatureDefinition","length","emptyContainer","EmptyStateWidget","height","container","LoadingIndicator","visible","data","keyExtractor","id","renderItem","scrollContainer","showsVerticalScrollIndicator","create","flex","backgroundColor","BACKGROUND_WHITE","paddingVertical","flexDirection","alignItems","paddingHorizontal","width","borderRadius","marginRight","BACKGROUND_LIGHT","justifyContent","fontFamily","fontSize","TEXT_DARK","marginBottom","lineHeight","paddingLeft","LINE_GREY","marginLeft"],"sources":["CondensedList.js"],"sourcesContent":["import React from \"react\";\nimport {\n\tView,\n\tStyleSheet,\n\tFlatList,\n\tText,\n\tTouchableOpacity,\n\tImage,\n} from \"react-native\";\nimport { Icon } from \"react-native-elements\";\nimport { Components, Colours, Helper } from \"../../core.config\";\nimport { values } from \"../../values.config\";\nimport { getSummaryFieldValue } from \"../../js/helpers\";\n\nconst CondensedListItem = ({\n\tlisting,\n\tonItemPress,\n\tcolourBrandingMain,\n\tfeatureDefinition,\n}) => {\n\tconst getImageSource = (imageField) => {\n\t\tif (!imageField) return null;\n\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 onPress = () => {\n\t\tif (onItemPress) {\n\t\t\tonItemPress(listing);\n\t\t}\n\t};\n\n\t// Get data from feature builder fields\n\tconst title = listing.fields?.[values.mandatoryFields.title] || \"Untitled\";\n\tconst summary = getSummaryFieldValue(listing, featureDefinition);\n\tconst imageField = listing.fields?.[values.mandatoryFields.featureImage];\n\tconst imageSource = getImageSource(imageField);\n\n\treturn (\n\t\t<TouchableOpacity activeOpacity={0.9} onPress={onPress}>\n\t\t\t<View style={styles.listItem}>\n\t\t\t\t{/* Small circular avatar image */}\n\t\t\t\t<View style={styles.avatarContainer}>\n\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tsource={imageSource}\n\t\t\t\t\t\t\tstyle={styles.avatar}\n\t\t\t\t\t\t\tresizeMode=\"cover\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<View style={[styles.avatar, styles.placeholderAvatar]}>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"image\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t\tcolor={Colours.TEXT_LIGHT}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\n\t\t\t\t{/* Text content */}\n\t\t\t\t<View style={styles.textContainer}>\n\t\t\t\t\t<Text style={styles.titleText} numberOfLines={1}>\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.descriptionText} numberOfLines={1}>\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\n\t\t\t\t{/* Chevron icon */}\n\t\t\t\t<View style={styles.chevronContainer}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"chevron-right\"\n\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\tsize={14}\n\t\t\t\t\t\tcolor={Colours.TEXT_LIGHT}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t</View>\n\n\t\t\t{/* Divider line */}\n\t\t\t<View style={styles.divider} />\n\t\t</TouchableOpacity>\n\t);\n};\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 CondensedList = ({\n\tlistings,\n\tonItemPress,\n\tcolourBrandingMain,\n\trefreshing,\n\tonRefresh,\n\tfeatureDefinition,\n\ttitle,\n}) => {\n\tconst renderListingItem = ({ item: listing }) => {\n\t\t// Get feature definition for this listing\n\t\tconst listingFeatureDefinition = featureDefinition;\n\n\t\treturn (\n\t\t\t<CondensedListItem\n\t\t\t\tlisting={listing}\n\t\t\t\tonItemPress={onItemPress}\n\t\t\t\tcolourBrandingMain={colourBrandingMain}\n\t\t\t\tfeatureDefinition={listingFeatureDefinition}\n\t\t\t/>\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\tstyle={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<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\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: Colours.BACKGROUND_WHITE || \"#fff\",\n\t},\n\tscrollContainer: {\n\t\tflex: 1,\n\t},\n\temptyContainer: {\n\t\tpaddingVertical: 16,\n\t},\n\tlistItem: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 8,\n\t\tbackgroundColor: Colours.BACKGROUND_WHITE || \"#fff\",\n\t},\n\tavatarContainer: {\n\t\twidth: 40,\n\t\theight: 40,\n\t\tborderRadius: 20,\n\t\tmarginRight: 12,\n\t},\n\tavatar: {\n\t\twidth: 40,\n\t\theight: 40,\n\t\tborderRadius: 20,\n\t\tbackgroundColor: Colours.BACKGROUND_LIGHT,\n\t},\n\tplaceholderAvatar: {\n\t\tbackgroundColor: Colours.BACKGROUND_LIGHT,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\ttextContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t},\n\ttitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 2,\n\t},\n\tdescriptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tlineHeight: 18,\n\t},\n\tchevronContainer: {\n\t\tpaddingLeft: 8,\n\t},\n\tdivider: {\n\t\theight: 1,\n\t\tbackgroundColor: Colours.LINE_GREY || \"#e0e0e0\",\n\t\tmarginLeft: 0, // Full width border\n\t},\n});\n\nexport default CondensedList;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,172 @@
1
+ import React, { useState, useRef, useEffect } from "react";
2
+ import { View, Text, StyleSheet, FlatList, TouchableOpacity, Image, Dimensions, Animated } from "react-native";
3
+ import { Icon } from "react-native-elements";
4
+ import { Components, Colours } from "../../core.config";
5
+ import { values } from "../../values.config";
6
+ import { getSummaryFieldValue } from "../../js/helpers";
7
+ const {
8
+ width: screenWidth
9
+ } = Dimensions.get("window");
10
+ const CARD_WIDTH = screenWidth - 32; // 16px padding on each side
11
+ const IMAGE_HEIGHT = CARD_WIDTH * 9 / 16; // 16:9 aspect ratio
12
+
13
+ const getEmptyStateMessage = title => {
14
+ const featureName = title || "Feature";
15
+ return `${featureName} listings will appear here once they're available.\nCome back soon to see what's new!`;
16
+ };
17
+ const FeatureImageList = ({
18
+ listings,
19
+ onItemPress,
20
+ colourBrandingMain,
21
+ refreshing,
22
+ onRefresh,
23
+ featureDefinition,
24
+ title
25
+ }) => {
26
+ const getImageSource = imageField => {
27
+ if (!imageField) return null;
28
+
29
+ // Handle different image field formats
30
+ if (typeof imageField === "string") {
31
+ return {
32
+ uri: imageField
33
+ };
34
+ }
35
+ if (typeof imageField === "object" && imageField.uri) {
36
+ return imageField;
37
+ }
38
+ if (typeof imageField === "object" && imageField.url) {
39
+ return {
40
+ uri: imageField.url
41
+ };
42
+ }
43
+ return null;
44
+ };
45
+ const renderListingItem = ({
46
+ item: listing
47
+ }) => {
48
+ var _listing$fields, _listing$fields2;
49
+ const title = ((_listing$fields = listing.fields) === null || _listing$fields === void 0 ? void 0 : _listing$fields[values.mandatoryFields.title]) || "Untitled";
50
+ const summary = getSummaryFieldValue(listing, featureDefinition);
51
+ const imageField = (_listing$fields2 = listing.fields) === null || _listing$fields2 === void 0 ? void 0 : _listing$fields2[values.mandatoryFields.featureImage];
52
+ const imageSource = getImageSource(imageField);
53
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
54
+ style: styles.cardContainer,
55
+ onPress: () => onItemPress && onItemPress(listing)
56
+ }, /*#__PURE__*/React.createElement(View, {
57
+ style: styles.imageContainer
58
+ }, imageSource ? /*#__PURE__*/React.createElement(Image, {
59
+ source: imageSource,
60
+ style: styles.featureImage
61
+ }) : /*#__PURE__*/React.createElement(View, {
62
+ style: [styles.featureImage, styles.placeholderImage]
63
+ }, /*#__PURE__*/React.createElement(Text, {
64
+ style: styles.placeholderText
65
+ }, "No Image"))), /*#__PURE__*/React.createElement(View, {
66
+ style: styles.contentContainer
67
+ }, /*#__PURE__*/React.createElement(Text, {
68
+ style: styles.cardTitle,
69
+ numberOfLines: 2
70
+ }, title), summary && /*#__PURE__*/React.createElement(Text, {
71
+ style: styles.cardSummary,
72
+ numberOfLines: 2
73
+ }, summary)));
74
+ };
75
+ if (!listings || listings.length === 0) {
76
+ return /*#__PURE__*/React.createElement(View, {
77
+ style: styles.emptyContainer
78
+ }, /*#__PURE__*/React.createElement(Components.EmptyStateWidget, {
79
+ title: getEmptyStateMessage(title),
80
+ height: 120
81
+ }));
82
+ }
83
+ if (onRefresh) {
84
+ return /*#__PURE__*/React.createElement(View, {
85
+ style: styles.container
86
+ }, /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
87
+ visible: refreshing
88
+ }), /*#__PURE__*/React.createElement(FlatList, {
89
+ data: listings,
90
+ keyExtractor: item => item.id,
91
+ renderItem: renderListingItem,
92
+ contentContainerStyle: styles.listContainer,
93
+ showsVerticalScrollIndicator: false
94
+ }));
95
+ }
96
+ return /*#__PURE__*/React.createElement(View, {
97
+ style: styles.container
98
+ }, /*#__PURE__*/React.createElement(FlatList, {
99
+ data: listings,
100
+ keyExtractor: item => item.id,
101
+ renderItem: renderListingItem,
102
+ contentContainerStyle: styles.listContainer,
103
+ showsVerticalScrollIndicator: false
104
+ }));
105
+ };
106
+ const styles = StyleSheet.create({
107
+ container: {
108
+ flex: 1,
109
+ backgroundColor: "#f5f5f5"
110
+ },
111
+ listContainer: {
112
+ padding: 16
113
+ },
114
+ cardContainer: {
115
+ backgroundColor: "#fff",
116
+ borderRadius: 8,
117
+ marginBottom: 16,
118
+ shadowColor: "#000",
119
+ shadowOffset: {
120
+ width: 0,
121
+ height: 2
122
+ },
123
+ shadowOpacity: 0.1,
124
+ shadowRadius: 4,
125
+ elevation: 3,
126
+ overflow: "hidden"
127
+ },
128
+ imageContainer: {
129
+ width: CARD_WIDTH,
130
+ height: IMAGE_HEIGHT
131
+ },
132
+ featureImage: {
133
+ width: "100%",
134
+ height: "100%",
135
+ backgroundColor: "#f0f0f0"
136
+ },
137
+ placeholderImage: {
138
+ justifyContent: "center",
139
+ alignItems: "center",
140
+ backgroundColor: "#e0e0e0"
141
+ },
142
+ placeholderText: {
143
+ fontSize: 16,
144
+ color: "#999",
145
+ fontFamily: "sf-medium"
146
+ },
147
+ contentContainer: {
148
+ padding: 16
149
+ },
150
+ cardTitle: {
151
+ fontSize: 18,
152
+ fontWeight: "600",
153
+ fontFamily: "sf-semibold",
154
+ color: "#333",
155
+ marginBottom: 8,
156
+ lineHeight: 24
157
+ },
158
+ cardSummary: {
159
+ fontSize: 14,
160
+ fontFamily: "sf-regular",
161
+ color: "#666",
162
+ lineHeight: 18
163
+ },
164
+ emptyContainer: {
165
+ flex: 1,
166
+ justifyContent: "center",
167
+ alignItems: "center",
168
+ paddingVertical: 32
169
+ }
170
+ });
171
+ export default FeatureImageList;
172
+ //# sourceMappingURL=FeatureImageList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useRef","useEffect","View","Text","StyleSheet","FlatList","TouchableOpacity","Image","Dimensions","Animated","Icon","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","paddingVertical"],"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 { Icon } from \"react-native-elements\";\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\tpaddingVertical: 32,\n\t},\n});\n\nexport default FeatureImageList;\n"],"mappings":"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","ignoreList":[]}