@plusscommunities/pluss-feature-builder-app-b 8.0.11-beta.7 → 8.0.14-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/components/FeatureDetailScreen.js +78 -77
- package/dist/module/components/FeatureDetailScreen.js.map +1 -1
- package/dist/module/components/FeatureListItem.js +2 -2
- package/dist/module/components/FeatureListItem.js.map +1 -1
- package/dist/module/components/FeatureListScreen.js +2 -1
- package/dist/module/components/FeatureListScreen.js.map +1 -1
- package/dist/module/components/FieldRenderer.js +2 -1
- package/dist/module/components/FieldRenderer.js.map +1 -1
- package/dist/module/components/FileDownload.js +2 -2
- package/dist/module/components/FileDownload.js.map +1 -1
- package/dist/module/components/WidgetGrid.js +2 -1
- package/dist/module/components/WidgetGrid.js.map +1 -1
- package/dist/module/components/WidgetLarge.js +2 -1
- package/dist/module/components/WidgetLarge.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +2 -1
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/components/common/index.js +1 -1
- package/dist/module/components/common/index.js.map +1 -1
- package/dist/module/components/layouts/CondensedList.js +2 -1
- package/dist/module/components/layouts/CondensedList.js.map +1 -1
- package/dist/module/components/layouts/FeatureImageList.js +2 -1
- package/dist/module/components/layouts/FeatureImageList.js.map +1 -1
- package/dist/module/components/layouts/RoundImageList.js +2 -1
- package/dist/module/components/layouts/RoundImageList.js.map +1 -1
- package/dist/module/components/layouts/SquareImageList.js +2 -1
- package/dist/module/components/layouts/SquareImageList.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FeatureDetailScreen.js +797 -698
- package/src/components/FeatureListItem.js +183 -183
- package/src/components/FeatureListScreen.js +2 -1
- package/src/components/FieldRenderer.js +229 -234
- package/src/components/FileDownload.js +55 -55
- package/src/components/WidgetGrid.js +2 -1
- package/src/components/WidgetLarge.js +158 -157
- package/src/components/WidgetSmall.js +2 -1
- package/src/components/common/index.js +1 -1
- package/src/components/layouts/CondensedList.js +205 -205
- package/src/components/layouts/FeatureImageList.js +162 -162
- package/src/components/layouts/RoundImageList.js +192 -192
- package/src/components/layouts/SquareImageList.js +179 -179
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
|
-
import React, { Component } from
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
|
|
4
|
+
import React, { Component } from "react";
|
|
5
|
+
import { Text } from "@plusscommunities/pluss-core-app/components";
|
|
6
|
+
import { SPACING } from "../js/spacing";
|
|
7
|
+
import { Platform, View, ScrollView, Animated, Dimensions, StatusBar, TouchableOpacity, Linking, StyleSheet, KeyboardAvoidingView, Image } from "react-native";
|
|
8
|
+
import { FontAwesome } from "./common";
|
|
9
|
+
import { connect } from "react-redux";
|
|
10
|
+
import _ from "lodash";
|
|
11
|
+
import { LinearGradient } from "expo-linear-gradient";
|
|
12
|
+
import { Services } from "../feature.config";
|
|
13
|
+
import { Components, Colours, COLOUR_TRANSPARENT, TEXT_DARK } from "../core.config";
|
|
14
|
+
import { TEXT_MID, LINEGREY } from "../js/Colors";
|
|
15
|
+
import FileDownload from "./FileDownload";
|
|
16
|
+
import { values } from "../values.config";
|
|
17
|
+
import { selectFeatureDefinition } from "../utils/selectors";
|
|
18
|
+
import Constants from "expo-constants";
|
|
19
|
+
import { InlineButton } from "./common";
|
|
20
|
+
import { FIELD_TYPES } from "../js/FieldTypes";
|
|
21
|
+
const SCREEN_HEIGHT = Dimensions.get("window").height;
|
|
21
22
|
const CARD_IMAGE_HEIGHT = SCREEN_HEIGHT * 0.3;
|
|
22
|
-
const SCREEN_WIDTH = Dimensions.get(
|
|
23
|
+
const SCREEN_WIDTH = Dimensions.get("window").width;
|
|
23
24
|
|
|
24
25
|
// StatusBarHeight function copied to avoid import from outside extension
|
|
25
26
|
const StatusBarHeight = size => {
|
|
26
27
|
return getStatusBarHeight() + size;
|
|
27
28
|
};
|
|
28
29
|
const getStatusBarHeight = () => {
|
|
29
|
-
return Platform.OS ===
|
|
30
|
+
return Platform.OS === "ios" ? Constants.statusBarHeight : StatusBar.currentHeight;
|
|
30
31
|
};
|
|
31
32
|
class FeatureDetailScreen extends Component {
|
|
32
33
|
constructor(props) {
|
|
@@ -101,13 +102,13 @@ class FeatureDetailScreen extends Component {
|
|
|
101
102
|
*/
|
|
102
103
|
_defineProperty(this, "normalizeImageField", imageField => {
|
|
103
104
|
if (!imageField) return null;
|
|
104
|
-
if (typeof imageField ===
|
|
105
|
+
if (typeof imageField === "string") {
|
|
105
106
|
return {
|
|
106
107
|
uri: imageField,
|
|
107
108
|
url: imageField
|
|
108
109
|
};
|
|
109
110
|
}
|
|
110
|
-
if (typeof imageField ===
|
|
111
|
+
if (typeof imageField === "object") {
|
|
111
112
|
if (imageField.uri) {
|
|
112
113
|
return {
|
|
113
114
|
uri: imageField.uri,
|
|
@@ -187,7 +188,7 @@ class FeatureDetailScreen extends Component {
|
|
|
187
188
|
}
|
|
188
189
|
}
|
|
189
190
|
componentWillUnmount() {
|
|
190
|
-
if (Platform.OS ===
|
|
191
|
+
if (Platform.OS === "ios") StatusBar.setBarStyle("dark-content");
|
|
191
192
|
}
|
|
192
193
|
/**
|
|
193
194
|
* Process fields: filter out mandatory fields and sort by order
|
|
@@ -241,7 +242,7 @@ class FeatureDetailScreen extends Component {
|
|
|
241
242
|
// Defensive: ensure fieldDef is always an object
|
|
242
243
|
const safeFieldDef = fieldDef || {};
|
|
243
244
|
const type = safeFieldDef.type || FIELD_TYPES.TEXT;
|
|
244
|
-
const label = safeFieldDef.label || safeFieldDef.id ||
|
|
245
|
+
const label = safeFieldDef.label || safeFieldDef.id || "Unknown Field";
|
|
245
246
|
switch (type) {
|
|
246
247
|
case FIELD_TYPES.CTA:
|
|
247
248
|
{
|
|
@@ -306,7 +307,7 @@ class FeatureDetailScreen extends Component {
|
|
|
306
307
|
case FIELD_TYPES.IMAGE:
|
|
307
308
|
{
|
|
308
309
|
// Render secondary images inline with click handler
|
|
309
|
-
const imgUri = (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.url) || (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.uri) || (typeof fieldValue ===
|
|
310
|
+
const imgUri = (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.url) || (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.uri) || (typeof fieldValue === "string" ? fieldValue : null);
|
|
310
311
|
if (!imgUri) return null;
|
|
311
312
|
|
|
312
313
|
// Find this image's index for popup
|
|
@@ -338,12 +339,12 @@ class FeatureDetailScreen extends Component {
|
|
|
338
339
|
}
|
|
339
340
|
}, /*#__PURE__*/React.createElement(View, {
|
|
340
341
|
style: {
|
|
341
|
-
flexDirection:
|
|
342
|
-
flexWrap:
|
|
342
|
+
flexDirection: "row",
|
|
343
|
+
flexWrap: "wrap",
|
|
343
344
|
marginHorizontal: -4
|
|
344
345
|
}
|
|
345
346
|
}, fieldValue.map((imgItem, index) => {
|
|
346
|
-
const imgUri = (imgItem === null || imgItem === void 0 ? void 0 : imgItem.url) || (imgItem === null || imgItem === void 0 ? void 0 : imgItem.uri) || (typeof imgItem ===
|
|
347
|
+
const imgUri = (imgItem === null || imgItem === void 0 ? void 0 : imgItem.url) || (imgItem === null || imgItem === void 0 ? void 0 : imgItem.uri) || (typeof imgItem === "string" ? imgItem : null);
|
|
347
348
|
if (!imgUri) return null;
|
|
348
349
|
|
|
349
350
|
// Find global index for the popup
|
|
@@ -356,7 +357,7 @@ class FeatureDetailScreen extends Component {
|
|
|
356
357
|
onPress: () => this.openImagePopup(globalIndex !== -1 ? globalIndex : 0),
|
|
357
358
|
activeOpacity: 0.8,
|
|
358
359
|
style: {
|
|
359
|
-
width:
|
|
360
|
+
width: "50%",
|
|
360
361
|
padding: 4
|
|
361
362
|
} // 2 column grid
|
|
362
363
|
}, /*#__PURE__*/React.createElement(Image, {
|
|
@@ -383,7 +384,7 @@ class FeatureDetailScreen extends Component {
|
|
|
383
384
|
// Default text fallback
|
|
384
385
|
return /*#__PURE__*/React.createElement(Text, {
|
|
385
386
|
style: styles.bodyText
|
|
386
|
-
}, typeof fieldValue ===
|
|
387
|
+
}, typeof fieldValue === "object" ? JSON.stringify(fieldValue) : fieldValue);
|
|
387
388
|
}
|
|
388
389
|
}
|
|
389
390
|
|
|
@@ -415,7 +416,7 @@ class FeatureDetailScreen extends Component {
|
|
|
415
416
|
}
|
|
416
417
|
|
|
417
418
|
// Parse the image field value
|
|
418
|
-
if (typeof imageField ===
|
|
419
|
+
if (typeof imageField === "string") {
|
|
419
420
|
return imageField;
|
|
420
421
|
}
|
|
421
422
|
return (imageField === null || imageField === void 0 ? void 0 : imageField.uri) || (imageField === null || imageField === void 0 ? void 0 : imageField.url) || null;
|
|
@@ -443,11 +444,11 @@ class FeatureDetailScreen extends Component {
|
|
|
443
444
|
}, "Item not found"));
|
|
444
445
|
}
|
|
445
446
|
return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
|
|
446
|
-
behavior: Platform.OS ===
|
|
447
|
+
behavior: Platform.OS === "ios" && "padding",
|
|
447
448
|
style: {
|
|
448
|
-
position:
|
|
449
|
+
position: "relative",
|
|
449
450
|
flex: 1,
|
|
450
|
-
backgroundColor: Colours.BACKGROUND_WHITE ||
|
|
451
|
+
backgroundColor: Colours.BACKGROUND_WHITE || "#fff"
|
|
451
452
|
}
|
|
452
453
|
}, /*#__PURE__*/React.createElement(View, {
|
|
453
454
|
style: styles.backButton
|
|
@@ -460,7 +461,7 @@ class FeatureDetailScreen extends Component {
|
|
|
460
461
|
}
|
|
461
462
|
}))), /*#__PURE__*/React.createElement(ScrollView, {
|
|
462
463
|
style: {
|
|
463
|
-
backgroundColor: Colours.BACKGROUND_WHITE ||
|
|
464
|
+
backgroundColor: Colours.BACKGROUND_WHITE || "#fff"
|
|
464
465
|
},
|
|
465
466
|
keyboardShouldPersistTaps: "always",
|
|
466
467
|
ref: ref => {
|
|
@@ -482,7 +483,7 @@ class FeatureDetailScreen extends Component {
|
|
|
482
483
|
}]
|
|
483
484
|
}), /*#__PURE__*/React.createElement(LinearGradient, {
|
|
484
485
|
style: styles.gradientOverlay,
|
|
485
|
-
colors: [
|
|
486
|
+
colors: ["rgba(0,0,0,0.7)", COLOUR_TRANSPARENT],
|
|
486
487
|
start: {
|
|
487
488
|
x: 0,
|
|
488
489
|
y: 0
|
|
@@ -514,7 +515,7 @@ class FeatureDetailScreen extends Component {
|
|
|
514
515
|
}
|
|
515
516
|
const styles = StyleSheet.create({
|
|
516
517
|
backButton: {
|
|
517
|
-
position:
|
|
518
|
+
position: "absolute",
|
|
518
519
|
left: 0,
|
|
519
520
|
top: 0,
|
|
520
521
|
zIndex: 10,
|
|
@@ -522,20 +523,20 @@ const styles = StyleSheet.create({
|
|
|
522
523
|
height: StatusBarHeight(70)
|
|
523
524
|
},
|
|
524
525
|
headerContent: {
|
|
525
|
-
alignSelf:
|
|
526
|
-
flexDirection:
|
|
526
|
+
alignSelf: "stretch",
|
|
527
|
+
flexDirection: "row",
|
|
527
528
|
flex: 1,
|
|
528
529
|
paddingTop: StatusBarHeight(12)
|
|
529
530
|
},
|
|
530
531
|
image: {
|
|
531
|
-
backgroundColor: Colours.BACKGROUND_WHITE ||
|
|
532
|
-
position:
|
|
532
|
+
backgroundColor: Colours.BACKGROUND_WHITE || "#fff",
|
|
533
|
+
position: "relative",
|
|
533
534
|
width: undefined,
|
|
534
535
|
height: undefined,
|
|
535
536
|
flex: 1
|
|
536
537
|
},
|
|
537
538
|
mainHeader: {
|
|
538
|
-
position:
|
|
539
|
+
position: "relative",
|
|
539
540
|
height: CARD_IMAGE_HEIGHT,
|
|
540
541
|
width: SCREEN_WIDTH
|
|
541
542
|
},
|
|
@@ -549,88 +550,88 @@ const styles = StyleSheet.create({
|
|
|
549
550
|
},
|
|
550
551
|
// Field labels/captions
|
|
551
552
|
fieldLabel: {
|
|
552
|
-
fontFamily:
|
|
553
|
+
fontFamily: "sf-regular",
|
|
553
554
|
fontSize: 11,
|
|
554
555
|
color: TEXT_MID,
|
|
555
556
|
marginBottom: 6,
|
|
556
|
-
textTransform:
|
|
557
|
+
textTransform: "uppercase",
|
|
557
558
|
letterSpacing: 1.2,
|
|
558
|
-
alignSelf:
|
|
559
|
-
textAlign:
|
|
559
|
+
alignSelf: "center",
|
|
560
|
+
textAlign: "center",
|
|
560
561
|
paddingHorizontal: 8,
|
|
561
562
|
paddingVertical: 4,
|
|
562
|
-
backgroundColor:
|
|
563
|
+
backgroundColor: "rgba(0,0,0,0.03)",
|
|
563
564
|
borderRadius: 12,
|
|
564
|
-
maxWidth:
|
|
565
|
+
maxWidth: "80%"
|
|
565
566
|
},
|
|
566
567
|
// Field type styles
|
|
567
568
|
bodyText: {
|
|
568
|
-
fontFamily:
|
|
569
|
+
fontFamily: "sf-regular",
|
|
569
570
|
fontSize: 16,
|
|
570
571
|
color: TEXT_DARK,
|
|
571
572
|
lineHeight: 22
|
|
572
573
|
},
|
|
573
574
|
titleText: {
|
|
574
|
-
fontFamily:
|
|
575
|
+
fontFamily: "sf-semibold",
|
|
575
576
|
fontSize: 16,
|
|
576
|
-
fontWeight:
|
|
577
|
+
fontWeight: "600",
|
|
577
578
|
color: TEXT_DARK
|
|
578
579
|
},
|
|
579
580
|
descriptionText: {
|
|
580
|
-
fontFamily:
|
|
581
|
+
fontFamily: "sf-regular",
|
|
581
582
|
fontSize: 16,
|
|
582
583
|
color: TEXT_DARK,
|
|
583
584
|
lineHeight: 24
|
|
584
585
|
},
|
|
585
586
|
numberText: {
|
|
586
|
-
fontFamily:
|
|
587
|
+
fontFamily: "sf-medium",
|
|
587
588
|
fontSize: 16,
|
|
588
|
-
fontWeight:
|
|
589
|
+
fontWeight: "500",
|
|
589
590
|
color: TEXT_DARK
|
|
590
591
|
},
|
|
591
592
|
// Link styles
|
|
592
593
|
linkContainer: {
|
|
593
|
-
flexDirection:
|
|
594
|
-
alignItems:
|
|
594
|
+
flexDirection: "row",
|
|
595
|
+
alignItems: "center",
|
|
595
596
|
paddingVertical: 4
|
|
596
597
|
},
|
|
597
598
|
linkText: {
|
|
598
|
-
fontFamily:
|
|
599
|
+
fontFamily: "sf-medium",
|
|
599
600
|
fontSize: 16,
|
|
600
|
-
textDecorationLine:
|
|
601
|
+
textDecorationLine: "underline"
|
|
601
602
|
},
|
|
602
603
|
// Date styles
|
|
603
604
|
dateContainer: {
|
|
604
|
-
flexDirection:
|
|
605
|
-
alignItems:
|
|
605
|
+
flexDirection: "row",
|
|
606
|
+
alignItems: "center",
|
|
606
607
|
paddingVertical: 4
|
|
607
608
|
},
|
|
608
609
|
// Image styles
|
|
609
610
|
inlineImage: {
|
|
610
|
-
width:
|
|
611
|
+
width: "100%",
|
|
611
612
|
height: 200,
|
|
612
613
|
borderRadius: 8,
|
|
613
614
|
marginVertical: 8
|
|
614
615
|
},
|
|
615
616
|
imageCaption: {
|
|
616
|
-
fontFamily:
|
|
617
|
+
fontFamily: "sf-italic",
|
|
617
618
|
fontSize: 14,
|
|
618
|
-
fontStyle:
|
|
619
|
+
fontStyle: "italic",
|
|
619
620
|
color: TEXT_MID,
|
|
620
621
|
marginTop: 4,
|
|
621
|
-
textAlign:
|
|
622
|
+
textAlign: "center"
|
|
622
623
|
},
|
|
623
624
|
// CTA styles
|
|
624
625
|
ctaContainer: {
|
|
625
|
-
alignItems:
|
|
626
|
-
justifyContent:
|
|
626
|
+
alignItems: "center",
|
|
627
|
+
justifyContent: "center",
|
|
627
628
|
paddingVertical: 8
|
|
628
629
|
},
|
|
629
630
|
// Section title styles
|
|
630
631
|
sectionTitle: {
|
|
631
|
-
fontFamily:
|
|
632
|
+
fontFamily: "sf-bold",
|
|
632
633
|
fontSize: 14,
|
|
633
|
-
fontWeight:
|
|
634
|
+
fontWeight: "700",
|
|
634
635
|
color: TEXT_DARK,
|
|
635
636
|
marginBottom: SPACING.SM
|
|
636
637
|
},
|
|
@@ -649,12 +650,12 @@ const styles = StyleSheet.create({
|
|
|
649
650
|
marginHorizontal: 16
|
|
650
651
|
},
|
|
651
652
|
facilityDetailTitle: {
|
|
652
|
-
fontFamily:
|
|
653
|
+
fontFamily: "sf-bold",
|
|
653
654
|
color: TEXT_DARK,
|
|
654
655
|
fontSize: 14
|
|
655
656
|
},
|
|
656
657
|
facilityDetailContent: {
|
|
657
|
-
fontFamily:
|
|
658
|
+
fontFamily: "sf-regular",
|
|
658
659
|
color: TEXT_DARK,
|
|
659
660
|
fontSize: 16,
|
|
660
661
|
lineHeight: 22
|
|
@@ -664,11 +665,11 @@ const styles = StyleSheet.create({
|
|
|
664
665
|
},
|
|
665
666
|
facilityDetailsTextContainer: {
|
|
666
667
|
flex: 1,
|
|
667
|
-
justifyContent:
|
|
668
|
+
justifyContent: "center"
|
|
668
669
|
},
|
|
669
670
|
facilityDetailContainer: {
|
|
670
671
|
marginTop: 16,
|
|
671
|
-
flexDirection:
|
|
672
|
+
flexDirection: "row"
|
|
672
673
|
},
|
|
673
674
|
facilityDetailTitleContainer: {
|
|
674
675
|
width: 100,
|
|
@@ -679,15 +680,15 @@ const styles = StyleSheet.create({
|
|
|
679
680
|
paddingTop: 20
|
|
680
681
|
},
|
|
681
682
|
eventTitle: {
|
|
682
|
-
fontFamily:
|
|
683
|
+
fontFamily: "sf-bold",
|
|
683
684
|
fontSize: 24,
|
|
684
685
|
lineHeight: 32,
|
|
685
686
|
color: TEXT_DARK,
|
|
686
|
-
backgroundColor:
|
|
687
|
+
backgroundColor: "transparent",
|
|
687
688
|
flex: 1
|
|
688
689
|
},
|
|
689
690
|
textLink: {
|
|
690
|
-
fontFamily:
|
|
691
|
+
fontFamily: "sf-medium",
|
|
691
692
|
fontSize: 16,
|
|
692
693
|
lineHeight: 22
|
|
693
694
|
},
|
|
@@ -696,14 +697,14 @@ const styles = StyleSheet.create({
|
|
|
696
697
|
},
|
|
697
698
|
centerContainer: {
|
|
698
699
|
flex: 1,
|
|
699
|
-
justifyContent:
|
|
700
|
-
alignItems:
|
|
700
|
+
justifyContent: "center",
|
|
701
|
+
alignItems: "center",
|
|
701
702
|
paddingHorizontal: 20
|
|
702
703
|
},
|
|
703
704
|
errorText: {
|
|
704
705
|
fontSize: 16,
|
|
705
706
|
color: TEXT_MID,
|
|
706
|
-
textAlign:
|
|
707
|
+
textAlign: "center"
|
|
707
708
|
},
|
|
708
709
|
filesContainer: {
|
|
709
710
|
marginVertical: 8
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","SPACING","Platform","View","ScrollView","Animated","Dimensions","StatusBar","Text","TouchableOpacity","Linking","StyleSheet","KeyboardAvoidingView","Image","FontAwesome","connect","_","LinearGradient","Services","Components","Colours","COLOUR_TRANSPARENT","TEXT_DARK","TEXT_MID","LINEGREY","FileDownload","values","selectFeatureDefinition","Constants","InlineButton","FIELD_TYPES","SCREEN_HEIGHT","get","height","CARD_IMAGE_HEIGHT","SCREEN_WIDTH","width","StatusBarHeight","size","getStatusBarHeight","OS","statusBarHeight","currentHeight","FeatureDetailScreen","constructor","props","_defineProperty","navigation","goBack","listing","featureDefinition","fields","allImages","fieldDefinitions","primaryImage","mandatoryFields","featureImage","imageObj","normalizeImageField","push","fieldId","fieldLabel","labels","forEach","fieldDef","type","IMAGE","GALLERY","id","fieldValue","Array","isArray","item","label","imageField","uri","url","imageIndex","state","length","setState","showImagePopup","selectedImageIndex","openURL","catch","err","file","isHomeTab","componentDidMount","getParentRoute","collectAllImages","componentDidUpdate","prevProps","componentWillUnmount","setBarStyle","processFields","excludedFieldIds","Set","title","filteredFields","Object","keys","filter","has","hasDefinition","some","f","map","fieldDefinition","find","fieldType","TEXT","sortBy","field","_field$fieldDefinitio","order","renderField","colourBrandingMain","safeFieldDef","CTA","btnLabel","btnUrl","createElement","style","styles","ctaContainer","large","color","onPress","handleLinkPress","EMAIL","linkContainer","name","fieldIcon","linkText","DATE","dateContainer","bodyText","FILE","files","filesContainer","sectionTitle","attachments","index","key","handleFilePress","DESCRIPTION","descriptionText","imgUri","findIndex","img","caption","openImagePopup","activeOpacity","source","inlineImage","resizeMode","imageCaption","marginVertical","flexDirection","flexWrap","marginHorizontal","imgItem","globalIndex","padding","TITLE","titleText","NUMBER","numberText","JSON","stringify","renderFields","processedFields","_index","_field$fieldDefinitio2","_field$fieldDefinitio3","fieldContainer","getImageSource","getTitle","defaultTitle","render","imageSource","centerContainer","errorText","behavior","position","flex","backgroundColor","BACKGROUND_WHITE","backButton","headerContent","BackButton","onPressBack","marginLeft","keyboardShouldPersistTaps","ref","scrollView","mainHeader","AutoOffsetImage","grayPlaceholder","gradientOverlay","colors","start","x","y","end","locations","paddingHorizontal","titleContainer","eventTitle","minHeight","ImagePopup","visible","images","onClose","closeImagePopup","create","left","top","zIndex","elevation","alignSelf","paddingTop","image","undefined","fontFamily","fontSize","marginBottom","textTransform","letterSpacing","textAlign","paddingVertical","borderRadius","maxWidth","lineHeight","fontWeight","alignItems","textDecorationLine","fontStyle","marginTop","justifyContent","SM","marginRight","section","divider","facilityDetailTitle","facilityDetailContent","facilityDetailsContainer","facilityDetailsTextContainer","facilityDetailContainer","facilityDetailTitleContainer","textLink","mapStateToProps","ownProps","getMainBrandingColourFromState","colourBrandingHeader","user","forwardRef"],"sources":["FeatureDetailScreen.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { SPACING } from '../js/spacing';\nimport {\n Platform,\n View,\n ScrollView,\n Animated,\n Dimensions,\n StatusBar,\n Text,\n TouchableOpacity,\n Linking,\n StyleSheet,\n KeyboardAvoidingView,\n Image,\n} from 'react-native';\nimport { FontAwesome } from './common';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { LinearGradient } from 'expo-linear-gradient';\nimport { Services } from '../feature.config';\nimport { Components, Colours, COLOUR_TRANSPARENT, TEXT_DARK } from '../core.config';\nimport { TEXT_MID, LINEGREY } from '../js/Colors';\nimport FileDownload from './FileDownload';\nimport { values } from '../values.config';\nimport { selectFeatureDefinition } from '../utils/selectors';\n\nimport Constants from 'expo-constants';\nimport { InlineButton } from './common';\nimport { FIELD_TYPES } from '../js/FieldTypes';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst CARD_IMAGE_HEIGHT = SCREEN_HEIGHT * 0.3;\nconst SCREEN_WIDTH = Dimensions.get('window').width;\n\n// StatusBarHeight function copied to avoid import from outside extension\nconst StatusBarHeight = size => {\n return getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;\n};\n\nclass FeatureDetailScreen extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isHomeTab: false,\n showImagePopup: false,\n selectedImageIndex: 0,\n allImages: [],\n };\n }\n\n componentDidMount() {\n this.setState({\n isHomeTab: !Services.navigation.getParentRoute(),\n allImages: this.collectAllImages(),\n });\n }\n\n componentDidUpdate(prevProps) {\n // Recalculate allImages when listing or featureDefinition changes\n if (prevProps.listing !== this.props.listing || prevProps.featureDefinition !== this.props.featureDefinition) {\n this.setState({ allImages: this.collectAllImages() });\n }\n }\n\n componentWillUnmount() {\n if (Platform.OS === 'ios') StatusBar.setBarStyle('dark-content');\n }\n\n onPressBack = () => {\n Services.navigation.goBack();\n };\n\n /**\n * Collect all images from listing fields\n */\n collectAllImages = () => {\n const { listing, featureDefinition } = this.props;\n if (!listing || !listing.fields || !featureDefinition) {\n return [];\n }\n\n const allImages = [];\n const fieldDefinitions = featureDefinition.fields || [];\n\n // Add primary feature image first\n const primaryImage = listing.fields[values.mandatoryFields.featureImage];\n if (primaryImage) {\n const imageObj = this.normalizeImageField(primaryImage);\n if (imageObj) {\n allImages.push({\n ...imageObj,\n fieldId: values.mandatoryFields.featureImage,\n fieldLabel: values.labels.featureImage,\n });\n }\n }\n\n // Add additional image fields\n fieldDefinitions.forEach(fieldDef => {\n if (\n (fieldDef.type === FIELD_TYPES.IMAGE || fieldDef.type === FIELD_TYPES.GALLERY) &&\n fieldDef.id !== values.mandatoryFields.featureImage\n ) {\n const fieldValue = listing.fields[fieldDef.id];\n\n if (fieldValue) {\n if (fieldDef.type === FIELD_TYPES.GALLERY) {\n // Handle Gallery (Array of images)\n if (Array.isArray(fieldValue)) {\n fieldValue.forEach(item => {\n const imageObj = this.normalizeImageField(item);\n if (imageObj) {\n allImages.push({\n ...imageObj,\n fieldId: fieldDef.id,\n fieldLabel: fieldDef.label || fieldDef.id,\n });\n }\n });\n }\n } else {\n // Handle Single Image\n const imageObj = this.normalizeImageField(fieldValue);\n if (imageObj) {\n allImages.push({\n ...imageObj,\n fieldId: fieldDef.id,\n fieldLabel: fieldDef.label || fieldDef.id,\n });\n }\n }\n }\n }\n });\n\n return allImages;\n };\n\n /**\n * Normalize image field to object format\n */\n normalizeImageField = imageField => {\n if (!imageField) return null;\n\n if (typeof imageField === 'string') {\n return { uri: imageField, url: imageField };\n }\n\n if (typeof imageField === 'object') {\n if (imageField.uri) {\n return { uri: imageField.uri, url: imageField.uri, ...imageField };\n }\n if (imageField.url) {\n return { uri: imageField.url, url: imageField.url, ...imageField };\n }\n }\n\n return null;\n };\n\n /**\n * Open image popup with all images\n */\n openImagePopup = (imageIndex = 0) => {\n const { allImages } = this.state;\n if (allImages.length > 0) {\n this.setState({\n showImagePopup: true,\n selectedImageIndex: imageIndex,\n });\n }\n };\n\n /**\n * Close image popup\n */\n closeImagePopup = () => {\n this.setState({\n showImagePopup: false,\n selectedImageIndex: 0,\n });\n };\n\n /**\n * Process fields: filter out mandatory fields and sort by order\n */\n processFields() {\n const { listing, featureDefinition } = this.props;\n if (!listing || !listing.fields || !featureDefinition) {\n return [];\n }\n\n const fieldDefinitions = featureDefinition.fields || [];\n const excludedFieldIds = new Set([values.mandatoryFields.title, values.mandatoryFields.featureImage]);\n\n // Filter and map fields with their definitions\n const filteredFields = Object.keys(listing.fields)\n .filter(fieldId => {\n if (!fieldId || excludedFieldIds.has(fieldId)) return false;\n if (listing.fields[fieldId] == null) return false;\n\n // Only include fields that have definitions\n const hasDefinition = fieldDefinitions.some(f => f.id === fieldId);\n if (!hasDefinition) {\n return false;\n }\n return true;\n })\n .map(fieldId => {\n const fieldDefinition = fieldDefinitions.find(fieldDef => fieldDef.id === fieldId);\n return {\n fieldId,\n fieldValue: listing.fields[fieldId],\n fieldDefinition,\n fieldType: fieldDefinition?.type || FIELD_TYPES.TEXT,\n };\n });\n\n // Sort by order property if available\n return _.sortBy(filteredFields, field => field.fieldDefinition?.order || 999);\n }\n\n /**\n * Handle link opening for various field types\n */\n handleLinkPress = url => {\n if (url) {\n Linking.openURL(url).catch(err => {\n // Silently handle URL open errors\n });\n }\n };\n\n handleFilePress = file => {\n if (file?.url) {\n Linking.openURL(file.url).catch(err => {\n // Silently handle URL open errors\n });\n }\n };\n\n /**\n * Render individual field based on its type\n */\n renderField(fieldDef, fieldValue) {\n const { colourBrandingMain } = this.props;\n\n // Defensive: ensure fieldDef is always an object\n const safeFieldDef = fieldDef || {};\n const type = safeFieldDef.type || FIELD_TYPES.TEXT;\n const label = safeFieldDef.label || safeFieldDef.id || 'Unknown Field';\n\n switch (type) {\n case FIELD_TYPES.CTA: {\n const btnLabel = fieldValue?.label || label;\n const btnUrl = fieldValue?.url;\n return (\n <View style={styles.ctaContainer}>\n <InlineButton large color={colourBrandingMain} onPress={() => this.handleLinkPress(btnUrl)}>\n {btnLabel}\n </InlineButton>\n </View>\n );\n }\n\n case FIELD_TYPES.EMAIL:\n return (\n <TouchableOpacity style={styles.linkContainer} onPress={() => this.handleLinkPress(`mailto:${fieldValue}`)}>\n <FontAwesome name=\"envelope\" size={16} color={colourBrandingMain} style={styles.fieldIcon} />\n <Text style={[styles.linkText, { color: colourBrandingMain }]}>{fieldValue}</Text>\n </TouchableOpacity>\n );\n\n case FIELD_TYPES.DATE:\n return (\n <View style={styles.dateContainer}>\n <FontAwesome name=\"calendar\" size={16} color={TEXT_DARK} style={styles.fieldIcon} />\n <Text style={styles.bodyText}>{fieldValue}</Text>\n </View>\n );\n\n case FIELD_TYPES.FILE: {\n // Handle both single file and multiple files (array)\n const files = Array.isArray(fieldValue) ? fieldValue : [fieldValue];\n return (\n <View style={styles.filesContainer}>\n <Text style={styles.sectionTitle}>{values.labels.attachments}</Text>\n {files.map((file, index) => {\n // Skip null/undefined files\n if (!file) return null;\n\n return <FileDownload key={index} file={file} onPress={this.handleFilePress} color={this.props.colourBrandingMain} />;\n })}\n </View>\n );\n }\n\n case FIELD_TYPES.DESCRIPTION:\n return <Text style={styles.descriptionText}>{fieldValue}</Text>;\n\n case FIELD_TYPES.IMAGE: {\n // Render secondary images inline with click handler\n const imgUri = fieldValue?.url || fieldValue?.uri || (typeof fieldValue === 'string' ? fieldValue : null);\n if (!imgUri) return null;\n\n // Find this image's index for popup\n const { allImages } = this.state;\n const imageIndex = allImages.findIndex(img => img.uri === imgUri || img.url === imgUri);\n\n const caption = fieldValue?.caption;\n\n return (\n <TouchableOpacity onPress={() => this.openImagePopup(imageIndex)} activeOpacity={0.8}>\n <Image source={{ uri: imgUri }} style={styles.inlineImage} resizeMode=\"cover\" />\n {caption && <Text style={styles.imageCaption}>{caption}</Text>}\n </TouchableOpacity>\n );\n }\n\n case FIELD_TYPES.GALLERY: {\n // Handle Gallery Fields (arrays of images)\n if (!Array.isArray(fieldValue)) return null;\n\n return (\n <View style={{ marginVertical: 16 }}>\n <View\n style={{\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginHorizontal: -4,\n }}\n >\n {fieldValue.map((imgItem, index) => {\n const imgUri = imgItem?.url || imgItem?.uri || (typeof imgItem === 'string' ? imgItem : null);\n if (!imgUri) return null;\n\n // Find global index for the popup\n const { allImages } = this.state;\n const globalIndex = allImages.findIndex(img => img.uri === imgUri || img.url === imgUri);\n\n return (\n <TouchableOpacity\n key={index}\n onPress={() => this.openImagePopup(globalIndex !== -1 ? globalIndex : 0)}\n activeOpacity={0.8}\n style={{ width: '50%', padding: 4 }} // 2 column grid\n >\n <Image source={{ uri: imgUri }} style={[styles.inlineImage, { height: 150, marginVertical: 0 }]} resizeMode=\"cover\" />\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n );\n }\n\n case FIELD_TYPES.TITLE:\n return <Text style={styles.titleText}>{fieldValue}</Text>;\n\n case FIELD_TYPES.NUMBER:\n return <Text style={styles.numberText}>{fieldValue}</Text>;\n\n default:\n // Default text fallback\n return <Text style={styles.bodyText}>{typeof fieldValue === 'object' ? JSON.stringify(fieldValue) : fieldValue}</Text>;\n }\n }\n\n /**\n * Render all fields with proper spacing and structure\n */\n renderFields() {\n const processedFields = this.processFields();\n\n return processedFields.map((field, _index) => {\n return (\n <View key={field.fieldId} style={styles.fieldContainer}>\n {field.fieldType !== FIELD_TYPES.CTA && field.fieldType !== FIELD_TYPES.IMAGE && field.fieldDefinition?.label && (\n <Text style={styles.fieldLabel}>{field.fieldDefinition?.label}</Text>\n )}\n {this.renderField(field.fieldDefinition, field.fieldValue)}\n </View>\n );\n });\n }\n\n getImageSource() {\n const { listing } = this.props;\n if (!listing || !listing.fields) {\n return null;\n }\n\n const imageField = listing.fields[values.mandatoryFields.featureImage];\n if (!imageField) {\n return null;\n }\n\n // Parse the image field value\n if (typeof imageField === 'string') {\n return imageField;\n }\n\n return imageField?.uri || imageField?.url || null;\n }\n\n getTitle() {\n const { listing } = this.props;\n if (!listing || !listing.fields) {\n return values.labels.defaultTitle;\n }\n\n return listing.fields[values.mandatoryFields.title] || values.labels.defaultTitle;\n }\n\n render() {\n const { listing } = this.props;\n const imageSource = this.getImageSource();\n const title = this.getTitle();\n\n if (!listing || !listing.fields) {\n return (\n <View style={styles.centerContainer}>\n <Text style={styles.errorText}>Item not found</Text>\n </View>\n );\n }\n\n return (\n <KeyboardAvoidingView\n behavior={Platform.OS === 'ios' && 'padding'}\n style={{\n position: 'relative',\n flex: 1,\n backgroundColor: Colours.BACKGROUND_WHITE || '#fff',\n }}\n >\n <View style={styles.backButton}>\n <View style={styles.headerContent}>\n <Components.BackButton\n onPress={this.onPressBack}\n style={{\n marginLeft: 16,\n }}\n />\n </View>\n </View>\n\n <ScrollView\n style={{ backgroundColor: Colours.BACKGROUND_WHITE || '#fff' }}\n keyboardShouldPersistTaps=\"always\"\n ref={ref => {\n this.scrollView = ref;\n }}\n >\n <View style={[styles.mainHeader]}>\n {imageSource ? (\n <TouchableOpacity onPress={() => this.openImagePopup(0)} activeOpacity={0.9}>\n <Components.AutoOffsetImage uri={imageSource} height={CARD_IMAGE_HEIGHT} width={SCREEN_WIDTH} />\n </TouchableOpacity>\n ) : (\n <View style={[styles.grayPlaceholder, { height: CARD_IMAGE_HEIGHT, width: SCREEN_WIDTH }]} />\n )}\n <LinearGradient\n style={styles.gradientOverlay}\n colors={['rgba(0,0,0,0.7)', COLOUR_TRANSPARENT]}\n start={{ x: 0, y: 0 }}\n end={{ x: 0, y: 1 }}\n locations={[0, 0.5]}\n />\n </View>\n <View style={{ paddingHorizontal: 16 }}>\n <View style={styles.titleContainer}>\n <Text style={styles.eventTitle}>{title}</Text>\n </View>\n </View>\n <View style={{ minHeight: SCREEN_HEIGHT - CARD_IMAGE_HEIGHT - 56 }}>{this.renderFields()}</View>\n </ScrollView>\n\n {/* Image Popup */}\n {this.state.showImagePopup && (\n <Components.ImagePopup\n visible={this.state.showImagePopup}\n images={this.state.allImages}\n index={this.state.selectedImageIndex}\n onClose={this.closeImagePopup}\n />\n )}\n </KeyboardAvoidingView>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n backButton: {\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 10,\n elevation: 10,\n height: StatusBarHeight(70),\n },\n headerContent: {\n alignSelf: 'stretch',\n flexDirection: 'row',\n flex: 1,\n paddingTop: StatusBarHeight(12),\n },\n image: {\n backgroundColor: Colours.BACKGROUND_WHITE || '#fff',\n position: 'relative',\n width: undefined,\n height: undefined,\n flex: 1,\n },\n mainHeader: {\n position: 'relative',\n height: CARD_IMAGE_HEIGHT,\n width: SCREEN_WIDTH,\n },\n\n gradientOverlay: {\n flex: 1,\n },\n\n // Field container and spacing\n fieldContainer: {\n paddingHorizontal: 16,\n marginVertical: 12,\n },\n\n // Field labels/captions\n fieldLabel: {\n fontFamily: 'sf-regular',\n fontSize: 11,\n color: TEXT_MID,\n marginBottom: 6,\n textTransform: 'uppercase',\n letterSpacing: 1.2,\n alignSelf: 'center',\n textAlign: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n backgroundColor: 'rgba(0,0,0,0.03)',\n borderRadius: 12,\n maxWidth: '80%',\n },\n\n // Field type styles\n bodyText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: TEXT_DARK,\n lineHeight: 22,\n },\n titleText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n fontWeight: '600',\n color: TEXT_DARK,\n },\n descriptionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: TEXT_DARK,\n lineHeight: 24,\n },\n numberText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n fontWeight: '500',\n color: TEXT_DARK,\n },\n\n // Link styles\n linkContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 4,\n },\n linkText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n textDecorationLine: 'underline',\n },\n\n // Date styles\n dateContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 4,\n },\n\n // Image styles\n inlineImage: {\n width: '100%',\n height: 200,\n borderRadius: 8,\n marginVertical: 8,\n },\n imageCaption: {\n fontFamily: 'sf-italic',\n fontSize: 14,\n fontStyle: 'italic',\n color: TEXT_MID,\n marginTop: 4,\n textAlign: 'center',\n },\n\n // CTA styles\n ctaContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 8,\n },\n\n // Section title styles\n sectionTitle: {\n fontFamily: 'sf-bold',\n fontSize: 14,\n fontWeight: '700',\n color: TEXT_DARK,\n marginBottom: SPACING.SM,\n },\n\n // Icon styles\n fieldIcon: {\n marginRight: 8,\n },\n\n // Legacy styles (kept for compatibility)\n section: {\n paddingVertical: 16,\n },\n divider: {\n height: 1,\n backgroundColor: LINEGREY,\n marginVertical: 8,\n marginHorizontal: 16,\n },\n facilityDetailTitle: {\n fontFamily: 'sf-bold',\n color: TEXT_DARK,\n fontSize: 14,\n },\n facilityDetailContent: {\n fontFamily: 'sf-regular',\n color: TEXT_DARK,\n fontSize: 16,\n lineHeight: 22,\n },\n facilityDetailsContainer: {\n flex: 1,\n },\n facilityDetailsTextContainer: {\n flex: 1,\n justifyContent: 'center',\n },\n facilityDetailContainer: {\n marginTop: 16,\n flexDirection: 'row',\n },\n facilityDetailTitleContainer: {\n width: 100,\n marginRight: 10,\n },\n titleContainer: {\n paddingVertical: 16,\n paddingTop: 20,\n },\n eventTitle: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n lineHeight: 32,\n color: TEXT_DARK,\n backgroundColor: 'transparent',\n flex: 1,\n },\n textLink: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n lineHeight: 22,\n },\n grayPlaceholder: {\n backgroundColor: LINEGREY,\n },\n centerContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n paddingHorizontal: 20,\n },\n errorText: {\n fontSize: 16,\n color: TEXT_MID,\n textAlign: 'center',\n },\n filesContainer: {\n marginVertical: 8,\n },\n});\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n colourBrandingHeader: Colours.getMainBrandingColourFromState(state),\n featureDefinition: selectFeatureDefinition(state),\n user: state.user,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(FeatureDetailScreen);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","Text","SPACING","Platform","View","ScrollView","Animated","Dimensions","StatusBar","TouchableOpacity","Linking","StyleSheet","KeyboardAvoidingView","Image","FontAwesome","connect","_","LinearGradient","Services","Components","Colours","COLOUR_TRANSPARENT","TEXT_DARK","TEXT_MID","LINEGREY","FileDownload","values","selectFeatureDefinition","Constants","InlineButton","FIELD_TYPES","SCREEN_HEIGHT","get","height","CARD_IMAGE_HEIGHT","SCREEN_WIDTH","width","StatusBarHeight","size","getStatusBarHeight","OS","statusBarHeight","currentHeight","FeatureDetailScreen","constructor","props","_defineProperty","navigation","goBack","listing","featureDefinition","fields","allImages","fieldDefinitions","primaryImage","mandatoryFields","featureImage","imageObj","normalizeImageField","push","fieldId","fieldLabel","labels","forEach","fieldDef","type","IMAGE","GALLERY","id","fieldValue","Array","isArray","item","label","imageField","uri","url","imageIndex","state","length","setState","showImagePopup","selectedImageIndex","openURL","catch","err","file","isHomeTab","componentDidMount","getParentRoute","collectAllImages","componentDidUpdate","prevProps","componentWillUnmount","setBarStyle","processFields","excludedFieldIds","Set","title","filteredFields","Object","keys","filter","has","hasDefinition","some","f","map","fieldDefinition","find","fieldType","TEXT","sortBy","field","_field$fieldDefinitio","order","renderField","colourBrandingMain","safeFieldDef","CTA","btnLabel","btnUrl","createElement","style","styles","ctaContainer","large","color","onPress","handleLinkPress","EMAIL","linkContainer","name","fieldIcon","linkText","DATE","dateContainer","bodyText","FILE","files","filesContainer","sectionTitle","attachments","index","key","handleFilePress","DESCRIPTION","descriptionText","imgUri","findIndex","img","caption","openImagePopup","activeOpacity","source","inlineImage","resizeMode","imageCaption","marginVertical","flexDirection","flexWrap","marginHorizontal","imgItem","globalIndex","padding","TITLE","titleText","NUMBER","numberText","JSON","stringify","renderFields","processedFields","_index","_field$fieldDefinitio2","_field$fieldDefinitio3","fieldContainer","getImageSource","getTitle","defaultTitle","render","imageSource","centerContainer","errorText","behavior","position","flex","backgroundColor","BACKGROUND_WHITE","backButton","headerContent","BackButton","onPressBack","marginLeft","keyboardShouldPersistTaps","ref","scrollView","mainHeader","AutoOffsetImage","grayPlaceholder","gradientOverlay","colors","start","x","y","end","locations","paddingHorizontal","titleContainer","eventTitle","minHeight","ImagePopup","visible","images","onClose","closeImagePopup","create","left","top","zIndex","elevation","alignSelf","paddingTop","image","undefined","fontFamily","fontSize","marginBottom","textTransform","letterSpacing","textAlign","paddingVertical","borderRadius","maxWidth","lineHeight","fontWeight","alignItems","textDecorationLine","fontStyle","marginTop","justifyContent","SM","marginRight","section","divider","facilityDetailTitle","facilityDetailContent","facilityDetailsContainer","facilityDetailsTextContainer","facilityDetailContainer","facilityDetailTitleContainer","textLink","mapStateToProps","ownProps","getMainBrandingColourFromState","colourBrandingHeader","user","forwardRef"],"sources":["FeatureDetailScreen.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport { SPACING } from \"../js/spacing\";\nimport {\n\tPlatform,\n\tView,\n\tScrollView,\n\tAnimated,\n\tDimensions,\n\tStatusBar,\n\tTouchableOpacity,\n\tLinking,\n\tStyleSheet,\n\tKeyboardAvoidingView,\n\tImage,\n} from \"react-native\";\nimport { FontAwesome } from \"./common\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport { LinearGradient } from \"expo-linear-gradient\";\nimport { Services } from \"../feature.config\";\nimport {\n\tComponents,\n\tColours,\n\tCOLOUR_TRANSPARENT,\n\tTEXT_DARK,\n} from \"../core.config\";\nimport { TEXT_MID, LINEGREY } from \"../js/Colors\";\nimport FileDownload from \"./FileDownload\";\nimport { values } from \"../values.config\";\nimport { selectFeatureDefinition } from \"../utils/selectors\";\n\nimport Constants from \"expo-constants\";\nimport { InlineButton } from \"./common\";\nimport { FIELD_TYPES } from \"../js/FieldTypes\";\n\nconst SCREEN_HEIGHT = Dimensions.get(\"window\").height;\nconst CARD_IMAGE_HEIGHT = SCREEN_HEIGHT * 0.3;\nconst SCREEN_WIDTH = Dimensions.get(\"window\").width;\n\n// StatusBarHeight function copied to avoid import from outside extension\nconst StatusBarHeight = (size) => {\n\treturn getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n\treturn Platform.OS === \"ios\"\n\t\t? Constants.statusBarHeight\n\t\t: StatusBar.currentHeight;\n};\n\nclass FeatureDetailScreen extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tisHomeTab: false,\n\t\t\tshowImagePopup: false,\n\t\t\tselectedImageIndex: 0,\n\t\t\tallImages: [],\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.setState({\n\t\t\tisHomeTab: !Services.navigation.getParentRoute(),\n\t\t\tallImages: this.collectAllImages(),\n\t\t});\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\t// Recalculate allImages when listing or featureDefinition changes\n\t\tif (\n\t\t\tprevProps.listing !== this.props.listing ||\n\t\t\tprevProps.featureDefinition !== this.props.featureDefinition\n\t\t) {\n\t\t\tthis.setState({ allImages: this.collectAllImages() });\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (Platform.OS === \"ios\") StatusBar.setBarStyle(\"dark-content\");\n\t}\n\n\tonPressBack = () => {\n\t\tServices.navigation.goBack();\n\t};\n\n\t/**\n\t * Collect all images from listing fields\n\t */\n\tcollectAllImages = () => {\n\t\tconst { listing, featureDefinition } = this.props;\n\t\tif (!listing || !listing.fields || !featureDefinition) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst allImages = [];\n\t\tconst fieldDefinitions = featureDefinition.fields || [];\n\n\t\t// Add primary feature image first\n\t\tconst primaryImage = listing.fields[values.mandatoryFields.featureImage];\n\t\tif (primaryImage) {\n\t\t\tconst imageObj = this.normalizeImageField(primaryImage);\n\t\t\tif (imageObj) {\n\t\t\t\tallImages.push({\n\t\t\t\t\t...imageObj,\n\t\t\t\t\tfieldId: values.mandatoryFields.featureImage,\n\t\t\t\t\tfieldLabel: values.labels.featureImage,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Add additional image fields\n\t\tfieldDefinitions.forEach((fieldDef) => {\n\t\t\tif (\n\t\t\t\t(fieldDef.type === FIELD_TYPES.IMAGE ||\n\t\t\t\t\tfieldDef.type === FIELD_TYPES.GALLERY) &&\n\t\t\t\tfieldDef.id !== values.mandatoryFields.featureImage\n\t\t\t) {\n\t\t\t\tconst fieldValue = listing.fields[fieldDef.id];\n\n\t\t\t\tif (fieldValue) {\n\t\t\t\t\tif (fieldDef.type === FIELD_TYPES.GALLERY) {\n\t\t\t\t\t\t// Handle Gallery (Array of images)\n\t\t\t\t\t\tif (Array.isArray(fieldValue)) {\n\t\t\t\t\t\t\tfieldValue.forEach((item) => {\n\t\t\t\t\t\t\t\tconst imageObj = this.normalizeImageField(item);\n\t\t\t\t\t\t\t\tif (imageObj) {\n\t\t\t\t\t\t\t\t\tallImages.push({\n\t\t\t\t\t\t\t\t\t\t...imageObj,\n\t\t\t\t\t\t\t\t\t\tfieldId: fieldDef.id,\n\t\t\t\t\t\t\t\t\t\tfieldLabel: fieldDef.label || fieldDef.id,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Handle Single Image\n\t\t\t\t\t\tconst imageObj = this.normalizeImageField(fieldValue);\n\t\t\t\t\t\tif (imageObj) {\n\t\t\t\t\t\t\tallImages.push({\n\t\t\t\t\t\t\t\t...imageObj,\n\t\t\t\t\t\t\t\tfieldId: fieldDef.id,\n\t\t\t\t\t\t\t\tfieldLabel: fieldDef.label || fieldDef.id,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn allImages;\n\t};\n\n\t/**\n\t * Normalize image field to object format\n\t */\n\tnormalizeImageField = (imageField) => {\n\t\tif (!imageField) return null;\n\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn { uri: imageField, url: imageField };\n\t\t}\n\n\t\tif (typeof imageField === \"object\") {\n\t\t\tif (imageField.uri) {\n\t\t\t\treturn { uri: imageField.uri, url: imageField.uri, ...imageField };\n\t\t\t}\n\t\t\tif (imageField.url) {\n\t\t\t\treturn { uri: imageField.url, url: imageField.url, ...imageField };\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t};\n\n\t/**\n\t * Open image popup with all images\n\t */\n\topenImagePopup = (imageIndex = 0) => {\n\t\tconst { allImages } = this.state;\n\t\tif (allImages.length > 0) {\n\t\t\tthis.setState({\n\t\t\t\tshowImagePopup: true,\n\t\t\t\tselectedImageIndex: imageIndex,\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Close image popup\n\t */\n\tcloseImagePopup = () => {\n\t\tthis.setState({\n\t\t\tshowImagePopup: false,\n\t\t\tselectedImageIndex: 0,\n\t\t});\n\t};\n\n\t/**\n\t * Process fields: filter out mandatory fields and sort by order\n\t */\n\tprocessFields() {\n\t\tconst { listing, featureDefinition } = this.props;\n\t\tif (!listing || !listing.fields || !featureDefinition) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst fieldDefinitions = featureDefinition.fields || [];\n\t\tconst excludedFieldIds = new Set([\n\t\t\tvalues.mandatoryFields.title,\n\t\t\tvalues.mandatoryFields.featureImage,\n\t\t]);\n\n\t\t// Filter and map fields with their definitions\n\t\tconst filteredFields = Object.keys(listing.fields)\n\t\t\t.filter((fieldId) => {\n\t\t\t\tif (!fieldId || excludedFieldIds.has(fieldId)) return false;\n\t\t\t\tif (listing.fields[fieldId] == null) return false;\n\n\t\t\t\t// Only include fields that have definitions\n\t\t\t\tconst hasDefinition = fieldDefinitions.some((f) => f.id === fieldId);\n\t\t\t\tif (!hasDefinition) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t})\n\t\t\t.map((fieldId) => {\n\t\t\t\tconst fieldDefinition = fieldDefinitions.find(\n\t\t\t\t\t(fieldDef) => fieldDef.id === fieldId,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tfieldId,\n\t\t\t\t\tfieldValue: listing.fields[fieldId],\n\t\t\t\t\tfieldDefinition,\n\t\t\t\t\tfieldType: fieldDefinition?.type || FIELD_TYPES.TEXT,\n\t\t\t\t};\n\t\t\t});\n\n\t\t// Sort by order property if available\n\t\treturn _.sortBy(\n\t\t\tfilteredFields,\n\t\t\t(field) => field.fieldDefinition?.order || 999,\n\t\t);\n\t}\n\n\t/**\n\t * Handle link opening for various field types\n\t */\n\thandleLinkPress = (url) => {\n\t\tif (url) {\n\t\t\tLinking.openURL(url).catch((err) => {\n\t\t\t\t// Silently handle URL open errors\n\t\t\t});\n\t\t}\n\t};\n\n\thandleFilePress = (file) => {\n\t\tif (file?.url) {\n\t\t\tLinking.openURL(file.url).catch((err) => {\n\t\t\t\t// Silently handle URL open errors\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Render individual field based on its type\n\t */\n\trenderField(fieldDef, fieldValue) {\n\t\tconst { colourBrandingMain } = this.props;\n\n\t\t// Defensive: ensure fieldDef is always an object\n\t\tconst safeFieldDef = fieldDef || {};\n\t\tconst type = safeFieldDef.type || FIELD_TYPES.TEXT;\n\t\tconst label = safeFieldDef.label || safeFieldDef.id || \"Unknown Field\";\n\n\t\tswitch (type) {\n\t\t\tcase FIELD_TYPES.CTA: {\n\t\t\t\tconst btnLabel = fieldValue?.label || label;\n\t\t\t\tconst btnUrl = fieldValue?.url;\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.ctaContainer}>\n\t\t\t\t\t\t<InlineButton\n\t\t\t\t\t\t\tlarge\n\t\t\t\t\t\t\tcolor={colourBrandingMain}\n\t\t\t\t\t\t\tonPress={() => this.handleLinkPress(btnUrl)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{btnLabel}\n\t\t\t\t\t\t</InlineButton>\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase FIELD_TYPES.EMAIL:\n\t\t\t\treturn (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tstyle={styles.linkContainer}\n\t\t\t\t\t\tonPress={() => this.handleLinkPress(`mailto:${fieldValue}`)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\t\tname=\"envelope\"\n\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\tcolor={colourBrandingMain}\n\t\t\t\t\t\t\tstyle={styles.fieldIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Text style={[styles.linkText, { color: colourBrandingMain }]}>\n\t\t\t\t\t\t\t{fieldValue}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t);\n\n\t\t\tcase FIELD_TYPES.DATE:\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.dateContainer}>\n\t\t\t\t\t\t<FontAwesome\n\t\t\t\t\t\t\tname=\"calendar\"\n\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\tcolor={TEXT_DARK}\n\t\t\t\t\t\t\tstyle={styles.fieldIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Text style={styles.bodyText}>{fieldValue}</Text>\n\t\t\t\t\t</View>\n\t\t\t\t);\n\n\t\t\tcase FIELD_TYPES.FILE: {\n\t\t\t\t// Handle both single file and multiple files (array)\n\t\t\t\tconst files = Array.isArray(fieldValue) ? fieldValue : [fieldValue];\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.filesContainer}>\n\t\t\t\t\t\t<Text style={styles.sectionTitle}>{values.labels.attachments}</Text>\n\t\t\t\t\t\t{files.map((file, index) => {\n\t\t\t\t\t\t\t// Skip null/undefined files\n\t\t\t\t\t\t\tif (!file) return null;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<FileDownload\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tfile={file}\n\t\t\t\t\t\t\t\t\tonPress={this.handleFilePress}\n\t\t\t\t\t\t\t\t\tcolor={this.props.colourBrandingMain}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase FIELD_TYPES.DESCRIPTION:\n\t\t\t\treturn <Text style={styles.descriptionText}>{fieldValue}</Text>;\n\n\t\t\tcase FIELD_TYPES.IMAGE: {\n\t\t\t\t// Render secondary images inline with click handler\n\t\t\t\tconst imgUri =\n\t\t\t\t\tfieldValue?.url ||\n\t\t\t\t\tfieldValue?.uri ||\n\t\t\t\t\t(typeof fieldValue === \"string\" ? fieldValue : null);\n\t\t\t\tif (!imgUri) return null;\n\n\t\t\t\t// Find this image's index for popup\n\t\t\t\tconst { allImages } = this.state;\n\t\t\t\tconst imageIndex = allImages.findIndex(\n\t\t\t\t\t(img) => img.uri === imgUri || img.url === imgUri,\n\t\t\t\t);\n\n\t\t\t\tconst caption = fieldValue?.caption;\n\n\t\t\t\treturn (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={() => this.openImagePopup(imageIndex)}\n\t\t\t\t\t\tactiveOpacity={0.8}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tsource={{ uri: imgUri }}\n\t\t\t\t\t\t\tstyle={styles.inlineImage}\n\t\t\t\t\t\t\tresizeMode=\"cover\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{caption && <Text style={styles.imageCaption}>{caption}</Text>}\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase FIELD_TYPES.GALLERY: {\n\t\t\t\t// Handle Gallery Fields (arrays of images)\n\t\t\t\tif (!Array.isArray(fieldValue)) return null;\n\n\t\t\t\treturn (\n\t\t\t\t\t<View style={{ marginVertical: 16 }}>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tflexDirection: \"row\",\n\t\t\t\t\t\t\t\tflexWrap: \"wrap\",\n\t\t\t\t\t\t\t\tmarginHorizontal: -4,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{fieldValue.map((imgItem, index) => {\n\t\t\t\t\t\t\t\tconst imgUri =\n\t\t\t\t\t\t\t\t\timgItem?.url ||\n\t\t\t\t\t\t\t\t\timgItem?.uri ||\n\t\t\t\t\t\t\t\t\t(typeof imgItem === \"string\" ? imgItem : null);\n\t\t\t\t\t\t\t\tif (!imgUri) return null;\n\n\t\t\t\t\t\t\t\t// Find global index for the popup\n\t\t\t\t\t\t\t\tconst { allImages } = this.state;\n\t\t\t\t\t\t\t\tconst globalIndex = allImages.findIndex(\n\t\t\t\t\t\t\t\t\t(img) => img.uri === imgUri || img.url === imgUri,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\tonPress={() =>\n\t\t\t\t\t\t\t\t\t\t\tthis.openImagePopup(globalIndex !== -1 ? globalIndex : 0)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tactiveOpacity={0.8}\n\t\t\t\t\t\t\t\t\t\tstyle={{ width: \"50%\", padding: 4 }} // 2 column grid\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\t\tsource={{ uri: imgUri }}\n\t\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\t\tstyles.inlineImage,\n\t\t\t\t\t\t\t\t\t\t\t\t{ height: 150, marginVertical: 0 },\n\t\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t\t\tresizeMode=\"cover\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t\t\t);\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);\n\t\t\t}\n\n\t\t\tcase FIELD_TYPES.TITLE:\n\t\t\t\treturn <Text style={styles.titleText}>{fieldValue}</Text>;\n\n\t\t\tcase FIELD_TYPES.NUMBER:\n\t\t\t\treturn <Text style={styles.numberText}>{fieldValue}</Text>;\n\n\t\t\tdefault:\n\t\t\t\t// Default text fallback\n\t\t\t\treturn (\n\t\t\t\t\t<Text style={styles.bodyText}>\n\t\t\t\t\t\t{typeof fieldValue === \"object\"\n\t\t\t\t\t\t\t? JSON.stringify(fieldValue)\n\t\t\t\t\t\t\t: fieldValue}\n\t\t\t\t\t</Text>\n\t\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Render all fields with proper spacing and structure\n\t */\n\trenderFields() {\n\t\tconst processedFields = this.processFields();\n\n\t\treturn processedFields.map((field, _index) => {\n\t\t\treturn (\n\t\t\t\t<View key={field.fieldId} style={styles.fieldContainer}>\n\t\t\t\t\t{field.fieldType !== FIELD_TYPES.CTA &&\n\t\t\t\t\t\tfield.fieldType !== FIELD_TYPES.IMAGE &&\n\t\t\t\t\t\tfield.fieldDefinition?.label && (\n\t\t\t\t\t\t\t<Text style={styles.fieldLabel}>\n\t\t\t\t\t\t\t\t{field.fieldDefinition?.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t{this.renderField(field.fieldDefinition, field.fieldValue)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t});\n\t}\n\n\tgetImageSource() {\n\t\tconst { listing } = this.props;\n\t\tif (!listing || !listing.fields) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst imageField = listing.fields[values.mandatoryFields.featureImage];\n\t\tif (!imageField) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Parse the image field value\n\t\tif (typeof imageField === \"string\") {\n\t\t\treturn imageField;\n\t\t}\n\n\t\treturn imageField?.uri || imageField?.url || null;\n\t}\n\n\tgetTitle() {\n\t\tconst { listing } = this.props;\n\t\tif (!listing || !listing.fields) {\n\t\t\treturn values.labels.defaultTitle;\n\t\t}\n\n\t\treturn (\n\t\t\tlisting.fields[values.mandatoryFields.title] || values.labels.defaultTitle\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { listing } = this.props;\n\t\tconst imageSource = this.getImageSource();\n\t\tconst title = this.getTitle();\n\n\t\tif (!listing || !listing.fields) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.centerContainer}>\n\t\t\t\t\t<Text style={styles.errorText}>Item not found</Text>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<KeyboardAvoidingView\n\t\t\t\tbehavior={Platform.OS === \"ios\" && \"padding\"}\n\t\t\t\tstyle={{\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tbackgroundColor: Colours.BACKGROUND_WHITE || \"#fff\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<View style={styles.backButton}>\n\t\t\t\t\t<View style={styles.headerContent}>\n\t\t\t\t\t\t<Components.BackButton\n\t\t\t\t\t\t\tonPress={this.onPressBack}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tmarginLeft: 16,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\n\t\t\t\t<ScrollView\n\t\t\t\t\tstyle={{ backgroundColor: Colours.BACKGROUND_WHITE || \"#fff\" }}\n\t\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\t\tref={(ref) => {\n\t\t\t\t\t\tthis.scrollView = ref;\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<View style={[styles.mainHeader]}>\n\t\t\t\t\t\t{imageSource ? (\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={() => this.openImagePopup(0)}\n\t\t\t\t\t\t\t\tactiveOpacity={0.9}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Components.AutoOffsetImage\n\t\t\t\t\t\t\t\t\turi={imageSource}\n\t\t\t\t\t\t\t\t\theight={CARD_IMAGE_HEIGHT}\n\t\t\t\t\t\t\t\t\twidth={SCREEN_WIDTH}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.grayPlaceholder,\n\t\t\t\t\t\t\t\t\t{ height: CARD_IMAGE_HEIGHT, width: SCREEN_WIDTH },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<LinearGradient\n\t\t\t\t\t\t\tstyle={styles.gradientOverlay}\n\t\t\t\t\t\t\tcolors={[\"rgba(0,0,0,0.7)\", COLOUR_TRANSPARENT]}\n\t\t\t\t\t\t\tstart={{ x: 0, y: 0 }}\n\t\t\t\t\t\t\tend={{ x: 0, y: 1 }}\n\t\t\t\t\t\t\tlocations={[0, 0.5]}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</View>\n\t\t\t\t\t<View style={{ paddingHorizontal: 16 }}>\n\t\t\t\t\t\t<View style={styles.titleContainer}>\n\t\t\t\t\t\t\t<Text style={styles.eventTitle}>{title}</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t\t<View style={{ minHeight: SCREEN_HEIGHT - CARD_IMAGE_HEIGHT - 56 }}>\n\t\t\t\t\t\t{this.renderFields()}\n\t\t\t\t\t</View>\n\t\t\t\t</ScrollView>\n\n\t\t\t\t{/* Image Popup */}\n\t\t\t\t{this.state.showImagePopup && (\n\t\t\t\t\t<Components.ImagePopup\n\t\t\t\t\t\tvisible={this.state.showImagePopup}\n\t\t\t\t\t\timages={this.state.allImages}\n\t\t\t\t\t\tindex={this.state.selectedImageIndex}\n\t\t\t\t\t\tonClose={this.closeImagePopup}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</KeyboardAvoidingView>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tbackButton: {\n\t\tposition: \"absolute\",\n\t\tleft: 0,\n\t\ttop: 0,\n\t\tzIndex: 10,\n\t\televation: 10,\n\t\theight: StatusBarHeight(70),\n\t},\n\theaderContent: {\n\t\talignSelf: \"stretch\",\n\t\tflexDirection: \"row\",\n\t\tflex: 1,\n\t\tpaddingTop: StatusBarHeight(12),\n\t},\n\timage: {\n\t\tbackgroundColor: Colours.BACKGROUND_WHITE || \"#fff\",\n\t\tposition: \"relative\",\n\t\twidth: undefined,\n\t\theight: undefined,\n\t\tflex: 1,\n\t},\n\tmainHeader: {\n\t\tposition: \"relative\",\n\t\theight: CARD_IMAGE_HEIGHT,\n\t\twidth: SCREEN_WIDTH,\n\t},\n\n\tgradientOverlay: {\n\t\tflex: 1,\n\t},\n\n\t// Field container and spacing\n\tfieldContainer: {\n\t\tpaddingHorizontal: 16,\n\t\tmarginVertical: 12,\n\t},\n\n\t// Field labels/captions\n\tfieldLabel: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 11,\n\t\tcolor: TEXT_MID,\n\t\tmarginBottom: 6,\n\t\ttextTransform: \"uppercase\",\n\t\tletterSpacing: 1.2,\n\t\talignSelf: \"center\",\n\t\ttextAlign: \"center\",\n\t\tpaddingHorizontal: 8,\n\t\tpaddingVertical: 4,\n\t\tbackgroundColor: \"rgba(0,0,0,0.03)\",\n\t\tborderRadius: 12,\n\t\tmaxWidth: \"80%\",\n\t},\n\n\t// Field type styles\n\tbodyText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: TEXT_DARK,\n\t\tlineHeight: 22,\n\t},\n\ttitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tfontWeight: \"600\",\n\t\tcolor: TEXT_DARK,\n\t},\n\tdescriptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: TEXT_DARK,\n\t\tlineHeight: 24,\n\t},\n\tnumberText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\tfontWeight: \"500\",\n\t\tcolor: TEXT_DARK,\n\t},\n\n\t// Link styles\n\tlinkContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingVertical: 4,\n\t},\n\tlinkText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\ttextDecorationLine: \"underline\",\n\t},\n\n\t// Date styles\n\tdateContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingVertical: 4,\n\t},\n\n\t// Image styles\n\tinlineImage: {\n\t\twidth: \"100%\",\n\t\theight: 200,\n\t\tborderRadius: 8,\n\t\tmarginVertical: 8,\n\t},\n\timageCaption: {\n\t\tfontFamily: \"sf-italic\",\n\t\tfontSize: 14,\n\t\tfontStyle: \"italic\",\n\t\tcolor: TEXT_MID,\n\t\tmarginTop: 4,\n\t\ttextAlign: \"center\",\n\t},\n\n\t// CTA styles\n\tctaContainer: {\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tpaddingVertical: 8,\n\t},\n\n\t// Section title styles\n\tsectionTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tfontWeight: \"700\",\n\t\tcolor: TEXT_DARK,\n\t\tmarginBottom: SPACING.SM,\n\t},\n\n\t// Icon styles\n\tfieldIcon: {\n\t\tmarginRight: 8,\n\t},\n\n\t// Legacy styles (kept for compatibility)\n\tsection: {\n\t\tpaddingVertical: 16,\n\t},\n\tdivider: {\n\t\theight: 1,\n\t\tbackgroundColor: LINEGREY,\n\t\tmarginVertical: 8,\n\t\tmarginHorizontal: 16,\n\t},\n\tfacilityDetailTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tcolor: TEXT_DARK,\n\t\tfontSize: 14,\n\t},\n\tfacilityDetailContent: {\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: TEXT_DARK,\n\t\tfontSize: 16,\n\t\tlineHeight: 22,\n\t},\n\tfacilityDetailsContainer: {\n\t\tflex: 1,\n\t},\n\tfacilityDetailsTextContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t},\n\tfacilityDetailContainer: {\n\t\tmarginTop: 16,\n\t\tflexDirection: \"row\",\n\t},\n\tfacilityDetailTitleContainer: {\n\t\twidth: 100,\n\t\tmarginRight: 10,\n\t},\n\ttitleContainer: {\n\t\tpaddingVertical: 16,\n\t\tpaddingTop: 20,\n\t},\n\teventTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 24,\n\t\tlineHeight: 32,\n\t\tcolor: TEXT_DARK,\n\t\tbackgroundColor: \"transparent\",\n\t\tflex: 1,\n\t},\n\ttextLink: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\tlineHeight: 22,\n\t},\n\tgrayPlaceholder: {\n\t\tbackgroundColor: LINEGREY,\n\t},\n\tcenterContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 20,\n\t},\n\terrorText: {\n\t\tfontSize: 16,\n\t\tcolor: TEXT_MID,\n\t\ttextAlign: \"center\",\n\t},\n\tfilesContainer: {\n\t\tmarginVertical: 8,\n\t},\n});\n\nconst mapStateToProps = (state, ownProps) => {\n\treturn {\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tcolourBrandingHeader: Colours.getMainBrandingColourFromState(state),\n\t\tfeatureDefinition: selectFeatureDefinition(state),\n\t\tuser: state.user,\n\t};\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n\tFeatureDetailScreen,\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
3
|
-
import { FontAwesome } from "./common";
|
|
2
|
+
import { TouchableOpacity, View, StyleSheet, Image } from "react-native";
|
|
3
|
+
import { FontAwesome, Text } from "./common";
|
|
4
4
|
import _ from "lodash";
|
|
5
5
|
import { Helper, Colours } from "../core.config";
|
|
6
6
|
import { values } from "../values.config";
|