@icvdeveloper/common-module 1.4.14 → 2.1.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 (189) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/module.d.mts +1051 -2
  3. package/dist/module.d.ts +1051 -2
  4. package/dist/module.json +1 -1
  5. package/dist/module.mjs +29 -15
  6. package/dist/runtime/@types/components.d.ts +22 -0
  7. package/dist/runtime/@types/configVariables.d.ts +6 -0
  8. package/dist/runtime/analytics.d.ts +1 -6
  9. package/dist/runtime/assets/scss/_agenda.css +1 -0
  10. package/dist/runtime/assets/scss/_animations.css +1 -0
  11. package/dist/runtime/assets/scss/_container_variants.css +1 -0
  12. package/dist/runtime/assets/scss/_custom.css +3 -0
  13. package/dist/runtime/assets/scss/_forms.css +1 -0
  14. package/dist/runtime/assets/scss/_header.css +0 -0
  15. package/dist/runtime/assets/scss/_index_production.css +1 -0
  16. package/dist/runtime/assets/scss/_transitions.css +1 -0
  17. package/dist/runtime/assets/scss/_variables.css +1 -0
  18. package/dist/runtime/assets/scss/_variables2.css +0 -0
  19. package/dist/runtime/assets/scss/_webcast.css +1 -0
  20. package/dist/runtime/assets/scss/index.css +1 -705
  21. package/dist/runtime/assets/svg/icon-minus.svg +6 -0
  22. package/dist/runtime/assets/svg/icon-video.svg +6 -0
  23. package/dist/runtime/components/affiliates/AffiliateModal.vue +66 -0
  24. package/dist/runtime/components/affiliates/AffiliatePage.vue +329 -159
  25. package/dist/runtime/components/agenda/AgendaList.vue +18 -14
  26. package/dist/runtime/components/agenda/AgendaTabbed.vue +60 -54
  27. package/dist/runtime/components/agenda/components/AgendaListAccordion.vue +8 -3
  28. package/dist/runtime/components/agenda/components/Calendar.vue +23 -18
  29. package/dist/runtime/components/agenda/components/Favorite.vue +46 -0
  30. package/dist/runtime/components/agenda/components/InfoLink.vue +15 -5
  31. package/dist/runtime/components/agenda/components/PlayIcon.vue +3 -5
  32. package/dist/runtime/components/agenda/components/PresentationLink.vue +37 -19
  33. package/dist/runtime/components/agenda/components/Sponsor.vue +31 -24
  34. package/dist/runtime/components/auth/PasswordReset.vue +20 -5
  35. package/dist/runtime/components/auth/Registration.vue +14 -4
  36. package/dist/runtime/components/auth/Ucc.vue +44 -27
  37. package/dist/runtime/components/chat/ChatConversationList.vue +108 -0
  38. package/dist/runtime/components/chat/ChatCreateConversation.vue +199 -0
  39. package/dist/runtime/components/chat/ChatCreateGroupConversation.vue +154 -0
  40. package/dist/runtime/components/chat/ChatHeader.vue +97 -0
  41. package/dist/runtime/components/chat/ChatMessage.vue +40 -0
  42. package/dist/runtime/components/chat/ChatShowConversation.vue +76 -0
  43. package/dist/runtime/components/chat/ChatWidget.vue +40 -0
  44. package/dist/runtime/components/chat/ChatWindow.vue +154 -0
  45. package/dist/runtime/components/chat/ChatWindow.vue.d.ts +6 -0
  46. package/dist/runtime/components/chat/MessageInput.vue +27 -0
  47. package/dist/runtime/components/chat/SearchInput.vue +32 -0
  48. package/dist/runtime/components/core/Accordion.vue +12 -12
  49. package/dist/runtime/components/core/AttendeeList.vue +31 -36
  50. package/dist/runtime/components/core/CountdownTimer.vue +68 -52
  51. package/dist/runtime/components/core/DynamicHtml.vue.d.ts +6 -9
  52. package/dist/runtime/components/core/Modal.vue +24 -22
  53. package/dist/runtime/components/core/ModalButton.vue +43 -0
  54. package/dist/runtime/components/core/Navbar.vue +33 -21
  55. package/dist/runtime/components/core/Navigation.vue +286 -0
  56. package/dist/runtime/components/core/SvgIcon.vue +34 -1
  57. package/dist/runtime/components/core/VButton.vue +35 -0
  58. package/dist/runtime/components/core/ZoomModal.vue +9 -3
  59. package/dist/runtime/components/events/EventHeader.vue +14 -4
  60. package/dist/runtime/components/events/ListEvents.vue +21 -22
  61. package/dist/runtime/components/forms/CheckboxGroup.vue +46 -0
  62. package/dist/runtime/components/forms/ErrorField.vue +11 -2
  63. package/dist/runtime/components/forms/Message.vue +1 -1
  64. package/dist/runtime/components/forms/RadioGroup.vue +50 -0
  65. package/dist/runtime/components/forms/SearchInput.vue +8 -2
  66. package/dist/runtime/components/forms/SelectDropDown.vue +47 -0
  67. package/dist/runtime/components/forms/SupportForm.vue +22 -11
  68. package/dist/runtime/components/forms/SwitchInput.vue +50 -30
  69. package/dist/runtime/components/forms/TextArea.vue +1 -1
  70. package/dist/runtime/components/forms/TextInput.vue +1 -1
  71. package/dist/runtime/components/layouts/Accordion.vue +11 -6
  72. package/dist/runtime/components/media/ArchivePlayerAndContentContainer.vue +24 -5
  73. package/dist/runtime/components/media/ArchiveVideoPlayer.vue +19 -23
  74. package/dist/runtime/components/media/PlayerAndContentContainer.vue +4 -1
  75. package/dist/runtime/components/media/WebcastVideoPlayer.vue +6 -18
  76. package/dist/runtime/components/media/components/AgendaPanel.vue +7 -6
  77. package/dist/runtime/components/media/components/ArchiveMediaContainer.vue +17 -15
  78. package/dist/runtime/components/media/components/CeCreditNotification.vue +8 -8
  79. package/dist/runtime/components/media/components/ContentArea.vue +59 -18
  80. package/dist/runtime/components/media/components/ContentTabs.vue +40 -28
  81. package/dist/runtime/components/media/components/DocumentsPanel.vue +19 -17
  82. package/dist/runtime/components/media/components/MediaContainer.vue +11 -13
  83. package/dist/runtime/components/media/components/OverviewPanel.vue +5 -2
  84. package/dist/runtime/components/media/components/PresentersPanel.vue +74 -55
  85. package/dist/runtime/components/media/components/SessionReporting.vue +5 -4
  86. package/dist/runtime/components/media/components/SponsorsPanel.vue +13 -12
  87. package/dist/runtime/components/presenters/PresenterListing.vue +33 -25
  88. package/dist/runtime/components/presenters/PresenterModal.vue +26 -21
  89. package/dist/runtime/components/presenters/Presenters.vue +139 -0
  90. package/dist/runtime/components/profile/Profile.vue +10 -6
  91. package/dist/runtime/components/profile/components/Sidebar.vue +1 -1
  92. package/dist/runtime/components/profile/components/SidebarNavItem.vue +2 -4
  93. package/dist/runtime/components/profile/tabs/Favorites.vue +5 -4
  94. package/dist/runtime/components/profile/tabs/GeneralInformation.vue +26 -16
  95. package/dist/runtime/components/profile/tabs/ProfileImage.vue +7 -6
  96. package/dist/runtime/components/registration/AlreadyRegisteredModal.vue +102 -0
  97. package/dist/runtime/components/registration/PaymentForm.vue +136 -0
  98. package/dist/runtime/components/registration/RegistrationForm.vue +417 -0
  99. package/dist/runtime/components/registration/RegistrationGroupSelect.vue +146 -0
  100. package/dist/runtime/components/registration/StripePaymentForm.vue +121 -0
  101. package/dist/runtime/components/support/FAQAccordion.vue +8 -7
  102. package/dist/runtime/composables/useAdobeLaunch.d.ts +2 -7
  103. package/dist/runtime/composables/useAdobeLaunch.mjs +2 -2
  104. package/dist/runtime/composables/useAgenda.d.ts +13 -1
  105. package/dist/runtime/composables/useAgenda.mjs +125 -25
  106. package/dist/runtime/composables/useApi.d.ts +1 -1
  107. package/dist/runtime/composables/useAuth.d.ts +1 -1
  108. package/dist/runtime/composables/useAuth.mjs +1 -1
  109. package/dist/runtime/composables/useClassBinding.d.ts +3 -1
  110. package/dist/runtime/composables/useConferenceHelpers.d.ts +7 -3
  111. package/dist/runtime/composables/useConferenceHelpers.mjs +26 -15
  112. package/dist/runtime/composables/useEventHooks.d.ts +29 -0
  113. package/dist/runtime/composables/useEventHooks.mjs +21 -0
  114. package/dist/runtime/composables/useEvents.d.ts +17 -1
  115. package/dist/runtime/composables/useEvents.mjs +35 -9
  116. package/dist/runtime/composables/useLogin.mjs +9 -5
  117. package/dist/runtime/composables/useNavigation.d.ts +1 -1
  118. package/dist/runtime/composables/useNavigation.mjs +4 -2
  119. package/dist/runtime/composables/usePresentation.d.ts +2 -2
  120. package/dist/runtime/composables/usePresentation.mjs +8 -7
  121. package/dist/runtime/composables/usePresenter.d.ts +2 -2
  122. package/dist/runtime/composables/usePresenters.d.ts +2 -2
  123. package/dist/runtime/composables/usePusher.d.ts +4 -0
  124. package/dist/runtime/composables/usePusher.mjs +38 -26
  125. package/dist/runtime/composables/useScripts.mjs +1 -1
  126. package/dist/runtime/composables/useStream.d.ts +2 -3
  127. package/dist/runtime/composables/useStream.mjs +8 -2
  128. package/dist/runtime/composables/useUcc.d.ts +1 -1
  129. package/dist/runtime/composables/useUcc.mjs +29 -23
  130. package/dist/runtime/enums/general.d.ts +4 -1
  131. package/dist/runtime/enums/general.mjs +4 -1
  132. package/dist/runtime/models/adobeLaunch.d.ts +6 -0
  133. package/dist/runtime/models/adobeLaunch.mjs +0 -0
  134. package/dist/runtime/models/analytics.d.ts +6 -0
  135. package/dist/runtime/models/analytics.mjs +0 -0
  136. package/dist/runtime/models/attendeeList.d.ts +1 -1
  137. package/dist/runtime/models/conference.d.ts +122 -91
  138. package/dist/runtime/models/conversation.d.ts +11 -13
  139. package/dist/runtime/models/document.d.ts +5 -5
  140. package/dist/runtime/models/globalConfig.d.ts +9 -3
  141. package/dist/runtime/models/group.d.ts +38 -8
  142. package/dist/runtime/models/icons.d.ts +8 -1
  143. package/dist/runtime/models/index.d.ts +20 -0
  144. package/dist/runtime/models/index.mjs +20 -0
  145. package/dist/runtime/models/link.d.ts +4 -4
  146. package/dist/runtime/models/loginParams.d.ts +5 -0
  147. package/dist/runtime/models/loginParams.mjs +0 -0
  148. package/dist/runtime/models/navigationConfig.d.ts +7 -7
  149. package/dist/runtime/models/pagination.d.ts +11 -11
  150. package/dist/runtime/models/portal.d.ts +15 -10
  151. package/dist/runtime/models/templateConfig.d.ts +13 -7
  152. package/dist/runtime/models/ucc.d.ts +22 -0
  153. package/dist/runtime/models/ucc.mjs +0 -0
  154. package/dist/runtime/models/user.d.ts +25 -12
  155. package/dist/runtime/models/vButton.d.ts +7 -0
  156. package/dist/runtime/models/vButton.mjs +0 -0
  157. package/dist/runtime/models/video.d.ts +5 -4
  158. package/dist/runtime/models/virtualPagesConfig.d.ts +223 -0
  159. package/dist/runtime/models/virtualPagesConfig.mjs +0 -0
  160. package/dist/runtime/plugin.mjs +18 -9
  161. package/dist/runtime/store/affiliates.d.ts +4 -1
  162. package/dist/runtime/store/affiliates.mjs +38 -0
  163. package/dist/runtime/store/attendeeList.d.ts +1 -1
  164. package/dist/runtime/store/auth.d.ts +3 -7
  165. package/dist/runtime/store/auth.mjs +6 -0
  166. package/dist/runtime/store/conferences.d.ts +3 -1
  167. package/dist/runtime/store/conferences.mjs +14 -9
  168. package/dist/runtime/store/conversations.d.ts +78 -10
  169. package/dist/runtime/store/conversations.mjs +255 -22
  170. package/dist/runtime/store/modalPlayerConfig.d.ts +27 -0
  171. package/dist/runtime/store/modalPlayerConfig.mjs +58 -0
  172. package/dist/runtime/store/navigationConfig.d.ts +1 -1
  173. package/dist/runtime/store/presentations.d.ts +2 -2
  174. package/dist/runtime/store/templateConfigs.d.ts +7 -6
  175. package/dist/runtime/store/templateConfigs.mjs +7 -6
  176. package/dist/runtime/store/user.mjs +0 -1
  177. package/dist/runtime/v3plusCommonPlugin.d.ts +1 -1
  178. package/dist/types.d.mts +3 -2
  179. package/dist/types.d.ts +3 -2
  180. package/package.json +12 -9
  181. package/dist/runtime/components/media/components/JsonApi.vue +0 -33
  182. package/dist/runtime/components/media/components/JsonApi.vue.d.ts +0 -16
  183. package/dist/runtime/components/media/components/PresentersPanel.vue.d.ts +0 -32
  184. package/dist/runtime/components/media/components/WindowContent.vue +0 -118
  185. package/dist/runtime/components/media/components/WindowContent.vue.d.ts +0 -50
  186. package/dist/runtime/components/media/components/WindowSlide.vue +0 -92
  187. package/dist/runtime/components/media/components/WindowSlide.vue.d.ts +0 -36
  188. package/dist/runtime/models/authUser.d.ts +0 -16
  189. /package/dist/runtime/{models/authUser.mjs → assets/scss/_footer.css} +0 -0
@@ -1,11 +1,12 @@
1
1
  <script lang="ts" setup>
2
- import { ref, toRefs } from "vue";
2
+ import { computed, ref, toRefs } from "vue";
3
3
  import { storeToRefs } from "pinia";
4
+ import { find } from "lodash-es";
4
5
  import { useEvents } from "../../composables/useEvents";
5
6
  import { useClassBinding } from "../../composables/useClassBinding";
6
- import type { Conference, Presentation } from "../../models/conference";
7
- import { SelectedContent } from "../../enums/general";
8
7
  import { usePresentationsStore } from "../../store/presentations";
8
+ import { SelectedContent } from "../../enums/general";
9
+ import type { Conference, Presentation, Sponsor } from "../../models/conference";
9
10
  import type {
10
11
  PlayerAndContentClassObj,
11
12
  PlayerAndContentCompObj,
@@ -50,6 +51,20 @@ const { classBinding } = useClassBinding();
50
51
  const { getSponsors } = useEvents();
51
52
 
52
53
  const { selectedContent } = storeToRefs(usePresentationsStore());
54
+
55
+ // computed
56
+ const hasSponsors = computed((): boolean => {
57
+ // return if there are any matching sponsors that have images to display here
58
+ const hasImage: Sponsor | undefined = find(
59
+ getSponsors(conference.value.affiliates),
60
+ function(o: Sponsor) { return o.photo != null && o.photo.length > 0 }
61
+ )
62
+ return hasImage != undefined;
63
+ })
64
+
65
+ const getSponsorsResult = computed((): Sponsor[] => {
66
+ return getSponsors(conference.value.affiliates);
67
+ });
53
68
  </script>
54
69
 
55
70
  <template>
@@ -81,7 +96,10 @@ const { selectedContent } = storeToRefs(usePresentationsStore());
81
96
  </div>
82
97
 
83
98
  <!-- TABS -->
84
- <div v-else :class="classBinding(classObject, 'withTabsContainer', '')">
99
+ <div
100
+ v-else
101
+ :class="classBinding(classObject, 'withTabsContainer', '')"
102
+ >
85
103
  <CommonComponentsContentTabs
86
104
  :class="
87
105
  classBinding(
@@ -99,7 +117,7 @@ const { selectedContent } = storeToRefs(usePresentationsStore());
99
117
  classBinding(
100
118
  classObject,
101
119
  'withTabsChild',
102
- 'flex-1 grid grid-cols-7 grid-rows-2 gap-y-4'
120
+ `flex-1 grid grid-cols-7 ${hasSponsors ? 'grid-rows-2' : 'grid-rows-1'} gap-y-4`
103
121
  )
104
122
  "
105
123
  >
@@ -133,6 +151,7 @@ const { selectedContent } = storeToRefs(usePresentationsStore());
133
151
  />
134
152
  <!-- sponsor -->
135
153
  <figure
154
+ v-if="hasSponsors"
136
155
  class="col-span-7 md:col-start-5 md:col-span-3 lg:col-start-6 lg:col-span-6 row-span-1 flex flex-col p-6 text-center"
137
156
  >
138
157
  <template
@@ -1,10 +1,12 @@
1
1
  <script lang="ts" setup>
2
- import { toRefs, computed, watch, onMounted, nextTick } from "vue";
3
- import { onBeforeRouteLeave } from "vue-router";
2
+ import { toRefs, computed, watch, onMounted, onUnmounted, nextTick } from "vue";
4
3
  import { get } from "lodash-es";
4
+ import { useClassBinding } from "../../composables/useClassBinding";
5
+ import {
6
+ modalClosedEventHook
7
+ } from "../../composables/useEventHooks";
5
8
  import type { Presentation, PlayerObj } from "../../models/conference";
6
9
  import type { WebcastPlayerClassObj } from "../../@types/components";
7
- import { useClassBinding } from "../../composables/useClassBinding";
8
10
 
9
11
  type Props = {
10
12
  presentation: Presentation;
@@ -35,9 +37,15 @@ let icvPlayerObj: PlayerObj = {
35
37
  };
36
38
  let timeInterval: NodeJS.Timer | null = null;
37
39
 
40
+ modalClosedEventHook.on(() => {
41
+ console.log('modal closed');
42
+ cleanup();
43
+ })
44
+
45
+
38
46
  // emits
39
47
  const emit = defineEmits<{
40
- (event: "time", value: Number): void;
48
+ (event: "time", value: number): void;
41
49
  }>();
42
50
 
43
51
  // computed
@@ -66,7 +74,7 @@ const playStream = () => {
66
74
 
67
75
  const setupMediaPlayer = () => {
68
76
  if (icvPlayerObj) {
69
- icvPlayerObj = <PlayerObj>{};
77
+ icvPlayerObj = {} as PlayerObj;
70
78
  }
71
79
  if (isFile.value) {
72
80
  nextTick(() => {
@@ -113,14 +121,14 @@ const cleanup = () => {
113
121
  if (icvPlayerObj) {
114
122
  stop();
115
123
  remove();
116
- icvPlayerObj = <PlayerObj>{};
124
+ icvPlayerObj = {} as PlayerObj;
117
125
  }
118
126
  clearInterval(timeInterval);
119
127
  };
120
128
 
121
129
  // watchers
122
130
  watch(
123
- presentation,
131
+ presentation.value,
124
132
  (_oldPresentation: Presentation, _newPresentation: Presentation) => {
125
133
  if (_oldPresentation.type !== _newPresentation.type) {
126
134
  setupMediaPlayer();
@@ -145,7 +153,7 @@ onMounted(() => {
145
153
  };
146
154
  });
147
155
 
148
- onBeforeRouteLeave(() => {
156
+ onUnmounted(() => {
149
157
  cleanup();
150
158
  });
151
159
  </script>
@@ -160,27 +168,15 @@ onBeforeRouteLeave(() => {
160
168
  id="mediaPlayer"
161
169
  ref="mediaPlayer"
162
170
  :class="classBinding(classObject, 'playerElement', '')"
163
- ></div>
171
+ />
164
172
  <span
165
173
  v-if="isHtml"
166
174
  :v-html="presentation.embed_html"
167
175
  :class="classBinding(classObject, 'embedElement', '')"
168
- ></span>
176
+ />
169
177
  </div>
170
178
  </template>
171
179
 
172
180
  <style>
173
- #archive-player-container > span {
174
- padding-bottom: 56.25%;
175
- height: 0;
176
- position: relative;
177
- display: block;
178
- }
179
- #archive-player-container > span > iframe {
180
- position: absolute;
181
- top: 0;
182
- left: 0;
183
- height: 100%;
184
- width: 100%;
185
- }
181
+ #archive-player-container>span{display:block;height:0;padding-bottom:56.25%;position:relative}#archive-player-container>span>iframe{height:100%;left:0;position:absolute;top:0;width:100%}
186
182
  </style>
@@ -99,7 +99,10 @@ const hasAccess = computed((): boolean => {
99
99
  </div>
100
100
 
101
101
  <!-- TABS -->
102
- <div v-else :class="classBinding(classObject, 'withTabsContainer', '')">
102
+ <div
103
+ v-else
104
+ :class="classBinding(classObject, 'withTabsContainer', '')"
105
+ >
103
106
  <CommonComponentsContentTabs
104
107
  :class="
105
108
  classBinding(
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" setup>
2
- import { ref, toRefs, computed, watch, onMounted, nextTick } from "vue";
2
+ import { toRefs, computed, watch, onMounted, nextTick } from "vue";
3
3
  import { get } from "lodash-es";
4
4
  import type { Presentation, Stream, PlayerObj } from "../../models/conference";
5
5
  import type { WebcastPlayerClassObj } from "../../@types/components";
@@ -47,7 +47,7 @@ const isHls = computed(() => {
47
47
  // methods
48
48
  const setupMediaPlayer = () => {
49
49
  if (icvPlayerObj) {
50
- icvPlayerObj = <PlayerObj>{};
50
+ icvPlayerObj = {} as PlayerObj;
51
51
  }
52
52
  if (isHls.value) {
53
53
  nextTick(() => {
@@ -73,7 +73,7 @@ const playStream = () => {
73
73
 
74
74
  // watchers
75
75
  watch(
76
- presentation,
76
+ presentation.value,
77
77
  (_oldPresentation: Presentation, _newPresentation: Presentation) => {
78
78
  if (_oldPresentation.type !== _newPresentation.type) {
79
79
  setupMediaPlayer();
@@ -114,27 +114,15 @@ onMounted(() => {
114
114
  id="mediaPlayer"
115
115
  ref="mediaPlayer"
116
116
  :class="classBinding(classObject, 'playerElement', '')"
117
- ></div>
117
+ />
118
118
  <span
119
119
  v-if="isHtml"
120
120
  :v-html="stream.embed_html"
121
121
  :class="classBinding(classObject, 'embedElement', '')"
122
- ></span>
122
+ />
123
123
  </div>
124
124
  </template>
125
125
 
126
126
  <style>
127
- #webcast-player-container > span {
128
- padding-bottom: 56.25%;
129
- height: 0;
130
- position: relative;
131
- display: block;
132
- }
133
- #webcast-player-container > span > iframe {
134
- position: absolute;
135
- top: 0;
136
- left: 0;
137
- height: 100%;
138
- width: 100%;
139
- }
127
+ #webcast-player-container>span{display:block;height:0;padding-bottom:56.25%;position:relative}#webcast-player-container>span>iframe{height:100%;left:0;position:absolute;top:0;width:100%}
140
128
  </style>
@@ -40,15 +40,16 @@ const { classBinding } = useClassBinding();
40
40
  </div>
41
41
  </template>
42
42
 
43
- <style scoped>
43
+ <style lang="postcss" scoped>
44
44
  .sponsor-grid {
45
45
  display: grid;
46
46
  grid-template-columns: 1fr 1fr 1fr;
47
47
  gap: 10px;
48
- }
49
- .sponsor-grid .grid-item {
50
- align-items: center;
51
- align-self: center;
52
- justify-self: center;
48
+
49
+ .grid-item {
50
+ align-items: center;
51
+ align-self: center;
52
+ justify-self: center;
53
+ }
53
54
  }
54
55
  </style>
@@ -37,7 +37,7 @@ const { pagesConfigValue } = storeToRefs(useTemplateConfigsStore());
37
37
  const emit = defineEmits(["previewEnded"]);
38
38
 
39
39
  // data
40
- let playing = ref<boolean>(true);
40
+ const playing = ref<boolean>(true);
41
41
 
42
42
  // computed
43
43
  const isPreview = computed((): boolean => {
@@ -46,31 +46,31 @@ const isPreview = computed((): boolean => {
46
46
  false
47
47
  );
48
48
  // @todo add check against conference-level portal configs
49
- // || pagesConfigValue.value("archive_player.preview_enabled", false);
50
49
  return !isLoggedIn && previewEnabled;
51
50
  });
52
51
 
53
52
  const previewDuration = computed((): number => {
54
53
  return pagesConfigValue.value("archive_player.preview_duration", 60);
55
54
  // @todo add check against conference-level portal configs
56
- // || pagesConfigValue.value("archive_player.preview_duration", 60);
57
55
  });
58
56
 
59
57
  // methods
60
- const firePreviewEnded = () => {
58
+ const firePreviewEnded = (): void => {
61
59
  playing.value = false;
62
60
  if (ref.mediaPlayer) {
63
61
  ref.mediaPlayer.stop();
64
62
  // @todo ensure emit will suffice
65
63
  // previewEnded = true;
66
64
  }
65
+ console.log('firePreviewEnded')
67
66
  emit("previewEnded");
68
67
  };
69
68
 
70
- const checkTime = (_time: Number) => {
69
+ const checkTime = (_time: number): void => {
71
70
  // @todo set current time for chapter timings only
72
71
  // setCurrentTime(_time);
73
- if (isPreview && _time >= previewDuration.value) {
72
+ if (isPreview.value && _time >= previewDuration.value) {
73
+ console.log('checkTime calling firePreviewEnded')
74
74
  firePreviewEnded();
75
75
  }
76
76
  };
@@ -82,13 +82,13 @@ const checkTime = (_time: Number) => {
82
82
  ref="mediaPlayer"
83
83
  :presentation="presentation"
84
84
  :playing="playing"
85
- :class-object="classObject.components.webcastPlayer"
85
+ :class-object="classObject?.components?.webcastPlayer"
86
86
  @time="checkTime"
87
- ></CommonArchiveVideoPlayer>
87
+ />
88
88
  </div>
89
89
  </template>
90
90
 
91
- <style scoped>
91
+ <style scoped lang="postcss">
92
92
  .media-container {
93
93
  display: grid;
94
94
  grid-template-columns: var(--media-template-columns-default);
@@ -102,9 +102,9 @@ const checkTime = (_time: Number) => {
102
102
  display: grid;
103
103
  }
104
104
 
105
- @screen lg {
106
- img.normal {
107
- max-height: 65vh;
105
+ img.normal {
106
+ @screen lg {
107
+ max-height: 65vh; /* max height before distorting container */
108
108
  }
109
109
  }
110
110
 
@@ -125,12 +125,14 @@ const checkTime = (_time: Number) => {
125
125
  .media-container {
126
126
  grid-template-columns: var(--media-template-columns-large);
127
127
  }
128
+
128
129
  .expand-overlay {
129
130
  @apply p-2;
130
131
  display: block;
131
- }
132
- .expand-overlay:hover {
133
- opacity: 0.7;
132
+
133
+ &:hover {
134
+ opacity: 0.7;
135
+ }
134
136
  }
135
137
  }
136
138
  </style>
@@ -1,7 +1,7 @@
1
1
  <script lang="ts" setup>
2
2
  import Pusher from "pusher-js";
3
3
  import Echo from "laravel-echo";
4
- import { toRefs, computed } from "vue";
4
+ import { computed, onMounted, ref, toRefs } from "vue";
5
5
  import type { Conference } from "../../../models/conference";
6
6
  import type { CeCreditPanelClassObj } from "../../../@types/components";
7
7
  import { useClassBinding } from "../../../composables/useClassBinding";
@@ -36,14 +36,14 @@ const countdownLoopId = ref<any>(null);
36
36
  // computed
37
37
  const timeRemainingClass = computed(() => {
38
38
  if (displayFor.value > 10) {
39
- return "font-bold text-green-dark";
39
+ return "font-bold text-green-600";
40
40
  }
41
41
  return "font-bold text-red";
42
42
  });
43
43
 
44
44
  // methods
45
45
  const handleNotification = (_conference: Conference) => {
46
- clearInterval(countdownLoopId);
46
+ clearInterval(countdownLoopId.value);
47
47
  window.scrollTo({ top: 0, behavior: "smooth" });
48
48
  visible.value = true;
49
49
  displayFor.value = _conference.ce_credit_config?.display_for || 30;
@@ -105,7 +105,7 @@ onMounted(() => {
105
105
  classBinding(
106
106
  classObject,
107
107
  'container',
108
- 'flex bg-yellow-lightest shadow text-grey-darker py-6 px-10'
108
+ 'flex bg-yellow-100 shadow text-gray-700 py-6 px-10'
109
109
  )
110
110
  "
111
111
  >
@@ -125,13 +125,13 @@ onMounted(() => {
125
125
  classBinding(classObject, 'timeInSeconds', ''),
126
126
  timeRemainingClass,
127
127
  ]"
128
- >{{ displayFor }} seconds
128
+ >{{ displayFor }} seconds
129
129
  </span>
130
130
  </p>
131
131
  <p
132
132
  :class="classBinding(classObject, 'promptText', '')"
133
133
  v-text="promptText"
134
- ></p>
134
+ />
135
135
  <p :class="classBinding(classObject, 'buttonContainer', '')">
136
136
  <button
137
137
  :class="
@@ -139,11 +139,11 @@ onMounted(() => {
139
139
  "
140
140
  @click="acceptClick"
141
141
  v-text="buttonText"
142
- ></button>
142
+ />
143
143
  </p>
144
144
  </div>
145
145
  </div>
146
146
  </transition>
147
147
  </template>
148
148
 
149
- <style lang="scss" scoped></style>
149
+ <style lang="postcss" scoped></style>
@@ -48,7 +48,7 @@ const { classBinding } = useClassBinding();
48
48
  const { pagesConfigValue } = storeToRefs(useTemplateConfigsStore());
49
49
 
50
50
  // reactive data
51
- let sponsors = ref<Array<Sponsor>>([]);
51
+ const sponsors = ref<Array<Sponsor>>([]);
52
52
 
53
53
  // computed
54
54
  const trackEmbedHtml = computed((): string | null => {
@@ -56,7 +56,11 @@ const trackEmbedHtml = computed((): string | null => {
56
56
  });
57
57
 
58
58
  // methods
59
- const getFeaturedSponsors = () => {
59
+
60
+ // TODO - this is not used in this component.
61
+ // it looks like the same logic for displaying stream sponsors is already being handled in the ArchivePlayerAndContentContainer.
62
+ // confirm that that fulfills this logic's purpose, and remove this logic.
63
+ const getFeaturedSponsors = (): void => {
60
64
  const featuredSponsorLevel = get(
61
65
  pagesConfigValue,
62
66
  "webcast.featured_sponsor_level.value",
@@ -69,7 +73,7 @@ const getFeaturedSponsors = () => {
69
73
  return response.json();
70
74
  })
71
75
  .then((data) => {
72
- sponsors = filter(data, { role: "sponsor" });
76
+ sponsors.value = filter(data, { role: "sponsor" });
73
77
  });
74
78
  }
75
79
  };
@@ -83,29 +87,65 @@ onMounted(() => {
83
87
  <template>
84
88
  <div :class="classBinding(classObject, 'container', 'flex flex-col')">
85
89
  <CommonComponentsOverviewPanel
86
- v-if="selectedContent.type == 'overview'"
90
+ v-if="selectedContent.type == SelectedContent.OVERVIEW"
87
91
  :class="
88
92
  classBinding(
89
- classObject.components.overviewPanel,
93
+ classObject.components?.overviewPanel,
90
94
  'container',
91
95
  'overflow-y-scroll no-scrollbar h-full'
92
96
  )
93
97
  "
94
98
  :presentation="presentation"
95
- :class-object="classObject.components.overviewPanel"
96
- ></CommonComponentsOverviewPanel>
99
+ :class-object="classObject.components?.overviewPanel"
100
+ />
97
101
  <CommonComponentsAgendaPanel
98
- v-if="selectedContent.type == 'agenda'"
102
+ v-if="selectedContent.type == SelectedContent.AGENDA"
99
103
  :class="
100
104
  classBinding(
101
- classObject.components.agendaPanel,
105
+ classObject.components?.agendaPanel,
102
106
  'container',
103
107
  'overflow-y-scroll no-scrollbar h-full'
104
108
  )
105
109
  "
106
110
  :conference="webcastConference"
107
- :class-object="classObject.components.agendaPanel"
108
- ></CommonComponentsAgendaPanel>
111
+ :class-object="classObject.components?.agendaPanel"
112
+ />
113
+ <CommonComponentsPresentersPanel
114
+ v-if="selectedContent.type == SelectedContent.PRESENTERS"
115
+ :class="
116
+ classBinding(
117
+ classObject.components?.agendaPanel,
118
+ 'container',
119
+ 'overflow-y-scroll no-scrollbar h-full'
120
+ )
121
+ "
122
+ :presentation="presentation"
123
+ :class-object="classObject.components?.agendaPanel"
124
+ />
125
+ <CommonComponentsDocumentsPanel
126
+ v-if="selectedContent.type == SelectedContent.DOCUMENTS"
127
+ :class="
128
+ classBinding(
129
+ classObject.components?.agendaPanel,
130
+ 'container',
131
+ 'overflow-y-scroll no-scrollbar h-full'
132
+ )
133
+ "
134
+ :presentation="presentation"
135
+ :class-object="classObject.components?.agendaPanel"
136
+ />
137
+ <CommonComponentsSponsorsPanel
138
+ v-if="selectedContent.type == SelectedContent.SPONSORS"
139
+ :class="
140
+ classBinding(
141
+ classObject.components?.agendaPanel,
142
+ 'container',
143
+ 'overflow-y-scroll no-scrollbar h-full'
144
+ )
145
+ "
146
+ :presentation="presentation"
147
+ :class-object="classObject.components?.agendaPanel"
148
+ />
109
149
  <span
110
150
  v-if="selectedContent.type == 'html'"
111
151
  :class="
@@ -116,8 +156,8 @@ onMounted(() => {
116
156
  )
117
157
  "
118
158
  v-html="selectedContent.content"
119
- ></span>
120
- <template v-if="selectedContent.type == 'track_html'">
159
+ />
160
+ <template v-if="selectedContent.type == SelectedContent.TRACK_HTML">
121
161
  <span
122
162
  v-if="trackEmbedHtml != null"
123
163
  :class="
@@ -128,7 +168,7 @@ onMounted(() => {
128
168
  )
129
169
  "
130
170
  v-html="trackEmbedHtml"
131
- ></span>
171
+ />
132
172
  <div
133
173
  v-if="trackEmbedHtml === null"
134
174
  :class="
@@ -155,7 +195,7 @@ onMounted(() => {
155
195
  </div>
156
196
  </template>
157
197
 
158
- <style scoped>
198
+ <style scoped lang="postcss">
159
199
  .content {
160
200
  position: relative;
161
201
  }
@@ -168,8 +208,9 @@ onMounted(() => {
168
208
  z-index: 40;
169
209
  position: absolute;
170
210
  transition: 0.4s ease;
171
- }
172
- .content-expand-overlay:hover {
173
- opacity: 0.7;
211
+
212
+ &:hover {
213
+ opacity: 0.7;
214
+ }
174
215
  }
175
216
  </style>