@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 CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 2.1.3 - 2024-09-09
11
+
12
+ ## 2.1.2 - 2024-09-07
13
+
10
14
  ## 2.1.1 - 2024-09-07
11
15
 
12
16
  ## 2.1.0 - 2024-09-05
package/dist/module.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "v3plus-common-module",
3
3
  "configKey": "v3plusCommonModule",
4
- "version": "2.1.1"
4
+ "version": "2.1.3"
5
5
  }
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" setup>
2
- import { useConversationStore } from '../../store/conversations.js';
2
+ import { useConversationStore } from '../../store/conversations';
3
3
 
4
4
  import { MenuOptions } from '../../enums/chatWindow';
5
5
 
@@ -35,6 +35,21 @@ const { hasNotifications } = toRefs(props);
35
35
  </div>
36
36
  </template>
37
37
 
38
- <style scoped>
39
- .launcher{background-position:50%;background-repeat:no-repeat;border-radius:50%;bottom:25px;box-shadow:none;cursor:pointer;height:60px;right:75px;transition:box-shadow .2s ease-in-out;width:60px}.bell,.launcher{position:fixed;z-index:9999}.bell{bottom:60px;padding:2px 0;right:15px}.bell svg{height:90px}
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 { storeToRefs } from "pinia";
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 } = storeToRefs(props);
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
- <close-icon class="fill-current text-black" />
40
+ <CommonSvgIcon icon="close" />
42
41
  </span>
43
42
  </div>
44
43
  </template>
@@ -1,4 +1,5 @@
1
1
  <script lang="ts" setup>
2
+ import { toRefs } from "vue";
2
3
  import { useClassBinding } from "../../composables/useClassBinding";
3
4
  import type { TextInputClassObj } from "../../@types/components";
4
5
 
@@ -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
  */
@@ -266,6 +266,7 @@ export const useConferenceHelpers = (conference) => {
266
266
  return "Archive";
267
267
  };
268
268
  return {
269
+ getConferenceConfigMainValue,
269
270
  isSingleDayEvent,
270
271
  hasAccessToEvent,
271
272
  showConferenceWebcastButton,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@icvdeveloper/common-module",
3
- "version": "2.1.1",
3
+ "version": "2.1.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {