@icvdeveloper/common-module 0.0.102 → 0.0.104

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 (97) hide show
  1. package/README.md +6 -6
  2. package/dist/module.json +1 -1
  3. package/dist/runtime/@types/components.d.ts +1 -0
  4. package/dist/runtime/assets/svg/answer.svg +14 -14
  5. package/dist/runtime/assets/svg/avatar.svg +1 -1
  6. package/dist/runtime/assets/svg/bell-icon.svg +3 -3
  7. package/dist/runtime/assets/svg/checkmark-icon.svg +1 -1
  8. package/dist/runtime/assets/svg/close-icon.svg +1 -1
  9. package/dist/runtime/assets/svg/icon-avatar.svg +1 -1
  10. package/dist/runtime/assets/svg/icon-chevron.svg +4 -4
  11. package/dist/runtime/assets/svg/icon-circle-plus.svg +1 -1
  12. package/dist/runtime/assets/svg/icon-close.svg +1 -1
  13. package/dist/runtime/assets/svg/icon-info.svg +2 -2
  14. package/dist/runtime/assets/svg/icon-new-window.svg +11 -11
  15. package/dist/runtime/assets/svg/icon-offline.svg +3 -3
  16. package/dist/runtime/assets/svg/icon-online.svg +3 -3
  17. package/dist/runtime/assets/svg/icon-person.svg +2 -2
  18. package/dist/runtime/assets/svg/icon-play.svg +2 -2
  19. package/dist/runtime/assets/svg/icon-star-filled.svg +29 -29
  20. package/dist/runtime/assets/svg/icon-star.svg +24 -24
  21. package/dist/runtime/assets/svg/icon-video-chat.svg +14 -14
  22. package/dist/runtime/assets/svg/icon-website.svg +2 -2
  23. package/dist/runtime/assets/svg/icon-zoom.svg +10 -10
  24. package/dist/runtime/assets/svg/notification-icon.svg +32 -32
  25. package/dist/runtime/assets/svg/offline-icon.svg +1 -1
  26. package/dist/runtime/assets/svg/online-icon.svg +3 -3
  27. package/dist/runtime/assets/svg/peer2peer.svg +3 -3
  28. package/dist/runtime/assets/svg/phone.svg +1 -1
  29. package/dist/runtime/assets/svg/plus-icon.svg +1 -1
  30. package/dist/runtime/assets/svg/red-icon.svg +3 -3
  31. package/dist/runtime/assets/svg/reject.svg +14 -14
  32. package/dist/runtime/assets/svg/search-icon.svg +3 -3
  33. package/dist/runtime/components/affiliates/AffiliatePage.vue +17 -17
  34. package/dist/runtime/components/agenda/AgendaList.vue +243 -243
  35. package/dist/runtime/components/agenda/AgendaTabbed.vue +309 -309
  36. package/dist/runtime/components/agenda/components/AgendaListAccordion.vue +53 -53
  37. package/dist/runtime/components/agenda/components/Calendar.vue +97 -89
  38. package/dist/runtime/components/agenda/components/InfoLink.vue +56 -56
  39. package/dist/runtime/components/agenda/components/PlayIcon.vue +49 -49
  40. package/dist/runtime/components/agenda/components/PresentationLink.vue +137 -137
  41. package/dist/runtime/components/agenda/components/Sponsor.vue +132 -132
  42. package/dist/runtime/components/auth/LoginFullWidth.vue +78 -78
  43. package/dist/runtime/components/auth/PasswordReset.vue +60 -60
  44. package/dist/runtime/components/auth/Registration.vue +27 -27
  45. package/dist/runtime/components/auth/Ucc.vue +124 -124
  46. package/dist/runtime/components/core/Accordion.vue +97 -97
  47. package/dist/runtime/components/core/CountdownTimer.vue +357 -357
  48. package/dist/runtime/components/core/DynamicHtml.vue +1 -1
  49. package/dist/runtime/components/core/Modal.vue +111 -111
  50. package/dist/runtime/components/core/Navbar.vue +154 -154
  51. package/dist/runtime/components/core/SvgIcon.vue +151 -151
  52. package/dist/runtime/components/core/ZoomModal.vue +37 -37
  53. package/dist/runtime/components/events/EventHeader.vue +133 -133
  54. package/dist/runtime/components/events/ListEvents.vue +551 -531
  55. package/dist/runtime/components/forms/AlertBox.vue +21 -21
  56. package/dist/runtime/components/forms/ErrorField.vue +17 -17
  57. package/dist/runtime/components/forms/Message.vue +27 -27
  58. package/dist/runtime/components/forms/SearchInput.vue +38 -38
  59. package/dist/runtime/components/forms/SupportForm.vue +112 -112
  60. package/dist/runtime/components/forms/SwitchInput.vue +42 -42
  61. package/dist/runtime/components/forms/TextArea.vue +26 -26
  62. package/dist/runtime/components/forms/TextInput.vue +28 -28
  63. package/dist/runtime/components/layouts/Accordion.vue +78 -78
  64. package/dist/runtime/components/media/ArchivePlayerAndContentContainer.vue +157 -157
  65. package/dist/runtime/components/media/ArchiveVideoPlayer.vue +186 -186
  66. package/dist/runtime/components/media/PlayerAndContentContainer.vue +175 -175
  67. package/dist/runtime/components/media/WebcastVideoPlayer.vue +167 -167
  68. package/dist/runtime/components/media/components/AgendaPanel.vue +43 -43
  69. package/dist/runtime/components/media/components/ArchiveMediaContainer.vue +91 -91
  70. package/dist/runtime/components/media/components/CeCreditNotification.vue +95 -95
  71. package/dist/runtime/components/media/components/ContentAccordion.vue +63 -63
  72. package/dist/runtime/components/media/components/ContentAccordion.vue.d.ts +3 -1
  73. package/dist/runtime/components/media/components/ContentArea.vue +158 -158
  74. package/dist/runtime/components/media/components/ContentTabs.vue +231 -231
  75. package/dist/runtime/components/media/components/DocumentsPanel.vue +31 -31
  76. package/dist/runtime/components/media/components/JsonApi.vue +31 -31
  77. package/dist/runtime/components/media/components/MediaContainer.vue +63 -63
  78. package/dist/runtime/components/media/components/OverviewPanel.vue +52 -52
  79. package/dist/runtime/components/media/components/PresentersPanel.vue +52 -52
  80. package/dist/runtime/components/media/components/SessionReporting.vue +93 -93
  81. package/dist/runtime/components/media/components/SponsorsPanel.vue +71 -71
  82. package/dist/runtime/components/media/components/WindowContent.vue +92 -92
  83. package/dist/runtime/components/media/components/WindowSlide.vue +72 -72
  84. package/dist/runtime/components/presenters/PresenterListing.vue +164 -164
  85. package/dist/runtime/components/presenters/PresenterModal.vue +223 -223
  86. package/dist/runtime/components/profile/Profile.vue +149 -149
  87. package/dist/runtime/components/profile/components/Sidebar.vue +27 -27
  88. package/dist/runtime/components/profile/components/SidebarNavItem.vue +39 -39
  89. package/dist/runtime/components/profile/tabs/Favorites.vue +21 -21
  90. package/dist/runtime/components/profile/tabs/GeneralInformation.vue +122 -122
  91. package/dist/runtime/components/profile/tabs/ProfileImage.vue +75 -75
  92. package/dist/runtime/components/support/FAQAccordion.vue +140 -140
  93. package/dist/runtime/composables/useConferenceHelpers.d.ts +5 -1
  94. package/dist/runtime/composables/useConferenceHelpers.mjs +9 -1
  95. package/dist/runtime/composables/useEvents.d.ts +1 -1
  96. package/dist/runtime/composables/useEvents.mjs +2 -4
  97. package/package.json +1 -1
@@ -1,99 +1,99 @@
1
- <template>
2
- <transition name="slide-fade">
3
- <div v-if="visible" class="flex bg-yellow-lightest shadow text-grey-darker py-6 px-10">
4
- <div class="flex-1 text-center mx-auto">
5
- <p>
6
- Time Remaining <span :class="timeRemainingClass">{{ displayFor }} seconds </span>
7
- </p>
8
- <p v-text="promptText"></p>
9
- <p>
10
- <button class="btn btn-secondary" @click="acceptClick" v-text="buttonText"></button>
11
- </p>
12
- </div>
13
- </div>
14
- </transition>
15
- </template>
16
-
1
+ <template>
2
+ <transition name="slide-fade">
3
+ <div v-if="visible" class="flex bg-yellow-lightest shadow text-grey-darker py-6 px-10">
4
+ <div class="flex-1 text-center mx-auto">
5
+ <p>
6
+ Time Remaining <span :class="timeRemainingClass">{{ displayFor }} seconds </span>
7
+ </p>
8
+ <p v-text="promptText"></p>
9
+ <p>
10
+ <button class="btn btn-secondary" @click="acceptClick" v-text="buttonText"></button>
11
+ </p>
12
+ </div>
13
+ </div>
14
+ </transition>
15
+ </template>
16
+
17
17
  <script>
18
- import Echo from 'laravel-echo';
19
- window.Pusher = require('pusher-js');
20
-
21
- /**
22
- @todo Extract the wsHost and app ID out so that this can run in multiple environments (local, staging, production)
23
- */
24
-
25
- window.Echo = new Echo({
26
- key: '07Ve4MlR6FmN0Il8Wy',
27
- broadcaster: 'pusher',
28
- cluster: 'us2',
29
- wsHost: 'socket.v3plusportal.com',
30
- wsPort: 6001,
31
- wssPort: 6002,
32
- disableStats: false,
33
- encrypted: true,
34
- enabledTransports: ['ws', 'wss'],
35
- });
36
-
37
- export default {
38
- data() {
39
- return {
40
- pusher: null,
41
- channel: null,
42
- displayFor: 0,
43
- promptText: '',
44
- buttonText: '',
45
- visible: false,
46
- countdownLoopId: null,
47
- };
48
- },
49
- computed: {
50
- timeRemainingClass() {
51
- if (this.displayFor > 10) {
52
- return 'font-bold text-green-dark';
53
- }
54
- return 'font-bold text-red';
55
- },
56
- },
57
- props: {
58
- conferenceId: {
59
- type: Number,
60
- required: true,
61
- },
62
- },
63
- methods: {
64
- handleNotification(_conference) {
65
- clearInterval(this.countdownLoopId);
66
- window.scrollTo({ top: 0, behavior: 'smooth' });
67
- this.visible = true;
68
- this.displayFor = parseInt(_conference.ce_credit_config.display_for) || 30;
69
- this.promptText = _conference.ce_credit_config.prompt_text;
70
- this.buttonText = _conference.ce_credit_config.button_text;
71
- this.countdownLoopId = setInterval(this.countdownLoop, 1000);
72
- },
73
- countdownLoop() {
74
- if (this.displayFor > 0) {
75
- this.displayFor--;
76
- } else {
77
- this.closeNotification();
78
- }
79
- },
80
- acceptClick() {
81
- this.closeNotification();
82
- },
83
- closeNotification() {
84
- this.displayFor = 0;
85
- this.visible = false;
86
- clearInterval(this.countdownLoopId);
87
- },
88
- },
89
- created() {
90
- window.Echo.channel(`ce-notification.${this.conferenceId}`).listen('CeCreditNotification', event => {
91
- this.handleNotification(event.conference);
92
- });
93
- },
18
+ import Echo from 'laravel-echo';
19
+ window.Pusher = require('pusher-js');
20
+
21
+ /**
22
+ @todo Extract the wsHost and app ID out so that this can run in multiple environments (local, staging, production)
23
+ */
24
+
25
+ window.Echo = new Echo({
26
+ key: '07Ve4MlR6FmN0Il8Wy',
27
+ broadcaster: 'pusher',
28
+ cluster: 'us2',
29
+ wsHost: 'socket.v3plusportal.com',
30
+ wsPort: 6001,
31
+ wssPort: 6002,
32
+ disableStats: false,
33
+ encrypted: true,
34
+ enabledTransports: ['ws', 'wss'],
35
+ });
36
+
37
+ export default {
38
+ data() {
39
+ return {
40
+ pusher: null,
41
+ channel: null,
42
+ displayFor: 0,
43
+ promptText: '',
44
+ buttonText: '',
45
+ visible: false,
46
+ countdownLoopId: null,
47
+ };
48
+ },
49
+ computed: {
50
+ timeRemainingClass() {
51
+ if (this.displayFor > 10) {
52
+ return 'font-bold text-green-dark';
53
+ }
54
+ return 'font-bold text-red';
55
+ },
56
+ },
57
+ props: {
58
+ conferenceId: {
59
+ type: Number,
60
+ required: true,
61
+ },
62
+ },
63
+ methods: {
64
+ handleNotification(_conference) {
65
+ clearInterval(this.countdownLoopId);
66
+ window.scrollTo({ top: 0, behavior: 'smooth' });
67
+ this.visible = true;
68
+ this.displayFor = parseInt(_conference.ce_credit_config.display_for) || 30;
69
+ this.promptText = _conference.ce_credit_config.prompt_text;
70
+ this.buttonText = _conference.ce_credit_config.button_text;
71
+ this.countdownLoopId = setInterval(this.countdownLoop, 1000);
72
+ },
73
+ countdownLoop() {
74
+ if (this.displayFor > 0) {
75
+ this.displayFor--;
76
+ } else {
77
+ this.closeNotification();
78
+ }
79
+ },
80
+ acceptClick() {
81
+ this.closeNotification();
82
+ },
83
+ closeNotification() {
84
+ this.displayFor = 0;
85
+ this.visible = false;
86
+ clearInterval(this.countdownLoopId);
87
+ },
88
+ },
89
+ created() {
90
+ window.Echo.channel(`ce-notification.${this.conferenceId}`).listen('CeCreditNotification', event => {
91
+ this.handleNotification(event.conference);
92
+ });
93
+ },
94
94
  };
95
- </script>
96
-
95
+ </script>
96
+
97
97
  <style scoped>
98
98
 
99
- </style>
99
+ </style>
@@ -1,65 +1,65 @@
1
- <template>
2
- <div>
3
- <accordion :content-object="currentPresentation" v-for="item in tabArray" :tab-content="item">
4
- <div class="content flex flex-1 accordion-slot overflow-x-hidden">
5
- <overview-panel v-if="item.type == 'overview'"></overview-panel>
6
- <presenters-panel v-if="item.type == 'presenters'" layout-format="PresenterItemCard" item-width="90"></presenters-panel>
7
- <documents-panel v-if="item.type == 'documents'"></documents-panel>
8
- <sponsors-panel v-if="item.type == 'sponsors'"></sponsors-panel>
9
- <chat v-if="item.type == 'chatroom'"></chat>
10
- <dynamic-html v-if="item.type == 'html'" :template="item.content"></dynamic-html>
11
- </div>
12
- </accordion>
13
- </div>
14
- </template>
15
-
1
+ <template>
2
+ <div>
3
+ <accordion :content-object="currentPresentation" v-for="item in tabArray" :tab-content="item">
4
+ <div class="content flex flex-1 accordion-slot overflow-x-hidden">
5
+ <overview-panel v-if="item.type == 'overview'"></overview-panel>
6
+ <presenters-panel v-if="item.type == 'presenters'" layout-format="PresenterItemCard" item-width="90"></presenters-panel>
7
+ <documents-panel v-if="item.type == 'documents'"></documents-panel>
8
+ <sponsors-panel v-if="item.type == 'sponsors'"></sponsors-panel>
9
+ <chat v-if="item.type == 'chatroom'"></chat>
10
+ <dynamic-html v-if="item.type == 'html'" :template="item.content"></dynamic-html>
11
+ </div>
12
+ </accordion>
13
+ </div>
14
+ </template>
15
+
16
16
  <script>
17
- import { mapState } from "vuex";
18
-
19
- import Accordion from '@/components/common/Accordion';
20
- import OverviewPanel from "./OverviewPanel";
21
- import PresentersPanel from "./PresentersPanel";
22
- import DocumentsPanel from "./DocumentsPanel";
23
- import SponsorsPanel from "./SponsorsPanel";
24
- import Chat from "@/components/common/Chat";
25
-
26
- export default {
27
- components: {
28
- Accordion,
29
- OverviewPanel,
30
- PresentersPanel,
31
- DocumentsPanel,
32
- SponsorsPanel,
33
- Chat
34
- },
35
- data() {
36
- return {};
37
- },
38
- props: {
39
- currentPresentation: {
40
- type: Object,
41
- default: () => {
42
- return {};
43
- }
44
- },
45
- tabArray: {
46
- type: Array,
47
- default: () => {
48
- return [];
49
- }
50
- }
51
- },
52
- computed: {
53
- ...mapState("playerConfig", ["selectedContent"])
54
- },
55
- methods: {
56
- }
17
+ import { mapState } from "vuex";
18
+
19
+ import Accordion from '@/components/common/Accordion';
20
+ import OverviewPanel from "./OverviewPanel";
21
+ import PresentersPanel from "./PresentersPanel";
22
+ import DocumentsPanel from "./DocumentsPanel";
23
+ import SponsorsPanel from "./SponsorsPanel";
24
+ import Chat from "@/components/common/Chat";
25
+
26
+ export default {
27
+ components: {
28
+ Accordion,
29
+ OverviewPanel,
30
+ PresentersPanel,
31
+ DocumentsPanel,
32
+ SponsorsPanel,
33
+ Chat
34
+ },
35
+ data() {
36
+ return {};
37
+ },
38
+ props: {
39
+ currentPresentation: {
40
+ type: Object,
41
+ default: () => {
42
+ return {};
43
+ }
44
+ },
45
+ tabArray: {
46
+ type: Array,
47
+ default: () => {
48
+ return [];
49
+ }
50
+ }
51
+ },
52
+ computed: {
53
+ ...mapState("playerConfig", ["selectedContent"])
54
+ },
55
+ methods: {
56
+ }
57
57
  };
58
- </script>
59
-
60
- <style>
61
- .accordion-slot {
62
- max-height: 32rem;
63
- overflow-y: scroll;
64
- }
65
- </style>
58
+ </script>
59
+
60
+ <style>
61
+ .accordion-slot {
62
+ max-height: 32rem;
63
+ overflow-y: scroll;
64
+ }
65
+ </style>
@@ -21,7 +21,9 @@ declare namespace _default {
21
21
  export { _default_1 as default };
22
22
  }
23
23
  }
24
- const computed: any;
24
+ namespace computed {
25
+ const selectedContent: import("vuex").Computed;
26
+ }
25
27
  const methods: {};
26
28
  }
27
29
  export default _default;
@@ -1,160 +1,160 @@
1
- <script lang="ts" setup>
2
- import { toRefs, onMounted, computed, ref } from "vue";
3
- import { storeToRefs } from "pinia";
4
- import { get, filter } from "lodash-es";
5
- import { SelectedContent } from "../../../enums/general";
6
- import {
7
- ContentAreaClassObj,
8
- ContentAreaCompObj,
9
- OverviewPanelClassObj,
10
- AgendaPanelClassObj,
11
- } from "../../../@types/components";
12
- import { Conference, Presentation, Sponsor } from "../../../models/conference";
13
- import { useClassBinding } from "../../../composables/useClassBinding";
14
- import { useTemplateConfigsStore } from "../../../store";
15
-
16
- type Props = {
17
- selectedContent?: { label: string; type: SelectedContent; content: string };
18
- expandEnabled?: boolean;
19
- presentation: Presentation;
20
- webcastConference: Conference;
21
- classObject?: ContentAreaClassObj;
22
- };
23
-
24
- const props = withDefaults(defineProps<Props>(), {
25
- selectedContent: () => {
26
- return { label: "Overview", type: SelectedContent.OVERVIEW, content: "" };
27
- },
28
- expandEnabled: false,
29
- classObject: () => {
30
- return {
31
- container: "",
32
- htmlElement: "",
33
- trackHtmlElement: "",
34
- noTrackHtmlElement: "",
35
- noTrackHtmlText: "",
36
- components: ref<ContentAreaCompObj>({
37
- overviewPanel: ref<OverviewPanelClassObj>({}),
38
- agendaPanel: ref<AgendaPanelClassObj>({}),
39
- }),
40
- };
41
- },
42
- });
43
-
44
- const { presentation, webcastConference } = toRefs(props);
45
-
46
- const { classBinding } = useClassBinding();
47
-
48
- const { pagesConfigValue } = storeToRefs(useTemplateConfigsStore());
49
-
50
- // reactive data
51
- let sponsors = ref<Array<Sponsor>>([]);
52
-
53
- // computed
54
- const trackEmbedHtml = computed((): string | null => {
55
- return get(presentation, "tracks[0].embed_html", null);
56
- });
57
-
58
- // methods
59
- const getFeaturedSponsors = () => {
60
- const featuredSponsorLevel = get(
61
- pagesConfigValue,
62
- "webcast.featured_sponsor_level.value",
63
- 0
64
- );
65
- if (featuredSponsorLevel != 0) {
66
- const url = `conferences/${webcastConference.value.id}/affiliates?filters[level]=${featuredSponsorLevel}`;
67
- fetch(url)
68
- .then((response) => {
69
- return response.json();
70
- })
71
- .then((data) => {
72
- sponsors = filter(data, { role: "sponsor" });
73
- });
74
- }
75
- };
76
-
77
- // mounted
78
- onMounted(() => {
79
- getFeaturedSponsors();
80
- });
81
- </script>
82
-
83
- <template>
84
- <div :class="classBinding(classObject, 'container', 'flex flex-col')">
85
- <CommonComponentsOverviewPanel
86
- v-if="selectedContent.type == 'overview'"
87
- :class="
88
- classBinding(
89
- classObject.components.overviewPanel,
90
- 'container',
91
- 'overflow-y-scroll no-scrollbar h-full'
92
- )
93
- "
94
- :presentation="presentation"
95
- :class-object="classObject.components.overviewPanel"
96
- ></CommonComponentsOverviewPanel>
97
- <CommonComponentsAgendaPanel
98
- v-if="selectedContent.type == 'agenda'"
99
- :class="
100
- classBinding(
101
- classObject.components.agendaPanel,
102
- 'container',
103
- 'overflow-y-scroll no-scrollbar h-full'
104
- )
105
- "
106
- :conference="webcastConference"
107
- :class-object="classObject.components.agendaPanel"
108
- ></CommonComponentsAgendaPanel>
109
- <span
110
- v-if="selectedContent.type == 'html'"
111
- :class="
112
- classBinding(
113
- classObject,
114
- 'htmlElement',
115
- 'overflow-y-scroll no-scrollbar h-full'
116
- )
117
- "
118
- v-html="selectedContent.content"
119
- ></span>
120
- <template v-if="selectedContent.type == 'track_html'">
121
- <span
122
- v-if="trackEmbedHtml != null"
123
- :class="
124
- classBinding(
125
- classObject,
126
- 'trackHtmlElement',
127
- 'overflow-y-scroll no-scrollbar h-full'
128
- )
129
- "
130
- v-html="trackEmbedHtml"
131
- ></span>
132
- <div
133
- v-if="trackEmbedHtml === null"
134
- :class="
135
- classBinding(
136
- classObject,
137
- 'noTrackHtmlElement',
138
- 'text-grey-800 px-2 py-4'
139
- )
140
- "
141
- >
142
- <p
143
- :class="
144
- classBinding(
145
- classObject,
146
- 'noTrackHtmlText',
147
- 'text-base leading-normal font-light'
148
- )
149
- "
150
- >
151
- There is no additional content for this track.
152
- </p>
153
- </div>
154
- </template>
155
- </div>
156
- </template>
157
-
1
+ <script lang="ts" setup>
2
+ import { toRefs, onMounted, computed, ref } from "vue";
3
+ import { storeToRefs } from "pinia";
4
+ import { get, filter } from "lodash-es";
5
+ import { SelectedContent } from "../../../enums/general";
6
+ import {
7
+ ContentAreaClassObj,
8
+ ContentAreaCompObj,
9
+ OverviewPanelClassObj,
10
+ AgendaPanelClassObj,
11
+ } from "../../../@types/components";
12
+ import { Conference, Presentation, Sponsor } from "../../../models/conference";
13
+ import { useClassBinding } from "../../../composables/useClassBinding";
14
+ import { useTemplateConfigsStore } from "../../../store";
15
+
16
+ type Props = {
17
+ selectedContent?: { label: string; type: SelectedContent; content: string };
18
+ expandEnabled?: boolean;
19
+ presentation: Presentation;
20
+ webcastConference: Conference;
21
+ classObject?: ContentAreaClassObj;
22
+ };
23
+
24
+ const props = withDefaults(defineProps<Props>(), {
25
+ selectedContent: () => {
26
+ return { label: "Overview", type: SelectedContent.OVERVIEW, content: "" };
27
+ },
28
+ expandEnabled: false,
29
+ classObject: () => {
30
+ return {
31
+ container: "",
32
+ htmlElement: "",
33
+ trackHtmlElement: "",
34
+ noTrackHtmlElement: "",
35
+ noTrackHtmlText: "",
36
+ components: ref<ContentAreaCompObj>({
37
+ overviewPanel: ref<OverviewPanelClassObj>({}),
38
+ agendaPanel: ref<AgendaPanelClassObj>({}),
39
+ }),
40
+ };
41
+ },
42
+ });
43
+
44
+ const { presentation, webcastConference } = toRefs(props);
45
+
46
+ const { classBinding } = useClassBinding();
47
+
48
+ const { pagesConfigValue } = storeToRefs(useTemplateConfigsStore());
49
+
50
+ // reactive data
51
+ let sponsors = ref<Array<Sponsor>>([]);
52
+
53
+ // computed
54
+ const trackEmbedHtml = computed((): string | null => {
55
+ return get(presentation, "tracks[0].embed_html", null);
56
+ });
57
+
58
+ // methods
59
+ const getFeaturedSponsors = () => {
60
+ const featuredSponsorLevel = get(
61
+ pagesConfigValue,
62
+ "webcast.featured_sponsor_level.value",
63
+ 0
64
+ );
65
+ if (featuredSponsorLevel != 0) {
66
+ const url = `conferences/${webcastConference.value.id}/affiliates?filters[level]=${featuredSponsorLevel}`;
67
+ fetch(url)
68
+ .then((response) => {
69
+ return response.json();
70
+ })
71
+ .then((data) => {
72
+ sponsors = filter(data, { role: "sponsor" });
73
+ });
74
+ }
75
+ };
76
+
77
+ // mounted
78
+ onMounted(() => {
79
+ getFeaturedSponsors();
80
+ });
81
+ </script>
82
+
83
+ <template>
84
+ <div :class="classBinding(classObject, 'container', 'flex flex-col')">
85
+ <CommonComponentsOverviewPanel
86
+ v-if="selectedContent.type == 'overview'"
87
+ :class="
88
+ classBinding(
89
+ classObject.components.overviewPanel,
90
+ 'container',
91
+ 'overflow-y-scroll no-scrollbar h-full'
92
+ )
93
+ "
94
+ :presentation="presentation"
95
+ :class-object="classObject.components.overviewPanel"
96
+ ></CommonComponentsOverviewPanel>
97
+ <CommonComponentsAgendaPanel
98
+ v-if="selectedContent.type == 'agenda'"
99
+ :class="
100
+ classBinding(
101
+ classObject.components.agendaPanel,
102
+ 'container',
103
+ 'overflow-y-scroll no-scrollbar h-full'
104
+ )
105
+ "
106
+ :conference="webcastConference"
107
+ :class-object="classObject.components.agendaPanel"
108
+ ></CommonComponentsAgendaPanel>
109
+ <span
110
+ v-if="selectedContent.type == 'html'"
111
+ :class="
112
+ classBinding(
113
+ classObject,
114
+ 'htmlElement',
115
+ 'overflow-y-scroll no-scrollbar h-full'
116
+ )
117
+ "
118
+ v-html="selectedContent.content"
119
+ ></span>
120
+ <template v-if="selectedContent.type == 'track_html'">
121
+ <span
122
+ v-if="trackEmbedHtml != null"
123
+ :class="
124
+ classBinding(
125
+ classObject,
126
+ 'trackHtmlElement',
127
+ 'overflow-y-scroll no-scrollbar h-full'
128
+ )
129
+ "
130
+ v-html="trackEmbedHtml"
131
+ ></span>
132
+ <div
133
+ v-if="trackEmbedHtml === null"
134
+ :class="
135
+ classBinding(
136
+ classObject,
137
+ 'noTrackHtmlElement',
138
+ 'text-grey-800 px-2 py-4'
139
+ )
140
+ "
141
+ >
142
+ <p
143
+ :class="
144
+ classBinding(
145
+ classObject,
146
+ 'noTrackHtmlText',
147
+ 'text-base leading-normal font-light'
148
+ )
149
+ "
150
+ >
151
+ There is no additional content for this track.
152
+ </p>
153
+ </div>
154
+ </template>
155
+ </div>
156
+ </template>
157
+
158
158
  <style scoped>
159
159
  .content {
160
160
  position: relative;
@@ -172,4 +172,4 @@ onMounted(() => {
172
172
  .content-expand-overlay:hover {
173
173
  opacity: 0.7;
174
174
  }
175
- </style>
175
+ </style>