@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
|
@@ -27,11 +27,17 @@ const zoomUrl = computed(() => {
|
|
|
27
27
|
@trigger="showModal = false"
|
|
28
28
|
>
|
|
29
29
|
<template #modal-body>
|
|
30
|
-
<iframe
|
|
30
|
+
<iframe
|
|
31
|
+
:src="zoomUrl"
|
|
32
|
+
class="w-full h-full"
|
|
33
|
+
/>
|
|
31
34
|
</template>
|
|
32
35
|
</CommonModal>
|
|
33
|
-
<a
|
|
34
|
-
|
|
36
|
+
<a
|
|
37
|
+
href="javascript:null"
|
|
38
|
+
@click="showModal = true"
|
|
39
|
+
>
|
|
40
|
+
<slot name="modal-link" />
|
|
35
41
|
</a>
|
|
36
42
|
</span>
|
|
37
43
|
</template>
|
|
@@ -18,7 +18,6 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
// stores
|
|
21
|
-
const conferenceStore = useConferencesStore();
|
|
22
21
|
const { globalConfigValue, pagesConfigValue } = useTemplateConfigsStore();
|
|
23
22
|
|
|
24
23
|
// reactive data
|
|
@@ -69,7 +68,10 @@ const mainBodyImage = computed(() => {
|
|
|
69
68
|
</script>
|
|
70
69
|
|
|
71
70
|
<template>
|
|
72
|
-
<div
|
|
71
|
+
<div
|
|
72
|
+
:style="mainStyles"
|
|
73
|
+
class="flex bg-color-2"
|
|
74
|
+
>
|
|
73
75
|
<div
|
|
74
76
|
v-if="useEventText"
|
|
75
77
|
class="text-center flex flex-1 flex-col items-center justify-center h-auto p-12"
|
|
@@ -122,12 +124,20 @@ const mainBodyImage = computed(() => {
|
|
|
122
124
|
:href="getConferenceRegUrl()"
|
|
123
125
|
:target="/^http/.test(getConferenceRegUrl()) ? '_blank' : '_self'"
|
|
124
126
|
>
|
|
125
|
-
<button
|
|
127
|
+
<button
|
|
128
|
+
class="btn"
|
|
129
|
+
:class="hasOtherButton ? 'md:ml-4' : ''"
|
|
130
|
+
>
|
|
126
131
|
{{ getConferenceRegText() }}
|
|
127
132
|
</button>
|
|
128
133
|
</a>
|
|
129
134
|
</div>
|
|
130
135
|
</div>
|
|
131
|
-
<img
|
|
136
|
+
<img
|
|
137
|
+
v-else
|
|
138
|
+
:src="mainBodyImage"
|
|
139
|
+
class="w-full h-auto"
|
|
140
|
+
alt="Event header image"
|
|
141
|
+
>
|
|
132
142
|
</div>
|
|
133
143
|
</template>
|
|
@@ -230,7 +230,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
230
230
|
)
|
|
231
231
|
"
|
|
232
232
|
:src="conference.photo"
|
|
233
|
-
|
|
233
|
+
>
|
|
234
234
|
</div>
|
|
235
235
|
<!-- event details container -->
|
|
236
236
|
<div
|
|
@@ -259,7 +259,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
259
259
|
>
|
|
260
260
|
<!-- event details -->
|
|
261
261
|
<div
|
|
262
|
-
:class="classBinding(classObject, 'eventDetails', '
|
|
262
|
+
:class="classBinding(classObject, 'eventDetails', 'grow')"
|
|
263
263
|
>
|
|
264
264
|
<template v-if="showBrand && getBrand(conference.affiliates)">
|
|
265
265
|
<a
|
|
@@ -274,7 +274,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
274
274
|
classBinding(
|
|
275
275
|
classObject,
|
|
276
276
|
'eventBrand',
|
|
277
|
-
'text-base font-bold leading-tight tracking-
|
|
277
|
+
'text-base font-bold leading-tight tracking-wider mb-3'
|
|
278
278
|
)
|
|
279
279
|
"
|
|
280
280
|
>
|
|
@@ -287,10 +287,9 @@ const showLoginButton = computed((): boolean => {
|
|
|
287
287
|
eventPathPrefix
|
|
288
288
|
? eventPathPrefix + conference.id
|
|
289
289
|
: `/${isUpcoming ? 'upcoming-events' : 'past-events'}/${
|
|
290
|
-
|
|
291
|
-
|
|
290
|
+
conference.id
|
|
291
|
+
}`
|
|
292
292
|
"
|
|
293
|
-
class="no-underline"
|
|
294
293
|
>
|
|
295
294
|
<h2
|
|
296
295
|
:class="
|
|
@@ -309,7 +308,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
309
308
|
classBinding(
|
|
310
309
|
classObject,
|
|
311
310
|
'eventDate',
|
|
312
|
-
'text-base leading-normal tracking-
|
|
311
|
+
'text-base leading-normal tracking-wider font-light uppercase md:text-md lg:text-lg'
|
|
313
312
|
)
|
|
314
313
|
"
|
|
315
314
|
>
|
|
@@ -322,9 +321,9 @@ const showLoginButton = computed((): boolean => {
|
|
|
322
321
|
<div
|
|
323
322
|
v-if="
|
|
324
323
|
isUpcoming &&
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
324
|
+
showCountdown &&
|
|
325
|
+
countdownPosition === Position.TOP &&
|
|
326
|
+
pagesConfigValue('main.countdown_timer')
|
|
328
327
|
"
|
|
329
328
|
:class="
|
|
330
329
|
classBinding(
|
|
@@ -339,7 +338,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
339
338
|
:timezone="conference.timezone"
|
|
340
339
|
:is-compact="true"
|
|
341
340
|
:class-object="classObject.components.countdownTimer"
|
|
342
|
-
|
|
341
|
+
/>
|
|
343
342
|
</div>
|
|
344
343
|
</div>
|
|
345
344
|
<!-- event button, countdown timer, and sponsors container -->
|
|
@@ -475,9 +474,9 @@ const showLoginButton = computed((): boolean => {
|
|
|
475
474
|
<div
|
|
476
475
|
v-if="
|
|
477
476
|
isUpcoming &&
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
477
|
+
showCountdown &&
|
|
478
|
+
countdownPosition === Position.RIGHT &&
|
|
479
|
+
pagesConfigValue('main.countdown_timer')
|
|
481
480
|
"
|
|
482
481
|
class="flex-auto md:flex mt-3 md:mt-2"
|
|
483
482
|
:class="
|
|
@@ -493,16 +492,16 @@ const showLoginButton = computed((): boolean => {
|
|
|
493
492
|
:timezone="conference.timezone"
|
|
494
493
|
:is-compact="true"
|
|
495
494
|
:class-object="classObject.components.countdownTimer"
|
|
496
|
-
|
|
495
|
+
/>
|
|
497
496
|
</div>
|
|
498
497
|
</div>
|
|
499
498
|
<!-- countdown timer - bottom-aligned -->
|
|
500
499
|
<div
|
|
501
500
|
v-if="
|
|
502
501
|
isUpcoming &&
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
502
|
+
showCountdown &&
|
|
503
|
+
countdownPosition === Position.BOTTOM &&
|
|
504
|
+
pagesConfigValue('main.countdown_timer')
|
|
506
505
|
"
|
|
507
506
|
:class="
|
|
508
507
|
classBinding(
|
|
@@ -517,7 +516,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
517
516
|
:timezone="conference.timezone"
|
|
518
517
|
:is-compact="true"
|
|
519
518
|
:class-object="classObject.components.countdownTimer"
|
|
520
|
-
|
|
519
|
+
/>
|
|
521
520
|
</div>
|
|
522
521
|
<!-- sponsors container - bottom-aligned -->
|
|
523
522
|
<div
|
|
@@ -548,7 +547,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
548
547
|
v-if="affiliate.photo"
|
|
549
548
|
:sponsor="affiliate"
|
|
550
549
|
:class-object="classObject.components.sponsor"
|
|
551
|
-
|
|
550
|
+
/>
|
|
552
551
|
</template>
|
|
553
552
|
</div>
|
|
554
553
|
</div>
|
|
@@ -573,7 +572,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
573
572
|
v-if="affiliate.photo"
|
|
574
573
|
:sponsor="affiliate"
|
|
575
574
|
:class-object="classObject.components.sponsor"
|
|
576
|
-
|
|
575
|
+
/>
|
|
577
576
|
</template>
|
|
578
577
|
</div>
|
|
579
578
|
</div>
|
|
@@ -594,7 +593,7 @@ const showLoginButton = computed((): boolean => {
|
|
|
594
593
|
</div>
|
|
595
594
|
</template>
|
|
596
595
|
|
|
597
|
-
<style scoped>
|
|
596
|
+
<style lang="postcss" scoped>
|
|
598
597
|
.leading-tight {
|
|
599
598
|
line-height: 1.25rem;
|
|
600
599
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { ref, toRefs } from 'vue';
|
|
3
|
+
|
|
4
|
+
type Props = {
|
|
5
|
+
options: any,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const props = defineProps<Props>();
|
|
9
|
+
|
|
10
|
+
const { options } = toRefs(props);
|
|
11
|
+
|
|
12
|
+
// data
|
|
13
|
+
// TODO - set type
|
|
14
|
+
const currentValueArray = ref<any[]>([]);
|
|
15
|
+
|
|
16
|
+
// emits
|
|
17
|
+
// TODO - set value type
|
|
18
|
+
const emit = defineEmits<{
|
|
19
|
+
(event: 'input', value: any): void;
|
|
20
|
+
}>();
|
|
21
|
+
|
|
22
|
+
// methods
|
|
23
|
+
const onChange = (): void => {
|
|
24
|
+
emit('input', currentValueArray.value);
|
|
25
|
+
};
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
<template>
|
|
30
|
+
<span>
|
|
31
|
+
<div
|
|
32
|
+
v-for="(option, index) in options"
|
|
33
|
+
:key="index"
|
|
34
|
+
class="mb-2 ml-4"
|
|
35
|
+
>
|
|
36
|
+
<p-check
|
|
37
|
+
v-model="currentValueArray"
|
|
38
|
+
:value="option.value"
|
|
39
|
+
@change="onChange"
|
|
40
|
+
>
|
|
41
|
+
{{ option.name }}
|
|
42
|
+
</p-check>
|
|
43
|
+
</div>
|
|
44
|
+
</span>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
+
import { toRefs } from 'vue';
|
|
2
3
|
type Props = {
|
|
3
4
|
errors: Array<string>;
|
|
4
5
|
};
|
|
@@ -10,8 +11,16 @@ const { errors } = toRefs(props);
|
|
|
10
11
|
|
|
11
12
|
<template>
|
|
12
13
|
<div>
|
|
13
|
-
<div
|
|
14
|
-
|
|
14
|
+
<div
|
|
15
|
+
v-if="errors"
|
|
16
|
+
class="my-1 text-red-500"
|
|
17
|
+
>
|
|
18
|
+
<div
|
|
19
|
+
v-for="(error, index) in errors"
|
|
20
|
+
:key="index"
|
|
21
|
+
>
|
|
22
|
+
{{ error }}
|
|
23
|
+
</div>
|
|
15
24
|
</div>
|
|
16
25
|
</div>
|
|
17
26
|
</template>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { toRefs } from 'vue';
|
|
3
|
+
|
|
4
|
+
type Props = {
|
|
5
|
+
value: any,
|
|
6
|
+
options: any
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const props = defineProps<Props>();
|
|
10
|
+
|
|
11
|
+
const { value, options } = toRefs(props);
|
|
12
|
+
|
|
13
|
+
// emits
|
|
14
|
+
// TODO - set value type
|
|
15
|
+
const emit = defineEmits<{
|
|
16
|
+
(event: 'input', value: any): void;
|
|
17
|
+
}>();
|
|
18
|
+
|
|
19
|
+
// computed
|
|
20
|
+
// TODO - what's this for?
|
|
21
|
+
// what is <p-radio> ?
|
|
22
|
+
const guid = () => {
|
|
23
|
+
return crypto.getRandomValues(new Uint32Array(2)).join('-');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// methods
|
|
27
|
+
const onChange = (e: any): void => {
|
|
28
|
+
emit('input', e.target.value);
|
|
29
|
+
};
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
<template>
|
|
34
|
+
<span>
|
|
35
|
+
<div
|
|
36
|
+
v-for="(option, index) in options"
|
|
37
|
+
:key="index"
|
|
38
|
+
class="mb-2 ml-4"
|
|
39
|
+
>
|
|
40
|
+
<p-radio
|
|
41
|
+
v-model="value"
|
|
42
|
+
color="default"
|
|
43
|
+
:value="option.value"
|
|
44
|
+
@change="onChange"
|
|
45
|
+
>
|
|
46
|
+
{{ option.name }}
|
|
47
|
+
</p-radio>
|
|
48
|
+
</div>
|
|
49
|
+
</span>
|
|
50
|
+
</template>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
+
import { storeToRefs } from "pinia";
|
|
2
3
|
import CloseIcon from "../../assets/svg/close-icon.svg";
|
|
3
4
|
|
|
4
5
|
type Props = {
|
|
@@ -9,6 +10,8 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
9
10
|
placeholder: "Search...",
|
|
10
11
|
});
|
|
11
12
|
|
|
13
|
+
const { placeholder } = storeToRefs(props);
|
|
14
|
+
|
|
12
15
|
const value = ref<string>("");
|
|
13
16
|
|
|
14
17
|
const emit = defineEmits<{
|
|
@@ -30,8 +33,11 @@ const clear = () => {
|
|
|
30
33
|
class="flex-1 pl-2 pr-5 py-1"
|
|
31
34
|
:placeholder="placeholder"
|
|
32
35
|
@input="emit('onChange', value)"
|
|
33
|
-
|
|
34
|
-
<span
|
|
36
|
+
>
|
|
37
|
+
<span
|
|
38
|
+
class="flex-initial cursor-pointer px-4 py-2"
|
|
39
|
+
@click="clear"
|
|
40
|
+
>
|
|
35
41
|
<close-icon class="fill-current text-black" />
|
|
36
42
|
</span>
|
|
37
43
|
</div>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { toRefs } from 'vue';
|
|
3
|
+
|
|
4
|
+
type Props = {
|
|
5
|
+
value: any,
|
|
6
|
+
options: any,
|
|
7
|
+
firstDisabled?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
11
|
+
firstDisabled: false
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const { value, options, firstDisabled } = toRefs(props);
|
|
15
|
+
|
|
16
|
+
// emits
|
|
17
|
+
// TODO - set value type
|
|
18
|
+
const emit = defineEmits<{
|
|
19
|
+
(event: 'input', value: any): void;
|
|
20
|
+
}>();
|
|
21
|
+
|
|
22
|
+
// methods
|
|
23
|
+
const onInput = (e: any): void => {
|
|
24
|
+
emit('input', e.target.value);
|
|
25
|
+
};
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<template>
|
|
29
|
+
<span>
|
|
30
|
+
<select
|
|
31
|
+
class="form-input"
|
|
32
|
+
:value="value"
|
|
33
|
+
@change="onInput"
|
|
34
|
+
>
|
|
35
|
+
<option
|
|
36
|
+
v-for="(option, index) in options"
|
|
37
|
+
:key="index"
|
|
38
|
+
:value="option.value"
|
|
39
|
+
:disabled="index==0 && firstDisabled"
|
|
40
|
+
>
|
|
41
|
+
{{ option.name }}
|
|
42
|
+
</option>
|
|
43
|
+
</select>
|
|
44
|
+
</span>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
|
|
@@ -43,13 +43,16 @@ const acceptNumber = () => {
|
|
|
43
43
|
|
|
44
44
|
<template>
|
|
45
45
|
<section>
|
|
46
|
-
<form
|
|
46
|
+
<form
|
|
47
|
+
v-if="!submitted"
|
|
48
|
+
@submit.prevent="handleForm"
|
|
49
|
+
>
|
|
47
50
|
<div class="font-bold mb-4">
|
|
48
51
|
To contact support, please fill out the form below.
|
|
49
52
|
</div>
|
|
50
53
|
|
|
51
54
|
<div class="mb-3">
|
|
52
|
-
<label class="block font-semibold text-
|
|
55
|
+
<label class="block font-semibold text-gray-800 mb-1">Name</label>
|
|
53
56
|
|
|
54
57
|
<CommonTextInput
|
|
55
58
|
v-model="form.name"
|
|
@@ -62,7 +65,7 @@ const acceptNumber = () => {
|
|
|
62
65
|
</div>
|
|
63
66
|
|
|
64
67
|
<div class="mb-3">
|
|
65
|
-
<label class="block font-semibold text-
|
|
68
|
+
<label class="block font-semibold text-gray-800 mb-1">Email</label>
|
|
66
69
|
|
|
67
70
|
<CommonTextInput
|
|
68
71
|
v-model="form.email"
|
|
@@ -75,7 +78,7 @@ const acceptNumber = () => {
|
|
|
75
78
|
</div>
|
|
76
79
|
|
|
77
80
|
<div class="mb-3">
|
|
78
|
-
<label class="block font-semibold text-
|
|
81
|
+
<label class="block font-semibold text-gray-800 mb-1">Phone</label>
|
|
79
82
|
|
|
80
83
|
<CommonTextInput
|
|
81
84
|
v-model="form.phone"
|
|
@@ -87,25 +90,33 @@ const acceptNumber = () => {
|
|
|
87
90
|
</div>
|
|
88
91
|
|
|
89
92
|
<div class="mb-3">
|
|
90
|
-
<label class="block font-semibold text-
|
|
91
|
-
>Message</label
|
|
92
|
-
>
|
|
93
|
+
<label class="block font-semibold text-gray-800 mb-1">Message</label>
|
|
93
94
|
|
|
94
95
|
<CommonTextArea v-model="form.message" />
|
|
95
96
|
|
|
96
97
|
<CommonErrorField :errors="errors['message']" />
|
|
97
98
|
</div>
|
|
98
99
|
|
|
99
|
-
<button
|
|
100
|
+
<button
|
|
101
|
+
class="btn btn-secondary"
|
|
102
|
+
type="submit"
|
|
103
|
+
>
|
|
104
|
+
Submit
|
|
105
|
+
</button>
|
|
100
106
|
<div class="mb-3">
|
|
101
107
|
<CommonErrorField :errors="errors['response']" />
|
|
102
108
|
</div>
|
|
103
109
|
</form>
|
|
104
110
|
|
|
105
111
|
<!-- Submitted Message -->
|
|
106
|
-
<div
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
<div
|
|
113
|
+
v-if="submitted"
|
|
114
|
+
class="text-center my-12"
|
|
115
|
+
>
|
|
116
|
+
<div class="text-2xl font-bold text-gray-800 mb-2">
|
|
117
|
+
Thank you.
|
|
118
|
+
</div>
|
|
119
|
+
<div class="text-lg font-semibold text-gray-700">
|
|
109
120
|
Your message has been received.
|
|
110
121
|
</div>
|
|
111
122
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
import { ref } from "vue";
|
|
2
|
+
import { ref, toRefs } from "vue";
|
|
3
3
|
import type { SwitchInputClassObj } from "../../@types/components";
|
|
4
4
|
import { useClassBinding } from "../../composables/useClassBinding";
|
|
5
5
|
|
|
@@ -55,38 +55,58 @@ const { classBinding } = useClassBinding();
|
|
|
55
55
|
</div>
|
|
56
56
|
</template>
|
|
57
57
|
|
|
58
|
-
<style scoped>
|
|
58
|
+
<style lang="postcss" scoped>
|
|
59
59
|
.switch-button-control {
|
|
60
60
|
display: flex;
|
|
61
61
|
flex-direction: row;
|
|
62
62
|
align-items: center;
|
|
63
|
-
|
|
64
|
-
.switch-button
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
63
|
+
|
|
64
|
+
.switch-button {
|
|
65
|
+
--switch-button-height: 1.6em;
|
|
66
|
+
--switch-button-color: var(--color);
|
|
67
|
+
--switch-button-border-thickness: 2px;
|
|
68
|
+
--switch-transition: all 0.3s ease-in-out;
|
|
69
|
+
--switch-is-rounded: true;
|
|
70
|
+
|
|
71
|
+
height: var(--switch-button-height);
|
|
72
|
+
width: calc(var(--switch-button-height) * 2);
|
|
73
|
+
border: var(--switch-button-border-thickness) solid var(--switch-button-color);
|
|
74
|
+
box-shadow: inset 0 0 var(--switch-button-border-thickness) 0 rgba(0, 0, 0, 0.33);
|
|
75
|
+
border-radius: var(--switch-button-height);
|
|
76
|
+
|
|
77
|
+
transition: var(--switch-transition);
|
|
78
|
+
|
|
79
|
+
--button-side-length: calc(
|
|
80
|
+
var(--switch-button-height) - (2 * var(--switch-button-border-thickness))
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
cursor: pointer;
|
|
84
|
+
|
|
85
|
+
.button {
|
|
86
|
+
height: var(--button-side-length);
|
|
87
|
+
width: var(--button-side-length);
|
|
88
|
+
border: var(--switch-button-border-thickness) solid var(--switch-button-color);
|
|
89
|
+
border-radius: var(--button-side-length);
|
|
90
|
+
background: var(--switch-button-color);
|
|
91
|
+
|
|
92
|
+
transition: var(--switch-transition);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&.enabled {
|
|
96
|
+
background-color: var(--switch-button-color);
|
|
97
|
+
box-shadow: none;
|
|
98
|
+
|
|
99
|
+
.button {
|
|
100
|
+
background: white;
|
|
101
|
+
transform: translateX(
|
|
102
|
+
calc(var(--button-side-length) + (2 * var(--switch-button-border-thickness)))
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.switch-button-label {
|
|
109
|
+
margin-left: 10px;
|
|
110
|
+
}
|
|
91
111
|
}
|
|
92
112
|
</style>
|
|
@@ -18,7 +18,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
// data
|
|
21
|
-
const { title, tabContent
|
|
21
|
+
const { title, tabContent } = toRefs(props);
|
|
22
22
|
const active = ref<boolean>(false);
|
|
23
23
|
|
|
24
24
|
// computed
|
|
@@ -43,7 +43,7 @@ const tabTitleValues = computed(() => {
|
|
|
43
43
|
v-if="tabContent.type === 'url'"
|
|
44
44
|
:href="tabContent.content"
|
|
45
45
|
target="_blank"
|
|
46
|
-
class="py-3 block
|
|
46
|
+
class="py-3 block w-full font-extralight inline-flex items-center text-md my-1"
|
|
47
47
|
:class="tabTitleValues.classes"
|
|
48
48
|
>
|
|
49
49
|
<span class="flex-initial">
|
|
@@ -53,7 +53,7 @@ const tabTitleValues = computed(() => {
|
|
|
53
53
|
<a
|
|
54
54
|
v-else
|
|
55
55
|
href="#"
|
|
56
|
-
class="py-3 block
|
|
56
|
+
class="py-3 block w-full font-extralight inline-flex items-center text-md my-1"
|
|
57
57
|
:class="tabTitleValues.classes"
|
|
58
58
|
@click.prevent="active = !active"
|
|
59
59
|
>
|
|
@@ -63,16 +63,21 @@ const tabTitleValues = computed(() => {
|
|
|
63
63
|
class="font-black flex-initial"
|
|
64
64
|
style="width: 0.75rem"
|
|
65
65
|
>
|
|
66
|
-
<CommonSvgIcon icon="downarrow"
|
|
66
|
+
<CommonSvgIcon icon="downarrow" />
|
|
67
67
|
</span>
|
|
68
68
|
<span
|
|
69
69
|
v-show="active"
|
|
70
70
|
class="font-black flex-initial"
|
|
71
71
|
style="width: 0.75rem"
|
|
72
72
|
>
|
|
73
|
-
<CommonSvgIcon
|
|
73
|
+
<CommonSvgIcon
|
|
74
|
+
class="invert"
|
|
75
|
+
icon="downarrow"
|
|
76
|
+
/>
|
|
74
77
|
</span>
|
|
75
78
|
</a>
|
|
76
|
-
<div v-show="active"
|
|
79
|
+
<div v-show="active">
|
|
80
|
+
<slot />
|
|
81
|
+
</div>
|
|
77
82
|
</div>
|
|
78
83
|
</template>
|