@icvdeveloper/common-module 1.1.1 → 1.1.3
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.json +1 -1
- package/dist/runtime/components/agenda/AgendaList.vue +21 -3
- package/dist/runtime/components/agenda/AgendaTabbed.vue +25 -9
- package/dist/runtime/components/agenda/components/PresentationLink.vue +4 -0
- package/dist/runtime/components/events/ListEvents.vue +30 -24
- package/dist/runtime/composables/useEvents.d.ts +2 -2
- package/dist/runtime/composables/useEvents.mjs +4 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/module.json
CHANGED
|
@@ -87,6 +87,7 @@ const isPres = (_presId: number): boolean => {
|
|
|
87
87
|
|
|
88
88
|
<template>
|
|
89
89
|
<div
|
|
90
|
+
:id="'agenda-list-'+conference.id"
|
|
90
91
|
:class="
|
|
91
92
|
classBinding(
|
|
92
93
|
classObject,
|
|
@@ -94,13 +95,16 @@ const isPres = (_presId: number): boolean => {
|
|
|
94
95
|
'flex flex-col space-y-5 text-neutral-700'
|
|
95
96
|
)
|
|
96
97
|
"
|
|
98
|
+
class="agenda-list"
|
|
97
99
|
>
|
|
98
100
|
<template v-for="day in days">
|
|
99
101
|
<template v-for="track in getCombinedTrackList(day)">
|
|
100
102
|
<div
|
|
101
103
|
v-for="presentation in track.presentations"
|
|
102
104
|
:key="presentation.id"
|
|
105
|
+
:id="'agenda-presentation-'+presentation.id"
|
|
103
106
|
:class="classBinding(classObject, 'accordionContainer', '')"
|
|
107
|
+
class="agenda-presentation"
|
|
104
108
|
>
|
|
105
109
|
<AgendaAccordion
|
|
106
110
|
:item-id="presentation.id"
|
|
@@ -121,6 +125,7 @@ const isPres = (_presId: number): boolean => {
|
|
|
121
125
|
:class="
|
|
122
126
|
classBinding(classObject, 'timeElement', 'time-width')
|
|
123
127
|
"
|
|
128
|
+
class="agenda-presentation-time"
|
|
124
129
|
>
|
|
125
130
|
{{ getPresentationStartTime(presentation, "h:mm") }}
|
|
126
131
|
-
|
|
@@ -134,6 +139,7 @@ const isPres = (_presId: number): boolean => {
|
|
|
134
139
|
'flex flex-row md:ml-5'
|
|
135
140
|
)
|
|
136
141
|
"
|
|
142
|
+
class="agenda-presentation-title"
|
|
137
143
|
>
|
|
138
144
|
<CommonSvgIcon
|
|
139
145
|
v-if="!isPres(presentation.id)"
|
|
@@ -190,7 +196,7 @@ const isPres = (_presId: number): boolean => {
|
|
|
190
196
|
<calendar
|
|
191
197
|
v-if="useCalendar"
|
|
192
198
|
:key="conference.id"
|
|
193
|
-
class="mb-3"
|
|
199
|
+
class="agenda-add-to-calendar mb-3"
|
|
194
200
|
:presentation="presentation"
|
|
195
201
|
:conference="conference"
|
|
196
202
|
/>
|
|
@@ -203,6 +209,7 @@ const isPres = (_presId: number): boolean => {
|
|
|
203
209
|
'font-bold text-lg'
|
|
204
210
|
)
|
|
205
211
|
"
|
|
212
|
+
class="agenda-presenters-label"
|
|
206
213
|
>
|
|
207
214
|
{{ getPresentersLabel(presentation.presenters.length) }}
|
|
208
215
|
</h3>
|
|
@@ -220,7 +227,16 @@ const isPres = (_presId: number): boolean => {
|
|
|
220
227
|
presentation.presenters
|
|
221
228
|
)"
|
|
222
229
|
:key="presenter.presenter.id"
|
|
223
|
-
:
|
|
230
|
+
:id="'agenda-presenter-'+presenter.presenter.id"
|
|
231
|
+
:class="
|
|
232
|
+
classBinding(
|
|
233
|
+
classObject,
|
|
234
|
+
'presenterElement',
|
|
235
|
+
''
|
|
236
|
+
)
|
|
237
|
+
+ ((presenter.role == 'moderator') ? ' agenda-moderator' : '')
|
|
238
|
+
"
|
|
239
|
+
class="agenda-presenter"
|
|
224
240
|
>
|
|
225
241
|
<p
|
|
226
242
|
:class="
|
|
@@ -230,11 +246,12 @@ const isPres = (_presId: number): boolean => {
|
|
|
230
246
|
'text-lg pb-0 mb-0'
|
|
231
247
|
)
|
|
232
248
|
"
|
|
249
|
+
class="agenda-presenter-name"
|
|
233
250
|
>
|
|
234
251
|
{{ presenter.fullName.value }}
|
|
235
252
|
<span
|
|
236
253
|
v-if="presenter.role == 'moderator'"
|
|
237
|
-
class="text-xs font-bold text-neutral-400"
|
|
254
|
+
class="agenda-presenter-moderator-tag text-xs font-bold text-neutral-400"
|
|
238
255
|
>
|
|
239
256
|
- MODERATOR
|
|
240
257
|
</span>
|
|
@@ -248,6 +265,7 @@ const isPres = (_presId: number): boolean => {
|
|
|
248
265
|
'text-sm pt-0 mb-1'
|
|
249
266
|
)
|
|
250
267
|
"
|
|
268
|
+
class="agenda-presenter-company"
|
|
251
269
|
>
|
|
252
270
|
{{ presenter.titleCompany.value }}
|
|
253
271
|
</p>
|
|
@@ -57,18 +57,18 @@ const presentersContainer = computed(() => {
|
|
|
57
57
|
</script>
|
|
58
58
|
|
|
59
59
|
<template>
|
|
60
|
-
<div class="container mx-auto my-8 shadow-lg">
|
|
60
|
+
<div :id="'agenda-tabbed-'+conference.id" class="agenda-tabbed container mx-auto my-8 shadow-lg">
|
|
61
61
|
<!-- TABS -->
|
|
62
62
|
<div class="flex flex-col w-full">
|
|
63
63
|
<div class="flex flex-row w-full">
|
|
64
64
|
<div
|
|
65
65
|
v-if="days.length > 0"
|
|
66
|
-
class="flex flex-row agenda-tab-sponsor-bg-color w-3/4"
|
|
66
|
+
class="flex flex-row agenda-tab-container agenda-tab-sponsor-bg-color w-3/4"
|
|
67
67
|
>
|
|
68
68
|
<button
|
|
69
69
|
v-for="(day, index) in days"
|
|
70
70
|
:key="index"
|
|
71
|
-
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"
|
|
71
|
+
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"
|
|
72
72
|
:class="{
|
|
73
73
|
'agenda-tab-active-bg-color agenda-tab-color':
|
|
74
74
|
day === selectedDay,
|
|
@@ -92,6 +92,7 @@ const presentersContainer = computed(() => {
|
|
|
92
92
|
:show-label="false"
|
|
93
93
|
size="small"
|
|
94
94
|
:enabled-sponsors="enabledSponsors"
|
|
95
|
+
class="agenda-day-sponsor"
|
|
95
96
|
>
|
|
96
97
|
</Sponsor>
|
|
97
98
|
</div>
|
|
@@ -112,7 +113,7 @@ const presentersContainer = computed(() => {
|
|
|
112
113
|
class="agenda-track-group-bg-color"
|
|
113
114
|
>
|
|
114
115
|
<div class="py-3">
|
|
115
|
-
<h2 class="font-light py-2 px-3 body-color-2">
|
|
116
|
+
<h2 class="agenda-track-title font-light py-2 px-3 body-color-2">
|
|
116
117
|
{{ group_or_track.name }}
|
|
117
118
|
</h2>
|
|
118
119
|
</div>
|
|
@@ -127,6 +128,14 @@ const presentersContainer = computed(() => {
|
|
|
127
128
|
<div
|
|
128
129
|
v-for="(track, trackIndex) in getTracks(group_or_track)"
|
|
129
130
|
:key="track.id"
|
|
131
|
+
:id="(group_or_track.type == 'track_group') ?
|
|
132
|
+
'agenda-track-group-'+group_or_track.id :
|
|
133
|
+
'agenda-track-'+group_or_track.id
|
|
134
|
+
"
|
|
135
|
+
:class="(group_or_track.type == 'track_group') ?
|
|
136
|
+
'agenda-track-group' :
|
|
137
|
+
'agenda-track'
|
|
138
|
+
"
|
|
130
139
|
class="track-container"
|
|
131
140
|
>
|
|
132
141
|
<!-- TRACK NAME + SPONSOR -->
|
|
@@ -144,7 +153,7 @@ const presentersContainer = computed(() => {
|
|
|
144
153
|
}"
|
|
145
154
|
>
|
|
146
155
|
<h2
|
|
147
|
-
class="font-light p-2 md:py-2 sm:px-3 body-color-2"
|
|
156
|
+
class="agenda-track-title font-light p-2 md:py-2 sm:px-3 body-color-2"
|
|
148
157
|
:class="{
|
|
149
158
|
'agenda-grouped-track-text-color text-lg':
|
|
150
159
|
isGroupedTrack(group_or_track),
|
|
@@ -168,6 +177,7 @@ const presentersContainer = computed(() => {
|
|
|
168
177
|
:inline="true"
|
|
169
178
|
size="small"
|
|
170
179
|
:enabled-sponsors="enabledSponsors"
|
|
180
|
+
class="agenda-track-sponsor"
|
|
171
181
|
>
|
|
172
182
|
</sponsor>
|
|
173
183
|
</div>
|
|
@@ -184,7 +194,8 @@ const presentersContainer = computed(() => {
|
|
|
184
194
|
>
|
|
185
195
|
<div
|
|
186
196
|
v-if="presentation.visible"
|
|
187
|
-
|
|
197
|
+
:id="'agenda-presentation-'+presentation.id"
|
|
198
|
+
class="agenda-presentation flex flex-col"
|
|
188
199
|
:class="
|
|
189
200
|
presentationIndex < track.presentations.length - 1
|
|
190
201
|
? 'border-b'
|
|
@@ -214,7 +225,7 @@ const presentersContainer = computed(() => {
|
|
|
214
225
|
<!-- TIME -->
|
|
215
226
|
<h4
|
|
216
227
|
v-if="showPresentationTimes(presentation)"
|
|
217
|
-
class="font-light mb-3"
|
|
228
|
+
class="agenda-presentation-time font-light mb-3"
|
|
218
229
|
>
|
|
219
230
|
{{
|
|
220
231
|
getPresentationStartTime(presentation, "h:mm a")
|
|
@@ -241,13 +252,15 @@ const presentersContainer = computed(() => {
|
|
|
241
252
|
:is-small-grouped-track="
|
|
242
253
|
isSmallGroupedTrack(group_or_track)
|
|
243
254
|
"
|
|
255
|
+
:is-agenda="true"
|
|
256
|
+
class="agenda-presentation-link"
|
|
244
257
|
></presentation-link>
|
|
245
258
|
</div>
|
|
246
259
|
|
|
247
260
|
<!-- ADD TO CALENDAR -->
|
|
248
261
|
<calendar
|
|
249
262
|
:key="conference.id"
|
|
250
|
-
class="mb-3"
|
|
263
|
+
class="agenda-add-to-calendar mb-3"
|
|
251
264
|
:presentation="presentation"
|
|
252
265
|
:conference="conference"
|
|
253
266
|
/>
|
|
@@ -259,13 +272,16 @@ const presentersContainer = computed(() => {
|
|
|
259
272
|
:title="
|
|
260
273
|
getPresentersLabel(presentation.presenters.length)
|
|
261
274
|
"
|
|
275
|
+
class="agenda-presenters"
|
|
262
276
|
>
|
|
263
277
|
<p
|
|
264
278
|
v-for="presenter in getSortedPresenters(
|
|
265
279
|
presentation.presenters
|
|
266
280
|
)"
|
|
267
281
|
:key="presenter.id"
|
|
268
|
-
|
|
282
|
+
:id="'agenda-presenter-'+presenter.id"
|
|
283
|
+
:class="(presenter.role == 'moderator') ? ' agenda-moderator' : ''"
|
|
284
|
+
class="agenda-presenter font-bold my-1"
|
|
269
285
|
>
|
|
270
286
|
<CommonPresenterModal
|
|
271
287
|
v-if="usePresenterModal"
|
|
@@ -18,11 +18,15 @@ type Props = {
|
|
|
18
18
|
track: Track | TrackGroup;
|
|
19
19
|
showInfoLink?: boolean;
|
|
20
20
|
simpleLayout?: boolean;
|
|
21
|
+
isAgenda?: boolean;
|
|
22
|
+
allowFavorites?: boolean;
|
|
21
23
|
};
|
|
22
24
|
|
|
23
25
|
const props = withDefaults(defineProps<Props>(), {
|
|
24
26
|
showInfoLink: true,
|
|
25
27
|
simpleLayout: false,
|
|
28
|
+
isAgenda: false,
|
|
29
|
+
allowFavorites: false,
|
|
26
30
|
});
|
|
27
31
|
|
|
28
32
|
const { conference, track, presentation } = toRefs(props);
|
|
@@ -110,7 +110,7 @@ const {
|
|
|
110
110
|
isLoggedIn,
|
|
111
111
|
loginModalVisible,
|
|
112
112
|
conferenceToLoginTo,
|
|
113
|
-
|
|
113
|
+
getEventPage,
|
|
114
114
|
setConferenceToLoginTo,
|
|
115
115
|
buttonClass,
|
|
116
116
|
getSponsors,
|
|
@@ -361,9 +361,9 @@ const showLoginButton = computed((): boolean => {
|
|
|
361
361
|
v-if="liveButton && conference.state === ConferenceState.LIVE"
|
|
362
362
|
>
|
|
363
363
|
<!-- go to video -->
|
|
364
|
-
<
|
|
364
|
+
<nuxt-link
|
|
365
365
|
v-if="liveButtonOpensStream"
|
|
366
|
-
:
|
|
366
|
+
:to="getVideoUrl(conference)"
|
|
367
367
|
:target="
|
|
368
368
|
/^http/.test(!isUpcoming && getVideoUrl(conference))
|
|
369
369
|
? '_blank'
|
|
@@ -377,34 +377,40 @@ const showLoginButton = computed((): boolean => {
|
|
|
377
377
|
>
|
|
378
378
|
{{ getVideoButtonText(conference) }}
|
|
379
379
|
</button>
|
|
380
|
-
</
|
|
380
|
+
</nuxt-link>
|
|
381
381
|
<!-- go to event page -->
|
|
382
|
-
<
|
|
382
|
+
<nuxt-link
|
|
383
383
|
v-else
|
|
384
|
-
:
|
|
385
|
-
classBinding(classObject, 'liveButtonItem', buttonClass)
|
|
386
|
-
"
|
|
387
|
-
@click="goEventPage(conference)"
|
|
384
|
+
:to="getEventPage(conference)"
|
|
388
385
|
>
|
|
389
|
-
|
|
390
|
-
|
|
386
|
+
<button
|
|
387
|
+
:class="
|
|
388
|
+
classBinding(classObject, 'liveButtonItem', buttonClass)
|
|
389
|
+
"
|
|
390
|
+
>
|
|
391
|
+
{{ getVideoButtonText(conference) }}
|
|
392
|
+
</button>
|
|
393
|
+
</nuxt-link>
|
|
391
394
|
</template>
|
|
392
395
|
|
|
393
396
|
<template v-else>
|
|
394
397
|
<!-- view info button -->
|
|
395
|
-
<
|
|
398
|
+
<nuxt-link
|
|
396
399
|
v-if="viewInfoButton"
|
|
397
|
-
:
|
|
398
|
-
classBinding(classObject, 'buttonItem', buttonClass)
|
|
399
|
-
"
|
|
400
|
-
@click="goEventPage(conference)"
|
|
400
|
+
:to="getEventPage(conference)"
|
|
401
401
|
>
|
|
402
|
-
|
|
403
|
-
|
|
402
|
+
<button
|
|
403
|
+
:class="
|
|
404
|
+
classBinding(classObject, 'buttonItem', buttonClass)
|
|
405
|
+
"
|
|
406
|
+
>
|
|
407
|
+
More Info
|
|
408
|
+
</button>
|
|
409
|
+
</nuxt-link>
|
|
404
410
|
<!-- view live/preview archive button -->
|
|
405
|
-
<
|
|
411
|
+
<nuxt-link
|
|
406
412
|
v-if="mediaButton && showViewButton(conference)"
|
|
407
|
-
:
|
|
413
|
+
:to="getVideoUrl(conference)"
|
|
408
414
|
:target="
|
|
409
415
|
/^http/.test(!isUpcoming && getVideoUrl(conference))
|
|
410
416
|
? '_blank'
|
|
@@ -418,7 +424,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
418
424
|
>
|
|
419
425
|
{{ getVideoButtonText(conference) }}
|
|
420
426
|
</button>
|
|
421
|
-
</
|
|
427
|
+
</nuxt-link>
|
|
422
428
|
|
|
423
429
|
<!-- login button -->
|
|
424
430
|
<button
|
|
@@ -432,9 +438,9 @@ const showLoginButton = computed((): boolean => {
|
|
|
432
438
|
</button>
|
|
433
439
|
|
|
434
440
|
<!-- register button -->
|
|
435
|
-
<
|
|
441
|
+
<nuxt-link
|
|
436
442
|
v-if="registerButton && showConferenceRegButton(conference)"
|
|
437
|
-
:
|
|
443
|
+
:to="getConferenceRegUrl(conference, registerPathPrefix)"
|
|
438
444
|
:target="
|
|
439
445
|
/^http/.test(getConferenceRegUrl(conference))
|
|
440
446
|
? '_blank'
|
|
@@ -448,7 +454,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
448
454
|
>
|
|
449
455
|
{{ getConferenceRegText(conference) }}
|
|
450
456
|
</button>
|
|
451
|
-
</
|
|
457
|
+
</nuxt-link>
|
|
452
458
|
</template>
|
|
453
459
|
</div>
|
|
454
460
|
<!-- countdown timer - right-aligned -->
|
|
@@ -22,9 +22,9 @@ export type UseEventsMethods = {
|
|
|
22
22
|
*/
|
|
23
23
|
isHomePage: Ref<boolean>;
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* get path to event landing page
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
getEventPage: (conference: Conference) => string;
|
|
28
28
|
/**
|
|
29
29
|
* display modal login modal and set its conference prop
|
|
30
30
|
*/
|
|
@@ -18,12 +18,12 @@ export const useEvents = () => {
|
|
|
18
18
|
const isHomePage = computed(() => {
|
|
19
19
|
return route.name === "index";
|
|
20
20
|
});
|
|
21
|
-
const
|
|
21
|
+
const getEventPage = (conference) => {
|
|
22
22
|
const eventPathPrefix = config.public.eventPathPrefix;
|
|
23
23
|
if (eventPathPrefix) {
|
|
24
|
-
|
|
24
|
+
return eventPathPrefix + conference.id;
|
|
25
25
|
} else {
|
|
26
|
-
|
|
26
|
+
return `/upcoming-events/${conference.id}`;
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
const setConferenceToLoginTo = (conference) => {
|
|
@@ -59,7 +59,7 @@ export const useEvents = () => {
|
|
|
59
59
|
conferenceToLoginTo,
|
|
60
60
|
buttonClass,
|
|
61
61
|
isHomePage,
|
|
62
|
-
|
|
62
|
+
getEventPage,
|
|
63
63
|
setConferenceToLoginTo,
|
|
64
64
|
orderAffiliates,
|
|
65
65
|
getSponsors,
|