@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
|
@@ -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
|
-
<
|
|
111
|
+
<CommonComponentsAgendaListAccordion
|
|
110
112
|
:item-id="presentation.id"
|
|
111
|
-
:class-object="classObject.components
|
|
113
|
+
:class-object="classObject.components?.agendaListAccordion"
|
|
112
114
|
@expanded="setPres"
|
|
113
115
|
>
|
|
114
|
-
<template
|
|
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
|
-
</
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
<
|
|
89
|
-
v-if="shouldShowSponsors(selectedDay)"
|
|
90
|
-
:sponsor="selectedDay
|
|
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
|
-
:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
:
|
|
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
|
|
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
|
|
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
|
-
<
|
|
172
|
+
<CommonComponentsSponsor
|
|
174
173
|
v-if="shouldShowSponsors(track)"
|
|
175
|
-
:sponsor="track
|
|
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
|
-
|
|
235
|
-
>
|
|
231
|
+
<span v-if="showPresentationEndTimes()">
|
|
232
|
+
- {{ getPresentationEndTime(presentation, "h:mm a") }}
|
|
233
|
+
</span>
|
|
236
234
|
{{
|
|
237
235
|
DateTime.fromSQL(
|
|
238
|
-
presentation
|
|
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
|
-
<
|
|
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
|
-
|
|
254
|
+
/>
|
|
257
255
|
</div>
|
|
258
256
|
|
|
259
257
|
<!-- ADD TO CALENDAR -->
|
|
260
|
-
<
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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"
|
|
56
|
+
<slot name="header" />
|
|
55
57
|
</button>
|
|
56
58
|
</div>
|
|
57
59
|
|
|
58
|
-
<transition
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
:
|
|
52
|
-
:
|
|
53
|
-
:
|
|
54
|
-
:
|
|
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
|
-
|
|
61
|
+
list-style="dropdown"
|
|
57
62
|
trigger="click"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
37
|
-
<span
|
|
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
|
|
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
|
-
|
|
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
|
-
>
|
|
41
|
+
/>
|
|
44
42
|
</span>
|
|
45
|
-
<small class="flex-initial uppercase text-base text-red-
|
|
43
|
+
<small class="flex-initial uppercase text-base text-red-800">{{
|
|
46
44
|
getPresentationStreamingText(presentation)
|
|
47
45
|
}}</small>
|
|
48
46
|
</span>
|