@icvdeveloper/common-module 1.4.14 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/module.d.mts +1051 -2
  3. package/dist/module.d.ts +1051 -2
  4. package/dist/module.json +1 -1
  5. package/dist/module.mjs +29 -15
  6. package/dist/runtime/@types/components.d.ts +22 -0
  7. package/dist/runtime/@types/configVariables.d.ts +6 -0
  8. package/dist/runtime/analytics.d.ts +1 -6
  9. package/dist/runtime/assets/scss/_agenda.css +1 -0
  10. package/dist/runtime/assets/scss/_animations.css +1 -0
  11. package/dist/runtime/assets/scss/_container_variants.css +1 -0
  12. package/dist/runtime/assets/scss/_custom.css +3 -0
  13. package/dist/runtime/assets/scss/_forms.css +1 -0
  14. package/dist/runtime/assets/scss/_header.css +0 -0
  15. package/dist/runtime/assets/scss/_index_production.css +1 -0
  16. package/dist/runtime/assets/scss/_transitions.css +1 -0
  17. package/dist/runtime/assets/scss/_variables.css +1 -0
  18. package/dist/runtime/assets/scss/_variables2.css +0 -0
  19. package/dist/runtime/assets/scss/_webcast.css +1 -0
  20. package/dist/runtime/assets/scss/index.css +1 -705
  21. package/dist/runtime/assets/svg/icon-minus.svg +6 -0
  22. package/dist/runtime/assets/svg/icon-video.svg +6 -0
  23. package/dist/runtime/components/affiliates/AffiliateModal.vue +66 -0
  24. package/dist/runtime/components/affiliates/AffiliatePage.vue +329 -159
  25. package/dist/runtime/components/agenda/AgendaList.vue +18 -14
  26. package/dist/runtime/components/agenda/AgendaTabbed.vue +60 -54
  27. package/dist/runtime/components/agenda/components/AgendaListAccordion.vue +8 -3
  28. package/dist/runtime/components/agenda/components/Calendar.vue +23 -18
  29. package/dist/runtime/components/agenda/components/Favorite.vue +46 -0
  30. package/dist/runtime/components/agenda/components/InfoLink.vue +15 -5
  31. package/dist/runtime/components/agenda/components/PlayIcon.vue +3 -5
  32. package/dist/runtime/components/agenda/components/PresentationLink.vue +37 -19
  33. package/dist/runtime/components/agenda/components/Sponsor.vue +31 -24
  34. package/dist/runtime/components/auth/PasswordReset.vue +20 -5
  35. package/dist/runtime/components/auth/Registration.vue +14 -4
  36. package/dist/runtime/components/auth/Ucc.vue +44 -27
  37. package/dist/runtime/components/chat/ChatConversationList.vue +108 -0
  38. package/dist/runtime/components/chat/ChatCreateConversation.vue +199 -0
  39. package/dist/runtime/components/chat/ChatCreateGroupConversation.vue +154 -0
  40. package/dist/runtime/components/chat/ChatHeader.vue +97 -0
  41. package/dist/runtime/components/chat/ChatMessage.vue +40 -0
  42. package/dist/runtime/components/chat/ChatShowConversation.vue +76 -0
  43. package/dist/runtime/components/chat/ChatWidget.vue +40 -0
  44. package/dist/runtime/components/chat/ChatWindow.vue +154 -0
  45. package/dist/runtime/components/chat/ChatWindow.vue.d.ts +6 -0
  46. package/dist/runtime/components/chat/MessageInput.vue +27 -0
  47. package/dist/runtime/components/chat/SearchInput.vue +32 -0
  48. package/dist/runtime/components/core/Accordion.vue +12 -12
  49. package/dist/runtime/components/core/AttendeeList.vue +31 -36
  50. package/dist/runtime/components/core/CountdownTimer.vue +68 -52
  51. package/dist/runtime/components/core/DynamicHtml.vue.d.ts +6 -9
  52. package/dist/runtime/components/core/Modal.vue +24 -22
  53. package/dist/runtime/components/core/ModalButton.vue +43 -0
  54. package/dist/runtime/components/core/Navbar.vue +33 -21
  55. package/dist/runtime/components/core/Navigation.vue +286 -0
  56. package/dist/runtime/components/core/SvgIcon.vue +34 -1
  57. package/dist/runtime/components/core/VButton.vue +35 -0
  58. package/dist/runtime/components/core/ZoomModal.vue +9 -3
  59. package/dist/runtime/components/events/EventHeader.vue +14 -4
  60. package/dist/runtime/components/events/ListEvents.vue +21 -22
  61. package/dist/runtime/components/forms/CheckboxGroup.vue +46 -0
  62. package/dist/runtime/components/forms/ErrorField.vue +11 -2
  63. package/dist/runtime/components/forms/Message.vue +1 -1
  64. package/dist/runtime/components/forms/RadioGroup.vue +50 -0
  65. package/dist/runtime/components/forms/SearchInput.vue +8 -2
  66. package/dist/runtime/components/forms/SelectDropDown.vue +47 -0
  67. package/dist/runtime/components/forms/SupportForm.vue +22 -11
  68. package/dist/runtime/components/forms/SwitchInput.vue +50 -30
  69. package/dist/runtime/components/forms/TextArea.vue +1 -1
  70. package/dist/runtime/components/forms/TextInput.vue +1 -1
  71. package/dist/runtime/components/layouts/Accordion.vue +11 -6
  72. package/dist/runtime/components/media/ArchivePlayerAndContentContainer.vue +24 -5
  73. package/dist/runtime/components/media/ArchiveVideoPlayer.vue +19 -23
  74. package/dist/runtime/components/media/PlayerAndContentContainer.vue +4 -1
  75. package/dist/runtime/components/media/WebcastVideoPlayer.vue +6 -18
  76. package/dist/runtime/components/media/components/AgendaPanel.vue +7 -6
  77. package/dist/runtime/components/media/components/ArchiveMediaContainer.vue +17 -15
  78. package/dist/runtime/components/media/components/CeCreditNotification.vue +8 -8
  79. package/dist/runtime/components/media/components/ContentArea.vue +59 -18
  80. package/dist/runtime/components/media/components/ContentTabs.vue +40 -28
  81. package/dist/runtime/components/media/components/DocumentsPanel.vue +19 -17
  82. package/dist/runtime/components/media/components/MediaContainer.vue +11 -13
  83. package/dist/runtime/components/media/components/OverviewPanel.vue +5 -2
  84. package/dist/runtime/components/media/components/PresentersPanel.vue +74 -55
  85. package/dist/runtime/components/media/components/SessionReporting.vue +5 -4
  86. package/dist/runtime/components/media/components/SponsorsPanel.vue +13 -12
  87. package/dist/runtime/components/presenters/PresenterListing.vue +33 -25
  88. package/dist/runtime/components/presenters/PresenterModal.vue +26 -21
  89. package/dist/runtime/components/presenters/Presenters.vue +139 -0
  90. package/dist/runtime/components/profile/Profile.vue +10 -6
  91. package/dist/runtime/components/profile/components/Sidebar.vue +1 -1
  92. package/dist/runtime/components/profile/components/SidebarNavItem.vue +2 -4
  93. package/dist/runtime/components/profile/tabs/Favorites.vue +5 -4
  94. package/dist/runtime/components/profile/tabs/GeneralInformation.vue +26 -16
  95. package/dist/runtime/components/profile/tabs/ProfileImage.vue +7 -6
  96. package/dist/runtime/components/registration/AlreadyRegisteredModal.vue +102 -0
  97. package/dist/runtime/components/registration/PaymentForm.vue +136 -0
  98. package/dist/runtime/components/registration/RegistrationForm.vue +417 -0
  99. package/dist/runtime/components/registration/RegistrationGroupSelect.vue +146 -0
  100. package/dist/runtime/components/registration/StripePaymentForm.vue +121 -0
  101. package/dist/runtime/components/support/FAQAccordion.vue +8 -7
  102. package/dist/runtime/composables/useAdobeLaunch.d.ts +2 -7
  103. package/dist/runtime/composables/useAdobeLaunch.mjs +2 -2
  104. package/dist/runtime/composables/useAgenda.d.ts +13 -1
  105. package/dist/runtime/composables/useAgenda.mjs +125 -25
  106. package/dist/runtime/composables/useApi.d.ts +1 -1
  107. package/dist/runtime/composables/useAuth.d.ts +1 -1
  108. package/dist/runtime/composables/useAuth.mjs +1 -1
  109. package/dist/runtime/composables/useClassBinding.d.ts +3 -1
  110. package/dist/runtime/composables/useConferenceHelpers.d.ts +7 -3
  111. package/dist/runtime/composables/useConferenceHelpers.mjs +26 -15
  112. package/dist/runtime/composables/useEventHooks.d.ts +29 -0
  113. package/dist/runtime/composables/useEventHooks.mjs +21 -0
  114. package/dist/runtime/composables/useEvents.d.ts +17 -1
  115. package/dist/runtime/composables/useEvents.mjs +35 -9
  116. package/dist/runtime/composables/useLogin.mjs +9 -5
  117. package/dist/runtime/composables/useNavigation.d.ts +1 -1
  118. package/dist/runtime/composables/useNavigation.mjs +4 -2
  119. package/dist/runtime/composables/usePresentation.d.ts +2 -2
  120. package/dist/runtime/composables/usePresentation.mjs +8 -7
  121. package/dist/runtime/composables/usePresenter.d.ts +2 -2
  122. package/dist/runtime/composables/usePresenters.d.ts +2 -2
  123. package/dist/runtime/composables/usePusher.d.ts +4 -0
  124. package/dist/runtime/composables/usePusher.mjs +38 -26
  125. package/dist/runtime/composables/useScripts.mjs +1 -1
  126. package/dist/runtime/composables/useStream.d.ts +2 -3
  127. package/dist/runtime/composables/useStream.mjs +8 -2
  128. package/dist/runtime/composables/useUcc.d.ts +1 -1
  129. package/dist/runtime/composables/useUcc.mjs +29 -23
  130. package/dist/runtime/enums/general.d.ts +4 -1
  131. package/dist/runtime/enums/general.mjs +4 -1
  132. package/dist/runtime/models/adobeLaunch.d.ts +6 -0
  133. package/dist/runtime/models/adobeLaunch.mjs +0 -0
  134. package/dist/runtime/models/analytics.d.ts +6 -0
  135. package/dist/runtime/models/analytics.mjs +0 -0
  136. package/dist/runtime/models/attendeeList.d.ts +1 -1
  137. package/dist/runtime/models/conference.d.ts +122 -91
  138. package/dist/runtime/models/conversation.d.ts +11 -13
  139. package/dist/runtime/models/document.d.ts +5 -5
  140. package/dist/runtime/models/globalConfig.d.ts +9 -3
  141. package/dist/runtime/models/group.d.ts +38 -8
  142. package/dist/runtime/models/icons.d.ts +8 -1
  143. package/dist/runtime/models/index.d.ts +20 -0
  144. package/dist/runtime/models/index.mjs +20 -0
  145. package/dist/runtime/models/link.d.ts +4 -4
  146. package/dist/runtime/models/loginParams.d.ts +5 -0
  147. package/dist/runtime/models/loginParams.mjs +0 -0
  148. package/dist/runtime/models/navigationConfig.d.ts +7 -7
  149. package/dist/runtime/models/pagination.d.ts +11 -11
  150. package/dist/runtime/models/portal.d.ts +15 -10
  151. package/dist/runtime/models/templateConfig.d.ts +13 -7
  152. package/dist/runtime/models/ucc.d.ts +22 -0
  153. package/dist/runtime/models/ucc.mjs +0 -0
  154. package/dist/runtime/models/user.d.ts +25 -12
  155. package/dist/runtime/models/vButton.d.ts +7 -0
  156. package/dist/runtime/models/vButton.mjs +0 -0
  157. package/dist/runtime/models/video.d.ts +5 -4
  158. package/dist/runtime/models/virtualPagesConfig.d.ts +223 -0
  159. package/dist/runtime/models/virtualPagesConfig.mjs +0 -0
  160. package/dist/runtime/plugin.mjs +18 -9
  161. package/dist/runtime/store/affiliates.d.ts +4 -1
  162. package/dist/runtime/store/affiliates.mjs +38 -0
  163. package/dist/runtime/store/attendeeList.d.ts +1 -1
  164. package/dist/runtime/store/auth.d.ts +3 -7
  165. package/dist/runtime/store/auth.mjs +6 -0
  166. package/dist/runtime/store/conferences.d.ts +3 -1
  167. package/dist/runtime/store/conferences.mjs +14 -9
  168. package/dist/runtime/store/conversations.d.ts +78 -10
  169. package/dist/runtime/store/conversations.mjs +255 -22
  170. package/dist/runtime/store/modalPlayerConfig.d.ts +27 -0
  171. package/dist/runtime/store/modalPlayerConfig.mjs +58 -0
  172. package/dist/runtime/store/navigationConfig.d.ts +1 -1
  173. package/dist/runtime/store/presentations.d.ts +2 -2
  174. package/dist/runtime/store/templateConfigs.d.ts +7 -6
  175. package/dist/runtime/store/templateConfigs.mjs +7 -6
  176. package/dist/runtime/store/user.mjs +0 -1
  177. package/dist/runtime/v3plusCommonPlugin.d.ts +1 -1
  178. package/dist/types.d.mts +3 -2
  179. package/dist/types.d.ts +3 -2
  180. package/package.json +12 -9
  181. package/dist/runtime/components/media/components/JsonApi.vue +0 -33
  182. package/dist/runtime/components/media/components/JsonApi.vue.d.ts +0 -16
  183. package/dist/runtime/components/media/components/PresentersPanel.vue.d.ts +0 -32
  184. package/dist/runtime/components/media/components/WindowContent.vue +0 -118
  185. package/dist/runtime/components/media/components/WindowContent.vue.d.ts +0 -50
  186. package/dist/runtime/components/media/components/WindowSlide.vue +0 -92
  187. package/dist/runtime/components/media/components/WindowSlide.vue.d.ts +0 -36
  188. package/dist/runtime/models/authUser.d.ts +0 -16
  189. /package/dist/runtime/{models/authUser.mjs → assets/scss/_footer.css} +0 -0
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" setup>
2
- import { toRefs, computed } from "vue";
2
+ import { toRefs, computed, inject } from "vue";
3
3
  import { useAgenda } from "../../../composables/useAgenda";
4
4
  import { useConferenceHelpers } from "../../../composables/useConferenceHelpers";
5
5
  import { usePresentation } from "../../../composables/usePresentation";
@@ -11,6 +11,7 @@ import type {
11
11
  } from "../../../models/conference";
12
12
  import InfoLink from "./InfoLink.vue";
13
13
  import PlayIcon from "./PlayIcon.vue";
14
+ import Favorite from "./Favorite.vue";
14
15
 
15
16
  type Props = {
16
17
  conference: Conference;
@@ -31,10 +32,13 @@ const props = withDefaults(defineProps<Props>(), {
31
32
 
32
33
  const { conference, track, presentation } = toRefs(props);
33
34
 
35
+ const isActiveAgenda: boolean = inject('isActiveAgenda', false);
36
+ const isVirtual: boolean = inject('isVirtual', true);
37
+
34
38
  // Methods
35
39
  const { conferenceIsLiveOrMixed, conferenceIsArchived } =
36
40
  useConferenceHelpers(conference);
37
- const { isSmallGroupedTrack } = useAgenda(conference);
41
+ const { isSmallGroupedTrack, playPresentation } = useAgenda(conference);
38
42
  const {
39
43
  getPresentationLinkTarget,
40
44
  getLivePresentationLinkDestination,
@@ -55,57 +59,71 @@ const presentationNameClass = computed(() => {
55
59
  <div v-if="!simpleLayout">
56
60
  <!-- LIVE AGENDA GO TO WEBCAST PAGE -->
57
61
  <div>
58
- <h2 class="flex flex-initial flex-row" :class="presentationNameClass">
62
+ <h2
63
+ class="flex flex-initial flex-row"
64
+ :class="presentationNameClass"
65
+ >
59
66
  <!-- zoom text & icon link -->
60
67
  <CommonZoomModal
61
68
  v-if="
62
69
  isAgenda &&
63
- conferenceIsLiveOrMixed(conference) &&
64
- presentation.type == 'zoom'
70
+ conferenceIsLiveOrMixed(conference) &&
71
+ presentation.type == 'zoom'
65
72
  "
66
73
  :presentation-id="presentation.id"
67
74
  modal-size="full"
68
75
  >
69
76
  <template #modal-link>
70
- <span class="font-semibold no-underline heading-link"
71
- >{{ presentation.name }}
77
+ <span class="font-semibold heading-link">{{ presentation.name }}
72
78
  <PlayIcon
73
79
  :presentation="presentation"
74
80
  :conference="conference"
75
81
  :class="'justify-center md:justify-start'"
76
82
  icon="zoom"
77
- ></PlayIcon>
83
+ />
78
84
  </span>
79
85
  </template>
80
86
  </CommonZoomModal>
81
87
 
82
88
  <!-- live/archive stream text & icon link -->
83
- <a
89
+ <!-- <a
84
90
  v-else-if="
85
91
  (isAgenda && conferenceIsLiveOrMixed(conference)) ||
86
92
  (conferenceIsArchived(conference) && presentation.type != 'zoom')
87
93
  "
88
- class="font-semibold no-underline heading-link"
94
+ class="font-semibold heading-link"
89
95
  :href="getLivePresentationLinkDestination(presentation, track)"
90
96
  :target="getPresentationLinkTarget(presentation)"
91
- @click="playPresentation(track, presentation, conference)"
97
+ @click="playPresentation(track, presentation, conference, isActiveAgenda, isVirtual)"
98
+ > -->
99
+ <!-- TODO - ensure this conversion to <button> does not compromise behavior on other templates -->
100
+ <!-- is not a11y compliant, though. would be better if it was button on tradeshow template only -->
101
+ <button
102
+ v-else-if="(isAgenda && conferenceIsLiveOrMixed(conference)) ||
103
+ (conferenceIsArchived(conference) && presentation.type != 'zoom')"
104
+ @click="playPresentation(track, presentation, conference, isActiveAgenda, isVirtual)"
92
105
  >
93
- {{ presentation.name
94
- }}<transition name="fade">
106
+ {{ presentation.name }}
107
+ <transition name="fade">
95
108
  <PlayIcon
96
109
  v-if="presentationIsLiveOrMixed(presentation)"
97
110
  :presentation="presentation"
98
111
  :conference="conference"
99
112
  :class="'justify-center md:justify-start'"
100
113
  icon="playarrow"
101
- ></PlayIcon>
114
+ />
102
115
  </transition>
103
- </a>
116
+ </button>
117
+ <!-- </a> -->
104
118
 
105
119
  <!-- text only catchall -->
106
- <span v-else class="font-semibold" :class="presentationNameClass"
107
- >{{ presentation.name }}</span
120
+ <span
121
+ v-else
122
+ class="font-semibold"
123
+ :class="presentationNameClass"
108
124
  >
125
+ {{ presentation.name }}
126
+ </span>
109
127
 
110
128
  <!-- session details -->
111
129
  <InfoLink
@@ -118,7 +136,7 @@ const presentationNameClass = computed(() => {
118
136
  />
119
137
 
120
138
  <!-- favorites -->
121
- <favorite
139
+ <Favorite
122
140
  v-if="allowFavorites && currentUser.token"
123
141
  class="ml-1"
124
142
  :presentation="presentation"
@@ -132,7 +150,7 @@ const presentationNameClass = computed(() => {
132
150
  <div v-else>
133
151
  <a
134
152
  class="underline cursor-pointer"
135
- @click="playPresentation(track, presentation, conference)"
153
+ @click="playPresentation(track, presentation, conference, isActiveAgenda, isVirtual)"
136
154
  >
137
155
  {{ presentation.name }}
138
156
  </a>
@@ -81,10 +81,10 @@ const handleClick = () => {
81
81
  :class="
82
82
  inline
83
83
  ? classBinding(
84
- classObject,
85
- 'sponsorLabel',
86
- 'inline-block lg:pr-5 pb-2 lg:pb-0'
87
- )
84
+ classObject,
85
+ 'sponsorLabel',
86
+ 'inline-block lg:pr-5 pb-2 lg:pb-0'
87
+ )
88
88
  : classBinding(classObject, 'sponsorLabel', 'pb-2')
89
89
  "
90
90
  class="text-center uppercase font-medium"
@@ -96,10 +96,10 @@ const handleClick = () => {
96
96
  :class="
97
97
  inline
98
98
  ? classBinding(
99
- classObject,
100
- 'imageContainer',
101
- 'flex-1 items-center pb-2 lg:pb-0'
102
- )
99
+ classObject,
100
+ 'imageContainer',
101
+ 'flex-1 items-center pb-2 lg:pb-0'
102
+ )
103
103
  : classBinding(classObject, 'imageContainer', 'w-full')
104
104
  "
105
105
  >
@@ -114,7 +114,7 @@ const handleClick = () => {
114
114
  ]"
115
115
  :src="sponsor.photo"
116
116
  @click="handleClick()"
117
- />
117
+ >
118
118
  </div>
119
119
  </div>
120
120
 
@@ -123,31 +123,38 @@ const handleClick = () => {
123
123
  <CommonAffiliatePage
124
124
  v-if="enabledSponsor"
125
125
  :affiliate="enabledSponsor"
126
- ></CommonAffiliatePage>
126
+ />
127
127
  </template>
128
128
  </CommonModal>
129
129
  </div>
130
130
  </template>
131
131
 
132
- <style>
133
- .small h2 {
134
- font-size: 14px;
135
- }
136
- .small img {
137
- max-height: 35px !important;
138
- }
132
+ <style lang="postcss">
133
+ .small {
134
+ h2 {
135
+ font-size: 14px;
136
+ }
139
137
 
140
- .medium h2 {
141
- font-size: 0.9em;
138
+ img {
139
+ max-height: 35px !important;
140
+ }
142
141
  }
143
- .medium img {
144
- max-height: 40px;
142
+
143
+ .medium {
144
+ h2 {
145
+ font-size: 0.9em;
146
+ }
147
+
148
+ img {
149
+ max-height: 40px;
150
+ }
145
151
  }
146
152
 
147
153
  .default {
148
154
  width: 100%;
149
- }
150
- .default img {
151
- max-height: 60px;
155
+
156
+ img {
157
+ max-height: 60px;
158
+ }
152
159
  }
153
160
  </style>
@@ -42,16 +42,31 @@ const submitPasswordReset = () => {
42
42
 
43
43
  <template>
44
44
  <div :class="isCentered ? 'w-full max-w-xs mx-auto' : ''">
45
- <div class="mb-4">Enter your email address to reset your password.</div>
46
- <CommonMessage v-if="message" :success="true">
45
+ <div class="mb-4">
46
+ Enter your email address to reset your password.
47
+ </div>
48
+ <CommonMessage
49
+ v-if="message"
50
+ :success="true"
51
+ >
47
52
  {{ message }}
48
53
  </CommonMessage>
49
- <CommonMessage v-if="errors.length > 0" :success="false">
54
+ <CommonMessage
55
+ v-if="errors.length > 0"
56
+ :success="false"
57
+ >
50
58
  {{ errors[0] }}
51
59
  </CommonMessage>
52
60
  <div @keyup.enter="submitPasswordReset()">
53
- <CommonTextInput v-model="email" placeholder="Email" type="email" />
54
- <button class="btn my-2" @click="submitPasswordReset()">
61
+ <CommonTextInput
62
+ v-model="email"
63
+ placeholder="Email"
64
+ type="email"
65
+ />
66
+ <button
67
+ class="btn my-2"
68
+ @click="submitPasswordReset()"
69
+ >
55
70
  <span v-if="loading">Processing...</span>
56
71
  <span v-else>Send Password Reset Link</span>
57
72
  </button>
@@ -13,14 +13,24 @@ const submitRegistration = () => {};
13
13
 
14
14
  <template>
15
15
  <div v-if="isLoggedIn">
16
- <CommonMessage :success="false">Already logged in.</CommonMessage>
16
+ <CommonMessage :success="false">
17
+ Already logged in.
18
+ </CommonMessage>
17
19
  </div>
18
- <div v-else class="px-2">
20
+ <div
21
+ v-else
22
+ class="px-2"
23
+ >
19
24
  <div class="flex flex-1 flex-col text-center pt-8">
20
- <h1 class="mb-3 heading-color-3">Log In</h1>
25
+ <h1 class="mb-3 heading-color-3">
26
+ Log In
27
+ </h1>
21
28
 
22
29
  <div class="w-full max-w-xs mx-auto pb-12">
23
- <form class="w-full" @submit.prevent="submitRegistration"></form>
30
+ <form
31
+ class="w-full"
32
+ @submit.prevent="submitRegistration"
33
+ />
24
34
  </div>
25
35
  </div>
26
36
  </div>
@@ -33,7 +33,7 @@ const { conference } = toRefs(props);
33
33
 
34
34
  // methods
35
35
  const submitLogin = () => {
36
- let email = document.getElementById('uccEmail').value;
36
+ const email = document.getElementById('uccEmail').value;
37
37
  loginV3({email: email});
38
38
  };
39
39
 
@@ -76,42 +76,63 @@ onMounted(() => {
76
76
  <template>
77
77
  <div>
78
78
  <!-- UCC Widget -->
79
- <div id="uccTarget"
80
- :class="
81
- classBinding(
82
- classObject,
83
- 'container',
84
- 'p-0 m-0 w-full'
85
- )
86
- "
87
- style="display:block;"
88
- >
89
- </div>
79
+ <div
80
+ id="uccTarget"
81
+ :class="
82
+ classBinding(
83
+ classObject,
84
+ 'container',
85
+ 'p-0 m-0 w-full'
86
+ )
87
+ "
88
+ style="display:block;"
89
+ />
90
90
  <!-- V3 email login form -->
91
- <div id="uccEmailForm"
91
+ <div
92
+ id="uccEmailForm"
92
93
  class="ucc-form-container ucc-widgets-events block"
93
- style="padding-bottom: 0px"
94
+ style="padding-bottom: 0"
94
95
  >
95
96
  <div>
96
- <h1 class="scala-bold text-xl text-center mb-0" :class="headerColorClass">
97
+ <h1
98
+ class="scala-bold text-xl text-center mb-0"
99
+ :class="headerColorClass"
100
+ >
97
101
  {{ loginHeader }}
98
102
  </h1>
99
103
  </div>
100
104
  <div class="text-center">
101
- <form @submit="submitLogin" action="javascript:void(0);">
105
+ <form
106
+ action="javascript:void(0);"
107
+ @submit="submitLogin"
108
+ >
102
109
  <div class="ucc-form-field">
103
- <div class="ucc-form-field-descr"></div>
110
+ <div class="ucc-form-field-descr" />
104
111
  <div class="ucc-input-wrapper required">
105
- <input id="uccEmail" name="uccEmail" class="ucc-input" type="text" placeholder="Enter Email Address" autocomplete="off" maxlength="70">
112
+ <input
113
+ id="uccEmail"
114
+ name="uccEmail"
115
+ class="ucc-input"
116
+ type="text"
117
+ placeholder="Enter Email Address"
118
+ autocomplete="off"
119
+ maxlength="70"
120
+ >
106
121
  </div>
107
- <div class="ucc-error"></div>
122
+ <div class="ucc-error" />
108
123
  </div>
109
- <div class="ucc-form-field ucc-form-btn-row" style="margin-bottom: 0x; margin-top: 0px;">
124
+ <div
125
+ class="ucc-form-field ucc-form-btn-row"
126
+ style="margin-bottom: 0; margin-top: 0;"
127
+ >
110
128
  <a
111
- @click="submitLogin"
112
129
  class="ucc-btn"
113
130
  :class="buttonColorClass"
114
- style="margin-top: 0px;"><span class="btn-text">{{ buttonText }}</span></a>
131
+ style="margin-top: 0;"
132
+ @click="submitLogin"
133
+ >
134
+ <span class="btn-text">{{ buttonText }}</span>
135
+ </a>
115
136
  </div>
116
137
  </form>
117
138
  </div>
@@ -120,9 +141,5 @@ onMounted(() => {
120
141
  </template>
121
142
 
122
143
  <style scoped>
123
- .v3-ucc-btn-black {
124
- background-color: #000;
125
- border: 1px solid #000;
126
- color: #fff;
127
- }
144
+ .v3-ucc-btn-black{background-color:#000;border:1px solid #000;color:#fff}
128
145
  </style>
@@ -0,0 +1,108 @@
1
+ <script lang="ts" setup>
2
+ import { onMounted } from 'vue';
3
+ import { storeToRefs } from 'pinia';
4
+ import { filter, map } from 'lodash-es';
5
+ import { useConversationStore } from '#imports';
6
+ import type { Conversation, Message } from '../../models/conversation';
7
+ import type { User } from '../../models/user';
8
+
9
+ const conversationStore = useConversationStore();
10
+
11
+ const { conversations, user } = storeToRefs(conversationStore);
12
+
13
+ const { commitSelectedConversation, getConversationsApi, hideConversation } = conversationStore;
14
+
15
+ // methods
16
+ const isRead = (lastMessage: Message) => {
17
+ let read = false;
18
+ if (lastMessage !== null && lastMessage?.user?.id !== user.value.id) {
19
+ map(lastMessage.messages_read, (user: User) => {
20
+ if (user?.id === user.value.data.id) {
21
+ read = true;
22
+ }
23
+ });
24
+ } else {
25
+ read = true;
26
+ }
27
+ return read;
28
+ };
29
+
30
+ const getNames = (conversation: Conversation) => {
31
+ const users: User[] = conversation.users as User[];
32
+ const authenticatedUser: User = user.value.data;
33
+ const conversationCreator: User = conversation.user as User;
34
+ let names = '';
35
+ const filtered = filter(users, user => user.id !== authenticatedUser.id);
36
+
37
+ names += map(filtered, (user) => {
38
+ return user.name ? user.name : user.email;
39
+ }).join(', ');
40
+
41
+ if (conversationCreator.id !== authenticatedUser.id) {
42
+ const name = conversationCreator.name ? conversationCreator.name : conversationCreator.email;
43
+ if (names === '') {
44
+ names += name
45
+ } else {
46
+ names += ', ' + name
47
+ }
48
+ }
49
+ return names;
50
+ };
51
+
52
+ onMounted(() => {
53
+ getConversationsApi();
54
+ })
55
+
56
+ </script>
57
+
58
+ <template>
59
+ <div class="h-full overflow-y-auto">
60
+ <div
61
+ v-for="conversation in conversations"
62
+ :key="conversation.id"
63
+ class="chat-item"
64
+ >
65
+ <div
66
+ class="flex flex-row w-full"
67
+ @click="commitSelectedConversation(conversation)"
68
+ >
69
+ <div class="w-4 flex items-center">
70
+ <CommonSvgIcon icon="notification" />
71
+ </div>
72
+
73
+ <div class="w-1/5">
74
+ <div class="flex justify-center">
75
+ <CommonSvgIcon icon="person" />
76
+ </div>
77
+ </div>
78
+
79
+ <div class="w-3/4">
80
+ <p class="text-gray-700 text-md mt-1 mb-0">
81
+ {{ getNames(conversation) }}
82
+ </p>
83
+ </div>
84
+ </div>
85
+ <div class="w-1/5 flex justify-end">
86
+ <div
87
+ class="cursor-pointer"
88
+ @click="hideConversation(conversation)"
89
+ >
90
+ <CommonSvgIcon icon="close" />
91
+ </div>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </template>
96
+
97
+ <style scoped lang="postcss">
98
+ .chat-item {
99
+ @apply flex cursor-pointer flex-row p-4 border-b border-t-0 border-l-0 border-r-0 border-solid border-gray-400;
100
+ border-bottom: 1px solid #dae1e7;
101
+ &:hover {
102
+ background-color: lighten(#dae1e7, 5%);
103
+ }
104
+ &:active {
105
+ background-color: darken(#dae1e7, 5%);
106
+ }
107
+ }
108
+ </style>