@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.
- package/CHANGELOG.md +4 -0
- package/dist/module.d.mts +1051 -2
- package/dist/module.d.ts +1051 -2
- package/dist/module.json +1 -1
- package/dist/module.mjs +29 -15
- package/dist/runtime/@types/components.d.ts +22 -0
- package/dist/runtime/@types/configVariables.d.ts +6 -0
- package/dist/runtime/analytics.d.ts +1 -6
- package/dist/runtime/assets/scss/_agenda.css +1 -0
- package/dist/runtime/assets/scss/_animations.css +1 -0
- package/dist/runtime/assets/scss/_container_variants.css +1 -0
- package/dist/runtime/assets/scss/_custom.css +3 -0
- package/dist/runtime/assets/scss/_forms.css +1 -0
- package/dist/runtime/assets/scss/_header.css +0 -0
- package/dist/runtime/assets/scss/_index_production.css +1 -0
- package/dist/runtime/assets/scss/_transitions.css +1 -0
- package/dist/runtime/assets/scss/_variables.css +1 -0
- package/dist/runtime/assets/scss/_variables2.css +0 -0
- package/dist/runtime/assets/scss/_webcast.css +1 -0
- package/dist/runtime/assets/scss/index.css +1 -705
- package/dist/runtime/assets/svg/icon-minus.svg +6 -0
- package/dist/runtime/assets/svg/icon-video.svg +6 -0
- package/dist/runtime/components/affiliates/AffiliateModal.vue +66 -0
- package/dist/runtime/components/affiliates/AffiliatePage.vue +329 -159
- package/dist/runtime/components/agenda/AgendaList.vue +18 -14
- package/dist/runtime/components/agenda/AgendaTabbed.vue +60 -54
- package/dist/runtime/components/agenda/components/AgendaListAccordion.vue +8 -3
- package/dist/runtime/components/agenda/components/Calendar.vue +23 -18
- package/dist/runtime/components/agenda/components/Favorite.vue +46 -0
- package/dist/runtime/components/agenda/components/InfoLink.vue +15 -5
- package/dist/runtime/components/agenda/components/PlayIcon.vue +3 -5
- package/dist/runtime/components/agenda/components/PresentationLink.vue +37 -19
- package/dist/runtime/components/agenda/components/Sponsor.vue +31 -24
- package/dist/runtime/components/auth/PasswordReset.vue +20 -5
- package/dist/runtime/components/auth/Registration.vue +14 -4
- package/dist/runtime/components/auth/Ucc.vue +44 -27
- package/dist/runtime/components/chat/ChatConversationList.vue +108 -0
- package/dist/runtime/components/chat/ChatCreateConversation.vue +199 -0
- package/dist/runtime/components/chat/ChatCreateGroupConversation.vue +154 -0
- package/dist/runtime/components/chat/ChatHeader.vue +97 -0
- package/dist/runtime/components/chat/ChatMessage.vue +40 -0
- package/dist/runtime/components/chat/ChatShowConversation.vue +76 -0
- package/dist/runtime/components/chat/ChatWidget.vue +40 -0
- package/dist/runtime/components/chat/ChatWindow.vue +154 -0
- package/dist/runtime/components/chat/ChatWindow.vue.d.ts +6 -0
- package/dist/runtime/components/chat/MessageInput.vue +27 -0
- package/dist/runtime/components/chat/SearchInput.vue +32 -0
- package/dist/runtime/components/core/Accordion.vue +12 -12
- package/dist/runtime/components/core/AttendeeList.vue +31 -36
- package/dist/runtime/components/core/CountdownTimer.vue +68 -52
- package/dist/runtime/components/core/DynamicHtml.vue.d.ts +6 -9
- package/dist/runtime/components/core/Modal.vue +24 -22
- package/dist/runtime/components/core/ModalButton.vue +43 -0
- package/dist/runtime/components/core/Navbar.vue +33 -21
- package/dist/runtime/components/core/Navigation.vue +286 -0
- package/dist/runtime/components/core/SvgIcon.vue +34 -1
- package/dist/runtime/components/core/VButton.vue +35 -0
- package/dist/runtime/components/core/ZoomModal.vue +9 -3
- package/dist/runtime/components/events/EventHeader.vue +14 -4
- package/dist/runtime/components/events/ListEvents.vue +21 -22
- package/dist/runtime/components/forms/CheckboxGroup.vue +46 -0
- package/dist/runtime/components/forms/ErrorField.vue +11 -2
- package/dist/runtime/components/forms/Message.vue +1 -1
- package/dist/runtime/components/forms/RadioGroup.vue +50 -0
- package/dist/runtime/components/forms/SearchInput.vue +8 -2
- package/dist/runtime/components/forms/SelectDropDown.vue +47 -0
- package/dist/runtime/components/forms/SupportForm.vue +22 -11
- package/dist/runtime/components/forms/SwitchInput.vue +50 -30
- package/dist/runtime/components/forms/TextArea.vue +1 -1
- package/dist/runtime/components/forms/TextInput.vue +1 -1
- package/dist/runtime/components/layouts/Accordion.vue +11 -6
- package/dist/runtime/components/media/ArchivePlayerAndContentContainer.vue +24 -5
- package/dist/runtime/components/media/ArchiveVideoPlayer.vue +19 -23
- package/dist/runtime/components/media/PlayerAndContentContainer.vue +4 -1
- package/dist/runtime/components/media/WebcastVideoPlayer.vue +6 -18
- package/dist/runtime/components/media/components/AgendaPanel.vue +7 -6
- package/dist/runtime/components/media/components/ArchiveMediaContainer.vue +17 -15
- package/dist/runtime/components/media/components/CeCreditNotification.vue +8 -8
- package/dist/runtime/components/media/components/ContentArea.vue +59 -18
- package/dist/runtime/components/media/components/ContentTabs.vue +40 -28
- package/dist/runtime/components/media/components/DocumentsPanel.vue +19 -17
- package/dist/runtime/components/media/components/MediaContainer.vue +11 -13
- package/dist/runtime/components/media/components/OverviewPanel.vue +5 -2
- package/dist/runtime/components/media/components/PresentersPanel.vue +74 -55
- package/dist/runtime/components/media/components/SessionReporting.vue +5 -4
- package/dist/runtime/components/media/components/SponsorsPanel.vue +13 -12
- package/dist/runtime/components/presenters/PresenterListing.vue +33 -25
- package/dist/runtime/components/presenters/PresenterModal.vue +26 -21
- package/dist/runtime/components/presenters/Presenters.vue +139 -0
- package/dist/runtime/components/profile/Profile.vue +10 -6
- package/dist/runtime/components/profile/components/Sidebar.vue +1 -1
- package/dist/runtime/components/profile/components/SidebarNavItem.vue +2 -4
- package/dist/runtime/components/profile/tabs/Favorites.vue +5 -4
- package/dist/runtime/components/profile/tabs/GeneralInformation.vue +26 -16
- package/dist/runtime/components/profile/tabs/ProfileImage.vue +7 -6
- package/dist/runtime/components/registration/AlreadyRegisteredModal.vue +102 -0
- package/dist/runtime/components/registration/PaymentForm.vue +136 -0
- package/dist/runtime/components/registration/RegistrationForm.vue +417 -0
- package/dist/runtime/components/registration/RegistrationGroupSelect.vue +146 -0
- package/dist/runtime/components/registration/StripePaymentForm.vue +121 -0
- package/dist/runtime/components/support/FAQAccordion.vue +8 -7
- package/dist/runtime/composables/useAdobeLaunch.d.ts +2 -7
- package/dist/runtime/composables/useAdobeLaunch.mjs +2 -2
- package/dist/runtime/composables/useAgenda.d.ts +13 -1
- package/dist/runtime/composables/useAgenda.mjs +125 -25
- package/dist/runtime/composables/useApi.d.ts +1 -1
- package/dist/runtime/composables/useAuth.d.ts +1 -1
- package/dist/runtime/composables/useAuth.mjs +1 -1
- package/dist/runtime/composables/useClassBinding.d.ts +3 -1
- package/dist/runtime/composables/useConferenceHelpers.d.ts +7 -3
- package/dist/runtime/composables/useConferenceHelpers.mjs +26 -15
- package/dist/runtime/composables/useEventHooks.d.ts +29 -0
- package/dist/runtime/composables/useEventHooks.mjs +21 -0
- package/dist/runtime/composables/useEvents.d.ts +17 -1
- package/dist/runtime/composables/useEvents.mjs +35 -9
- package/dist/runtime/composables/useLogin.mjs +9 -5
- package/dist/runtime/composables/useNavigation.d.ts +1 -1
- package/dist/runtime/composables/useNavigation.mjs +4 -2
- package/dist/runtime/composables/usePresentation.d.ts +2 -2
- package/dist/runtime/composables/usePresentation.mjs +8 -7
- package/dist/runtime/composables/usePresenter.d.ts +2 -2
- package/dist/runtime/composables/usePresenters.d.ts +2 -2
- package/dist/runtime/composables/usePusher.d.ts +4 -0
- package/dist/runtime/composables/usePusher.mjs +38 -26
- package/dist/runtime/composables/useScripts.mjs +1 -1
- package/dist/runtime/composables/useStream.d.ts +2 -3
- package/dist/runtime/composables/useStream.mjs +8 -2
- package/dist/runtime/composables/useUcc.d.ts +1 -1
- package/dist/runtime/composables/useUcc.mjs +29 -23
- package/dist/runtime/enums/general.d.ts +4 -1
- package/dist/runtime/enums/general.mjs +4 -1
- package/dist/runtime/models/adobeLaunch.d.ts +6 -0
- package/dist/runtime/models/adobeLaunch.mjs +0 -0
- package/dist/runtime/models/analytics.d.ts +6 -0
- package/dist/runtime/models/analytics.mjs +0 -0
- package/dist/runtime/models/attendeeList.d.ts +1 -1
- package/dist/runtime/models/conference.d.ts +122 -91
- package/dist/runtime/models/conversation.d.ts +11 -13
- package/dist/runtime/models/document.d.ts +5 -5
- package/dist/runtime/models/globalConfig.d.ts +9 -3
- package/dist/runtime/models/group.d.ts +38 -8
- package/dist/runtime/models/icons.d.ts +8 -1
- package/dist/runtime/models/index.d.ts +20 -0
- package/dist/runtime/models/index.mjs +20 -0
- package/dist/runtime/models/link.d.ts +4 -4
- package/dist/runtime/models/loginParams.d.ts +5 -0
- package/dist/runtime/models/loginParams.mjs +0 -0
- package/dist/runtime/models/navigationConfig.d.ts +7 -7
- package/dist/runtime/models/pagination.d.ts +11 -11
- package/dist/runtime/models/portal.d.ts +15 -10
- package/dist/runtime/models/templateConfig.d.ts +13 -7
- package/dist/runtime/models/ucc.d.ts +22 -0
- package/dist/runtime/models/ucc.mjs +0 -0
- package/dist/runtime/models/user.d.ts +25 -12
- package/dist/runtime/models/vButton.d.ts +7 -0
- package/dist/runtime/models/vButton.mjs +0 -0
- package/dist/runtime/models/video.d.ts +5 -4
- package/dist/runtime/models/virtualPagesConfig.d.ts +223 -0
- package/dist/runtime/models/virtualPagesConfig.mjs +0 -0
- package/dist/runtime/plugin.mjs +18 -9
- package/dist/runtime/store/affiliates.d.ts +4 -1
- package/dist/runtime/store/affiliates.mjs +38 -0
- package/dist/runtime/store/attendeeList.d.ts +1 -1
- package/dist/runtime/store/auth.d.ts +3 -7
- package/dist/runtime/store/auth.mjs +6 -0
- package/dist/runtime/store/conferences.d.ts +3 -1
- package/dist/runtime/store/conferences.mjs +14 -9
- package/dist/runtime/store/conversations.d.ts +78 -10
- package/dist/runtime/store/conversations.mjs +255 -22
- package/dist/runtime/store/modalPlayerConfig.d.ts +27 -0
- package/dist/runtime/store/modalPlayerConfig.mjs +58 -0
- package/dist/runtime/store/navigationConfig.d.ts +1 -1
- package/dist/runtime/store/presentations.d.ts +2 -2
- package/dist/runtime/store/templateConfigs.d.ts +7 -6
- package/dist/runtime/store/templateConfigs.mjs +7 -6
- package/dist/runtime/store/user.mjs +0 -1
- package/dist/runtime/v3plusCommonPlugin.d.ts +1 -1
- package/dist/types.d.mts +3 -2
- package/dist/types.d.ts +3 -2
- package/package.json +12 -9
- package/dist/runtime/components/media/components/JsonApi.vue +0 -33
- package/dist/runtime/components/media/components/JsonApi.vue.d.ts +0 -16
- package/dist/runtime/components/media/components/PresentersPanel.vue.d.ts +0 -32
- package/dist/runtime/components/media/components/WindowContent.vue +0 -118
- package/dist/runtime/components/media/components/WindowContent.vue.d.ts +0 -50
- package/dist/runtime/components/media/components/WindowSlide.vue +0 -92
- package/dist/runtime/components/media/components/WindowSlide.vue.d.ts +0 -36
- package/dist/runtime/models/authUser.d.ts +0 -16
- /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
|
-
|
|
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
|
-
'
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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
|
-
|
|
264
|
-
|
|
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 {
|
|
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', '
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
'
|
|
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
|
-
.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
|
59
|
-
|
|
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
|
-
|
|
78
|
-
|
|
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
|
-
|
|
105
|
-
|
|
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
|
-
|
|
46
|
-
<p
|
|
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
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
17
|
-
|
|
10
|
+
type Props = {
|
|
11
|
+
presentation: Presentation;
|
|
12
|
+
itemWidth?: string;
|
|
13
|
+
layoutFormat?: string;
|
|
14
|
+
isCompact?: boolean;
|
|
15
|
+
};
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
<
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
140
|
-
<div
|
|
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
|
-
|
|
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:
|
|
189
|
+
@media (min-width: 1024px) {
|
|
182
190
|
.new-line-responsive:before {
|
|
183
191
|
content: " - ";
|
|
184
192
|
white-space: normal;
|