@icvdeveloper/common-module 2.1.1 → 2.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/chat/ChatHeader.vue +1 -1
- package/dist/runtime/components/chat/ChatWidget.vue +17 -2
- package/dist/runtime/components/core/SectionHeader.vue +133 -0
- package/dist/runtime/components/forms/SearchInput.vue +3 -4
- package/dist/runtime/components/forms/TextInput.vue +1 -0
- package/dist/runtime/components/media/PlayerAndContentContainer.vue +3 -2
- package/dist/runtime/components/profile/tabs/ProfileImage.vue +1 -1
- package/dist/runtime/composables/useConferenceHelpers.d.ts +4 -0
- package/dist/runtime/composables/useConferenceHelpers.mjs +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/module.json
CHANGED
|
@@ -35,6 +35,21 @@ const { hasNotifications } = toRefs(props);
|
|
|
35
35
|
</div>
|
|
36
36
|
</template>
|
|
37
37
|
|
|
38
|
-
<style scoped>
|
|
39
|
-
.launcher
|
|
38
|
+
<style scoped lang="postcss">
|
|
39
|
+
.launcher {
|
|
40
|
+
@apply rounded-full cursor-pointer fixed h-16 w-16 z-50 bottom-6 right-10;
|
|
41
|
+
background-position: center;
|
|
42
|
+
background-repeat: no-repeat;
|
|
43
|
+
box-shadow: none;
|
|
44
|
+
transition: box-shadow 0.2s ease-in-out;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.bell {
|
|
48
|
+
@apply z-50 fixed bottom-6 right-4;
|
|
49
|
+
padding: 2px 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.bell svg {
|
|
53
|
+
height: 90px;
|
|
54
|
+
}
|
|
40
55
|
</style>
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { computed, onMounted, ref, toRefs, watch } from 'vue';
|
|
3
|
+
import { useRoute } from 'vue-router';
|
|
4
|
+
import { find } from 'lodash-es';
|
|
5
|
+
import { storeToRefs } from 'pinia';
|
|
6
|
+
import { useConferencesStore } from '../../store/conferences';
|
|
7
|
+
import { useNavigationConfigStore } from '../../store/navigationConfig';
|
|
8
|
+
import { useTemplateConfigsStore } from '../../store/templateConfigs';
|
|
9
|
+
import type { NavigationConfig } from '../../models/navigationConfig';
|
|
10
|
+
|
|
11
|
+
type Props = {
|
|
12
|
+
title?: string;
|
|
13
|
+
photoLarge?: string;
|
|
14
|
+
textClass?: string;
|
|
15
|
+
isConferencePage?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
19
|
+
title: 'Page',
|
|
20
|
+
photoLarge: '',
|
|
21
|
+
textClass: '',
|
|
22
|
+
isConferencePage: false
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const { title, photoLarge, textClass, isConferencePage } = toRefs(props);
|
|
26
|
+
|
|
27
|
+
// data
|
|
28
|
+
const headerTitle = ref<string>('');
|
|
29
|
+
|
|
30
|
+
const { currentConference } = storeToRefs(useConferencesStore());
|
|
31
|
+
|
|
32
|
+
const { data } = storeToRefs(useNavigationConfigStore());
|
|
33
|
+
|
|
34
|
+
const { globalConfigValue } = useTemplateConfigsStore();
|
|
35
|
+
|
|
36
|
+
const route = useRoute();
|
|
37
|
+
|
|
38
|
+
// computed
|
|
39
|
+
const showPageTitle = computed((): boolean => {
|
|
40
|
+
if (isConferencePage.value) return true;
|
|
41
|
+
return globalConfigValue('header_titles', true);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const mainBodyImage = computed((): string => {
|
|
45
|
+
if (photoLarge.value.length > 0) {
|
|
46
|
+
return photoLarge.value;
|
|
47
|
+
} else if (
|
|
48
|
+
globalConfigValue('conference_photo_headers', true) &&
|
|
49
|
+
currentConference.value?.photo_large &&
|
|
50
|
+
currentConference.value.photo_large.length
|
|
51
|
+
) {
|
|
52
|
+
return currentConference.value?.photo_large;
|
|
53
|
+
} else {
|
|
54
|
+
return ''
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const currentPageName = computed((): string => {
|
|
59
|
+
const ignoreArray = [
|
|
60
|
+
'webcast-id',
|
|
61
|
+
'agenda-id',
|
|
62
|
+
'support',
|
|
63
|
+
'registration'
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
const routeName: string = route.name?.toString() ?? '';
|
|
67
|
+
let currentPageObj: NavigationConfig;
|
|
68
|
+
|
|
69
|
+
if (routeName === 'page-slug') {
|
|
70
|
+
currentPageObj = find(data.value, ['slug', route.params.slug as string]) as NavigationConfig;
|
|
71
|
+
return currentPageObj.name as string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (routeName === 'index') {
|
|
75
|
+
currentPageObj = find(data.value, ['slug', 'home']) as NavigationConfig;
|
|
76
|
+
return currentPageObj.label as string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (!ignoreArray.includes(routeName)) {
|
|
80
|
+
currentPageObj = find(data.value, ['slug', routeName ]) as NavigationConfig;
|
|
81
|
+
if(currentPageObj) {
|
|
82
|
+
return currentPageObj.label as string;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return '';
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const mainBodyImageStyle = computed((): {} | string => {
|
|
89
|
+
return (mainBodyImage.value.length > 0) ? {
|
|
90
|
+
'background-image': `url(${mainBodyImage.value})`,
|
|
91
|
+
'background-repeat': 'no-repeat',
|
|
92
|
+
'background-size': 'cover',
|
|
93
|
+
'background-position': 'center',
|
|
94
|
+
} : '';
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
const mutedHeaderStyle = computed((): string => {
|
|
98
|
+
const muted = globalConfigValue('muted_photo_headers', 'none');
|
|
99
|
+
let style = '';
|
|
100
|
+
if (mainBodyImage.value.length > 0) style += 'min-height: 112px;';
|
|
101
|
+
if (muted == 'lighten') style += 'background-color: rgb(255, 255, 255, .4)';
|
|
102
|
+
if (muted == 'darken') style += 'background-color: rgb(0, 0, 0, .4)';
|
|
103
|
+
return style;
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
watch(title, () => {
|
|
107
|
+
headerTitle.value = currentPageName.value || title.value;
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
onMounted(() => {
|
|
111
|
+
headerTitle.value = currentPageName.value || title.value;
|
|
112
|
+
});
|
|
113
|
+
</script>
|
|
114
|
+
|
|
115
|
+
<template>
|
|
116
|
+
<div
|
|
117
|
+
:style="mainBodyImageStyle"
|
|
118
|
+
class="flex bg-color-2"
|
|
119
|
+
>
|
|
120
|
+
<div
|
|
121
|
+
class="mx-auto flex-1 self-center items-center drop-shadow-md"
|
|
122
|
+
:style="mutedHeaderStyle"
|
|
123
|
+
>
|
|
124
|
+
<h1
|
|
125
|
+
v-if="showPageTitle"
|
|
126
|
+
:class="textClass"
|
|
127
|
+
class="heading-color-4 py-10"
|
|
128
|
+
>
|
|
129
|
+
{{ headerTitle }}
|
|
130
|
+
</h1>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
</template>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
import {
|
|
3
|
-
import CloseIcon from "../../assets/svg/close-icon.svg";
|
|
2
|
+
import { ref, toRefs } from "vue";
|
|
4
3
|
|
|
5
4
|
type Props = {
|
|
6
5
|
placeholder: string;
|
|
@@ -10,7 +9,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
10
9
|
placeholder: "Search...",
|
|
11
10
|
});
|
|
12
11
|
|
|
13
|
-
const { placeholder } =
|
|
12
|
+
const { placeholder } = toRefs(props);
|
|
14
13
|
|
|
15
14
|
const value = ref<string>("");
|
|
16
15
|
|
|
@@ -38,7 +37,7 @@ const clear = () => {
|
|
|
38
37
|
class="flex-initial cursor-pointer px-4 py-2"
|
|
39
38
|
@click="clear"
|
|
40
39
|
>
|
|
41
|
-
<
|
|
40
|
+
<CommonSvgIcon icon="close" />
|
|
42
41
|
</span>
|
|
43
42
|
</div>
|
|
44
43
|
</template>
|
|
@@ -61,12 +61,13 @@ const { isLoggedIn } = storeToRefs(useAuthStore());
|
|
|
61
61
|
const isStreamTest = computed((): boolean => {
|
|
62
62
|
return (
|
|
63
63
|
route.params.channelid === "stream-test" ||
|
|
64
|
-
String(route.name) === "stream-test"
|
|
64
|
+
String(route.name) === "stream-test" ||
|
|
65
|
+
presentation.value.name === "Stream Test"
|
|
65
66
|
);
|
|
66
67
|
});
|
|
67
68
|
|
|
68
69
|
const hasAccess = computed((): boolean => {
|
|
69
|
-
return isLoggedIn.value && conference.value.access;
|
|
70
|
+
return isLoggedIn.value && conference.value.access as boolean;
|
|
70
71
|
});
|
|
71
72
|
</script>
|
|
72
73
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
import { ref, reactive } from "vue";
|
|
2
|
+
import { ref, reactive, toRefs } from "vue";
|
|
3
3
|
import { storeToRefs } from "pinia";
|
|
4
4
|
import { useAuthStore } from "../../../store/auth";
|
|
5
5
|
import { useClassBinding } from "../../../composables/useClassBinding";
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { Ref } from 'vue';
|
|
2
2
|
import type { Conference } from '../models/conference';
|
|
3
3
|
export type UseConferenceHelpersMethods = {
|
|
4
|
+
/**
|
|
5
|
+
* if conference has a template config, get its values from its 'main' config
|
|
6
|
+
*/
|
|
7
|
+
getConferenceConfigMainValue: (_conference: Conference, _string: string) => {};
|
|
4
8
|
/**
|
|
5
9
|
* Determine if conference is a single day event
|
|
6
10
|
*/
|