@icvdeveloper/common-module 1.4.14 → 2.0.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/CHANGELOG.md +2 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +10 -0
- package/dist/runtime/@types/components.d.ts +22 -0
- package/dist/runtime/@types/configVariables.d.ts +6 -0
- package/dist/runtime/analytics.d.ts +1 -1
- package/dist/runtime/assets/scss/index.css +0 -705
- package/dist/runtime/assets/svg/icon-minus.svg +6 -0
- package/dist/runtime/assets/svg/icon-video.svg +6 -0
- package/dist/runtime/components/affiliates/AffiliateModal.vue +66 -0
- package/dist/runtime/components/affiliates/AffiliatePage.vue +337 -132
- package/dist/runtime/components/agenda/AgendaTabbed.vue +43 -34
- package/dist/runtime/components/agenda/components/Calendar.vue +8 -3
- package/dist/runtime/components/agenda/components/Favorite.vue +44 -0
- package/dist/runtime/components/agenda/components/PlayIcon.vue +1 -1
- package/dist/runtime/components/agenda/components/PresentationLink.vue +26 -15
- package/dist/runtime/components/chat/ChatConversationList.vue +108 -0
- package/dist/runtime/components/chat/ChatCreateConversation.vue +205 -0
- package/dist/runtime/components/chat/ChatCreateGroupConversation.vue +159 -0
- package/dist/runtime/components/chat/ChatHeader.vue +98 -0
- package/dist/runtime/components/chat/ChatMessage.vue +40 -0
- package/dist/runtime/components/chat/ChatShowConversation.vue +77 -0
- package/dist/runtime/components/chat/ChatWidget.vue +65 -0
- package/dist/runtime/components/chat/ChatWindow.vue +211 -0
- package/dist/runtime/components/chat/ChatWindow.vue.d.ts +6 -0
- package/dist/runtime/components/chat/MessageInput.vue +30 -0
- package/dist/runtime/components/chat/SearchInput.vue +32 -0
- package/dist/runtime/components/core/Accordion.vue +1 -1
- package/dist/runtime/components/core/AttendeeList.vue +25 -16
- package/dist/runtime/components/core/CountdownTimer.vue +1 -1
- package/dist/runtime/components/core/Modal.vue +21 -13
- package/dist/runtime/components/core/ModalButton.vue +43 -0
- package/dist/runtime/components/core/Navbar.vue +3 -3
- package/dist/runtime/components/core/Navigation.vue +293 -0
- package/dist/runtime/components/core/SvgIcon.vue +31 -1
- package/dist/runtime/components/core/VButton.vue +41 -0
- package/dist/runtime/components/core/ZoomModal.vue +1 -1
- package/dist/runtime/components/events/ListEvents.vue +3 -4
- package/dist/runtime/components/forms/CheckboxGroup.vue +46 -0
- package/dist/runtime/components/forms/ErrorField.vue +11 -2
- package/dist/runtime/components/forms/RadioGroup.vue +50 -0
- package/dist/runtime/components/forms/SelectDropDown.vue +47 -0
- package/dist/runtime/components/forms/SupportForm.vue +6 -6
- package/dist/runtime/components/layouts/Accordion.vue +2 -2
- package/dist/runtime/components/media/ArchivePlayerAndContentContainer.vue +20 -4
- package/dist/runtime/components/media/ArchiveVideoPlayer.vue +14 -6
- package/dist/runtime/components/media/WebcastVideoPlayer.vue +1 -1
- package/dist/runtime/components/media/components/ArchiveMediaContainer.vue +8 -8
- package/dist/runtime/components/media/components/CeCreditNotification.vue +2 -2
- package/dist/runtime/components/media/components/ContentArea.vue +51 -14
- package/dist/runtime/components/media/components/ContentTabs.vue +2 -2
- package/dist/runtime/components/media/components/DocumentsPanel.vue +2 -2
- package/dist/runtime/components/media/components/MediaContainer.vue +3 -7
- package/dist/runtime/components/media/components/PresentersPanel.vue +69 -50
- package/dist/runtime/components/media/components/SessionReporting.vue +5 -4
- package/dist/runtime/components/media/components/SponsorsPanel.vue +3 -3
- package/dist/runtime/components/presenters/PresenterListing.vue +30 -20
- package/dist/runtime/components/presenters/PresenterModal.vue +26 -21
- package/dist/runtime/components/presenters/Presenters.vue +139 -0
- package/dist/runtime/components/profile/Profile.vue +10 -6
- package/dist/runtime/components/profile/components/Sidebar.vue +1 -1
- package/dist/runtime/components/profile/components/SidebarNavItem.vue +1 -1
- package/dist/runtime/components/profile/tabs/Favorites.vue +5 -4
- package/dist/runtime/components/profile/tabs/GeneralInformation.vue +26 -16
- package/dist/runtime/components/registration/AlreadyRegisteredModal.vue +99 -0
- package/dist/runtime/components/registration/PaymentForm.vue +136 -0
- package/dist/runtime/components/registration/RegistrationForm.vue +417 -0
- package/dist/runtime/components/registration/RegistrationGroupSelect.vue +142 -0
- package/dist/runtime/components/registration/StripePaymentForm.vue +141 -0
- package/dist/runtime/composables/useAgenda.d.ts +12 -0
- package/dist/runtime/composables/useAgenda.mjs +101 -10
- package/dist/runtime/composables/useAuth.mjs +1 -1
- package/dist/runtime/composables/useConferenceHelpers.d.ts +5 -1
- package/dist/runtime/composables/useConferenceHelpers.mjs +15 -1
- package/dist/runtime/composables/useEventHooks.d.ts +26 -0
- package/dist/runtime/composables/useEventHooks.mjs +21 -0
- package/dist/runtime/composables/useEvents.d.ts +17 -1
- package/dist/runtime/composables/useEvents.mjs +29 -1
- package/dist/runtime/composables/useLogin.mjs +7 -3
- package/dist/runtime/composables/usePresentation.mjs +1 -1
- package/dist/runtime/composables/usePusher.d.ts +4 -0
- package/dist/runtime/composables/usePusher.mjs +38 -26
- package/dist/runtime/composables/useStream.mjs +7 -1
- package/dist/runtime/enums/general.d.ts +4 -1
- package/dist/runtime/enums/general.mjs +4 -1
- package/dist/runtime/models/authUser.d.ts +1 -0
- package/dist/runtime/models/conference.d.ts +14 -0
- package/dist/runtime/models/conversation.d.ts +2 -4
- package/dist/runtime/models/globalConfig.d.ts +6 -2
- package/dist/runtime/models/group.d.ts +32 -2
- package/dist/runtime/models/icons.d.ts +7 -0
- package/dist/runtime/models/templateConfig.d.ts +6 -0
- package/dist/runtime/models/user.d.ts +1 -0
- package/dist/runtime/models/virtualPagesConfig.d.ts +335 -0
- package/dist/runtime/models/virtualPagesConfig.mjs +0 -0
- package/dist/runtime/plugin.mjs +6 -0
- package/dist/runtime/store/affiliates.d.ts +3 -0
- package/dist/runtime/store/affiliates.mjs +38 -0
- package/dist/runtime/store/auth.mjs +6 -0
- package/dist/runtime/store/conferences.d.ts +3 -1
- package/dist/runtime/store/conferences.mjs +7 -2
- package/dist/runtime/store/conversations.d.ts +4040 -10
- package/dist/runtime/store/conversations.mjs +255 -22
- package/dist/runtime/store/modalPlayerConfig.d.ts +498 -0
- package/dist/runtime/store/modalPlayerConfig.mjs +58 -0
- package/dist/runtime/store/templateConfigs.d.ts +3 -2
- package/dist/runtime/store/templateConfigs.mjs +2 -1
- package/package.json +5 -2
- package/dist/runtime/components/media/components/PresentersPanel.vue.d.ts +0 -32
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
import { toRefs } from "vue";
|
|
2
|
+
import { ref, toRefs, computed, onMounted } from "vue";
|
|
3
3
|
import { get } from "lodash-es";
|
|
4
4
|
import { useApi } from "../../composables/useApi";
|
|
5
5
|
import type { Affiliate } from "../../models/conference";
|
|
6
6
|
import type { affiliatePageClassObj } from "../../@types/components";
|
|
7
7
|
import { useClassBinding } from "../../composables/useClassBinding";
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
type Props = {
|
|
11
|
-
affiliateId:
|
|
10
|
+
affiliateId: number;
|
|
12
11
|
classObject?: affiliatePageClassObj;
|
|
13
12
|
};
|
|
14
13
|
|
|
@@ -24,7 +23,8 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
24
23
|
htmlHeaderContainer: "",
|
|
25
24
|
biographyContainer: "",
|
|
26
25
|
contentContainer: "",
|
|
27
|
-
affiliateContentBox:
|
|
26
|
+
affiliateContentBox:
|
|
27
|
+
"flex flex-col w-full h-full overflow-y-auto p-4 border border-slate-300",
|
|
28
28
|
};
|
|
29
29
|
},
|
|
30
30
|
});
|
|
@@ -32,40 +32,43 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
32
32
|
// data
|
|
33
33
|
const { affiliateId } = toRefs(props);
|
|
34
34
|
const { classBinding } = useClassBinding();
|
|
35
|
-
const affiliate = ref<Affiliate>({documents:[],links:[],videos:[]});
|
|
35
|
+
const affiliate = ref<Affiliate>({ documents: [], links: [], videos: [] });
|
|
36
36
|
const showVideoModal = ref<boolean>(false);
|
|
37
37
|
const modalVideoTitle = ref<string>("");
|
|
38
38
|
const modalVideoUrl = ref<string>("");
|
|
39
39
|
|
|
40
40
|
// computed
|
|
41
41
|
const contentCount = computed((): number => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
const hasDocuments = affiliate.value.documents.length > 0 ? 1 : 0;
|
|
43
|
+
const hasVideos = affiliate.value.videos.length > 0 ? 1 : 0;
|
|
44
|
+
const hasLinks = affiliate.value.links.length > 0 ? 1 : 0;
|
|
45
|
+
return hasDocuments + hasVideos + hasLinks;
|
|
46
46
|
});
|
|
47
47
|
const hasContactInfo = computed((): boolean => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
return (
|
|
49
|
+
affiliate.value.contact_photo ||
|
|
50
|
+
affiliate.value.contact_name ||
|
|
51
|
+
affiliate.value.contact_title ||
|
|
52
|
+
affiliate.value.contact_phone ||
|
|
53
|
+
affiliate.value.contact_email
|
|
54
|
+
);
|
|
55
55
|
});
|
|
56
56
|
const showLeftBottomBox = computed((): boolean => {
|
|
57
|
-
|
|
57
|
+
return hasContactInfo.value || getAffiliateContentItem("custom_box_1");
|
|
58
58
|
});
|
|
59
59
|
|
|
60
60
|
// methods
|
|
61
|
+
// TODO - migrate analyticsPlugin if needed
|
|
61
62
|
const fireAnalytics = (type: string) => {
|
|
62
|
-
|
|
63
|
-
this.$analyticsPlugin.click(event, event);
|
|
63
|
+
const event = "affiliate-" + affiliate.value.name + "-" + type;
|
|
64
|
+
// this.$analyticsPlugin.click(event, event);
|
|
64
65
|
};
|
|
65
66
|
|
|
66
67
|
const getAffiliateContentItem = (_item: string) => {
|
|
67
|
-
|
|
68
|
-
if (itemVal == undefined || itemVal ==
|
|
68
|
+
const itemVal = get(affiliate.value, "affiliate_content." + _item);
|
|
69
|
+
if (itemVal == undefined || itemVal == "") {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
69
72
|
return itemVal;
|
|
70
73
|
};
|
|
71
74
|
|
|
@@ -73,7 +76,7 @@ const getAffiliateContent = () => {
|
|
|
73
76
|
return new Promise((resolve, reject) => {
|
|
74
77
|
const request = useApi();
|
|
75
78
|
request(
|
|
76
|
-
`/affiliates/${affiliateId.value}?with=affiliate_content,documents,videos,links`
|
|
79
|
+
`/affiliates/${affiliateId.value.toString()}?with=affiliate_content,documents,videos,links`
|
|
77
80
|
)
|
|
78
81
|
.then((response) => {
|
|
79
82
|
affiliate.value = response.data;
|
|
@@ -85,15 +88,16 @@ const getAffiliateContent = () => {
|
|
|
85
88
|
};
|
|
86
89
|
|
|
87
90
|
const getStreamingVideoUrl = (_videoUrl: string): string => {
|
|
88
|
-
let tmpUrl =
|
|
89
|
-
|
|
90
|
-
tmpUrl +=
|
|
91
|
+
let tmpUrl =
|
|
92
|
+
"https://cdn.v3mediaportal.com/streaming-player/iframe-player.htm?";
|
|
93
|
+
tmpUrl += "cs=" + encodeURIComponent(_videoUrl);
|
|
94
|
+
tmpUrl += "&ar=16:9&f=video&as=false";
|
|
91
95
|
return tmpUrl;
|
|
92
96
|
};
|
|
93
97
|
|
|
94
98
|
const openVideoModal = (_title: string, _videoUrl: string) => {
|
|
95
|
-
fireAnalytics(
|
|
96
|
-
|
|
99
|
+
fireAnalytics("video-" + _title);
|
|
100
|
+
const tmpUrl = getStreamingVideoUrl(_videoUrl);
|
|
97
101
|
modalVideoUrl.value = tmpUrl;
|
|
98
102
|
modalVideoTitle.value = _title;
|
|
99
103
|
showVideoModal.value = true;
|
|
@@ -103,64 +107,133 @@ const openVideoModal = (_title: string, _videoUrl: string) => {
|
|
|
103
107
|
onMounted(() => {
|
|
104
108
|
getAffiliateContent();
|
|
105
109
|
});
|
|
106
|
-
|
|
107
110
|
</script>
|
|
108
111
|
|
|
109
112
|
<template>
|
|
110
|
-
<div
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
'flex w-full flex-col'
|
|
116
|
-
)
|
|
117
|
-
"
|
|
118
|
-
>
|
|
119
|
-
|
|
120
|
-
<div v-if="getAffiliateContentItem('html_vanity_page')" v-html="getAffiliateContentItem('html_vanity_page')">
|
|
121
|
-
</div>
|
|
113
|
+
<div :class="classBinding(classObject, 'container', 'flex w-full flex-col')">
|
|
114
|
+
<div
|
|
115
|
+
v-if="getAffiliateContentItem('html_vanity_page')"
|
|
116
|
+
v-html="getAffiliateContentItem('html_vanity_page')"
|
|
117
|
+
></div>
|
|
122
118
|
|
|
123
119
|
<div v-else>
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
120
|
+
<div
|
|
121
|
+
:class="
|
|
122
|
+
classBinding(
|
|
123
|
+
classObject,
|
|
124
|
+
'headerContainer',
|
|
125
|
+
'flex flex-col md:flex-row w-full pb-6 border-b border-solid border-gray-400'
|
|
126
|
+
)
|
|
127
|
+
"
|
|
128
|
+
>
|
|
130
129
|
<div v-if="affiliate.photo" class="mb-6 md:mb-0">
|
|
131
130
|
<img :src="affiliate.photo" />
|
|
132
131
|
</div>
|
|
133
132
|
<div
|
|
134
133
|
v-if="!affiliate.photo"
|
|
135
|
-
:class="
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
:class="
|
|
135
|
+
classBinding(
|
|
136
|
+
classObject,
|
|
137
|
+
'headerNameContainer',
|
|
138
|
+
'flex w-full justify-center md:justify-start'
|
|
139
|
+
)
|
|
140
|
+
"
|
|
140
141
|
>
|
|
141
|
-
<h1
|
|
142
|
+
<h1
|
|
143
|
+
:class="
|
|
144
|
+
classBinding(
|
|
145
|
+
classObject,
|
|
146
|
+
'headerNameElement',
|
|
147
|
+
'font-light mb-0 body-color-4 self-end'
|
|
148
|
+
)
|
|
149
|
+
"
|
|
150
|
+
>
|
|
151
|
+
{{ affiliate.name }}
|
|
152
|
+
</h1>
|
|
142
153
|
</div>
|
|
143
154
|
<div
|
|
144
155
|
v-if="getAffiliateContentItem('contact_in_header') == 1"
|
|
145
|
-
:class="
|
|
156
|
+
:class="
|
|
157
|
+
classBinding(
|
|
158
|
+
classObject,
|
|
159
|
+
'headerContactContainer',
|
|
160
|
+
'w-full text-center md:text-right'
|
|
161
|
+
)
|
|
162
|
+
"
|
|
146
163
|
>
|
|
147
164
|
<p>
|
|
148
|
-
<span v-if="affiliate.contact_address"
|
|
149
|
-
|
|
150
|
-
|
|
165
|
+
<span v-if="affiliate.contact_address"
|
|
166
|
+
>{{ affiliate.contact_address }}<br
|
|
167
|
+
/></span>
|
|
168
|
+
<span v-if="affiliate.contact_location"
|
|
169
|
+
>{{ affiliate.contact_location }}<br
|
|
170
|
+
/></span>
|
|
171
|
+
<span v-if="affiliate.website"
|
|
172
|
+
><a
|
|
173
|
+
@click="fireAnalytics('website')"
|
|
174
|
+
class="affiliate-website"
|
|
175
|
+
:href="affiliate.website"
|
|
176
|
+
target="_blank"
|
|
177
|
+
>{{ affiliate.website }}</a
|
|
178
|
+
><br
|
|
179
|
+
/></span>
|
|
151
180
|
</p>
|
|
152
|
-
<span
|
|
153
|
-
|
|
154
|
-
|
|
181
|
+
<span
|
|
182
|
+
:class="
|
|
183
|
+
classBinding(
|
|
184
|
+
classObject,
|
|
185
|
+
'headerSocialContainer',
|
|
186
|
+
'flex justify-center md:justify-end'
|
|
187
|
+
)
|
|
188
|
+
"
|
|
189
|
+
>
|
|
190
|
+
<a
|
|
191
|
+
@click="fireAnalytics('twitter')"
|
|
192
|
+
v-if="affiliate.twitter_url"
|
|
193
|
+
:href="affiliate.twitter_url"
|
|
194
|
+
target="_blank"
|
|
195
|
+
class="affiliate-twitter"
|
|
196
|
+
:aria-label="affiliate.name + ` Twitter Page`"
|
|
197
|
+
>
|
|
198
|
+
<span class="presenter-icon"
|
|
199
|
+
><CommonSvgIcon icon="twitter"></CommonSvgIcon
|
|
200
|
+
></span>
|
|
155
201
|
</a>
|
|
156
|
-
<a
|
|
157
|
-
|
|
202
|
+
<a
|
|
203
|
+
@click="fireAnalytics('facebook')"
|
|
204
|
+
v-if="affiliate.facebook_url"
|
|
205
|
+
:href="affiliate.facebook_url"
|
|
206
|
+
target="_blank"
|
|
207
|
+
class="affiliate-facebook"
|
|
208
|
+
:aria-label="affiliate.name + ` Facebook Page`"
|
|
209
|
+
>
|
|
210
|
+
<span class="presenter-icon"
|
|
211
|
+
><CommonSvgIcon icon="facebook"></CommonSvgIcon
|
|
212
|
+
></span>
|
|
158
213
|
</a>
|
|
159
|
-
<a
|
|
160
|
-
|
|
214
|
+
<a
|
|
215
|
+
@click="fireAnalytics('linked_in')"
|
|
216
|
+
v-if="affiliate.linkedin_url"
|
|
217
|
+
:href="affiliate.linkedin_url"
|
|
218
|
+
target="_blank"
|
|
219
|
+
class="affiliate-linkedin"
|
|
220
|
+
:aria-label="affiliate.name + ` LinkedIn Page`"
|
|
221
|
+
>
|
|
222
|
+
<span class="presenter-icon"
|
|
223
|
+
><CommonSvgIcon icon="linkedin"></CommonSvgIcon
|
|
224
|
+
></span>
|
|
161
225
|
</a>
|
|
162
|
-
<a
|
|
163
|
-
|
|
226
|
+
<a
|
|
227
|
+
@click="fireAnalytics('youtube')"
|
|
228
|
+
v-if="affiliate.youtube_url"
|
|
229
|
+
:href="affiliate.youtube_url"
|
|
230
|
+
target="_blank"
|
|
231
|
+
class="affiliate-youtube"
|
|
232
|
+
:aria-label="affiliate.name + ` YouTube Page`"
|
|
233
|
+
>
|
|
234
|
+
<span class="presenter-icon"
|
|
235
|
+
><CommonSvgIcon icon="youtube"></CommonSvgIcon
|
|
236
|
+
></span>
|
|
164
237
|
</a>
|
|
165
238
|
</span>
|
|
166
239
|
</div>
|
|
@@ -169,78 +242,146 @@ onMounted(() => {
|
|
|
169
242
|
<div
|
|
170
243
|
v-if="getAffiliateContentItem('html_header')"
|
|
171
244
|
v-html="getAffiliateContentItem('html_header')"
|
|
172
|
-
:class="
|
|
245
|
+
:class="
|
|
246
|
+
classBinding(
|
|
247
|
+
classObject,
|
|
248
|
+
'htmlHeaderContainer',
|
|
249
|
+
'w-full mt-5 text-center md:text-left'
|
|
250
|
+
)
|
|
251
|
+
"
|
|
173
252
|
></div>
|
|
174
253
|
<div
|
|
175
254
|
v-if="affiliate.biography"
|
|
176
255
|
v-html="affiliate.biography"
|
|
177
|
-
:class="
|
|
256
|
+
:class="
|
|
257
|
+
classBinding(
|
|
258
|
+
classObject,
|
|
259
|
+
'biographyContainer',
|
|
260
|
+
'w-full mt-5 text-center md:text-left'
|
|
261
|
+
)
|
|
262
|
+
"
|
|
178
263
|
></div>
|
|
179
264
|
<div
|
|
180
|
-
v-if="contentCount>0"
|
|
265
|
+
v-if="contentCount > 0"
|
|
181
266
|
class="grid-container-responsive"
|
|
182
|
-
:class="
|
|
267
|
+
:class="
|
|
268
|
+
classBinding(
|
|
269
|
+
classObject,
|
|
270
|
+
'contentContainer',
|
|
271
|
+
'w-full mt-5 md:max-h-300'
|
|
272
|
+
)
|
|
273
|
+
"
|
|
183
274
|
>
|
|
184
|
-
|
|
185
|
-
<div v-if="affiliate.documents.length>0">
|
|
275
|
+
<div v-if="affiliate.documents.length > 0">
|
|
186
276
|
<div :class="classBinding(classObject, 'affiliateContentBox', '')">
|
|
187
277
|
<h3 class="mb-3">Documents</h3>
|
|
188
278
|
<span v-for="document in affiliate.documents" :key="document.id">
|
|
189
|
-
<div class="mb-2"
|
|
279
|
+
<div class="mb-2">
|
|
280
|
+
<a
|
|
281
|
+
@click="fireAnalytics('document-' + document.name)"
|
|
282
|
+
class="affiliate-document"
|
|
283
|
+
:href="document.url"
|
|
284
|
+
target="_blank"
|
|
285
|
+
>{{ document.name }}</a
|
|
286
|
+
>
|
|
287
|
+
</div>
|
|
190
288
|
</span>
|
|
191
289
|
</div>
|
|
192
290
|
</div>
|
|
193
|
-
<div v-if="affiliate.videos.length>0">
|
|
291
|
+
<div v-if="affiliate.videos.length > 0">
|
|
194
292
|
<div :class="classBinding(classObject, 'affiliateContentBox', '')">
|
|
195
|
-
<div
|
|
293
|
+
<div
|
|
294
|
+
v-if="
|
|
295
|
+
affiliate.videos.length == 1 &&
|
|
296
|
+
getAffiliateContentItem('embed_video') == 1
|
|
297
|
+
"
|
|
298
|
+
>
|
|
196
299
|
<iframe
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
300
|
+
:src="getStreamingVideoUrl(affiliate.videos[0].url)"
|
|
301
|
+
width="100%"
|
|
302
|
+
style="max-width: 300px; margin: auto"
|
|
303
|
+
scrolling="no"
|
|
304
|
+
frameborder="0"
|
|
305
|
+
marginheight="0"
|
|
306
|
+
marginwidth="0"
|
|
307
|
+
allowfullscreen=""
|
|
308
|
+
>
|
|
205
309
|
</iframe>
|
|
206
310
|
</div>
|
|
207
311
|
<div v-else>
|
|
208
312
|
<h3 class="mb-3">Videos</h3>
|
|
209
|
-
<input
|
|
313
|
+
<input
|
|
314
|
+
name="affiliateName"
|
|
315
|
+
type="hidden"
|
|
316
|
+
id="affiliateName"
|
|
317
|
+
:value="affiliate.name"
|
|
318
|
+
/>
|
|
210
319
|
<span v-for="video in affiliate.videos" :key="video.id">
|
|
211
|
-
<div class="mb-2"
|
|
320
|
+
<div class="mb-2">
|
|
321
|
+
<a
|
|
322
|
+
class="affiliate-video-trigger hover:cursor-pointer"
|
|
323
|
+
@click="openVideoModal(video.name, video.url)"
|
|
324
|
+
>{{ video.name }}</a
|
|
325
|
+
>
|
|
326
|
+
</div>
|
|
212
327
|
</span>
|
|
213
328
|
</div>
|
|
214
329
|
</div>
|
|
215
330
|
</div>
|
|
216
|
-
<div v-if="affiliate.links.length>0">
|
|
331
|
+
<div v-if="affiliate.links.length > 0">
|
|
217
332
|
<div :class="classBinding(classObject, 'affiliateContentBox', '')">
|
|
218
333
|
<h3 class="mb-3">Links</h3>
|
|
219
334
|
<span v-for="link in affiliate.links" :key="link.id">
|
|
220
|
-
<div class="mb-2"
|
|
335
|
+
<div class="mb-2">
|
|
336
|
+
<a
|
|
337
|
+
@click="fireAnalytics('external_link-' + link.name)"
|
|
338
|
+
:href="link.url"
|
|
339
|
+
class="affiliate-link"
|
|
340
|
+
target="_blank"
|
|
341
|
+
>{{ link.name }}</a
|
|
342
|
+
>
|
|
343
|
+
</div>
|
|
221
344
|
</span>
|
|
222
345
|
</div>
|
|
223
346
|
</div>
|
|
224
|
-
|
|
225
347
|
</div>
|
|
226
348
|
<div class="grid-container-responsive mt-5">
|
|
227
|
-
<div
|
|
228
|
-
|
|
349
|
+
<div
|
|
350
|
+
v-if="showLeftBottomBox"
|
|
351
|
+
:class="classBinding(classObject, 'affiliateContentBox', '')"
|
|
352
|
+
>
|
|
353
|
+
<div
|
|
354
|
+
v-if="getAffiliateContentItem('custom_box_1')"
|
|
355
|
+
v-html="getAffiliateContentItem('custom_box_1')"
|
|
356
|
+
></div>
|
|
229
357
|
<div v-else-if="hasContactInfo">
|
|
230
358
|
<div class="flex flex-col md:flex-row">
|
|
231
|
-
<div
|
|
232
|
-
|
|
359
|
+
<div
|
|
360
|
+
v-if="affiliate.contact_photo"
|
|
361
|
+
class="mr-4 w-1/3 mb-3 md:mb-0 self-center md:self-start"
|
|
362
|
+
>
|
|
363
|
+
<img :src="affiliate.contact_photo" class="w-full" />
|
|
233
364
|
</div>
|
|
234
365
|
<div class="text-center md:text-left">
|
|
235
366
|
<p>Contact:</p>
|
|
236
367
|
<p>
|
|
237
|
-
<span v-if="affiliate.contact_name"
|
|
238
|
-
|
|
239
|
-
|
|
368
|
+
<span v-if="affiliate.contact_name"
|
|
369
|
+
>{{ affiliate.contact_name }}<br
|
|
370
|
+
/></span>
|
|
371
|
+
<span v-if="affiliate.contact_title"
|
|
372
|
+
>{{ affiliate.contact_title }}<br
|
|
373
|
+
/></span>
|
|
374
|
+
<span v-if="affiliate.contact_phone"
|
|
375
|
+
>Phone: {{ affiliate.contact_phone }}<br
|
|
376
|
+
/></span>
|
|
240
377
|
<span v-if="affiliate.contact_email">
|
|
241
|
-
<a
|
|
242
|
-
|
|
243
|
-
|
|
378
|
+
<a
|
|
379
|
+
@click="fireAnalytics('contact_email')"
|
|
380
|
+
class="affiliate-email"
|
|
381
|
+
:href="'mailto:' + affiliate.contact_email"
|
|
382
|
+
>
|
|
383
|
+
{{ affiliate.contact_email }} </a
|
|
384
|
+
><br />
|
|
244
385
|
</span>
|
|
245
386
|
</p>
|
|
246
387
|
</div>
|
|
@@ -249,25 +390,86 @@ onMounted(() => {
|
|
|
249
390
|
</div>
|
|
250
391
|
|
|
251
392
|
<div :class="classBinding(classObject, 'affiliateContentBox', '')">
|
|
252
|
-
<div
|
|
253
|
-
|
|
393
|
+
<div
|
|
394
|
+
v-if="getAffiliateContentItem('custom_box_2')"
|
|
395
|
+
v-html="getAffiliateContentItem('custom_box_2')"
|
|
396
|
+
/>
|
|
397
|
+
<div
|
|
398
|
+
v-else
|
|
399
|
+
class="text-center md:text-right"
|
|
400
|
+
>
|
|
254
401
|
<p>
|
|
255
|
-
<span v-if="affiliate.contact_address">
|
|
256
|
-
|
|
257
|
-
|
|
402
|
+
<span v-if="affiliate.contact_address">
|
|
403
|
+
{{ affiliate.contact_address }}
|
|
404
|
+
<br>
|
|
405
|
+
</span>
|
|
406
|
+
<span v-if="affiliate.contact_location">
|
|
407
|
+
{{ affiliate.contact_location }}
|
|
408
|
+
<br>
|
|
409
|
+
</span>
|
|
410
|
+
<span v-if="affiliate.website">
|
|
411
|
+
<a
|
|
412
|
+
class="affiliate-website"
|
|
413
|
+
:href="affiliate.website"
|
|
414
|
+
target="_blank"
|
|
415
|
+
@click="fireAnalytics('website')"
|
|
416
|
+
>
|
|
417
|
+
{{ affiliate.website }}
|
|
418
|
+
</a>
|
|
419
|
+
<br>
|
|
420
|
+
</span>
|
|
258
421
|
</p>
|
|
259
|
-
<span
|
|
260
|
-
|
|
261
|
-
|
|
422
|
+
<span
|
|
423
|
+
class="flex justify-center"
|
|
424
|
+
:class="{ 'md:justify-end': hasContactInfo }"
|
|
425
|
+
>
|
|
426
|
+
<a
|
|
427
|
+
v-if="affiliate.twitter_url"
|
|
428
|
+
:href="affiliate.twitter_url"
|
|
429
|
+
target="_blank"
|
|
430
|
+
class="affiliate-twitter"
|
|
431
|
+
:aria-label="affiliate.name + ` Twitter Page`"
|
|
432
|
+
@click="fireAnalytics('twitter')"
|
|
433
|
+
>
|
|
434
|
+
<span class="presenter-icon">
|
|
435
|
+
<CommonSvgIcon icon="twitter" />
|
|
436
|
+
</span>
|
|
262
437
|
</a>
|
|
263
|
-
<a
|
|
264
|
-
|
|
438
|
+
<a
|
|
439
|
+
v-if="affiliate.facebook_url"
|
|
440
|
+
:href="affiliate.facebook_url"
|
|
441
|
+
target="_blank"
|
|
442
|
+
class="affiliate-facebook"
|
|
443
|
+
:aria-label="affiliate.name + ` Facebook Page`"
|
|
444
|
+
@click="fireAnalytics('facebook')"
|
|
445
|
+
>
|
|
446
|
+
<span class="presenter-icon">
|
|
447
|
+
<CommonSvgIcon icon="facebook" />
|
|
448
|
+
</span>
|
|
265
449
|
</a>
|
|
266
|
-
<a
|
|
267
|
-
|
|
450
|
+
<a
|
|
451
|
+
v-if="affiliate.linkedin_url"
|
|
452
|
+
:href="affiliate.linkedin_url"
|
|
453
|
+
target="_blank"
|
|
454
|
+
class="affiliate-linkedin"
|
|
455
|
+
:aria-label="affiliate.name + ` LinkedIn Page`"
|
|
456
|
+
@click="fireAnalytics('linked_in')"
|
|
457
|
+
>
|
|
458
|
+
<span class="presenter-icon">
|
|
459
|
+
<CommonSvgIcon icon="linkedin" />
|
|
460
|
+
</span>
|
|
268
461
|
</a>
|
|
269
|
-
<a
|
|
270
|
-
|
|
462
|
+
<a
|
|
463
|
+
@click="fireAnalytics('youtube')"
|
|
464
|
+
v-if="affiliate.youtube_url"
|
|
465
|
+
:href="affiliate.youtube_url"
|
|
466
|
+
target="_blank"
|
|
467
|
+
class="affiliate-youtube"
|
|
468
|
+
:aria-label="affiliate.name + ` YouTube Page`"
|
|
469
|
+
>
|
|
470
|
+
<span class="presenter-icon">
|
|
471
|
+
<CommonSvgIcon icon="youtube" />
|
|
472
|
+
</span>
|
|
271
473
|
</a>
|
|
272
474
|
</span>
|
|
273
475
|
</div>
|
|
@@ -275,7 +477,12 @@ onMounted(() => {
|
|
|
275
477
|
</div>
|
|
276
478
|
</div>
|
|
277
479
|
|
|
278
|
-
<CommonModal
|
|
480
|
+
<CommonModal
|
|
481
|
+
:visible="showVideoModal"
|
|
482
|
+
modal-size="lg"
|
|
483
|
+
@clicked="showVideoModal = false"
|
|
484
|
+
class="video-dialog"
|
|
485
|
+
>
|
|
279
486
|
<template #modal-title>
|
|
280
487
|
<div class="p-1 pb-2">
|
|
281
488
|
{{ modalVideoTitle }}
|
|
@@ -284,22 +491,21 @@ onMounted(() => {
|
|
|
284
491
|
<template #modal-body>
|
|
285
492
|
<div class="video-modal-body">
|
|
286
493
|
<iframe
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
494
|
+
class="video-frame"
|
|
495
|
+
:src="modalVideoUrl"
|
|
496
|
+
width="640"
|
|
497
|
+
height="360"
|
|
498
|
+
scrolling="no"
|
|
499
|
+
frameborder="0"
|
|
500
|
+
marginheight="0"
|
|
501
|
+
marginwidth="0"
|
|
502
|
+
allowfullscreen=""
|
|
503
|
+
>
|
|
296
504
|
</iframe>
|
|
297
505
|
</div>
|
|
298
506
|
</template>
|
|
299
507
|
</CommonModal>
|
|
300
|
-
|
|
301
|
-
</div>
|
|
302
|
-
|
|
508
|
+
</div>
|
|
303
509
|
</template>
|
|
304
510
|
|
|
305
511
|
<style scoped>
|
|
@@ -315,15 +521,14 @@ onMounted(() => {
|
|
|
315
521
|
}
|
|
316
522
|
}
|
|
317
523
|
.video-dialog >>> .modal-box {
|
|
318
|
-
|
|
524
|
+
width: 704px;
|
|
319
525
|
}
|
|
320
526
|
.video-frame {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
527
|
+
display: block;
|
|
528
|
+
width: 640px;
|
|
529
|
+
margin-left: auto;
|
|
530
|
+
margin-right: auto;
|
|
531
|
+
padding-left: auto;
|
|
532
|
+
padding-right: auto;
|
|
327
533
|
}
|
|
328
534
|
</style>
|
|
329
|
-
|