@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.
Files changed (109) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +10 -0
  4. package/dist/runtime/@types/components.d.ts +22 -0
  5. package/dist/runtime/@types/configVariables.d.ts +6 -0
  6. package/dist/runtime/analytics.d.ts +1 -1
  7. package/dist/runtime/assets/scss/index.css +0 -705
  8. package/dist/runtime/assets/svg/icon-minus.svg +6 -0
  9. package/dist/runtime/assets/svg/icon-video.svg +6 -0
  10. package/dist/runtime/components/affiliates/AffiliateModal.vue +66 -0
  11. package/dist/runtime/components/affiliates/AffiliatePage.vue +337 -132
  12. package/dist/runtime/components/agenda/AgendaTabbed.vue +43 -34
  13. package/dist/runtime/components/agenda/components/Calendar.vue +8 -3
  14. package/dist/runtime/components/agenda/components/Favorite.vue +44 -0
  15. package/dist/runtime/components/agenda/components/PlayIcon.vue +1 -1
  16. package/dist/runtime/components/agenda/components/PresentationLink.vue +26 -15
  17. package/dist/runtime/components/chat/ChatConversationList.vue +108 -0
  18. package/dist/runtime/components/chat/ChatCreateConversation.vue +205 -0
  19. package/dist/runtime/components/chat/ChatCreateGroupConversation.vue +159 -0
  20. package/dist/runtime/components/chat/ChatHeader.vue +98 -0
  21. package/dist/runtime/components/chat/ChatMessage.vue +40 -0
  22. package/dist/runtime/components/chat/ChatShowConversation.vue +77 -0
  23. package/dist/runtime/components/chat/ChatWidget.vue +65 -0
  24. package/dist/runtime/components/chat/ChatWindow.vue +211 -0
  25. package/dist/runtime/components/chat/ChatWindow.vue.d.ts +6 -0
  26. package/dist/runtime/components/chat/MessageInput.vue +30 -0
  27. package/dist/runtime/components/chat/SearchInput.vue +32 -0
  28. package/dist/runtime/components/core/Accordion.vue +1 -1
  29. package/dist/runtime/components/core/AttendeeList.vue +25 -16
  30. package/dist/runtime/components/core/CountdownTimer.vue +1 -1
  31. package/dist/runtime/components/core/Modal.vue +21 -13
  32. package/dist/runtime/components/core/ModalButton.vue +43 -0
  33. package/dist/runtime/components/core/Navbar.vue +3 -3
  34. package/dist/runtime/components/core/Navigation.vue +293 -0
  35. package/dist/runtime/components/core/SvgIcon.vue +31 -1
  36. package/dist/runtime/components/core/VButton.vue +41 -0
  37. package/dist/runtime/components/core/ZoomModal.vue +1 -1
  38. package/dist/runtime/components/events/ListEvents.vue +3 -4
  39. package/dist/runtime/components/forms/CheckboxGroup.vue +46 -0
  40. package/dist/runtime/components/forms/ErrorField.vue +11 -2
  41. package/dist/runtime/components/forms/RadioGroup.vue +50 -0
  42. package/dist/runtime/components/forms/SelectDropDown.vue +47 -0
  43. package/dist/runtime/components/forms/SupportForm.vue +6 -6
  44. package/dist/runtime/components/layouts/Accordion.vue +2 -2
  45. package/dist/runtime/components/media/ArchivePlayerAndContentContainer.vue +20 -4
  46. package/dist/runtime/components/media/ArchiveVideoPlayer.vue +14 -6
  47. package/dist/runtime/components/media/WebcastVideoPlayer.vue +1 -1
  48. package/dist/runtime/components/media/components/ArchiveMediaContainer.vue +8 -8
  49. package/dist/runtime/components/media/components/CeCreditNotification.vue +2 -2
  50. package/dist/runtime/components/media/components/ContentArea.vue +51 -14
  51. package/dist/runtime/components/media/components/ContentTabs.vue +2 -2
  52. package/dist/runtime/components/media/components/DocumentsPanel.vue +2 -2
  53. package/dist/runtime/components/media/components/MediaContainer.vue +3 -7
  54. package/dist/runtime/components/media/components/PresentersPanel.vue +69 -50
  55. package/dist/runtime/components/media/components/SessionReporting.vue +5 -4
  56. package/dist/runtime/components/media/components/SponsorsPanel.vue +3 -3
  57. package/dist/runtime/components/presenters/PresenterListing.vue +30 -20
  58. package/dist/runtime/components/presenters/PresenterModal.vue +26 -21
  59. package/dist/runtime/components/presenters/Presenters.vue +139 -0
  60. package/dist/runtime/components/profile/Profile.vue +10 -6
  61. package/dist/runtime/components/profile/components/Sidebar.vue +1 -1
  62. package/dist/runtime/components/profile/components/SidebarNavItem.vue +1 -1
  63. package/dist/runtime/components/profile/tabs/Favorites.vue +5 -4
  64. package/dist/runtime/components/profile/tabs/GeneralInformation.vue +26 -16
  65. package/dist/runtime/components/registration/AlreadyRegisteredModal.vue +99 -0
  66. package/dist/runtime/components/registration/PaymentForm.vue +136 -0
  67. package/dist/runtime/components/registration/RegistrationForm.vue +417 -0
  68. package/dist/runtime/components/registration/RegistrationGroupSelect.vue +142 -0
  69. package/dist/runtime/components/registration/StripePaymentForm.vue +141 -0
  70. package/dist/runtime/composables/useAgenda.d.ts +12 -0
  71. package/dist/runtime/composables/useAgenda.mjs +101 -10
  72. package/dist/runtime/composables/useAuth.mjs +1 -1
  73. package/dist/runtime/composables/useConferenceHelpers.d.ts +5 -1
  74. package/dist/runtime/composables/useConferenceHelpers.mjs +15 -1
  75. package/dist/runtime/composables/useEventHooks.d.ts +26 -0
  76. package/dist/runtime/composables/useEventHooks.mjs +21 -0
  77. package/dist/runtime/composables/useEvents.d.ts +17 -1
  78. package/dist/runtime/composables/useEvents.mjs +29 -1
  79. package/dist/runtime/composables/useLogin.mjs +7 -3
  80. package/dist/runtime/composables/usePresentation.mjs +1 -1
  81. package/dist/runtime/composables/usePusher.d.ts +4 -0
  82. package/dist/runtime/composables/usePusher.mjs +38 -26
  83. package/dist/runtime/composables/useStream.mjs +7 -1
  84. package/dist/runtime/enums/general.d.ts +4 -1
  85. package/dist/runtime/enums/general.mjs +4 -1
  86. package/dist/runtime/models/authUser.d.ts +1 -0
  87. package/dist/runtime/models/conference.d.ts +14 -0
  88. package/dist/runtime/models/conversation.d.ts +2 -4
  89. package/dist/runtime/models/globalConfig.d.ts +6 -2
  90. package/dist/runtime/models/group.d.ts +32 -2
  91. package/dist/runtime/models/icons.d.ts +7 -0
  92. package/dist/runtime/models/templateConfig.d.ts +6 -0
  93. package/dist/runtime/models/user.d.ts +1 -0
  94. package/dist/runtime/models/virtualPagesConfig.d.ts +335 -0
  95. package/dist/runtime/models/virtualPagesConfig.mjs +0 -0
  96. package/dist/runtime/plugin.mjs +6 -0
  97. package/dist/runtime/store/affiliates.d.ts +3 -0
  98. package/dist/runtime/store/affiliates.mjs +38 -0
  99. package/dist/runtime/store/auth.mjs +6 -0
  100. package/dist/runtime/store/conferences.d.ts +3 -1
  101. package/dist/runtime/store/conferences.mjs +7 -2
  102. package/dist/runtime/store/conversations.d.ts +4040 -10
  103. package/dist/runtime/store/conversations.mjs +255 -22
  104. package/dist/runtime/store/modalPlayerConfig.d.ts +498 -0
  105. package/dist/runtime/store/modalPlayerConfig.mjs +58 -0
  106. package/dist/runtime/store/templateConfigs.d.ts +3 -2
  107. package/dist/runtime/store/templateConfigs.mjs +2 -1
  108. package/package.json +5 -2
  109. 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: string;
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: "flex flex-col w-full h-full overflow-y-auto p-4 border border-slate-300",
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
- let hasDocuments = (affiliate.value.documents.length > 0) ? 1 : 0;
43
- let hasVideos = (affiliate.value.videos.length > 0) ? 1 : 0;
44
- let hasLinks = (affiliate.value.links.length > 0) ? 1 : 0;
45
- return hasDocuments + hasVideos + hasLinks;
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
- 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
- );
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
- return (hasContactInfo.value || getAffiliateContentItem('custom_box_1'));
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
- let event = 'affiliate-' + affiliate.value.name + '-' + type;
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
- let itemVal = get(affiliate.value, 'affiliate_content.'+_item);
68
- if (itemVal == undefined || itemVal == '') { return null; }
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 = 'https://cdn.v3mediaportal.com/streaming-player/iframe-player.htm?';
89
- tmpUrl += 'cs=' + encodeURIComponent(_videoUrl);
90
- tmpUrl += '&ar=16:9&f=video&as=false';
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('video-' + _title);
96
- let tmpUrl = getStreamingVideoUrl(_videoUrl);
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
- :class="
112
- classBinding(
113
- classObject,
114
- 'container',
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
- <div :class="classBinding(
126
- classObject,
127
- 'headerContainer',
128
- 'flex flex-col md:flex-row w-full pb-6 border-b border-solid border-grey-light'
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="classBinding(
136
- classObject,
137
- 'headerNameContainer',
138
- 'flex w-full justify-center md:justify-start'
139
- )"
134
+ :class="
135
+ classBinding(
136
+ classObject,
137
+ 'headerNameContainer',
138
+ 'flex w-full justify-center md:justify-start'
139
+ )
140
+ "
140
141
  >
141
- <h1 :class="classBinding(classObject, 'headerNameElement', 'font-light mb-0 body-color-4 self-end')">{{affiliate.name}}</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="classBinding(classObject, 'headerContactContainer', 'w-full text-center md:text-right')"
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">{{affiliate.contact_address}}<br/></span>
149
- <span v-if="affiliate.contact_location">{{affiliate.contact_location}}<br/></span>
150
- <span v-if="affiliate.website"><a @click="fireAnalytics('website')" class="affiliate-website" :href="affiliate.website" target="_blank">{{affiliate.website}}</a><br/></span>
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 :class="classBinding(classObject, 'headerSocialContainer', 'flex justify-center md:justify-end')">
153
- <a @click="fireAnalytics('twitter')" v-if="affiliate.twitter_url" :href="affiliate.twitter_url" target="_blank" class="affiliate-twitter" :aria-label="affiliate.name + ` Twitter Page`">
154
- <span class="presenter-icon"><CommonSvgIcon icon="twitter"></CommonSvgIcon></span>
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 @click="fireAnalytics('facebook')" v-if="affiliate.facebook_url" :href="affiliate.facebook_url" target="_blank" class="affiliate-facebook" :aria-label="affiliate.name + ` Facebook Page`">
157
- <span class="presenter-icon "><CommonSvgIcon icon="facebook"></CommonSvgIcon></span>
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 @click="fireAnalytics('linked_in')" v-if="affiliate.linkedin_url" :href="affiliate.linkedin_url" target="_blank" class="affiliate-linkedin" :aria-label="affiliate.name + ` LinkedIn Page`">
160
- <span class="presenter-icon"><CommonSvgIcon icon="linkedin"></CommonSvgIcon></span>
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 @click="fireAnalytics('youtube')" v-if="affiliate.youtube_url" :href="affiliate.youtube_url" target="_blank" class="affiliate-youtube" :aria-label="affiliate.name + ` YouTube Page`">
163
- <span class="presenter-icon"><CommonSvgIcon icon="youtube"></CommonSvgIcon></span>
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="classBinding(classObject, 'htmlHeaderContainer', 'w-full mt-5 text-center md:text-left')"
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="classBinding(classObject, 'biographyContainer', 'w-full mt-5 text-center md:text-left')"
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="classBinding(classObject, 'contentContainer', 'w-full mt-5 md:max-h-300')"
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"><a @click="fireAnalytics('document-' + document.name)" class="affiliate-document" :href="document.url" target="_blank">{{ document.name }}</a></div>
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 v-if="affiliate.videos.length == 1 && getAffiliateContentItem('embed_video') == 1">
293
+ <div
294
+ v-if="
295
+ affiliate.videos.length == 1 &&
296
+ getAffiliateContentItem('embed_video') == 1
297
+ "
298
+ >
196
299
  <iframe
197
- :src="getStreamingVideoUrl(affiliate.videos[0].url)"
198
- width="100%"
199
- style="max-width: 300px; margin:auto;"
200
- scrolling="no"
201
- frameborder="0"
202
- marginheight="0"
203
- marginwidth="0"
204
- allowfullscreen="">
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 name="affiliateName" type="hidden" id="affiliateName" :value="affiliate.name">
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"><a href="javascript:null" class="affiliate-video-trigger" @click="openVideoModal(video.name, video.url)">{{ video.name }}</a></div>
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"><a @click="fireAnalytics('external_link-' + link.name)" :href="link.url" class="affiliate-link" target="_blank">{{ link.name }}</a></div>
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 v-if="showLeftBottomBox" :class="classBinding(classObject, 'affiliateContentBox', '')">
228
- <div v-if="getAffiliateContentItem('custom_box_1')" v-html="getAffiliateContentItem('custom_box_1')"></div>
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 v-if="affiliate.contact_photo" class="mr-4 w-1/3 mb-3 md:mb-0 self-center md:self-start">
232
- <img :src="affiliate.contact_photo" class="w-full" />
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">{{affiliate.contact_name}}<br/></span>
238
- <span v-if="affiliate.contact_title">{{affiliate.contact_title}}<br/></span>
239
- <span v-if="affiliate.contact_phone">Phone: {{affiliate.contact_phone}}<br/></span>
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 @click="fireAnalytics('contact_email')" class="affiliate-email" :href="'mailto:' + affiliate.contact_email">
242
- {{affiliate.contact_email}}
243
- </a><br />
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 v-if="getAffiliateContentItem('custom_box_2')" v-html="getAffiliateContentItem('custom_box_2')"></div>
253
- <div v-else class="text-center md:text-right">
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">{{affiliate.contact_address}}<br/></span>
256
- <span v-if="affiliate.contact_location">{{affiliate.contact_location}}<br/></span>
257
- <span v-if="affiliate.website"><a @click="fireAnalytics('website')" class="affiliate-website" :href="affiliate.website" target="_blank">{{affiliate.website}}</a><br/></span>
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 class="flex justify-center" :class="{'md:justify-end':hasContactInfo}">
260
- <a @click="fireAnalytics('twitter')" v-if="affiliate.twitter_url" :href="affiliate.twitter_url" target="_blank" class="affiliate-twitter" :aria-label="affiliate.name + ` Twitter Page`">
261
- <span class="presenter-icon"><CommonSvgIcon icon="twitter"></CommonSvgIcon></span>
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 @click="fireAnalytics('facebook')" v-if="affiliate.facebook_url" :href="affiliate.facebook_url" target="_blank" class="affiliate-facebook" :aria-label="affiliate.name + ` Facebook Page`">
264
- <span class="presenter-icon "><CommonSvgIcon icon="facebook"></CommonSvgIcon></span>
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 @click="fireAnalytics('linked_in')" v-if="affiliate.linkedin_url" :href="affiliate.linkedin_url" target="_blank" class="affiliate-linkedin" :aria-label="affiliate.name + ` LinkedIn Page`">
267
- <span class="presenter-icon"><CommonSvgIcon icon="linkedin"></CommonSvgIcon></span>
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 @click="fireAnalytics('youtube')" v-if="affiliate.youtube_url" :href="affiliate.youtube_url" target="_blank" class="affiliate-youtube" :aria-label="affiliate.name + ` YouTube Page`">
270
- <span class="presenter-icon"><CommonSvgIcon icon="youtube"></CommonSvgIcon></span>
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 :visible="showVideoModal" modal-size="lg" @clicked="showVideoModal = false" class="video-dialog">
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
- class='video-frame'
288
- :src="modalVideoUrl"
289
- width="640"
290
- height="360"
291
- scrolling="no"
292
- frameborder="0"
293
- marginheight="0"
294
- marginwidth="0"
295
- allowfullscreen="">
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
- width: 704px;
524
+ width: 704px;
319
525
  }
320
526
  .video-frame {
321
- display: block;
322
- width: 640px;
323
- margin-left: auto;
324
- margin-right: auto;
325
- padding-left: auto;
326
- padding-right: auto;
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
-