@plusscommunities/pluss-core-app 1.4.8 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/actions/FollowerActions.js +34 -0
- package/dist/module/actions/FollowerActions.js.map +1 -0
- package/dist/module/actions/MediaActions.js +20 -0
- package/dist/module/actions/MediaActions.js.map +1 -0
- package/dist/module/actions/ResidentActions.js +26 -0
- package/dist/module/actions/ResidentActions.js.map +1 -0
- package/dist/module/actions/UserActions.js +214 -0
- package/dist/module/actions/UserActions.js.map +1 -0
- package/dist/module/actions/index.js +5 -0
- package/dist/module/actions/index.js.map +1 -0
- package/dist/module/actions/types.js +14 -0
- package/dist/module/actions/types.js.map +1 -0
- package/dist/module/apis/analyticsActions.js +20 -0
- package/dist/module/apis/analyticsActions.js.map +1 -0
- package/dist/module/apis/contactActions.js +27 -0
- package/dist/module/apis/contactActions.js.map +1 -0
- package/dist/module/apis/eventActions.js +163 -0
- package/dist/module/apis/eventActions.js.map +1 -0
- package/dist/module/apis/fileActions.js +96 -0
- package/dist/module/apis/fileActions.js.map +1 -0
- package/dist/module/apis/followerActions.js +38 -0
- package/dist/module/apis/followerActions.js.map +1 -0
- package/dist/module/apis/index.js +11 -0
- package/dist/module/apis/index.js.map +1 -0
- package/dist/module/apis/notificationActions.js +60 -0
- package/dist/module/apis/notificationActions.js.map +1 -0
- package/dist/module/apis/profileActions.js +14 -0
- package/dist/module/apis/profileActions.js.map +1 -0
- package/dist/module/apis/reactionActions.js +78 -0
- package/dist/module/apis/reactionActions.js.map +1 -0
- package/dist/module/apis/typeActions.js +15 -0
- package/dist/module/apis/typeActions.js.map +1 -0
- package/dist/module/apis/userActions.js +104 -0
- package/dist/module/apis/userActions.js.map +1 -0
- package/{assets → dist/module/assets}/icons/reactions/heart.png +0 -0
- package/{assets → dist/module/assets}/icons/reactions/party.png +0 -0
- package/{assets → dist/module/assets}/icons/reactions/sad.png +0 -0
- package/{assets → dist/module/assets}/icons/reactions/smile.png +0 -0
- package/dist/module/colours.js +149 -0
- package/dist/module/colours.js.map +1 -0
- package/dist/module/components/AddButton.js +45 -0
- package/dist/module/components/AddButton.js.map +1 -0
- package/dist/module/components/Attachment.js +59 -0
- package/dist/module/components/Attachment.js.map +1 -0
- package/dist/module/components/AudienceSelectorLauncher.js +70 -0
- package/dist/module/components/AudienceSelectorLauncher.js.map +1 -0
- package/dist/module/components/AudienceSelectorPage.js +376 -0
- package/dist/module/components/AudienceSelectorPage.js.map +1 -0
- package/dist/module/components/BackButton.js +62 -0
- package/dist/module/components/BackButton.js.map +1 -0
- package/dist/module/components/CategoryTabs.js +171 -0
- package/dist/module/components/CategoryTabs.js.map +1 -0
- package/dist/module/components/CommentReply.js +363 -0
- package/dist/module/components/CommentReply.js.map +1 -0
- package/dist/module/components/CommentSection.js +785 -0
- package/dist/module/components/CommentSection.js.map +1 -0
- package/dist/module/components/ConfirmPopup.js +85 -0
- package/dist/module/components/ConfirmPopup.js.map +1 -0
- package/dist/module/components/ConfirmationPopup.js +77 -0
- package/dist/module/components/ConfirmationPopup.js.map +1 -0
- package/dist/module/components/DropDownItem.js +82 -0
- package/dist/module/components/DropDownItem.js.map +1 -0
- package/dist/module/components/DropDownMenu.js +46 -0
- package/dist/module/components/DropDownMenu.js.map +1 -0
- package/dist/module/components/EmptyStateMain.js +50 -0
- package/dist/module/components/EmptyStateMain.js.map +1 -0
- package/dist/module/components/EmptyStateWidget.js +52 -0
- package/dist/module/components/EmptyStateWidget.js.map +1 -0
- package/dist/module/components/FontScaleButton.js +37 -0
- package/dist/module/components/FontScaleButton.js.map +1 -0
- package/dist/module/components/FontScalePopup.js +77 -0
- package/dist/module/components/FontScalePopup.js.map +1 -0
- package/dist/module/components/FormCard.js +28 -0
- package/dist/module/components/FormCard.js.map +1 -0
- package/dist/module/components/FormCardSection.js +240 -0
- package/dist/module/components/FormCardSection.js.map +1 -0
- package/dist/module/components/FormCardSectionOptionLauncher.js +77 -0
- package/dist/module/components/FormCardSectionOptionLauncher.js.map +1 -0
- package/dist/module/components/FormattedText.js +145 -0
- package/dist/module/components/FormattedText.js.map +1 -0
- package/dist/module/components/GenericInput.js +161 -0
- package/dist/module/components/GenericInput.js.map +1 -0
- package/dist/module/components/GenericInputSection.js +174 -0
- package/dist/module/components/GenericInputSection.js.map +1 -0
- package/dist/module/components/Header.js +491 -0
- package/dist/module/components/Header.js.map +1 -0
- package/dist/module/components/ImagePopup.js +257 -0
- package/dist/module/components/ImagePopup.js.map +1 -0
- package/dist/module/components/ImageUploadProgress.js +72 -0
- package/dist/module/components/ImageUploadProgress.js.map +1 -0
- package/dist/module/components/ImageUploader.js +850 -0
- package/dist/module/components/ImageUploader.js.map +1 -0
- package/dist/module/components/InlineButton.js +72 -0
- package/dist/module/components/InlineButton.js.map +1 -0
- package/dist/module/components/Input.js +164 -0
- package/dist/module/components/Input.js.map +1 -0
- package/dist/module/components/LoadingCircles.js +224 -0
- package/dist/module/components/LoadingCircles.js.map +1 -0
- package/dist/module/components/LoadingIndicator.js +95 -0
- package/dist/module/components/LoadingIndicator.js.map +1 -0
- package/dist/module/components/LoadingStateWidget.js +51 -0
- package/dist/module/components/LoadingStateWidget.js.map +1 -0
- package/dist/module/components/MediaPlayer.js +453 -0
- package/dist/module/components/MediaPlayer.js.map +1 -0
- package/dist/module/components/MiddlePopup.js +46 -0
- package/dist/module/components/MiddlePopup.js.map +1 -0
- package/dist/module/components/PDFPopup.js +188 -0
- package/dist/module/components/PDFPopup.js.map +1 -0
- package/dist/module/components/PlussChat.js +997 -0
- package/dist/module/components/PlussChat.js.map +1 -0
- package/dist/module/components/PlussChatMessage.js +204 -0
- package/dist/module/components/PlussChatMessage.js.map +1 -0
- package/dist/module/components/PlussChatTime.js +66 -0
- package/dist/module/components/PlussChatTime.js.map +1 -0
- package/dist/module/components/Popup.js +138 -0
- package/dist/module/components/Popup.js.map +1 -0
- package/dist/module/components/PopupMenu.js +128 -0
- package/dist/module/components/PopupMenu.js.map +1 -0
- package/dist/module/components/PositionedImage.js +333 -0
- package/dist/module/components/PositionedImage.js.map +1 -0
- package/dist/module/components/ProfilePic.js +119 -0
- package/dist/module/components/ProfilePic.js.map +1 -0
- package/dist/module/components/RadioButton.js +84 -0
- package/dist/module/components/RadioButton.js.map +1 -0
- package/dist/module/components/Reaction.js +129 -0
- package/dist/module/components/Reaction.js.map +1 -0
- package/dist/module/components/Reactions.js +84 -0
- package/dist/module/components/Reactions.js.map +1 -0
- package/dist/module/components/SharingTools.js +162 -0
- package/dist/module/components/SharingTools.js.map +1 -0
- package/dist/module/components/Spinner.js +25 -0
- package/dist/module/components/Spinner.js.map +1 -0
- package/dist/module/components/StickyFooter.js +37 -0
- package/dist/module/components/StickyFooter.js.map +1 -0
- package/dist/module/components/TextStyle.js +34 -0
- package/dist/module/components/TextStyle.js.map +1 -0
- package/dist/module/components/Toggle.js +70 -0
- package/dist/module/components/Toggle.js.map +1 -0
- package/dist/module/components/TouchableSearchBar.js +73 -0
- package/dist/module/components/TouchableSearchBar.js.map +1 -0
- package/dist/module/components/UserListPopup.js +146 -0
- package/dist/module/components/UserListPopup.js.map +1 -0
- package/dist/module/components/UserListing.js +291 -0
- package/dist/module/components/UserListing.js.map +1 -0
- package/dist/module/components/VideoPopup.js +123 -0
- package/dist/module/components/VideoPopup.js.map +1 -0
- package/dist/module/components/WarningPopup.js +87 -0
- package/dist/module/components/WarningPopup.js.map +1 -0
- package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js +325 -0
- package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js.map +1 -0
- package/dist/module/components/expo-image-picker-multiple/ImageTile.js +123 -0
- package/dist/module/components/expo-image-picker-multiple/ImageTile.js.map +1 -0
- package/dist/module/components/index.js +53 -0
- package/dist/module/components/index.js.map +1 -0
- package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +416 -0
- package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -0
- package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js +405 -0
- package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js.map +1 -0
- package/dist/module/config.js +27 -0
- package/dist/module/config.js.map +1 -0
- package/dist/module/constants.js +16 -0
- package/dist/module/constants.js.map +1 -0
- package/dist/module/fonts/index.js +2 -0
- package/dist/module/fonts/index.js.map +1 -0
- package/dist/module/fonts/pluss60-icons.js +5 -0
- package/dist/module/fonts/pluss60-icons.js.map +1 -0
- package/dist/module/fonts/pluss60-icons.json +1097 -0
- package/dist/module/helper.js +436 -0
- package/dist/module/helper.js.map +1 -0
- package/dist/module/index.js +13 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/session.js +54 -0
- package/dist/module/session.js.map +1 -0
- package/dist/module/styles.js +67 -0
- package/dist/module/styles.js.map +1 -0
- package/package.json +24 -7
- package/src/assets/icons/reactions/heart.png +0 -0
- package/src/assets/icons/reactions/party.png +0 -0
- package/src/assets/icons/reactions/sad.png +0 -0
- package/src/assets/icons/reactions/smile.png +0 -0
- package/src/components/CommentReply.js +3 -5
- package/src/components/CommentSection.js +4 -4
- package/src/components/MediaPlayer.js +14 -4
- package/src/components/VideoPopup.js +1 -1
- package/src/constants.js +4 -4
- package/src/helper.js +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["colours.js"],"names":["TEXT_DARKEST","TEXT_DARK","TEXT_BLUEGREY","TEXT_MID","TEXT_LIGHT","TEXT_LIGHTER","TEXT_SUPER_LIGHT","BG_GREY","LINEGREY","BOXGREY","PINKISH_GREY","INACTIVE_BUTTON","INACTIVE_TEXT","COLOUR_TEAL","COLOUR_GRAPEFRUIT","COLOUR_GREEN","COLOUR_GREEN_LIGHT","COLOUR_TANGERINE","COLOUR_TRANSPARENT","COLOUR_BRANDING_MAIN","COLOUR_BRANDING_LIGHT","COLOUR_BRANDING_DARK","COLOUR_TAN","hexToRGBAstring","hex","opacity","shorthandRegex","replace","m","r","g","b","result","exec","parseInt","getMainBrandingColourFromState","state","user","siteBranding","MainBrandingColour","getDarkBrandingColourFromState","DarkBrandingColour","getLightBrandingColourFromState","LightBrandingColour"],"mappings":"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","sourcesContent":["// const COLOUR_1 = '#011d5c';\n// const COLOUR_2 = '#3179cb';\n// const COLOUR_3 = '#1bb7ee';\nconst TEXT_DARKEST = '#3e4245';\nconst TEXT_DARK = TEXT_DARKEST;\nconst TEXT_BLUEGREY = '#6c7a90';\n// const TEXT_DARK_ALPHA50 = 'rgba(60, 60, 80, .5)';\n// const TEXT_DARK_ALPHA20 = 'rgba(60, 60, 80, .2)';\n// const TEXT_DARK_ALPHA10 = 'rgba(60, 60, 80, .1)';\nconst TEXT_MID = '#5a5a6e';\n// const TEXT_MID_ALPHA50 = 'rgba(90, 90, 110, .5)';\nconst TEXT_LIGHT = '#717b81';\nconst TEXT_LIGHTER = 'rgba(113, 123, 129, 0.8)';\nconst TEXT_SUPER_LIGHT = '#d1d1d1';\nconst BG_GREY = '#e9e9ef';\nconst LINEGREY = '#d5dde4';\nconst BOXGREY = '#ebeff2';\nconst PINKISH_GREY = '#c4c4c4';\n// const PALE_GREY = '#f6f7f9';\nconst INACTIVE_BUTTON = '#d5d9e1';\nconst INACTIVE_TEXT = 'rgba(113, 123, 130, 0.8)';\nconst COLOUR_TEAL = '#82d6e5';\n// const COLOUR_TEAL_ALPHA50 = 'rgba(4, 196, 169, 0.2)';\n// const COLOUR_BLUE = '#0083ee';\n// const COLOUR_BLUE_LIVE = 'rgb(0, 173, 238)';\n// const COLOUR_BLUE_ALPHA10 = 'rgba(0, 131, 238, 0.1)';\n// const COLOUR_DARKBLUE = '#191e78';\n// const COLOUR_PURPLE = '#8e44ad';\n// const COLOUR_RED = '#C52F40';\nconst COLOUR_GRAPEFRUIT = '#FF6363';\nconst COLOUR_GREEN = '#00cc76';\nconst COLOUR_GREEN_LIGHT = '#58dba4';\nconst COLOUR_TANGERINE = '#ff8c75';\n// const COLOUR_CITRON = '#bdbd27';\n// const DARK_OVERLAY = 'rgba(19,19,26,.6)';\n// const FACEBOOK_BLUE = '#3B5998';\n// const COLOUR_NAV_GREY = '#f6f6f6';\nconst COLOUR_TRANSPARENT = 'rgba(0,0,0,0)';\n// const COLOUR_SIDEBAR = '#303030';\nconst COLOUR_BRANDING_MAIN = '#FF6363';\n// const COLOUR_BRANDING_OFF = '#FCE1E1';\nconst COLOUR_BRANDING_LIGHT = '#FCE1E1';\n// const COLOUR_BRANDING_SECONDARY = COLOUR_BRANDING_MAIN;\nconst COLOUR_BRANDING_DARK = '#D13636';\n// const COLOUR_DAY = '#89c4f4';\n// const COLOUR_NIGHT = '#003159';\nconst COLOUR_TAN = '#fff3d1';\n\n// const hexToRGB = hex => {\n// // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n// const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n// hex = hex.replace(shorthandRegex, (m, r, g, b) => {\n// return r + r + g + g + b + b;\n// });\n\n// const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n// return result\n// ? {\n// r: parseInt(result[1], 16),\n// g: parseInt(result[2], 16),\n// b: parseInt(result[3], 16),\n// }\n// : null;\n// };\n\nconst hexToRGBAstring = (hex, opacity) => {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, (m, r, g, b) => {\n return r + r + g + g + b + b;\n });\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? `rgba(${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)}, ${opacity})` : null;\n};\n\n// const pctBtwnColours = (c1, c2, percentage) => {\n// const rgbC1 = hexToRGB(c1);\n// const rgbC2 = hexToRGB(c2);\n// const r = rgbC2.r + (rgbC1.r - rgbC2.r) * percentage;\n// const g = rgbC2.g + (rgbC1.g - rgbC2.g) * percentage;\n// const b = rgbC2.b + (rgbC1.b - rgbC2.b) * percentage;\n// return `rgb(${r}, ${g}, ${b})`;\n// };\n\n// const getTabIconColour = (mainColour, footerType, selected) => {\n// if (footerType !== 'white') {\n// return '#fff';\n// }\n// if (selected) {\n// return mainColour;\n// }\n// return TEXT_BLUEGREY;\n// };\n\n// const getHeaderBrandingColourFromState = state => {\n// return (state && state.user && state.user.siteBranding && state.user.siteBranding.HeaderBrandingColour) || null;\n// };\n\nconst getMainBrandingColourFromState = state => {\n return (state && state.user && state.user.siteBranding && state.user.siteBranding.MainBrandingColour) || COLOUR_BRANDING_MAIN;\n};\n\nconst getDarkBrandingColourFromState = state => {\n return (state && state.user && state.user.siteBranding && state.user.siteBranding.DarkBrandingColour) || COLOUR_BRANDING_DARK;\n};\n\nconst getLightBrandingColourFromState = state => {\n return (state && state.user && state.user.siteBranding && state.user.siteBranding.LightBrandingColour) || COLOUR_BRANDING_LIGHT;\n};\n\n// const getSecondaryBrandingColourFromState = state => {\n// return (state && state.user && state.user.siteBranding && state.user.siteBranding.SecondaryBrandingColour) || COLOUR_BRANDING_SECONDARY;\n// };\n\n// const getMainBrandingColourFromSite = site => {\n// return (site.Branding && site.Branding.MainBrandingColour) || COLOUR_BRANDING_MAIN;\n// };\n\n// const getDarkBrandingColourFromSite = site => {\n// return (site.Branding && site.Branding.DarkBrandingColour) || COLOUR_BRANDING_DARK;\n// };\n\n// const getLightBrandingColourFromSite = site => {\n// return (site.Branding && site.Branding.LightBrandingColour) || COLOUR_BRANDING_LIGHT;\n// };\n\nexport {\n // COLOUR_1,\n // COLOUR_2,\n // COLOUR_3,\n TEXT_DARKEST,\n TEXT_BLUEGREY,\n TEXT_DARK,\n // TEXT_DARK_ALPHA50,\n // TEXT_DARK_ALPHA20,\n // TEXT_DARK_ALPHA10,\n TEXT_MID,\n // TEXT_MID_ALPHA50,\n TEXT_LIGHT,\n TEXT_LIGHTER,\n TEXT_SUPER_LIGHT,\n BG_GREY,\n LINEGREY,\n PINKISH_GREY,\n BOXGREY,\n // PALE_GREY,\n INACTIVE_BUTTON,\n INACTIVE_TEXT,\n COLOUR_TEAL,\n // COLOUR_TEAL_ALPHA50,\n // COLOUR_BLUE,\n // COLOUR_BLUE_LIVE,\n // COLOUR_BLUE_ALPHA10,\n // COLOUR_DARKBLUE,\n // COLOUR_PURPLE,\n // COLOUR_RED,\n COLOUR_TANGERINE,\n // COLOUR_CITRON,\n // DARK_OVERLAY,\n // hexToRGB,\n hexToRGBAstring,\n // pctBtwnColours,\n // FACEBOOK_BLUE,\n // COLOUR_NAV_GREY,\n COLOUR_TRANSPARENT,\n // COLOUR_SIDEBAR,\n COLOUR_BRANDING_MAIN,\n // COLOUR_BRANDING_OFF,\n COLOUR_BRANDING_LIGHT,\n COLOUR_BRANDING_DARK,\n COLOUR_GREEN,\n COLOUR_GREEN_LIGHT,\n COLOUR_GRAPEFRUIT,\n // COLOUR_DAY,\n // COLOUR_NIGHT,\n COLOUR_TAN,\n // getHeaderBrandingColourFromState,\n getMainBrandingColourFromState,\n getDarkBrandingColourFromState,\n getLightBrandingColourFromState,\n // getSecondaryBrandingColourFromState,\n // getMainBrandingColourFromSite,\n // getDarkBrandingColourFromSite,\n // getLightBrandingColourFromSite,\n // getTabIconColour,\n};\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React, { PureComponent } from 'react';
|
|
2
|
+
import { TouchableOpacity } from 'react-native';
|
|
3
|
+
import { connect } from 'react-redux';
|
|
4
|
+
import Styles from '../styles';
|
|
5
|
+
import { Pl60Icon } from '../fonts';
|
|
6
|
+
import { getMainBrandingColourFromState } from '../colours';
|
|
7
|
+
/*
|
|
8
|
+
Props-
|
|
9
|
+
onPress - onPress action
|
|
10
|
+
diameter - size of button
|
|
11
|
+
iconSize - size of inner plus
|
|
12
|
+
color - default will be aveoMain
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
class AddButton extends PureComponent {
|
|
16
|
+
render() {
|
|
17
|
+
const size = this.props.diameter || 48;
|
|
18
|
+
const radius = size / 2;
|
|
19
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
20
|
+
style: [Styles.addButton, {
|
|
21
|
+
height: size,
|
|
22
|
+
width: size,
|
|
23
|
+
borderRadius: radius,
|
|
24
|
+
backgroundColor: this.props.colourBrandingMain
|
|
25
|
+
}, this.props.color && {
|
|
26
|
+
backgroundColor: this.props.color
|
|
27
|
+
}, this.props.style],
|
|
28
|
+
onPress: this.props.onPress
|
|
29
|
+
}, /*#__PURE__*/React.createElement(Pl60Icon, {
|
|
30
|
+
name: "pluss",
|
|
31
|
+
style: Styles.addButtonIcon
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const mapStateToProps = state => {
|
|
38
|
+
return {
|
|
39
|
+
colourBrandingMain: getMainBrandingColourFromState(state)
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const addButton = connect(mapStateToProps, {})(AddButton);
|
|
44
|
+
export { addButton as AddButton };
|
|
45
|
+
//# sourceMappingURL=AddButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["AddButton.js"],"names":["React","PureComponent","TouchableOpacity","connect","Styles","Pl60Icon","getMainBrandingColourFromState","AddButton","render","size","props","diameter","radius","addButton","height","width","borderRadius","backgroundColor","colourBrandingMain","color","style","onPress","addButtonIcon","mapStateToProps","state"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,SAASC,gBAAT,QAAiC,cAAjC;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,SAASC,QAAT,QAAyB,UAAzB;AACA,SAASC,8BAAT,QAA+C,YAA/C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,SAAN,SAAwBN,aAAxB,CAAsC;AACpCO,EAAAA,MAAM,GAAG;AACP,UAAMC,IAAI,GAAG,KAAKC,KAAL,CAAWC,QAAX,IAAuB,EAApC;AACA,UAAMC,MAAM,GAAGH,IAAI,GAAG,CAAtB;AACA,wBACE,oBAAC,gBAAD;AACE,MAAA,KAAK,EAAE,CACLL,MAAM,CAACS,SADF,EAEL;AAAEC,QAAAA,MAAM,EAAEL,IAAV;AAAgBM,QAAAA,KAAK,EAAEN,IAAvB;AAA6BO,QAAAA,YAAY,EAAEJ,MAA3C;AAAmDK,QAAAA,eAAe,EAAE,KAAKP,KAAL,CAAWQ;AAA/E,OAFK,EAGL,KAAKR,KAAL,CAAWS,KAAX,IAAoB;AAAEF,QAAAA,eAAe,EAAE,KAAKP,KAAL,CAAWS;AAA9B,OAHf,EAIL,KAAKT,KAAL,CAAWU,KAJN,CADT;AAOE,MAAA,OAAO,EAAE,KAAKV,KAAL,CAAWW;AAPtB,oBASE,oBAAC,QAAD;AAAU,MAAA,IAAI,EAAC,OAAf;AAAuB,MAAA,KAAK,EAAEjB,MAAM,CAACkB;AAArC,MATF,CADF;AAaD;;AAjBmC;;AAoBtC,MAAMC,eAAe,GAAGC,KAAK,IAAI;AAC/B,SAAO;AACLN,IAAAA,kBAAkB,EAAEZ,8BAA8B,CAACkB,KAAD;AAD7C,GAAP;AAGD,CAJD;;AAMA,MAAMX,SAAS,GAAGV,OAAO,CAACoB,eAAD,EAAkB,EAAlB,CAAP,CAA6BhB,SAA7B,CAAlB;AACA,SAASM,SAAS,IAAIN,SAAtB","sourcesContent":["import React, { PureComponent } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport { connect } from 'react-redux';\nimport Styles from '../styles';\nimport { Pl60Icon } from '../fonts';\nimport { getMainBrandingColourFromState } from '../colours';\n\n/* \nProps- \n onPress - onPress action\n diameter - size of button\n iconSize - size of inner plus\n color - default will be aveoMain\n*/\n\nclass AddButton extends PureComponent {\n render() {\n const size = this.props.diameter || 48;\n const radius = size / 2;\n return (\n <TouchableOpacity\n style={[\n Styles.addButton,\n { height: size, width: size, borderRadius: radius, backgroundColor: this.props.colourBrandingMain },\n this.props.color && { backgroundColor: this.props.color },\n this.props.style,\n ]}\n onPress={this.props.onPress}\n >\n <Pl60Icon name=\"pluss\" style={Styles.addButtonIcon} />\n </TouchableOpacity>\n );\n }\n}\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nconst addButton = connect(mapStateToProps, {})(AddButton);\nexport { addButton as AddButton };\n"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import React, { PureComponent } from 'react';
|
|
2
|
+
import { TouchableOpacity, View, Text } from 'react-native';
|
|
3
|
+
import { connect } from 'react-redux';
|
|
4
|
+
import { Icon } from 'react-native-elements';
|
|
5
|
+
import { getLightBrandingColourFromState, getMainBrandingColourFromState } from '../colours';
|
|
6
|
+
|
|
7
|
+
class Attachment extends PureComponent {
|
|
8
|
+
render() {
|
|
9
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
10
|
+
key: this.props.key,
|
|
11
|
+
onPress: this.props.onPress
|
|
12
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
13
|
+
style: [styles.pdfAttachment, {
|
|
14
|
+
backgroundColor: this.props.colourBrandingLight
|
|
15
|
+
}]
|
|
16
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
17
|
+
name: "paperclip",
|
|
18
|
+
type: "font-awesome",
|
|
19
|
+
iconStyle: [styles.pdfAttachmentIcon, {
|
|
20
|
+
color: this.props.colourBrandingMain
|
|
21
|
+
}]
|
|
22
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
23
|
+
style: [styles.pdfAttachmentText, {
|
|
24
|
+
color: this.props.colourBrandingMain
|
|
25
|
+
}]
|
|
26
|
+
}, this.props.title)));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const styles = {
|
|
32
|
+
pdfAttachment: {
|
|
33
|
+
padding: 4,
|
|
34
|
+
flexDirection: 'row',
|
|
35
|
+
borderRadius: 2,
|
|
36
|
+
marginTop: 8,
|
|
37
|
+
alignItems: 'center',
|
|
38
|
+
alignSelf: 'flex-start'
|
|
39
|
+
},
|
|
40
|
+
pdfAttachmentIcon: {
|
|
41
|
+
fontSize: 16,
|
|
42
|
+
marginRight: 4
|
|
43
|
+
},
|
|
44
|
+
pdfAttachmentText: {
|
|
45
|
+
fontFamily: 'sf-semibold',
|
|
46
|
+
fontSize: 13
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const mapStateToProps = state => {
|
|
51
|
+
return {
|
|
52
|
+
colourBrandingMain: getMainBrandingColourFromState(state),
|
|
53
|
+
colourBrandingLight: getLightBrandingColourFromState(state)
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const attachment = connect(mapStateToProps, {})(Attachment);
|
|
58
|
+
export { attachment as Attachment };
|
|
59
|
+
//# sourceMappingURL=Attachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Attachment.js"],"names":["React","PureComponent","TouchableOpacity","View","Text","connect","Icon","getLightBrandingColourFromState","getMainBrandingColourFromState","Attachment","render","props","key","onPress","styles","pdfAttachment","backgroundColor","colourBrandingLight","pdfAttachmentIcon","color","colourBrandingMain","pdfAttachmentText","title","padding","flexDirection","borderRadius","marginTop","alignItems","alignSelf","fontSize","marginRight","fontFamily","mapStateToProps","state","attachment"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,SAASC,gBAAT,EAA2BC,IAA3B,EAAiCC,IAAjC,QAA6C,cAA7C;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SAASC,IAAT,QAAqB,uBAArB;AACA,SAASC,+BAAT,EAA0CC,8BAA1C,QAAgF,YAAhF;;AAEA,MAAMC,UAAN,SAAyBR,aAAzB,CAAuC;AACrCS,EAAAA,MAAM,GAAG;AACP,wBACE,oBAAC,gBAAD;AAAkB,MAAA,GAAG,EAAE,KAAKC,KAAL,CAAWC,GAAlC;AAAuC,MAAA,OAAO,EAAE,KAAKD,KAAL,CAAWE;AAA3D,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACC,MAAM,CAACC,aAAR,EAAuB;AAAEC,QAAAA,eAAe,EAAE,KAAKL,KAAL,CAAWM;AAA9B,OAAvB;AAAb,oBACE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAC,WAAX;AAAuB,MAAA,IAAI,EAAC,cAA5B;AAA2C,MAAA,SAAS,EAAE,CAACH,MAAM,CAACI,iBAAR,EAA2B;AAAEC,QAAAA,KAAK,EAAE,KAAKR,KAAL,CAAWS;AAApB,OAA3B;AAAtD,MADF,eAEE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACN,MAAM,CAACO,iBAAR,EAA2B;AAAEF,QAAAA,KAAK,EAAE,KAAKR,KAAL,CAAWS;AAApB,OAA3B;AAAb,OAAoF,KAAKT,KAAL,CAAWW,KAA/F,CAFF,CADF,CADF;AAQD;;AAVoC;;AAavC,MAAMR,MAAM,GAAG;AACbC,EAAAA,aAAa,EAAE;AACbQ,IAAAA,OAAO,EAAE,CADI;AAEbC,IAAAA,aAAa,EAAE,KAFF;AAGbC,IAAAA,YAAY,EAAE,CAHD;AAIbC,IAAAA,SAAS,EAAE,CAJE;AAKbC,IAAAA,UAAU,EAAE,QALC;AAMbC,IAAAA,SAAS,EAAE;AANE,GADF;AASbV,EAAAA,iBAAiB,EAAE;AACjBW,IAAAA,QAAQ,EAAE,EADO;AAEjBC,IAAAA,WAAW,EAAE;AAFI,GATN;AAabT,EAAAA,iBAAiB,EAAE;AACjBU,IAAAA,UAAU,EAAE,aADK;AAEjBF,IAAAA,QAAQ,EAAE;AAFO;AAbN,CAAf;;AAmBA,MAAMG,eAAe,GAAGC,KAAK,IAAI;AAC/B,SAAO;AACLb,IAAAA,kBAAkB,EAAEZ,8BAA8B,CAACyB,KAAD,CAD7C;AAELhB,IAAAA,mBAAmB,EAAEV,+BAA+B,CAAC0B,KAAD;AAF/C,GAAP;AAID,CALD;;AAOA,MAAMC,UAAU,GAAG7B,OAAO,CAAC2B,eAAD,EAAkB,EAAlB,CAAP,CAA6BvB,UAA7B,CAAnB;AACA,SAASyB,UAAU,IAAIzB,UAAvB","sourcesContent":["import React, { PureComponent } from 'react';\nimport { TouchableOpacity, View, Text } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport { getLightBrandingColourFromState, getMainBrandingColourFromState } from '../colours';\n\nclass Attachment extends PureComponent {\n render() {\n return (\n <TouchableOpacity key={this.props.key} onPress={this.props.onPress}>\n <View style={[styles.pdfAttachment, { backgroundColor: this.props.colourBrandingLight }]}>\n <Icon name=\"paperclip\" type=\"font-awesome\" iconStyle={[styles.pdfAttachmentIcon, { color: this.props.colourBrandingMain }]} />\n <Text style={[styles.pdfAttachmentText, { color: this.props.colourBrandingMain }]}>{this.props.title}</Text>\n </View>\n </TouchableOpacity>\n );\n }\n}\n\nconst styles = {\n pdfAttachment: {\n padding: 4,\n flexDirection: 'row',\n borderRadius: 2,\n marginTop: 8,\n alignItems: 'center',\n alignSelf: 'flex-start',\n },\n pdfAttachmentIcon: {\n fontSize: 16,\n marginRight: 4,\n },\n pdfAttachmentText: {\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n};\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n colourBrandingLight: getLightBrandingColourFromState(state),\n };\n};\n\nconst attachment = connect(mapStateToProps, {})(Attachment);\nexport { attachment as Attachment };\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import React, { PureComponent } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { connect } from 'react-redux';
|
|
6
|
+
import { FormCardSectionOptionLauncher } from './FormCardSectionOptionLauncher';
|
|
7
|
+
import { getMainBrandingColourFromState, TEXT_DARK } from '../colours';
|
|
8
|
+
import { Services } from '../config';
|
|
9
|
+
|
|
10
|
+
class AudienceSelectorLauncher extends PureComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
|
|
14
|
+
_defineProperty(this, "onPressAudience", () => {
|
|
15
|
+
const {
|
|
16
|
+
user,
|
|
17
|
+
audienceType,
|
|
18
|
+
audienceTypeSelection
|
|
19
|
+
} = this.props;
|
|
20
|
+
Services.navigation.navigate('audienceSelectorPage', {
|
|
21
|
+
site: user.site,
|
|
22
|
+
audienceType: audienceType || 'Custom',
|
|
23
|
+
audienceTypeSelection: audienceTypeSelection || [],
|
|
24
|
+
onChange: (audienceType, audienceTypeSelection) => {
|
|
25
|
+
if (this.props.onChange) this.props.onChange(audienceType, audienceTypeSelection);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
render() {
|
|
32
|
+
const {
|
|
33
|
+
style,
|
|
34
|
+
textStyle,
|
|
35
|
+
audienceTypeSelection
|
|
36
|
+
} = this.props;
|
|
37
|
+
const selected = audienceTypeSelection && audienceTypeSelection.length > 0 ? `Current selection: ${audienceTypeSelection.map(i => i.Title).join(', ')}` : '';
|
|
38
|
+
return /*#__PURE__*/React.createElement(FormCardSectionOptionLauncher, {
|
|
39
|
+
sectionStyle: [styles.audienceSection, style],
|
|
40
|
+
textStyle: [styles.audienceText, textStyle],
|
|
41
|
+
onPress: this.onPressAudience,
|
|
42
|
+
title: "Audience",
|
|
43
|
+
description: selected,
|
|
44
|
+
value: selected ? 'Custom' : 'All Users'
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const styles = StyleSheet.create({
|
|
51
|
+
audienceSection: {
|
|
52
|
+
paddingHorizontal: 0
|
|
53
|
+
},
|
|
54
|
+
audienceText: {
|
|
55
|
+
fontFamily: 'sf-semibold',
|
|
56
|
+
fontSize: 16,
|
|
57
|
+
color: TEXT_DARK
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const mapStateToProps = state => {
|
|
62
|
+
return {
|
|
63
|
+
user: state.user,
|
|
64
|
+
colourBrandingMain: getMainBrandingColourFromState(state)
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const audienceSelectorLauncher = connect(mapStateToProps, {})(AudienceSelectorLauncher);
|
|
69
|
+
export { audienceSelectorLauncher as AudienceSelectorLauncher };
|
|
70
|
+
//# sourceMappingURL=AudienceSelectorLauncher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["AudienceSelectorLauncher.js"],"names":["React","PureComponent","StyleSheet","connect","FormCardSectionOptionLauncher","getMainBrandingColourFromState","TEXT_DARK","Services","AudienceSelectorLauncher","user","audienceType","audienceTypeSelection","props","navigation","navigate","site","onChange","render","style","textStyle","selected","length","map","i","Title","join","styles","audienceSection","audienceText","onPressAudience","create","paddingHorizontal","fontFamily","fontSize","color","mapStateToProps","state","colourBrandingMain","audienceSelectorLauncher"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SAASC,6BAAT,QAA8C,iCAA9C;AACA,SAASC,8BAAT,EAAyCC,SAAzC,QAA0D,YAA1D;AACA,SAASC,QAAT,QAAyB,WAAzB;;AAEA,MAAMC,wBAAN,SAAuCP,aAAvC,CAAqD;AAAA;AAAA;;AAAA,6CACjC,MAAM;AACtB,YAAM;AAAEQ,QAAAA,IAAF;AAAQC,QAAAA,YAAR;AAAsBC,QAAAA;AAAtB,UAAgD,KAAKC,KAA3D;AAEAL,MAAAA,QAAQ,CAACM,UAAT,CAAoBC,QAApB,CAA6B,sBAA7B,EAAqD;AACnDC,QAAAA,IAAI,EAAEN,IAAI,CAACM,IADwC;AAEnDL,QAAAA,YAAY,EAAEA,YAAY,IAAI,QAFqB;AAGnDC,QAAAA,qBAAqB,EAAEA,qBAAqB,IAAI,EAHG;AAInDK,QAAAA,QAAQ,EAAE,CAACN,YAAD,EAAeC,qBAAf,KAAyC;AACjD,cAAI,KAAKC,KAAL,CAAWI,QAAf,EAAyB,KAAKJ,KAAL,CAAWI,QAAX,CAAoBN,YAApB,EAAkCC,qBAAlC;AAC1B;AANkD,OAArD;AAQD,KAZkD;AAAA;;AAcnDM,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEC,MAAAA,KAAF;AAASC,MAAAA,SAAT;AAAoBR,MAAAA;AAApB,QAA8C,KAAKC,KAAzD;AACA,UAAMQ,QAAQ,GACZT,qBAAqB,IAAIA,qBAAqB,CAACU,MAAtB,GAA+B,CAAxD,GACK,sBAAqBV,qBAAqB,CAACW,GAAtB,CAA0BC,CAAC,IAAIA,CAAC,CAACC,KAAjC,EAAwCC,IAAxC,CAA6C,IAA7C,CAAmD,EAD7E,GAEI,EAHN;AAKA,wBACE,oBAAC,6BAAD;AACE,MAAA,YAAY,EAAE,CAACC,MAAM,CAACC,eAAR,EAAyBT,KAAzB,CADhB;AAEE,MAAA,SAAS,EAAE,CAACQ,MAAM,CAACE,YAAR,EAAsBT,SAAtB,CAFb;AAGE,MAAA,OAAO,EAAE,KAAKU,eAHhB;AAIE,MAAA,KAAK,EAAC,UAJR;AAKE,MAAA,WAAW,EAAET,QALf;AAME,MAAA,KAAK,EAAEA,QAAQ,GAAG,QAAH,GAAc;AAN/B,MADF;AAUD;;AA/BkD;;AAkCrD,MAAMM,MAAM,GAAGxB,UAAU,CAAC4B,MAAX,CAAkB;AAC/BH,EAAAA,eAAe,EAAE;AACfI,IAAAA,iBAAiB,EAAE;AADJ,GADc;AAI/BH,EAAAA,YAAY,EAAE;AACZI,IAAAA,UAAU,EAAE,aADA;AAEZC,IAAAA,QAAQ,EAAE,EAFE;AAGZC,IAAAA,KAAK,EAAE5B;AAHK;AAJiB,CAAlB,CAAf;;AAWA,MAAM6B,eAAe,GAAGC,KAAK,IAAI;AAC/B,SAAO;AACL3B,IAAAA,IAAI,EAAE2B,KAAK,CAAC3B,IADP;AAEL4B,IAAAA,kBAAkB,EAAEhC,8BAA8B,CAAC+B,KAAD;AAF7C,GAAP;AAID,CALD;;AAOA,MAAME,wBAAwB,GAAGnC,OAAO,CAACgC,eAAD,EAAkB,EAAlB,CAAP,CAA6B3B,wBAA7B,CAAjC;AACA,SAAS8B,wBAAwB,IAAI9B,wBAArC","sourcesContent":["import React, { PureComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport { FormCardSectionOptionLauncher } from './FormCardSectionOptionLauncher';\nimport { getMainBrandingColourFromState, TEXT_DARK } from '../colours';\nimport { Services } from '../config';\n\nclass AudienceSelectorLauncher extends PureComponent {\n onPressAudience = () => {\n const { user, audienceType, audienceTypeSelection } = this.props;\n\n Services.navigation.navigate('audienceSelectorPage', {\n site: user.site,\n audienceType: audienceType || 'Custom',\n audienceTypeSelection: audienceTypeSelection || [],\n onChange: (audienceType, audienceTypeSelection) => {\n if (this.props.onChange) this.props.onChange(audienceType, audienceTypeSelection);\n },\n });\n };\n\n render() {\n const { style, textStyle, audienceTypeSelection } = this.props;\n const selected =\n audienceTypeSelection && audienceTypeSelection.length > 0\n ? `Current selection: ${audienceTypeSelection.map(i => i.Title).join(', ')}`\n : '';\n\n return (\n <FormCardSectionOptionLauncher\n sectionStyle={[styles.audienceSection, style]}\n textStyle={[styles.audienceText, textStyle]}\n onPress={this.onPressAudience}\n title=\"Audience\"\n description={selected}\n value={selected ? 'Custom' : 'All Users'}\n />\n );\n }\n}\n\nconst styles = StyleSheet.create({\n audienceSection: {\n paddingHorizontal: 0,\n },\n audienceText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n color: TEXT_DARK,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nconst audienceSelectorLauncher = connect(mapStateToProps, {})(AudienceSelectorLauncher);\nexport { audienceSelectorLauncher as AudienceSelectorLauncher };\n"]}
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import React, { Component } from 'react';
|
|
4
|
+
import { connect } from 'react-redux';
|
|
5
|
+
import _ from 'lodash';
|
|
6
|
+
import { TouchableOpacity, View, ScrollView, Text, StyleSheet } from 'react-native';
|
|
7
|
+
import { Icon } from 'react-native-elements';
|
|
8
|
+
import { Services } from '../config';
|
|
9
|
+
import { FormCard } from './FormCard';
|
|
10
|
+
import { FormCardSection } from './FormCardSection';
|
|
11
|
+
import { InlineButton } from './InlineButton';
|
|
12
|
+
import Header from './Header';
|
|
13
|
+
import { Spinner } from './Spinner';
|
|
14
|
+
import { TEXT_DARK, COLOUR_GREEN, BG_GREY, INACTIVE_BUTTON, TEXT_LIGHT, getMainBrandingColourFromState } from '../colours';
|
|
15
|
+
import { typeActions, profileActions } from '../apis';
|
|
16
|
+
|
|
17
|
+
class AudienceSelectorPage extends Component {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
20
|
+
|
|
21
|
+
_defineProperty(this, "componentDidMount", async () => {
|
|
22
|
+
try {
|
|
23
|
+
this.setState({
|
|
24
|
+
loading: true
|
|
25
|
+
});
|
|
26
|
+
await this.getUserTypes();
|
|
27
|
+
await this.getUserTags();
|
|
28
|
+
this.setState({
|
|
29
|
+
loading: false,
|
|
30
|
+
combinedList: this.getAvailableAudienceTags()
|
|
31
|
+
});
|
|
32
|
+
} catch (error) {
|
|
33
|
+
console.error('loading types error', error);
|
|
34
|
+
this.setState({
|
|
35
|
+
loading: false
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
_defineProperty(this, "getUserTypes", async () => {
|
|
41
|
+
const {
|
|
42
|
+
data
|
|
43
|
+
} = await typeActions.getUserTypes(this.props.site);
|
|
44
|
+
data.forEach(e => {
|
|
45
|
+
e.name = e.category ? `(${e.category[0].toUpperCase() + e.category.substring(1)}) ${e.displayName}` : e.displayName;
|
|
46
|
+
e.key = e.typeName;
|
|
47
|
+
}); // console.log('getUserTypes', data);
|
|
48
|
+
|
|
49
|
+
this.setState({
|
|
50
|
+
types: data
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
_defineProperty(this, "getUserTags", async () => {
|
|
55
|
+
const {
|
|
56
|
+
data
|
|
57
|
+
} = await profileActions.getUserTagsBySite(this.props.site);
|
|
58
|
+
data.forEach(e => {
|
|
59
|
+
e.name = e.Title;
|
|
60
|
+
e.key = e.Id;
|
|
61
|
+
}); // console.log('getUserTags', data);
|
|
62
|
+
|
|
63
|
+
this.setState({
|
|
64
|
+
tags: data
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
_defineProperty(this, "getAvailableAudienceTags", () => {
|
|
69
|
+
const {
|
|
70
|
+
categories,
|
|
71
|
+
types,
|
|
72
|
+
tags
|
|
73
|
+
} = this.state;
|
|
74
|
+
const {
|
|
75
|
+
audienceTypeSelection
|
|
76
|
+
} = this.props;
|
|
77
|
+
const categoryTags = categories.map(c => {
|
|
78
|
+
const Id = `category_${c.key}`;
|
|
79
|
+
return {
|
|
80
|
+
AudienceType: 'Category',
|
|
81
|
+
AudienceTypeSelection: c.key,
|
|
82
|
+
Id,
|
|
83
|
+
Title: c.name,
|
|
84
|
+
Selected: audienceTypeSelection.some(i => i.Id === Id)
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
const userTypeTags = types.map(t => {
|
|
88
|
+
const Id = `userType_${t.typeName}`;
|
|
89
|
+
return {
|
|
90
|
+
AudienceType: 'UserType',
|
|
91
|
+
AudienceTypeSelection: t.typeName,
|
|
92
|
+
Id,
|
|
93
|
+
Title: `User Type: ${t.displayName}`,
|
|
94
|
+
Selected: audienceTypeSelection.some(i => i.Id === Id)
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
const userTagTags = tags.map(t => {
|
|
98
|
+
const Id = `userTag_${t.Id}`;
|
|
99
|
+
return {
|
|
100
|
+
AudienceType: 'UserTags',
|
|
101
|
+
AudienceTypeSelection: t.Id,
|
|
102
|
+
Id,
|
|
103
|
+
Title: `User Tag: ${t.Title}`,
|
|
104
|
+
Selected: audienceTypeSelection.some(i => i.Id === Id)
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
return [...categoryTags, ...userTypeTags, ...userTagTags];
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
_defineProperty(this, "onPressBack", () => {
|
|
111
|
+
Services.navigation.goBack();
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
_defineProperty(this, "onSelectAll", () => {
|
|
115
|
+
const newList = [...this.state.combinedList];
|
|
116
|
+
newList.forEach(i => i.Selected = false);
|
|
117
|
+
this.setState({
|
|
118
|
+
combinedList: newList
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
_defineProperty(this, "onSeeAll", () => {
|
|
123
|
+
this.setState({
|
|
124
|
+
seeAll: !this.state.seeAll
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
_defineProperty(this, "onToggleAudienceOption", option => {
|
|
129
|
+
const newList = [...this.state.combinedList];
|
|
130
|
+
const selected = newList.find(i => i.Id === option.Id);
|
|
131
|
+
|
|
132
|
+
if (selected) {
|
|
133
|
+
selected.Selected = !selected.Selected;
|
|
134
|
+
this.setState({
|
|
135
|
+
combinedList: newList
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
_defineProperty(this, "onDone", () => {
|
|
141
|
+
if (this.props.onChange) {
|
|
142
|
+
const {
|
|
143
|
+
combinedList
|
|
144
|
+
} = this.state;
|
|
145
|
+
const selected = combinedList.filter(i => i.Selected);
|
|
146
|
+
|
|
147
|
+
if (selected && selected.length > 0) {
|
|
148
|
+
this.props.onChange('Custom', selected);
|
|
149
|
+
} else {
|
|
150
|
+
this.props.onChange(null, null);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
Services.navigation.goBack();
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
this.state = {
|
|
158
|
+
loading: false,
|
|
159
|
+
categories: [{
|
|
160
|
+
name: 'All Primary Users',
|
|
161
|
+
key: 'resident'
|
|
162
|
+
}, {
|
|
163
|
+
name: 'All Staff Users',
|
|
164
|
+
key: 'staff'
|
|
165
|
+
}, {
|
|
166
|
+
name: 'All Linked Users',
|
|
167
|
+
key: 'family'
|
|
168
|
+
}],
|
|
169
|
+
types: [],
|
|
170
|
+
tags: [],
|
|
171
|
+
combinedList: [],
|
|
172
|
+
seeAll: false
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
renderOption(label, selected, onSelect) {
|
|
177
|
+
let key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
178
|
+
let hasUnderline = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
179
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
180
|
+
key: key,
|
|
181
|
+
onPress: onSelect
|
|
182
|
+
}, /*#__PURE__*/React.createElement(FormCardSection, {
|
|
183
|
+
hasUnderline: hasUnderline,
|
|
184
|
+
hasContent: true
|
|
185
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
186
|
+
style: styles.labelContainer
|
|
187
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
188
|
+
style: styles.labelText
|
|
189
|
+
}, label), /*#__PURE__*/React.createElement(Icon, {
|
|
190
|
+
name: "check-circle",
|
|
191
|
+
type: "font-awesome",
|
|
192
|
+
iconStyle: [{
|
|
193
|
+
color: INACTIVE_BUTTON,
|
|
194
|
+
fontSize: 20
|
|
195
|
+
}, selected && {
|
|
196
|
+
color: COLOUR_GREEN
|
|
197
|
+
}]
|
|
198
|
+
}))));
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
renderSelectAll() {
|
|
202
|
+
const {
|
|
203
|
+
combinedList,
|
|
204
|
+
loading
|
|
205
|
+
} = this.state;
|
|
206
|
+
const allSelected = !combinedList.find(i => i.Selected);
|
|
207
|
+
if (loading) return null;
|
|
208
|
+
return /*#__PURE__*/React.createElement(FormCard, {
|
|
209
|
+
style: styles.selectAllContainer
|
|
210
|
+
}, this.renderOption('All Users', allSelected, this.onSelectAll, null, false));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
renderSelection() {
|
|
214
|
+
const {
|
|
215
|
+
loading,
|
|
216
|
+
combinedList,
|
|
217
|
+
seeAll
|
|
218
|
+
} = this.state;
|
|
219
|
+
if (loading) return null;
|
|
220
|
+
const selectedText = combinedList.filter(i => i.Selected).map(i => i.Title).join(', ');
|
|
221
|
+
const hasSelected = !_.isEmpty(selectedText);
|
|
222
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
223
|
+
style: styles.selectionContainer
|
|
224
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
225
|
+
style: styles.selectionContainerInner
|
|
226
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
227
|
+
style: styles.selectionTitle
|
|
228
|
+
}, "or select from below"), hasSelected ? /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
229
|
+
onPress: this.onSeeAll
|
|
230
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
231
|
+
style: styles.seeAllButton
|
|
232
|
+
}, seeAll ? 'See less' : 'See all')) : null), hasSelected ? /*#__PURE__*/React.createElement(Text, {
|
|
233
|
+
style: styles.selectionText,
|
|
234
|
+
numberOfLines: seeAll ? null : 1
|
|
235
|
+
}, `Current selection: ${selectedText}`) : null);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
renderTips() {
|
|
239
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
240
|
+
style: styles.tipContainer
|
|
241
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
242
|
+
style: styles.tipText
|
|
243
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
244
|
+
style: {
|
|
245
|
+
fontFamily: 'sf-semibold'
|
|
246
|
+
}
|
|
247
|
+
}, "Tip: "), "Group your users using User Tags from your website Community Manager"));
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
renderAvailableAudiences() {
|
|
251
|
+
const {
|
|
252
|
+
loading,
|
|
253
|
+
combinedList
|
|
254
|
+
} = this.state;
|
|
255
|
+
return /*#__PURE__*/React.createElement(ScrollView, {
|
|
256
|
+
style: styles.availableScrollContainer,
|
|
257
|
+
contentContainerStyle: styles.availabelScrollContent
|
|
258
|
+
}, /*#__PURE__*/React.createElement(FormCard, null, combinedList.map((option, index) => {
|
|
259
|
+
const notLast = index < combinedList.length - 1;
|
|
260
|
+
return this.renderOption(option.Title, option.Selected, () => this.onToggleAudienceOption(option), index, notLast);
|
|
261
|
+
})), loading ? /*#__PURE__*/React.createElement(Spinner, null) : null, this.renderTips());
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
renderButtons() {
|
|
265
|
+
const {
|
|
266
|
+
loading
|
|
267
|
+
} = this.state;
|
|
268
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
269
|
+
style: styles.doneButtonContainer
|
|
270
|
+
}, /*#__PURE__*/React.createElement(InlineButton, {
|
|
271
|
+
color: loading ? INACTIVE_BUTTON : this.props.colourBrandingMain,
|
|
272
|
+
onPress: this.onDone,
|
|
273
|
+
touchableStyle: styles.doneButton,
|
|
274
|
+
fillTouchable: true,
|
|
275
|
+
large: true,
|
|
276
|
+
disabled: loading
|
|
277
|
+
}, "Done"));
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
render() {
|
|
281
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
282
|
+
style: styles.container
|
|
283
|
+
}, /*#__PURE__*/React.createElement(Header, {
|
|
284
|
+
leftIcon: "angle-left",
|
|
285
|
+
onPressLeft: this.onPressBack,
|
|
286
|
+
text: 'Select Audience'
|
|
287
|
+
}), this.renderSelectAll(), this.renderSelection(), this.renderAvailableAudiences(), this.renderButtons());
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
const styles = StyleSheet.create({
|
|
293
|
+
container: {
|
|
294
|
+
flex: 1,
|
|
295
|
+
position: 'relative',
|
|
296
|
+
backgroundColor: BG_GREY
|
|
297
|
+
},
|
|
298
|
+
selectAllContainer: {
|
|
299
|
+
marginTop: 20
|
|
300
|
+
},
|
|
301
|
+
selectionContainer: {
|
|
302
|
+
padding: 20
|
|
303
|
+
},
|
|
304
|
+
selectionContainerInner: {
|
|
305
|
+
flexDirection: 'row',
|
|
306
|
+
justifyContent: 'space-between'
|
|
307
|
+
},
|
|
308
|
+
selectionTitle: {
|
|
309
|
+
fontFamily: 'sf-bold',
|
|
310
|
+
fontSize: 14,
|
|
311
|
+
color: TEXT_DARK
|
|
312
|
+
},
|
|
313
|
+
selectionText: {
|
|
314
|
+
fontFamily: 'sf-bold',
|
|
315
|
+
fontSize: 14,
|
|
316
|
+
color: TEXT_DARK,
|
|
317
|
+
marginTop: 10
|
|
318
|
+
},
|
|
319
|
+
seeAllButton: {
|
|
320
|
+
marginLeft: 10,
|
|
321
|
+
fontFamily: 'sf-bold',
|
|
322
|
+
fontSize: 14,
|
|
323
|
+
color: TEXT_LIGHT
|
|
324
|
+
},
|
|
325
|
+
availableScrollContainer: {
|
|
326
|
+
flex: 1
|
|
327
|
+
},
|
|
328
|
+
availabelScrollContent: {
|
|
329
|
+
flexGrow: 1,
|
|
330
|
+
justifyContent: 'space-between',
|
|
331
|
+
flexDirection: 'column'
|
|
332
|
+
},
|
|
333
|
+
tipContainer: {
|
|
334
|
+
padding: 10
|
|
335
|
+
},
|
|
336
|
+
tipText: {
|
|
337
|
+
fontSize: 14,
|
|
338
|
+
fontFamily: 'sf-regular',
|
|
339
|
+
color: TEXT_DARK
|
|
340
|
+
},
|
|
341
|
+
labelContainer: {
|
|
342
|
+
flexDirection: 'row',
|
|
343
|
+
justifyContent: 'space-between'
|
|
344
|
+
},
|
|
345
|
+
labelText: {
|
|
346
|
+
fontFamily: 'sf-medium',
|
|
347
|
+
fontSize: 16,
|
|
348
|
+
color: TEXT_DARK
|
|
349
|
+
},
|
|
350
|
+
description: {
|
|
351
|
+
marginTop: 5,
|
|
352
|
+
fontSize: 14,
|
|
353
|
+
fontFamily: 'sf-regular',
|
|
354
|
+
color: TEXT_DARK
|
|
355
|
+
},
|
|
356
|
+
doneButtonContainer: {
|
|
357
|
+
backgroundColor: '#fff',
|
|
358
|
+
marginTop: 1,
|
|
359
|
+
flexDirection: 'row',
|
|
360
|
+
paddingTop: 10,
|
|
361
|
+
paddingBottom: 20
|
|
362
|
+
},
|
|
363
|
+
doneButton: {
|
|
364
|
+
flex: 1,
|
|
365
|
+
marginHorizontal: 6
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
const mapStateToProps = state => {
|
|
370
|
+
return {
|
|
371
|
+
colourBrandingMain: getMainBrandingColourFromState(state)
|
|
372
|
+
};
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
export default connect(mapStateToProps, {})(AudienceSelectorPage);
|
|
376
|
+
//# sourceMappingURL=AudienceSelectorPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["AudienceSelectorPage.js"],"names":["React","Component","connect","_","TouchableOpacity","View","ScrollView","Text","StyleSheet","Icon","Services","FormCard","FormCardSection","InlineButton","Header","Spinner","TEXT_DARK","COLOUR_GREEN","BG_GREY","INACTIVE_BUTTON","TEXT_LIGHT","getMainBrandingColourFromState","typeActions","profileActions","AudienceSelectorPage","constructor","props","setState","loading","getUserTypes","getUserTags","combinedList","getAvailableAudienceTags","error","console","data","site","forEach","e","name","category","toUpperCase","substring","displayName","key","typeName","types","getUserTagsBySite","Title","Id","tags","categories","state","audienceTypeSelection","categoryTags","map","c","AudienceType","AudienceTypeSelection","Selected","some","i","userTypeTags","t","userTagTags","navigation","goBack","newList","seeAll","option","selected","find","onChange","filter","length","renderOption","label","onSelect","hasUnderline","styles","labelContainer","labelText","color","fontSize","renderSelectAll","allSelected","selectAllContainer","onSelectAll","renderSelection","selectedText","join","hasSelected","isEmpty","selectionContainer","selectionContainerInner","selectionTitle","onSeeAll","seeAllButton","selectionText","renderTips","tipContainer","tipText","fontFamily","renderAvailableAudiences","availableScrollContainer","availabelScrollContent","index","notLast","onToggleAudienceOption","renderButtons","doneButtonContainer","colourBrandingMain","onDone","doneButton","render","container","onPressBack","create","flex","position","backgroundColor","marginTop","padding","flexDirection","justifyContent","marginLeft","flexGrow","description","paddingTop","paddingBottom","marginHorizontal","mapStateToProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { TouchableOpacity, View, ScrollView, Text, StyleSheet } from 'react-native';\nimport { Icon } from 'react-native-elements';\nimport { Services } from '../config';\nimport { FormCard } from './FormCard';\nimport { FormCardSection } from './FormCardSection';\nimport { InlineButton } from './InlineButton';\nimport Header from './Header';\nimport { Spinner } from './Spinner';\nimport { TEXT_DARK, COLOUR_GREEN, BG_GREY, INACTIVE_BUTTON, TEXT_LIGHT, getMainBrandingColourFromState } from '../colours';\nimport { typeActions, profileActions } from '../apis';\n\nclass AudienceSelectorPage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n categories: [\n {\n name: 'All Primary Users',\n key: 'resident',\n },\n {\n name: 'All Staff Users',\n key: 'staff',\n },\n {\n name: 'All Linked Users',\n key: 'family',\n },\n ],\n types: [],\n tags: [],\n combinedList: [],\n seeAll: false,\n };\n }\n\n componentDidMount = async () => {\n try {\n this.setState({ loading: true });\n await this.getUserTypes();\n await this.getUserTags();\n this.setState({ loading: false, combinedList: this.getAvailableAudienceTags() });\n } catch (error) {\n console.error('loading types error', error);\n this.setState({ loading: false });\n }\n };\n\n getUserTypes = async () => {\n const { data } = await typeActions.getUserTypes(this.props.site);\n data.forEach(e => {\n e.name = e.category ? `(${e.category[0].toUpperCase() + e.category.substring(1)}) ${e.displayName}` : e.displayName;\n e.key = e.typeName;\n });\n // console.log('getUserTypes', data);\n this.setState({ types: data });\n };\n\n getUserTags = async () => {\n const { data } = await profileActions.getUserTagsBySite(this.props.site);\n data.forEach(e => {\n e.name = e.Title;\n e.key = e.Id;\n });\n // console.log('getUserTags', data);\n this.setState({ tags: data });\n };\n\n getAvailableAudienceTags = () => {\n const { categories, types, tags } = this.state;\n const { audienceTypeSelection } = this.props;\n\n const categoryTags = categories.map(c => {\n const Id = `category_${c.key}`;\n return {\n AudienceType: 'Category',\n AudienceTypeSelection: c.key,\n Id,\n Title: c.name,\n Selected: audienceTypeSelection.some(i => i.Id === Id),\n };\n });\n const userTypeTags = types.map(t => {\n const Id = `userType_${t.typeName}`;\n return {\n AudienceType: 'UserType',\n AudienceTypeSelection: t.typeName,\n Id,\n Title: `User Type: ${t.displayName}`,\n Selected: audienceTypeSelection.some(i => i.Id === Id),\n };\n });\n const userTagTags = tags.map(t => {\n const Id = `userTag_${t.Id}`;\n return {\n AudienceType: 'UserTags',\n AudienceTypeSelection: t.Id,\n Id,\n Title: `User Tag: ${t.Title}`,\n Selected: audienceTypeSelection.some(i => i.Id === Id),\n };\n });\n return [...categoryTags, ...userTypeTags, ...userTagTags];\n };\n\n onPressBack = () => {\n Services.navigation.goBack();\n };\n\n onSelectAll = () => {\n const newList = [...this.state.combinedList];\n newList.forEach(i => (i.Selected = false));\n this.setState({ combinedList: newList });\n };\n\n onSeeAll = () => {\n this.setState({ seeAll: !this.state.seeAll });\n };\n\n onToggleAudienceOption = option => {\n const newList = [...this.state.combinedList];\n const selected = newList.find(i => i.Id === option.Id);\n if (selected) {\n selected.Selected = !selected.Selected;\n this.setState({ combinedList: newList });\n }\n };\n\n onDone = () => {\n if (this.props.onChange) {\n const { combinedList } = this.state;\n const selected = combinedList.filter(i => i.Selected);\n if (selected && selected.length > 0) {\n this.props.onChange('Custom', selected);\n } else {\n this.props.onChange(null, null);\n }\n }\n Services.navigation.goBack();\n };\n\n renderOption(label, selected, onSelect, key = null, hasUnderline = true) {\n return (\n <TouchableOpacity key={key} onPress={onSelect}>\n <FormCardSection hasUnderline={hasUnderline} hasContent>\n <View style={styles.labelContainer}>\n <Text style={styles.labelText}>{label}</Text>\n <Icon\n name=\"check-circle\"\n type=\"font-awesome\"\n iconStyle={[{ color: INACTIVE_BUTTON, fontSize: 20 }, selected && { color: COLOUR_GREEN }]}\n />\n </View>\n </FormCardSection>\n </TouchableOpacity>\n );\n }\n\n renderSelectAll() {\n const { combinedList, loading } = this.state;\n const allSelected = !combinedList.find(i => i.Selected);\n if (loading) return null;\n\n return (\n <FormCard style={styles.selectAllContainer}>{this.renderOption('All Users', allSelected, this.onSelectAll, null, false)}</FormCard>\n );\n }\n\n renderSelection() {\n const { loading, combinedList, seeAll } = this.state;\n if (loading) return null;\n\n const selectedText = combinedList\n .filter(i => i.Selected)\n .map(i => i.Title)\n .join(', ');\n const hasSelected = !_.isEmpty(selectedText);\n\n return (\n <View style={styles.selectionContainer}>\n <View style={styles.selectionContainerInner}>\n <Text style={styles.selectionTitle}>or select from below</Text>\n {hasSelected ? (\n <TouchableOpacity onPress={this.onSeeAll}>\n <Text style={styles.seeAllButton}>{seeAll ? 'See less' : 'See all'}</Text>\n </TouchableOpacity>\n ) : null}\n </View>\n {hasSelected ? (\n <Text style={styles.selectionText} numberOfLines={seeAll ? null : 1}>{`Current selection: ${selectedText}`}</Text>\n ) : null}\n </View>\n );\n }\n\n renderTips() {\n return (\n <View style={styles.tipContainer}>\n <Text style={styles.tipText}>\n <Text style={{ fontFamily: 'sf-semibold' }}>Tip: </Text>\n Group your users using User Tags from your website Community Manager\n </Text>\n </View>\n );\n }\n\n renderAvailableAudiences() {\n const { loading, combinedList } = this.state;\n\n return (\n <ScrollView style={styles.availableScrollContainer} contentContainerStyle={styles.availabelScrollContent}>\n <FormCard>\n {combinedList.map((option, index) => {\n const notLast = index < combinedList.length - 1;\n return this.renderOption(option.Title, option.Selected, () => this.onToggleAudienceOption(option), index, notLast);\n })}\n </FormCard>\n {loading ? <Spinner /> : null}\n {this.renderTips()}\n </ScrollView>\n );\n }\n\n renderButtons() {\n const { loading } = this.state;\n\n return (\n <View style={styles.doneButtonContainer}>\n <InlineButton\n color={loading ? INACTIVE_BUTTON : this.props.colourBrandingMain}\n onPress={this.onDone}\n touchableStyle={styles.doneButton}\n fillTouchable\n large\n disabled={loading}\n >\n Done\n </InlineButton>\n </View>\n );\n }\n\n render() {\n return (\n <View style={styles.container}>\n <Header leftIcon=\"angle-left\" onPressLeft={this.onPressBack} text={'Select Audience'} />\n {this.renderSelectAll()}\n {this.renderSelection()}\n {this.renderAvailableAudiences()}\n {this.renderButtons()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n position: 'relative',\n backgroundColor: BG_GREY,\n },\n selectAllContainer: {\n marginTop: 20,\n },\n selectionContainer: {\n padding: 20,\n },\n selectionContainerInner: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n selectionTitle: {\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: TEXT_DARK,\n },\n selectionText: {\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: TEXT_DARK,\n marginTop: 10,\n },\n seeAllButton: {\n marginLeft: 10,\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: TEXT_LIGHT,\n },\n availableScrollContainer: {\n flex: 1,\n },\n availabelScrollContent: {\n flexGrow: 1,\n justifyContent: 'space-between',\n flexDirection: 'column',\n },\n tipContainer: {\n padding: 10,\n },\n tipText: {\n fontSize: 14,\n fontFamily: 'sf-regular',\n color: TEXT_DARK,\n },\n labelContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n labelText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n color: TEXT_DARK,\n },\n description: {\n marginTop: 5,\n fontSize: 14,\n fontFamily: 'sf-regular',\n color: TEXT_DARK,\n },\n doneButtonContainer: {\n backgroundColor: '#fff',\n marginTop: 1,\n flexDirection: 'row',\n paddingTop: 10,\n paddingBottom: 20,\n },\n doneButton: {\n flex: 1,\n marginHorizontal: 6,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, {})(AudienceSelectorPage);\n"]}
|