@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,5 +1,5 @@
1
1
  <script lang="ts" setup>
2
- import { ref, toRefs } from "vue";
2
+ import { inject, ref, toRefs } from "vue";
3
3
  import { get } from "lodash-es";
4
4
  import type { Conference } from "../../models/conference";
5
5
  import { useAgenda } from "../../composables/useAgenda";
@@ -7,13 +7,13 @@ import { usePresentation } from "../../composables/usePresentation";
7
7
  import { usePresenters } from "../../composables/usePresenters";
8
8
  import { usePresenter } from "../../composables/usePresenter";
9
9
  import { useClassBinding } from "../../composables/useClassBinding";
10
+ import type { Ref } from "#imports";
10
11
  import type { Presenter } from "../../models/conference";
11
12
  import type {
12
13
  AgendaListClassObj,
13
14
  AgendaListCompObj,
14
15
  AgendaListAccordionClassObj,
15
16
  } from "../../@types/components";
16
- import AgendaAccordion from "./components/AgendaListAccordion.vue";
17
17
  import Calendar from "./components/Calendar.vue";
18
18
 
19
19
  type Props = {
@@ -59,14 +59,16 @@ const { getPresentersLabel, getSortedPresenters } = usePresenters(conference);
59
59
 
60
60
  const { classBinding } = useClassBinding();
61
61
 
62
+ const isExpanded: Ref<boolean> = inject('isExpanded', ref<boolean>(false));
63
+
62
64
  // data
63
65
  const expandedPres = ref<number>(0);
64
66
 
65
67
  // methods
66
68
  const presentersToComposables = (presenters: Presenter[]) => {
67
- const data = [];
69
+ const data: Presenter[] = [] as Presenter[];
68
70
 
69
- getSortedPresenters(presenters).forEach((presenter) => {
71
+ getSortedPresenters(presenters).forEach((presenter: Presenter) => {
70
72
  data.push({
71
73
  presenter,
72
74
  ...usePresenter(presenter),
@@ -101,17 +103,20 @@ const isPres = (_presId: number): boolean => {
101
103
  <template v-for="track in getCombinedTrackList(day)">
102
104
  <div
103
105
  v-for="presentation in track.presentations"
104
- :key="presentation.id"
105
106
  :id="'agenda-presentation-'+presentation.id"
107
+ :key="presentation.id"
106
108
  :class="classBinding(classObject, 'accordionContainer', '')"
107
109
  class="agenda-presentation"
108
110
  >
109
- <AgendaAccordion
111
+ <CommonComponentsAgendaListAccordion
110
112
  :item-id="presentation.id"
111
- :class-object="classObject.components.agendaListAccordion"
113
+ :class-object="classObject.components?.agendaListAccordion"
112
114
  @expanded="setPres"
113
115
  >
114
- <template #header="isExpanded">
116
+ <template
117
+ v-if="isExpanded"
118
+ #header
119
+ >
115
120
  <div
116
121
  :class="
117
122
  classBinding(
@@ -226,15 +231,14 @@ const isPres = (_presId: number): boolean => {
226
231
  v-for="presenter in presentersToComposables(
227
232
  presentation.presenters
228
233
  )"
229
- :key="presenter.presenter.id"
230
234
  :id="'agenda-presenter-'+presenter.presenter.id"
235
+ :key="presenter.presenter.id"
231
236
  :class="
232
237
  classBinding(
233
238
  classObject,
234
239
  'presenterElement',
235
240
  ''
236
- )
237
- + ((presenter.role == 'moderator') ? ' agenda-moderator' : '')
241
+ ) + ((presenter.role == 'moderator') ? ' agenda-moderator' : '')
238
242
  "
239
243
  class="agenda-presenter"
240
244
  >
@@ -252,7 +256,7 @@ const isPres = (_presId: number): boolean => {
252
256
  <span
253
257
  v-if="presenter.role == 'moderator'"
254
258
  class="agenda-presenter-moderator-tag text-xs font-bold text-neutral-400"
255
- >
259
+ >
256
260
  - MODERATOR
257
261
  </span>
258
262
  </p>
@@ -274,14 +278,14 @@ const isPres = (_presId: number): boolean => {
274
278
  </div>
275
279
  </div>
276
280
  </template>
277
- </AgendaAccordion>
281
+ </CommonComponentsAgendaListAccordion>
278
282
  </div>
279
283
  </template>
280
284
  </template>
281
285
  </div>
282
286
  </template>
283
287
 
284
- <style>
288
+ <style lang="postcss">
285
289
  .accord {
286
290
  transition: height var(--vc-auto-duration) ease-out;
287
291
  }
@@ -3,13 +3,9 @@ import { toRefs, computed } from "vue";
3
3
  import { get } from "lodash-es";
4
4
  import { DateTime } from "luxon";
5
5
  import { useAgenda } from "../../composables/useAgenda";
6
- import type { Conference, Sponsor as SponsorType } from "../../models/conference";
7
6
  import { usePresentation } from "../../composables/usePresentation";
8
7
  import { usePresenters } from "../../composables/usePresenters";
9
- import CommonAccordion from "../layouts/Accordion.vue";
10
- import Sponsor from "./components/Sponsor.vue";
11
- import PresentationLink from "./components/PresentationLink.vue";
12
- import Calendar from "./components/Calendar.vue";
8
+ import type { Conference, Day, Presenter, Sponsor as SponsorType } from "../../models/conference";
13
9
 
14
10
  type Props = {
15
11
  conference: Conference;
@@ -56,7 +52,10 @@ const presentersContainer = computed(() => {
56
52
  </script>
57
53
 
58
54
  <template>
59
- <div :id="'agenda-tabbed-'+conference.id" class="agenda-tabbed container mx-auto my-8 shadow-lg">
55
+ <div
56
+ :id="'agenda-tabbed-'+conference.id"
57
+ class="agenda-tabbed container mx-auto my-8 shadow-lg"
58
+ >
60
59
  <!-- TABS -->
61
60
  <div class="flex flex-col w-full">
62
61
  <div class="flex flex-row w-full">
@@ -67,7 +66,7 @@ const presentersContainer = computed(() => {
67
66
  <button
68
67
  v-for="(day, index) in days"
69
68
  :key="index"
70
- class="flex-1 md:flex-initial py-5 px-4 md:px-6 text-base text-center cursor-pointer no-underline heading-color-2 focus:outline-none agenda-tab"
69
+ class="flex-1 md:flex-initial py-5 px-4 md:px-6 text-base text-center cursor-pointer heading-color-2 focus:outline-none agenda-tab"
71
70
  :class="{
72
71
  'agenda-tab-active-bg-color agenda-tab-color':
73
72
  day === selectedDay,
@@ -76,8 +75,8 @@ const presentersContainer = computed(() => {
76
75
  @click="setSelectedDay(day)"
77
76
  >
78
77
  {{ day.name }}
79
- <small v-if="showTabDates(day)">{{
80
- DateTime.fromSQL(day.date, { zone: conference.timezone }).toFormat("MMMM d, yyyy")
78
+ <small v-if="showTabDates(day)">{{
79
+ DateTime.fromSQL(day?.date as string, { zone: conference.timezone }).toFormat("MMMM d, yyyy")
81
80
  }}</small>
82
81
  </button>
83
82
  </div>
@@ -85,15 +84,14 @@ const presentersContainer = computed(() => {
85
84
  <div
86
85
  class="flex w-1/4 items-center agenda-tab-sponsor-bg-color flex-row-reverse pr-5"
87
86
  >
88
- <Sponsor
89
- v-if="shouldShowSponsors(selectedDay)"
90
- :sponsor="selectedDay.sponsors[0]"
87
+ <CommonComponentsSponsor
88
+ v-if="shouldShowSponsors(selectedDay as Day)"
89
+ :sponsor="selectedDay?.sponsors[0] as SponsorType"
91
90
  :show-label="false"
92
91
  size="small"
93
92
  :enabled-sponsors="enabledSponsors"
94
93
  class="agenda-day-sponsor"
95
- >
96
- </Sponsor>
94
+ />
97
95
  </div>
98
96
  </div>
99
97
  </div>
@@ -126,12 +124,13 @@ const presentersContainer = computed(() => {
126
124
  <!-- TRACK + SESSIONS CONTAINER -->
127
125
  <div
128
126
  v-for="(track, trackIndex) in getTracks(group_or_track)"
129
- :key="track.id"
130
- :id="(group_or_track.type == 'track_group') ?
131
- 'agenda-track-group-'+group_or_track.id :
132
- 'agenda-track-'+group_or_track.id
127
+ :id="
128
+ (group_or_track.type == 'track_group') ?
129
+ 'agenda-track-group-'+group_or_track.id :
130
+ 'agenda-track-'+group_or_track.id
133
131
  "
134
- :class="(group_or_track.type == 'track_group') ?
132
+ :key="track.id"
133
+ :class="(group_or_track.type == 'track_group') ?
135
134
  'agenda-track-group' :
136
135
  'agenda-track'
137
136
  "
@@ -148,7 +147,7 @@ const presentersContainer = computed(() => {
148
147
  :class="{
149
148
  'lg:w-3/4':
150
149
  !isSmallGroupedTrack(group_or_track) &&
151
- track.sponsors.length,
150
+ track?.sponsors?.length,
152
151
  }"
153
152
  >
154
153
  <h2
@@ -163,22 +162,21 @@ const presentersContainer = computed(() => {
163
162
  </div>
164
163
  <!-- TRACK SPONSOR -->
165
164
  <div
166
- v-if="track.sponsors.length"
165
+ v-if="track != undefined && track?.sponsors?.length"
167
166
  class="flex w-full pb-2 content-center items-center"
168
167
  :class="{
169
168
  'lg:pb-0 lg:w-1/4 lg:pr-5':
170
169
  !isSmallGroupedTrack(group_or_track),
171
170
  }"
172
171
  >
173
- <sponsor
172
+ <CommonComponentsSponsor
174
173
  v-if="shouldShowSponsors(track)"
175
- :sponsor="track.sponsors[0]"
174
+ :sponsor="track?.sponsors[0]"
176
175
  :inline="true"
177
176
  size="small"
178
177
  :enabled-sponsors="enabledSponsors"
179
178
  class="agenda-track-sponsor"
180
- >
181
- </sponsor>
179
+ />
182
180
  </div>
183
181
  </div>
184
182
  <!-- ALL TRACK SESSIONS -->
@@ -192,7 +190,7 @@ const presentersContainer = computed(() => {
192
190
  :key="presentation.id"
193
191
  >
194
192
  <div
195
- v-if="presentation.visible"
193
+ v-if="presentation != undefined && presentation.visible"
196
194
  :id="'agenda-presentation-'+presentation.id"
197
195
  class="agenda-presentation flex flex-col"
198
196
  :class="
@@ -230,12 +228,12 @@ const presentersContainer = computed(() => {
230
228
  getPresentationStartTime(presentation, "h:mm a")
231
229
  }}
232
230
 
233
- <span v-if="showPresentationEndTimes()"
234
- >- {{ getPresentationEndTime(presentation, "h:mm a") }}</span
235
- >
231
+ <span v-if="showPresentationEndTimes()">
232
+ - {{ getPresentationEndTime(presentation, "h:mm a") }}
233
+ </span>
236
234
  {{
237
235
  DateTime.fromSQL(
238
- presentation.date,
236
+ presentation?.date as string,
239
237
  { zone: conference.timezone }
240
238
  ).toLocal().offsetNameShort
241
239
  }}
@@ -243,7 +241,7 @@ const presentersContainer = computed(() => {
243
241
 
244
242
  <!-- NAME + PLAY BUTTON -->
245
243
  <div class="pb-1">
246
- <presentation-link
244
+ <CommonComponentsPresentationLink
247
245
  :conference="conference"
248
246
  :track="track"
249
247
  :presentation="presentation"
@@ -253,46 +251,60 @@ const presentersContainer = computed(() => {
253
251
  "
254
252
  :is-agenda="true"
255
253
  class="agenda-presentation-link"
256
- ></presentation-link>
254
+ />
257
255
  </div>
258
256
 
259
257
  <!-- ADD TO CALENDAR -->
260
- <calendar
258
+ <!-- <CommonComponentsCalendar
261
259
  :key="conference.id"
262
260
  class="agenda-add-to-calendar mb-3"
263
261
  :presentation="presentation"
264
262
  :conference="conference"
265
- />
263
+ /> -->
266
264
 
267
265
  <!-- PRESENTERS LIST (ACCORDION OR STANDARD/DIV) -->
268
266
  <component
269
267
  :is="presentersContainer"
270
268
  v-if="get(presentation, 'presenters.length') > 0"
271
269
  :title="
272
- getPresentersLabel(presentation.presenters.length)
270
+ presentation.presenters != undefined ?
271
+ getPresentersLabel(presentation.presenters.length) :
272
+ 'Presenters'
273
273
  "
274
274
  class="agenda-presenters"
275
275
  >
276
276
  <p
277
277
  v-for="presenter in getSortedPresenters(
278
- presentation.presenters
278
+ presentation?.presenters as Presenter[]
279
279
  )"
280
- :key="presenter.id"
281
280
  :id="'agenda-presenter-'+presenter.id"
281
+ :key="presenter.id"
282
282
  :class="(presenter.role == 'moderator') ? ' agenda-moderator' : ''"
283
283
  class="agenda-presenter font-bold my-1"
284
284
  >
285
285
  <CommonPresenterModal
286
- v-if="usePresenterModal"
286
+ v-if="usePresenterModal()"
287
287
  :use-icon="false"
288
+ :show-img="true"
288
289
  :presenter="presenter"
289
290
  :is-small-grouped-track="
290
291
  isSmallGroupedTrack(group_or_track)
291
292
  "
292
- ></CommonPresenterModal>
293
+ :class-object="{
294
+ components: {
295
+ presenterListing: {
296
+ presenterContainer:
297
+ 'flex flex-row flex-1 content-center items-start',
298
+ presenterImageContainer: 'shrink pr-2 my-1',
299
+ presenterImage: 'max-w-32',
300
+ },
301
+ },
302
+ }"
303
+ />
293
304
  <CommonPresenterListing
294
305
  v-else
295
306
  :presenter="presenter"
307
+ :show-img="true"
296
308
  :enable-bio="true"
297
309
  :show-bio="false"
298
310
  text-class="font-bold text-base"
@@ -318,7 +330,7 @@ const presentersContainer = computed(() => {
318
330
  </div>
319
331
  </template>
320
332
 
321
- <style scoped>
333
+ <style lang="postcss" scoped>
322
334
  .tracks-container {
323
335
  display: grid;
324
336
  grid-auto-columns: 1fr;
@@ -328,42 +340,36 @@ const presentersContainer = computed(() => {
328
340
  display: contents;
329
341
  }
330
342
 
331
- .tracks-container .track-container:nth-child(4n+1) .track-header {
343
+ .tracks-container .track-container:nth-child(4n + 1) .track-header {
332
344
  grid-row: 1;
333
345
  grid-column: 1;
334
346
  }
335
-
336
- .tracks-container .track-container:nth-child(4n+2) .track-header {
347
+ .tracks-container .track-container:nth-child(4n + 2) .track-header {
337
348
  grid-row: 1;
338
349
  grid-column: 2;
339
350
  }
340
-
341
- .tracks-container .track-container:nth-child(4n+3) .track-header {
351
+ .tracks-container .track-container:nth-child(4n + 3) .track-header {
342
352
  grid-row: 1;
343
353
  grid-column: 3;
344
354
  }
345
-
346
- .tracks-container .track-container:nth-child(4n+4) .track-header {
355
+ .tracks-container .track-container:nth-child(4n + 4) .track-header {
347
356
  grid-row: 1;
348
357
  grid-column: 4;
349
358
  }
350
359
 
351
- .tracks-container .track-container:nth-child(4n+1) .track-sessions {
360
+ .tracks-container .track-container:nth-child(4n + 1) .track-sessions {
352
361
  grid-row: 2;
353
362
  grid-column: 1;
354
363
  }
355
-
356
- .tracks-container .track-container:nth-child(4n+2) .track-sessions {
364
+ .tracks-container .track-container:nth-child(4n + 2) .track-sessions {
357
365
  grid-row: 2;
358
366
  grid-column: 2;
359
367
  }
360
-
361
- .tracks-container .track-container:nth-child(4n+3) .track-sessions {
368
+ .tracks-container .track-container:nth-child(4n + 3) .track-sessions {
362
369
  grid-row: 2;
363
370
  grid-column: 3;
364
371
  }
365
-
366
- .tracks-container .track-container:nth-child(4n+4) .track-sessions {
372
+ .tracks-container .track-container:nth-child(4n + 4) .track-sessions {
367
373
  grid-row: 2;
368
374
  grid-column: 4;
369
375
  }
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" setup>
2
- import { ref, toRefs } from "vue";
2
+ import { provide, ref, toRefs } from "vue";
3
3
  import { useClassBinding } from "../../../composables/useClassBinding";
4
4
  import type { AgendaListAccordionClassObj } from "../../../@types/components";
5
5
 
@@ -40,6 +40,8 @@ const toggle = () => {
40
40
  emit("expanded", 0);
41
41
  }
42
42
  };
43
+
44
+ provide('isExpanded', expanded);
43
45
  </script>
44
46
 
45
47
  <template>
@@ -51,11 +53,14 @@ const toggle = () => {
51
53
  :class="classBinding(classObject, 'headerButton', 'outline-none')"
52
54
  @click="toggle"
53
55
  >
54
- <slot name="header"></slot>
56
+ <slot name="header" />
55
57
  </button>
56
58
  </div>
57
59
 
58
- <transition name="slide" mode="out-in">
60
+ <transition
61
+ name="slide"
62
+ mode="out-in"
63
+ >
59
64
  <div
60
65
  v-show="expanded"
61
66
  :class="classBinding(classObject, 'dropdownContainer', '')"
@@ -1,9 +1,9 @@
1
1
  <script lang="ts" setup>
2
- import { ref, toRefs, computed } from "vue";
2
+ import { toRefs, computed } from "vue";
3
3
  import { storeToRefs } from "pinia";
4
4
  import { useTemplateConfigsStore } from "../../../store";
5
5
  import { usePresentation } from "../../../composables/usePresentation";
6
- import "add-to-calendar-button";
6
+ import "../../../../../node_modules/add-to-calendar-button";
7
7
  import type { Conference } from "../../../models/conference";
8
8
  import type { Presentation } from "../../../models/conference";
9
9
  type Props = {
@@ -27,20 +27,25 @@ const showAddToMicrosoftCalendar = computed((): boolean => {
27
27
  return pagesConfigValue.value("agenda.add_to_microsoft_calendar", false);
28
28
  });
29
29
  const calendarOptions = computed((): string => {
30
- let opts = [];
31
- if (showAddToGoogleCalendar) {
30
+ const opts = [];
31
+ if (showAddToGoogleCalendar.value) {
32
32
  opts.push("Google");
33
33
  }
34
- if (showAddToMicrosoftCalendar) {
34
+ if (showAddToMicrosoftCalendar.value) {
35
35
  opts.push("iCal");
36
36
  }
37
- let optsQuoted = opts.map((opt) => `'${opt}'`);
37
+ const optsQuoted = opts.map((opt) => `'${opt}'`);
38
38
  return optsQuoted.join(",");
39
39
  });
40
40
  const cssPath = computed((): string => {
41
41
  // atcb.css required in template/playground public folder
42
42
  return window.location.origin + "/atcb.css";
43
43
  });
44
+
45
+ // TODO - this *almost* works - the div classed "atcb-initialized" does not get its inline styles updated in order to display the button.
46
+ // Classes are not loading, as the stylesheet in playground/public/atcb.css does not have the right MIME type when loading.
47
+ // When the previously-mentioned div is visible, the button works (it's just unstyled)
48
+
44
49
  </script>
45
50
 
46
51
  <template>
@@ -48,20 +53,20 @@ const cssPath = computed((): string => {
48
53
  <add-to-calendar-button
49
54
  :name="presentation.name"
50
55
  :description="presentation.description"
51
- :startDate="getPresentationStartTime(presentation,'yyyy-MM-dd',false)"
52
- :startTime="getPresentationStartTime(presentation,'HH:mm',false)"
53
- :endTime="getPresentationEndTime(presentation,'HH:mm',false)"
54
- :timeZone="conference.timezone"
56
+ :start-date="getPresentationStartTime(presentation,'yyyy-MM-dd',false)"
57
+ :start-time="getPresentationStartTime(presentation,'HH:mm',false)"
58
+ :end-time="getPresentationEndTime(presentation,'HH:mm',false)"
59
+ :time-zone="conference.timezone"
55
60
  :location="conference.location"
56
- listStyle="dropdown"
61
+ list-style="dropdown"
57
62
  trigger="click"
58
- lightMode="bodyScheme"
59
- buttonStyle="custom"
60
- :customCss="cssPath"
61
- hideIconButton
62
- hideBackground
63
- hideCheckmark
63
+ light-mode="bodyScheme"
64
+ button-style="custom"
65
+ :custom-css="cssPath"
66
+ hide-icon-button
67
+ hide-background
68
+ hide-checkmark
64
69
  :options="calendarOptions"
65
- ></add-to-calendar-button>
70
+ />
66
71
  </div>
67
72
  </template>
@@ -0,0 +1,46 @@
1
+ <script lang="ts" setup>
2
+ import { toRefs, computed } from 'vue';
3
+ import { useConversationStore } from '../../../store/conversations';
4
+ import type { Icons } from '../../../models/icons';
5
+ import type { Presentation } from '../../../models/conference';
6
+ type Props = {
7
+ presentation: Presentation
8
+ };
9
+
10
+ const props = defineProps<Props>();
11
+
12
+ const { presentation } = toRefs(props);
13
+
14
+ const { hasFavorite } = useConversationStore();
15
+
16
+ const emit = defineEmits<{
17
+ (event: 'favoriteClick', presentation: Presentation): void;
18
+ }>();
19
+
20
+ // computed
21
+ const favoriteStatusIcon = computed((): keyof Icons => {
22
+ return hasFavorite(presentation.value.id as number) !== undefined ? 'favoriteFilled' : 'favorite';
23
+ });
24
+
25
+
26
+ </script>
27
+
28
+ <template>
29
+ <a @click="emit('favoriteClick', presentation)">
30
+ <CommonSvgIcon
31
+ :icon="favoriteStatusIcon"
32
+ class="cursor-pointer"
33
+ style="display: inline-block;"
34
+ />
35
+ </a>
36
+ </template>
37
+
38
+ <style lang="postcss" scoped>
39
+ .favorite {
40
+ svg {
41
+ stroke: #0070FF;
42
+ fill: blue;
43
+ }
44
+ }
45
+ </style>
46
+
@@ -26,20 +26,30 @@ const getLinkText = computed(() => {
26
26
 
27
27
  <template>
28
28
  <span>
29
- <a class="cursor-pointer" @click="showDescModal = true">
29
+ <a
30
+ class="cursor-pointer"
31
+ @click="showDescModal = true"
32
+ >
30
33
  <CommonSvgIcon
31
34
  v-if="useIcon"
32
35
  icon="info"
33
36
  class="align-middle"
34
37
  style="display: inline-block; margin-bottom: 2px"
35
38
  :icon-width="'16px'"
36
- ></CommonSvgIcon>
37
- <span v-else class="text-xs" :class="{ 'new-line': newLine }">{{
39
+ />
40
+ <span
41
+ v-else
42
+ class="text-xs"
43
+ :class="{ 'new-line': newLine }"
44
+ >{{
38
45
  getLinkText
39
46
  }}</span>
40
47
  </a>
41
48
 
42
- <CommonModal :visible="showDescModal" @trigger="showDescModal = false">
49
+ <CommonModal
50
+ :visible="showDescModal"
51
+ @trigger="showDescModal = false"
52
+ >
43
53
  <template #modal-title>
44
54
  <div class="text-lg font-bold text-left mb-4 pb-4 border-b">
45
55
  {{ presentation.name }}
@@ -49,7 +59,7 @@ const getLinkText = computed(() => {
49
59
  <div
50
60
  class="text-base font-normal text-left"
51
61
  v-html="presentation.description"
52
- ></div>
62
+ />
53
63
  </template>
54
64
  </CommonModal>
55
65
  </span>
@@ -31,18 +31,16 @@ const {
31
31
  style="max-width: 15px"
32
32
  :src="(getPresentationCustomPlayIcon(presentation) as unknown as string)"
33
33
  alt=""
34
- />
34
+ >
35
35
  <CommonSvgIcon
36
36
  v-else
37
37
  :icon="icon"
38
38
  class="align-middle mr-1"
39
39
  style="display: inline-block; margin-bottom: 2px"
40
40
  :icon-width="'20px'"
41
- >
42
- </CommonSvgIcon
43
- >&nbsp;
41
+ />&nbsp;
44
42
  </span>
45
- <small class="flex-initial uppercase text-base text-red-darker">{{
43
+ <small class="flex-initial uppercase text-base text-red-800">{{
46
44
  getPresentationStreamingText(presentation)
47
45
  }}</small>
48
46
  </span>