@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
@@ -52,7 +52,7 @@ const hasAgendaTab = computed((): boolean => {
52
52
  });
53
53
 
54
54
  const selectedTabClass = computed((): string => {
55
- return props.classObject.selectedTab;
55
+ return props.classObject.selectedTab as string;
56
56
  });
57
57
 
58
58
  // methods
@@ -61,7 +61,7 @@ const tabToggle = () => {
61
61
  };
62
62
 
63
63
  const showItem = (_index: number) => {
64
- let clickedItem = items.value[_index];
64
+ const clickedItem = items.value[_index];
65
65
 
66
66
  if (clickedItem.type === SelectedContent.URL) {
67
67
  window.open(clickedItem.content);
@@ -75,9 +75,6 @@ onMounted(() => {
75
75
  selectedContent.value = items.value[0];
76
76
  }
77
77
  });
78
-
79
- // ...mapState("playerConfig"),
80
- // ...mapState(["agendaAlias"])
81
78
  </script>
82
79
 
83
80
  <template>
@@ -93,7 +90,7 @@ onMounted(() => {
93
90
  classBinding(
94
91
  classObject,
95
92
  'tabList',
96
- 'list-reset flex flex-row flex-wrap justify-start'
93
+ 'flex flex-row flex-wrap justify-start'
97
94
  )
98
95
  "
99
96
  >
@@ -133,8 +130,9 @@ onMounted(() => {
133
130
  'primary-link inline-block py-2 px-1 cursor-pointer'
134
131
  )
135
132
  "
136
- >{{ agendaAlias }}</nuxt-link
137
133
  >
134
+ {{ agendaAlias }}
135
+ </nuxt-link>
138
136
  </li>
139
137
  </ul>
140
138
  </div>
@@ -148,7 +146,10 @@ onMounted(() => {
148
146
  <div
149
147
  :class="classBinding(classObject, 'mobileButtonContainer', 'p-1 block')"
150
148
  >
151
- <button class="flex items-center px-3 py-2 mx-auto" @click="tabToggle">
149
+ <button
150
+ class="flex items-center px-3 py-2 mx-auto"
151
+ @click="tabToggle"
152
+ >
152
153
  <svg
153
154
  class="fill-current h-3 w-3"
154
155
  viewBox="0 0 20 20"
@@ -170,7 +171,7 @@ onMounted(() => {
170
171
  classBinding(
171
172
  classObject,
172
173
  'mobileTabList',
173
- 'flex-col self-center list-reset mx-auto'
174
+ 'flex-col self-center mx-auto'
174
175
  )
175
176
  "
176
177
  >
@@ -219,8 +220,9 @@ onMounted(() => {
219
220
  'primary-link inline-block py-2 px-2 cursor-pointer'
220
221
  )
221
222
  "
222
- >{{ agendaAlias }}</nuxt-link
223
223
  >
224
+ {{ agendaAlias }}
225
+ </nuxt-link>
224
226
  </li>
225
227
  </ul>
226
228
  </div>
@@ -228,18 +230,17 @@ onMounted(() => {
228
230
  </div>
229
231
  </template>
230
232
 
231
- <style scoped>
233
+ <style lang="postcss" scoped>
232
234
  .tab-items {
233
- @apply mr-1 flex-1;
234
- }
235
- @screen sm {
236
- .tab-items {
237
- @apply flex-initial;
238
- }
235
+ @apply mr-1 flex-1 sm:flex-initial;
239
236
  }
240
237
 
241
238
  .active {
242
- background: linear-gradient(0deg, rgb(80, 80, 80) 0%, rgb(180, 180, 180) 100%);
239
+ background: linear-gradient(
240
+ 0deg,
241
+ rgba(80, 80, 80, 1) 0%,
242
+ rgba(180, 180, 180, 1) 100%
243
+ );
243
244
  color: white;
244
245
  font-weight: bold;
245
246
  }
@@ -247,20 +248,31 @@ onMounted(() => {
247
248
  .tab-bar {
248
249
  @apply flex flex-wrap;
249
250
  background: rgb(226, 226, 226);
250
- background: linear-gradient(0deg, rgb(226, 226, 226) 0%, rgb(244, 244, 244) 100%);
251
- }
252
- .tab-bar .close {
253
- @apply block flex flex-1 justify-end;
254
- }
255
- .tab-bar .close:hover {
256
- filter: opacity(0.7);
251
+ background: linear-gradient(
252
+ 0deg,
253
+ rgba(226, 226, 226, 1) 0%,
254
+ rgba(244, 244, 244, 1) 100%
255
+ );
256
+
257
+ .close {
258
+ @apply block flex flex-1 justify-end;
259
+
260
+ &:hover {
261
+ filter: opacity(0.7);
262
+ }
263
+ }
257
264
  }
258
265
 
259
266
  .tab-bar .item {
260
267
  display: block;
261
268
  float: left;
262
- }
263
- .tab-bar .item:hover {
264
- background: linear-gradient(0deg, rgb(180, 180, 180) 0%, rgb(220, 220, 220) 100%);
269
+
270
+ &:hover {
271
+ background: linear-gradient(
272
+ 0deg,
273
+ rgba(180, 180, 180, 1) 0%,
274
+ rgba(220, 220, 220, 1) 100%
275
+ );
276
+ }
265
277
  }
266
278
  </style>
@@ -1,9 +1,9 @@
1
1
  <script lang="ts" setup>
2
2
  import { toRefs, computed } from "vue";
3
- import { Presentation } from "../../../models/conference";
3
+ import { useClassBinding } from "../../../composables/useClassBinding";
4
+ import type { Presentation } from "../../../models/conference";
4
5
  import type { Document } from "../../../models/document";
5
6
  import type { DocumentsPanelClassObj } from "../../../@types/components";
6
- import { useClassBinding } from "../../../composables/useClassBinding";
7
7
 
8
8
  type Props = {
9
9
  presentation: Presentation;
@@ -44,7 +44,7 @@ const documentArray = computed((): Array<Document> | null => {
44
44
  )
45
45
  "
46
46
  >
47
- <ul :class="classBinding(classObject, 'documentList', 'list-reset')">
47
+ <ul :class="classBinding(classObject, 'documentList', '')">
48
48
  <li
49
49
  v-for="(document, index) in documentArray"
50
50
  :key="index"
@@ -52,10 +52,10 @@ const documentArray = computed((): Array<Document> | null => {
52
52
  index == documentArray.length - 1
53
53
  ? classBinding(classObject, 'lastElement', 'py-2')
54
54
  : classBinding(
55
- classObject,
56
- 'listElement',
57
- 'py-2 border-b-2 contrast-border'
58
- ),
55
+ classObject,
56
+ 'listElement',
57
+ 'py-2 border-b-2 contrast-border'
58
+ ),
59
59
  ]"
60
60
  >
61
61
  <!-- fix file image -->
@@ -66,7 +66,7 @@ const documentArray = computed((): Array<Document> | null => {
66
66
  classBinding(
67
67
  classObject,
68
68
  'elementLink',
69
- 'no-underline font-semibold text-sm md:text-base'
69
+ 'font-semibold text-sm md:text-base'
70
70
  )
71
71
  "
72
72
  target="_blank"
@@ -108,19 +108,21 @@ const documentArray = computed((): Array<Document> | null => {
108
108
  </div>
109
109
  </template>
110
110
 
111
- <style scoped>
111
+ <style lang="postcss" scoped>
112
112
  .document-grid {
113
113
  display: grid;
114
114
  grid-template-columns: 1fr;
115
115
  gap: 10px;
116
- }
117
- .document-grid .grid-item {
118
- display: inline-block;
119
- align-items: center;
120
- align-self: center;
121
- }
122
- .document-grid .grid-item a:hover {
123
- text-decoration: underline;
116
+
117
+ .grid-item {
118
+ display: inline-block;
119
+ align-items: center;
120
+ align-self: center;
121
+
122
+ a:hover {
123
+ text-decoration: underline;
124
+ }
125
+ }
124
126
  }
125
127
 
126
128
  .icon {
@@ -37,10 +37,6 @@ const emit = defineEmits<{
37
37
  (event: string, value: Presentation): void;
38
38
  }>();
39
39
 
40
- console.log(
41
- config.public.awsDefaultRegion + ", " + config.public.resourcePrefix
42
- );
43
-
44
40
  const { currentStreamData, currentPresentation } = useStream(
45
41
  config.public.awsDefaultRegion,
46
42
  config.public.resourcePrefix,
@@ -55,12 +51,12 @@ const { currentStreamData, currentPresentation } = useStream(
55
51
  ref="mediaPlayer"
56
52
  :stream="currentStreamData"
57
53
  :presentation="currentPresentation"
58
- :class-object="classObject.components.webcastPlayer"
59
- ></CommonWebcastVideoPlayer>
54
+ :class-object="classObject?.components?.webcastPlayer"
55
+ />
60
56
  </div>
61
57
  </template>
62
58
 
63
- <style scoped>
59
+ <style scoped lang="postcss">
64
60
  .media-container {
65
61
  display: grid;
66
62
  grid-template-columns: var(--media-template-columns-default);
@@ -74,9 +70,9 @@ const { currentStreamData, currentPresentation } = useStream(
74
70
  display: grid;
75
71
  }
76
72
 
77
- @screen lg {
78
- img.normal {
79
- max-height: 65vh;
73
+ img.normal {
74
+ @screen lg {
75
+ max-height: 65vh; /* max height before distorting container */
80
76
  }
81
77
  }
82
78
 
@@ -97,12 +93,14 @@ const { currentStreamData, currentPresentation } = useStream(
97
93
  .media-container {
98
94
  grid-template-columns: var(--media-template-columns-large);
99
95
  }
96
+
100
97
  .expand-overlay {
101
98
  @apply p-2;
102
99
  display: block;
103
- }
104
- .expand-overlay:hover {
105
- opacity: 0.7;
100
+
101
+ &:hover {
102
+ opacity: 0.7;
103
+ }
106
104
  }
107
105
  }
108
106
  </style>
@@ -42,8 +42,11 @@ const sessionOverview = computed((): string | null => {
42
42
  v-if="sessionOverview"
43
43
  :class="classBinding(classObject, 'htmlElement', '')"
44
44
  v-html="sessionOverview"
45
- ></span>
46
- <p v-else :class="classBinding(classObject, 'noOverviewElement', '')">
45
+ />
46
+ <p
47
+ v-else
48
+ :class="classBinding(classObject, 'noOverviewElement', '')"
49
+ >
47
50
  There is no overview for this presentation.
48
51
  </p>
49
52
  </div>
@@ -1,65 +1,84 @@
1
- <template>
2
- <span v-if="presenterLevelArray['presenters_all'].presenters.length > 0">
3
- <presenters-detail
4
- :presenters-by-level="presenterLevelArray"
5
- :pres-format="layoutFormat"
6
- :item-width="itemWidth"
7
- :show-levels="false"
8
- :is-compact="isCompact"
9
- ></presenters-detail>
10
- </span>
11
- <div v-else class="text-grey-800 px-2 py-4">
12
- <p class="text-base leading-normal font-light">There are no presenters associated with this presentation.</p>
13
- </div>
14
- </template>
1
+ <script lang="ts" setup>
2
+ import { toRefs, computed, provide } from "vue";
3
+ import { sortBy } from "lodash-es";
4
+ import { Position } from "../../../enums/general";
5
+ import type {
6
+ Presentation,
7
+ Presenter
8
+ } from "../../../models/conference";
15
9
 
16
- <script>
17
- import PresentersDetail from '@/components/presenters/PresentersDetail';
10
+ type Props = {
11
+ presentation: Presentation;
12
+ itemWidth?: string;
13
+ layoutFormat?: string;
14
+ isCompact?: boolean;
15
+ };
18
16
 
19
- export default {
20
- props: {
21
- itemWidth: {
22
- type: String,
23
- default: '120'
24
- },
25
- layoutFormat: {
26
- type: String,
27
- default: 'PresenterItemGrid'
28
- },
29
- isCompact: {
30
- default: true,
31
- type: Boolean
32
- }
33
- },
34
- components: {
35
- PresentersDetail
36
- },
37
- provide() {
38
- return {
39
- itemWidth: this.itemWidth,
40
- imageStyle: this.imageStyle,
41
- };
42
- },
43
- computed: {
44
- presenterLevelArray() {
45
- let returnArray = [];
46
- returnArray['presenters_all'] = { 'presenters': _.sortBy(this.$parent.currentPresentation.presenters, function (presenter) {
47
- return presenter.pivot.order;
48
- }) };
49
- return returnArray;
17
+ const props = withDefaults(defineProps<Props>(), {
18
+ itemWidth: "120",
19
+ layoutFormat: "grid",
20
+ isCompact: true,
21
+ });
22
+
23
+ const { presentation, isCompact } = toRefs(props);
24
+
25
+ // provided values
26
+ provide("itemWidth", "120");
27
+
28
+ // comnputed
29
+ const presenterArray = computed((): Presenter[] => {
30
+ let returnArray: Presenter[] = [];
31
+ if(presentation.value?.presenters && presentation.value.presenters.length) {
32
+ returnArray = sortBy(
33
+ presentation.value.presenters,
34
+ // TODO - ensure that the presentation includes presenter order.
35
+ // previously, this was retrieved from $parent.currentPresentation
36
+ // function (presenter: PresenterWithPivot) {
37
+ // return presenter.pivot.order;
38
+ // }
39
+ (presenter: Presenter) => {
40
+ return presenter.last_name;
41
+ }
42
+ );
50
43
  }
51
- }
52
- };
44
+ return returnArray;
45
+ });
53
46
  </script>
54
47
 
55
- <style scoped>
48
+ <template>
49
+ <div>
50
+ <template v-if="presenterArray && presenterArray.length > 0">
51
+ <CommonPresenterListing
52
+ v-for="(presenter, index) in presenterArray"
53
+ :key="index"
54
+ :presenter="presenter"
55
+ :is-small-grouped-track="isCompact"
56
+ :show-bio="false"
57
+ :enable-bio="false"
58
+ :bio-link-on-name="false"
59
+ :image-position="Position.LEFT"
60
+ />
61
+ </template>
62
+ <div
63
+ v-else
64
+ class="text-grey-800 px-2 py-4"
65
+ >
66
+ <p class="text-base leading-normal font-light">
67
+ There are no presenters associated with this presentation.
68
+ </p>
69
+ </div>
70
+ </div>
71
+ </template>
72
+
73
+ <style lang="postcss" scoped>
56
74
  .presenter-grid {
57
75
  display: grid;
58
76
  grid-template-columns: 100px 1fr;
59
77
  gap: 10px;
78
+
79
+ .grid-item {
80
+ align-items: center;
81
+ align-self: center;
82
+ }
60
83
  }
61
- .presenter-grid .grid-item {
62
- align-items: center;
63
- align-self: center;
64
- }
65
- </style>
84
+ </style>
@@ -1,6 +1,5 @@
1
1
  <script lang="ts" setup>
2
- import { toRefs, watch, onMounted } from "vue";
3
- import { onBeforeRouteLeave } from "vue-router";
2
+ import { toRefs, watch, onMounted, onUnmounted } from "vue";
4
3
  import { useApi } from "../../../composables/useApi";
5
4
  import { useCookie } from "#app";
6
5
  // data
@@ -94,8 +93,10 @@ const initSessionLoop = () => {
94
93
  };
95
94
 
96
95
  // watchers
97
- watch(loggableId, (_newId: number, _oldId: number) => {
96
+ watch(loggableId, (_newId, _oldId) => {
97
+ if (_newId != _oldId) {
98
98
  updateSession();
99
+ }
99
100
  });
100
101
 
101
102
  // mounted
@@ -104,7 +105,7 @@ onMounted(() => {
104
105
  initSessionLoop();
105
106
  });
106
107
 
107
- onBeforeRouteLeave(() => {
108
+ onUnmounted(() => {
108
109
  clearInterval(sessionLoopId);
109
110
  });
110
111
  </script>
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" setup>
2
- import { toRefs } from "vue";
2
+ import { ref, toRefs } from "vue";
3
3
  import type { Presentation, Sponsor } from "../../../models/conference";
4
4
  import type { SponsorsPanelClassObj } from "../../../@types/components";
5
5
  import { useClassBinding } from "../../../composables/useClassBinding";
@@ -40,7 +40,7 @@ const sponsorsArray = ref<Array<Sponsor> | undefined>(
40
40
  // TODO: presentation.tracks too likely to be undefined to reliably set on mount
41
41
  const trackSponsorsArray = ref<Array<Sponsor> | undefined>([]);
42
42
 
43
- watch(presentation, (_newPresentation: Presentation) => {
43
+ watch(presentation.value, (_newPresentation: Presentation) => {
44
44
  if (_newPresentation.sponsors) {
45
45
  sponsorsArray.value = _newPresentation.sponsors;
46
46
  }
@@ -61,7 +61,7 @@ watch(presentation, (_newPresentation: Presentation) => {
61
61
  'text-grey-800 px-4 py-4 mb-4'
62
62
  ),
63
63
  trackSponsorsArray != undefined && trackSponsorsArray.length > 0
64
- ? 'border-b border-light-grey'
64
+ ? 'border-b border-gray-400'
65
65
  : '',
66
66
  ]"
67
67
  >
@@ -107,7 +107,7 @@ watch(presentation, (_newPresentation: Presentation) => {
107
107
  :class="
108
108
  classBinding(classObject, 'sponsorImage', 'block mx-auto')
109
109
  "
110
- />
110
+ >
111
111
  </a>
112
112
  </div>
113
113
  </div>
@@ -162,7 +162,7 @@ watch(presentation, (_newPresentation: Presentation) => {
162
162
  <img
163
163
  :src="sponsor.photo"
164
164
  :class="classBinding(classObject, 'trackImage', 'block mx-auto')"
165
- />
165
+ >
166
166
  </a>
167
167
  </div>
168
168
  </div>
@@ -170,7 +170,7 @@ watch(presentation, (_newPresentation: Presentation) => {
170
170
  <div
171
171
  v-if="
172
172
  (sponsorsArray == undefined && trackSponsorsArray == undefined) ||
173
- (!sponsorsArray?.length && !trackSponsorsArray?.length)
173
+ (!sponsorsArray?.length && !trackSponsorsArray?.length)
174
174
  "
175
175
  :class="
176
176
  classBinding(
@@ -195,15 +195,16 @@ watch(presentation, (_newPresentation: Presentation) => {
195
195
  </div>
196
196
  </template>
197
197
 
198
- <style scoped>
198
+ <style lang="postcss" scoped>
199
199
  .sponsor-grid {
200
200
  display: grid;
201
201
  grid-template-columns: 1fr 1fr 1fr;
202
202
  gap: 10px;
203
- }
204
- .sponsor-grid .grid-item {
205
- align-items: center;
206
- align-self: center;
207
- justify-self: center;
203
+
204
+ .grid-item {
205
+ align-items: center;
206
+ align-self: center;
207
+ justify-self: center;
208
+ }
208
209
  }
209
210
  </style>
@@ -8,6 +8,7 @@ import { Position } from "../../enums/general";
8
8
 
9
9
  type Props = {
10
10
  presenter: Presenter;
11
+ showImg?: boolean;
11
12
  enableBio?: boolean;
12
13
  showBio?: boolean;
13
14
  isSmallGroupedTrack?: boolean;
@@ -20,6 +21,7 @@ type Props = {
20
21
 
21
22
  const props = withDefaults(defineProps<Props>(), {
22
23
  enableBio: true,
24
+ showImg: true,
23
25
  showBio: false,
24
26
  isSmallGroupedTrack: false,
25
27
  bioLinkOnName: true,
@@ -45,7 +47,7 @@ const props = withDefaults(defineProps<Props>(), {
45
47
 
46
48
  const emit = defineEmits(["clicked"]);
47
49
 
48
- const { presenter, enableBio, isSmallGroupedTrack, classObject } =
50
+ const { presenter, showImg, enableBio, isSmallGroupedTrack, classObject } =
49
51
  toRefs(props);
50
52
  const { fullName, titleCompany } = usePresenter(presenter);
51
53
  const { classBinding } = useClassBinding();
@@ -73,7 +75,7 @@ const handleClick = () => {
73
75
  ]"
74
76
  >
75
77
  <div
76
- v-if="presenter.photo && imagePosition !== Position.RIGHT"
78
+ v-if="showImg && presenter.photo && imagePosition !== Position.RIGHT"
77
79
  :class="
78
80
  classBinding(classObject, 'presenterImageContainer', 'shrink p-2')
79
81
  "
@@ -81,7 +83,7 @@ const handleClick = () => {
81
83
  <img
82
84
  :src="presenter.photo"
83
85
  :class="classBinding(classObject, 'presenterImage', '')"
84
- />
86
+ >
85
87
  </div>
86
88
  <div
87
89
  :class="
@@ -98,21 +100,26 @@ const handleClick = () => {
98
100
  class="cursor-pointer"
99
101
  :class="classBinding(classObject, 'presenterNameLink', '')"
100
102
  @click="handleClick()"
101
- ><span :class="classBinding(classObject, 'presenterName', '')">
102
- {{ fullName }}</span
103
- ></a
104
103
  >
105
- <span v-else :class="classBinding(classObject, 'presenterName', '')">
104
+ <span :class="classBinding(classObject, 'presenterName', '')">
105
+ {{ fullName }}
106
+ </span>
107
+ </a>
108
+ <span
109
+ v-else
110
+ :class="classBinding(classObject, 'presenterName', '')"
111
+ >
106
112
  {{ fullName }}
107
113
  </span>
108
114
  <span
109
115
  v-if="presenter.role == 'moderator'"
110
116
  :class="[
111
117
  isSmallGroupedTrack ? 'new-line' : 'no-new-line',
112
- classBinding(classObject, 'presenterRole', 'text-grey-dark'),
118
+ classBinding(classObject, 'presenterRole', 'text-gray-600'),
113
119
  ]"
114
- >Moderator</span
115
120
  >
121
+ Moderator
122
+ </span>
116
123
  <span
117
124
  v-if="titleCompany"
118
125
  :class="[
@@ -123,8 +130,9 @@ const handleClick = () => {
123
130
  'font-light paragraph-color-1'
124
131
  ),
125
132
  ]"
126
- >{{ titleCompany }}</span
127
133
  >
134
+ {{ titleCompany }}
135
+ </span>
128
136
  </p>
129
137
  <p
130
138
  v-if="showBio && presenter.biography"
@@ -136,49 +144,49 @@ const handleClick = () => {
136
144
  )
137
145
  "
138
146
  v-html="presenter.biography"
139
- ></p>
140
- <div v-if="enableBio && !bioLinkOnName" class="shrink">
147
+ />
148
+ <div
149
+ v-if="enableBio && !bioLinkOnName"
150
+ class="shrink"
151
+ >
141
152
  <a
142
153
  class="cursor-pointer"
143
154
  :class="classBinding(classObject, 'presenterBioLink', '')"
144
155
  @click="handleClick()"
145
- >{{ bioLinkText }}
156
+ >
157
+ {{ bioLinkText }}
146
158
  </a>
147
159
  </div>
148
160
  </div>
149
161
  <div
150
- v-if="presenter.photo && imagePosition === Position.RIGHT"
151
- :class="
152
- classBinding(classObject, 'presenterImageContainer', 'shrink p-2')
153
- "
162
+ v-if="showImg && presenter.photo && imagePosition === Position.RIGHT"
163
+ :class="classBinding(classObject, 'presenterImageContainer', 'shrink p-2')"
154
164
  >
155
165
  <img
156
166
  :src="presenter.photo"
157
167
  :class="classBinding(classObject, 'presenterImage', '')"
158
- />
168
+ >
159
169
  </div>
160
170
  </div>
161
171
  </div>
162
172
  </template>
163
173
 
164
- <style scoped>
174
+ <style scoped lang="postcss">
165
175
  .new-line:before {
166
- content: "\a";
176
+ content: "\a ";
167
177
  white-space: pre;
168
178
  }
169
-
170
179
  .no-new-line:before {
171
180
  content: " - ";
172
181
  white-space: normal;
173
182
  }
174
-
175
- @media (max-width: 991px) {
183
+ @media (max-width: 1023px) {
176
184
  .new-line-responsive:before {
177
- content: "\a";
185
+ content: "\a ";
178
186
  white-space: pre;
179
187
  }
180
188
  }
181
- @media (min-width: 992px) {
189
+ @media (min-width: 1024px) {
182
190
  .new-line-responsive:before {
183
191
  content: " - ";
184
192
  white-space: normal;