@ndscnj/roomkit-web-vue3 25.12.23182 → 25.12.24111

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 (60) hide show
  1. package/es/components/RoomFooter/index/index.d.ts +13 -3
  2. package/es/components/RoomFooter/index/indexPC.vue.d.ts +5 -1
  3. package/es/components/RoomFooter/index/indexPC.vue.mjs +1 -1
  4. package/es/components/RoomFooter/index/indexPC.vue2.mjs +11 -4
  5. package/es/components/RoomFooter/voteControl/VoteControlH5.vue.d.ts +6 -0
  6. package/es/components/RoomFooter/voteControl/VoteControlH5.vue.mjs +7 -0
  7. package/es/components/RoomFooter/voteControl/VoteControlH5.vue2.mjs +105 -0
  8. package/es/components/RoomFooter/voteControl/VoteControlPC.vue.d.ts +6 -0
  9. package/es/components/RoomFooter/voteControl/VoteControlPC.vue.mjs +55 -0
  10. package/es/components/RoomFooter/voteControl/VoteControlPC.vue2.mjs +4 -0
  11. package/es/components/RoomFooter/voteControl/index.d.ts +10 -0
  12. package/es/components/RoomFooter/voteControl/index.mjs +7 -0
  13. package/es/components/RoomFooter/voteControl/useVoteControlHooks.mjs +22 -0
  14. package/es/components/RoomVote/index.d.ts +17 -1
  15. package/es/components/RoomVote/indexPC.vue.d.ts +10 -1
  16. package/es/components/RoomVote/indexPC.vue.mjs +1 -1
  17. package/es/components/RoomVote/indexPC.vue2.mjs +6 -2
  18. package/es/conference.vue.mjs +1 -1
  19. package/es/conference.vue2.mjs +1 -0
  20. package/es/constants/icon.d.ts +2 -0
  21. package/es/constants/icon.mjs +2 -0
  22. package/es/index.mjs +53 -44
  23. package/lib/components/RoomFooter/index/index.d.ts +13 -3
  24. package/lib/components/RoomFooter/index/indexPC.vue.d.ts +5 -1
  25. package/lib/components/RoomFooter/index/indexPC.vue.js +1 -1
  26. package/lib/components/RoomFooter/index/indexPC.vue2.js +15 -8
  27. package/lib/components/RoomFooter/voteControl/VoteControlH5.vue.d.ts +6 -0
  28. package/lib/components/RoomFooter/voteControl/VoteControlH5.vue.js +7 -0
  29. package/lib/components/RoomFooter/voteControl/VoteControlH5.vue2.js +105 -0
  30. package/lib/components/RoomFooter/voteControl/VoteControlPC.vue.d.ts +6 -0
  31. package/lib/components/RoomFooter/voteControl/VoteControlPC.vue.js +55 -0
  32. package/lib/components/RoomFooter/voteControl/VoteControlPC.vue2.js +4 -0
  33. package/lib/components/RoomFooter/voteControl/index.d.ts +10 -0
  34. package/lib/components/RoomFooter/voteControl/index.js +7 -0
  35. package/lib/components/RoomFooter/voteControl/useVoteControlHooks.js +22 -0
  36. package/lib/components/RoomVote/index.d.ts +17 -1
  37. package/lib/components/RoomVote/indexPC.vue.d.ts +10 -1
  38. package/lib/components/RoomVote/indexPC.vue.js +1 -1
  39. package/lib/components/RoomVote/indexPC.vue2.js +5 -1
  40. package/lib/conference.vue.js +1 -1
  41. package/lib/conference.vue2.js +1 -0
  42. package/lib/constants/icon.d.ts +2 -0
  43. package/lib/constants/icon.js +2 -0
  44. package/lib/index.js +53 -44
  45. package/package.json +1 -1
  46. package/src/TUIRoom/components/RoomFooter/index/indexPC.vue +8 -1
  47. package/src/TUIRoom/components/RoomFooter/voteControl/VoteControlH5.vue +122 -0
  48. package/src/TUIRoom/components/RoomFooter/voteControl/VoteControlPC.vue +35 -0
  49. package/src/TUIRoom/components/RoomFooter/voteControl/index.ts +8 -0
  50. package/src/TUIRoom/components/RoomFooter/voteControl/useVoteControlHooks.ts +23 -0
  51. package/src/TUIRoom/components/RoomFooter/voteControl.vue +25 -44
  52. package/src/TUIRoom/components/RoomVote/indexPC.vue +4 -1
  53. package/src/TUIRoom/conference.vue +1 -0
  54. package/src/TUIRoom/constants/icon.ts +2 -0
  55. package/es/components/RoomFooter/voteControl.vue.d.ts +0 -15
  56. package/es/components/RoomFooter/voteControl.vue.mjs +0 -7
  57. package/es/components/RoomFooter/voteControl.vue2.mjs +0 -65
  58. package/lib/components/RoomFooter/voteControl.vue.d.ts +0 -15
  59. package/lib/components/RoomFooter/voteControl.vue.js +0 -7
  60. package/lib/components/RoomFooter/voteControl.vue2.js +0 -65
@@ -219,6 +219,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
219
219
  roomService.roomService.resetStore();
220
220
  }
221
221
  const onVote = (data) => {
222
+ console.log(data, "data222");
222
223
  emit("on-vote", { code: data.visible, message: "vote" });
223
224
  };
224
225
  const onStartRoom = () => {
@@ -20,6 +20,8 @@ export declare enum ICON_NAME {
20
20
  ManageMember = "manage-member",
21
21
  More = "more",
22
22
  MoreActive = "more-active",
23
+ Vote = "vote",
24
+ VoteActive = "vote-active",
23
25
  SettingActive = "setting-active",
24
26
  Setting = "setting",
25
27
  LineArrowUp = "line-arrow-up",
@@ -22,6 +22,8 @@ var ICON_NAME = /* @__PURE__ */ ((ICON_NAME2) => {
22
22
  ICON_NAME2["ManageMember"] = "manage-member";
23
23
  ICON_NAME2["More"] = "more";
24
24
  ICON_NAME2["MoreActive"] = "more-active";
25
+ ICON_NAME2["Vote"] = "vote";
26
+ ICON_NAME2["VoteActive"] = "vote-active";
25
27
  ICON_NAME2["SettingActive"] = "setting-active";
26
28
  ICON_NAME2["Setting"] = "setting";
27
29
  ICON_NAME2["LineArrowUp"] = "line-arrow-up";
package/lib/index.js CHANGED
@@ -3928,36 +3928,45 @@ to {
3928
3928
  }
3929
3929
  .footer .mirror-container .mirror-text[data-v-21a63691] {
3930
3930
  margin-left: 4px;
3931
- }.tool-box[data-v-45795e90] {
3931
+ }.show-more-content[data-v-1506794c] {
3932
3932
  position: absolute;
3933
- bottom: 72px;
3934
- z-index: 2;
3933
+ bottom: 15px;
3934
+ left: 5%;
3935
+ width: 90%;
3936
+ height: 17vh;
3937
+ padding: 10px;
3938
+ border-radius: 13px;
3939
+ animation-name: popup-1506794c;
3940
+ animation-duration: 200ms;
3941
+ background-color: var(--bg-color-operate);
3942
+ }
3943
+ @keyframes popup-1506794c {
3944
+ from {
3945
+ bottom: 0;
3946
+ }
3947
+ to {
3948
+ bottom: 15px;
3949
+ }
3950
+ }
3951
+ .control-compent[data-v-1506794c] {
3935
3952
  display: flex;
3936
- flex-direction: column;
3937
- align-items: center;
3938
- justify-content: center;
3939
- padding: 5px 0;
3940
- border-radius: 15px;
3941
- background-color: var(--bg-color-dialog);
3942
- box-shadow: 0 -8px 30p var(--uikit-color-black-8);
3943
3953
  }
3944
- .tool-box .tool-box-item[data-v-45795e90] {
3954
+ .close[data-v-1506794c] {
3955
+ position: relative;
3956
+ top: 10%;
3945
3957
  display: flex;
3946
3958
  align-items: center;
3947
- justify-content: flex-start;
3959
+ justify-content: center;
3948
3960
  width: 100%;
3949
- padding: 7px 10px;
3950
- font-size: 12px;
3951
- white-space: nowrap;
3952
- cursor: pointer;
3953
- }
3954
- .tool-box .tool-box-item .icon[data-v-45795e90] {
3955
- margin-right: 8px;
3956
- }
3957
- .tool-box .tool-box-item[data-v-45795e90]:hover {
3961
+ padding: 10px;
3962
+ font-style: normal;
3963
+ font-weight: 400;
3964
+ line-height: 24px;
3965
+ text-align: center;
3958
3966
  border-radius: 8px;
3959
- background-color: var(--list-color-hover);
3960
- }.footer-container[data-v-6b90d75f] {
3967
+ color: var(--text-color-primary);
3968
+ background-color: var(--button-color-secondary-default);
3969
+ }.footer-container[data-v-3a373c3a] {
3961
3970
  position: absolute;
3962
3971
  bottom: 0;
3963
3972
  display: flex;
@@ -3971,25 +3980,25 @@ to {
3971
3980
  background-color: var(--bg-color-topbar);
3972
3981
  box-shadow: 0 -8px 30px var(--uikit-color-black-8);
3973
3982
  }
3974
- .footer-container .left-container[data-v-6b90d75f] {
3983
+ .footer-container .left-container[data-v-3a373c3a] {
3975
3984
  display: flex;
3976
3985
  align-items: center;
3977
3986
  height: 100%;
3978
3987
  }
3979
- .footer-container .left-container .left-container-item[data-v-6b90d75f]:not(:first-child) {
3988
+ .footer-container .left-container .left-container-item[data-v-3a373c3a]:not(:first-child) {
3980
3989
  margin-left: 1rem;
3981
3990
  }
3982
- .footer-container .center-container[data-v-6b90d75f] {
3991
+ .footer-container .center-container[data-v-3a373c3a] {
3983
3992
  position: relative;
3984
3993
  display: flex;
3985
3994
  align-items: center;
3986
3995
  height: 100%;
3987
3996
  margin: 0 auto;
3988
3997
  }
3989
- .footer-container .center-container .center-container-item[data-v-6b90d75f]:not(:first-child) {
3998
+ .footer-container .center-container .center-container-item[data-v-3a373c3a]:not(:first-child) {
3990
3999
  margin-left: 16px;
3991
4000
  }
3992
- .footer-container .right-container[data-v-6b90d75f] {
4001
+ .footer-container .right-container[data-v-3a373c3a] {
3993
4002
  display: flex;
3994
4003
  align-items: center;
3995
4004
  height: 100%;
@@ -5066,17 +5075,17 @@ to {
5066
5075
  font-size: 16px;
5067
5076
  font-weight: 400;
5068
5077
  text-align: end;
5069
- }.more-container[data-v-17479e8d] {
5078
+ }.more-container[data-v-11728c2b] {
5070
5079
  padding: 20px;
5071
5080
  }
5072
- .more-container .more-title[data-v-17479e8d] {
5081
+ .more-container .more-title[data-v-11728c2b] {
5073
5082
  display: flex;
5074
5083
  align-items: center;
5075
5084
  }
5076
- .more-container .more-title .email-icon[data-v-17479e8d] {
5085
+ .more-container .more-title .email-icon[data-v-11728c2b] {
5077
5086
  color: var(--uikit-color-gray-7);
5078
5087
  }
5079
- .more-container .more-title .more-notice[data-v-17479e8d] {
5088
+ .more-container .more-title .more-notice[data-v-11728c2b] {
5080
5089
  width: 100%;
5081
5090
  height: 22px;
5082
5091
  padding-left: 8px;
@@ -5085,15 +5094,15 @@ to {
5085
5094
  line-height: 22px;
5086
5095
  color: var(--text-color-primary);
5087
5096
  }
5088
- .more-container .more-item[data-v-17479e8d] {
5097
+ .more-container .more-item[data-v-11728c2b] {
5089
5098
  position: relative;
5090
5099
  display: flex;
5091
5100
  flex-direction: column;
5092
5101
  }
5093
- .more-container .more-item[data-v-17479e8d]:not(:first-child) {
5102
+ .more-container .more-item[data-v-11728c2b]:not(:first-child) {
5094
5103
  margin-top: 20px;
5095
5104
  }
5096
- .more-container .more-item:not(:first-child) .item-title[data-v-17479e8d] {
5105
+ .more-container .more-item:not(:first-child) .item-title[data-v-11728c2b] {
5097
5106
  width: 100%;
5098
5107
  padding-bottom: 8px;
5099
5108
  font-size: 14px;
@@ -5101,7 +5110,7 @@ to {
5101
5110
  line-height: 22px;
5102
5111
  color: var(--text-color-primary);
5103
5112
  }
5104
- .more-container .more-item:not(:first-child) .more-content[data-v-17479e8d] {
5113
+ .more-container .more-item:not(:first-child) .more-content[data-v-11728c2b] {
5105
5114
  position: relative;
5106
5115
  box-sizing: border-box;
5107
5116
  display: inline-block;
@@ -5121,7 +5130,7 @@ to {
5121
5130
  background-color: var(--bg-color-input);
5122
5131
  border: 1px solid var(--stroke-color-module);
5123
5132
  }
5124
- .more-container .more-item:not(:first-child) .copy-icon[data-v-17479e8d] {
5133
+ .more-container .more-item:not(:first-child) .copy-icon[data-v-11728c2b] {
5125
5134
  position: absolute;
5126
5135
  top: 45px;
5127
5136
  right: 10px;
@@ -9159,7 +9168,7 @@ body, html {
9159
9168
  }
9160
9169
  .tui-room :not([class|=el]) {
9161
9170
  transition: background-color 0.3s, color 0.3s, box-shadow 0.3s;
9162
- }.tui-room[data-v-d9ae22c4] {
9171
+ }.tui-room[data-v-3b59b436] {
9163
9172
  position: relative;
9164
9173
  display: flex;
9165
9174
  flex-direction: column;
@@ -9171,7 +9180,7 @@ body, html {
9171
9180
  text-align: left;
9172
9181
  background-color: var(--bg-color-topbar);
9173
9182
  }
9174
- .tui-room .header[data-v-d9ae22c4] {
9183
+ .tui-room .header[data-v-3b59b436] {
9175
9184
  position: absolute;
9176
9185
  top: 0;
9177
9186
  left: 0;
@@ -9182,20 +9191,20 @@ body, html {
9182
9191
  border-bottom: 1px solid var(--stroke-color-primary);
9183
9192
  box-shadow: 0 1px 0 var(--uikit-color-black-8);
9184
9193
  }
9185
- .tui-room .content[data-v-d9ae22c4] {
9194
+ .tui-room .content[data-v-3b59b436] {
9186
9195
  position: absolute;
9187
9196
  top: 0;
9188
9197
  width: 100%;
9189
9198
  height: 100%;
9190
9199
  background-color: var(--bg-color-topbar);
9191
9200
  }
9192
- .tui-room.tui-room-h5[data-v-d9ae22c4] {
9201
+ .tui-room.tui-room-h5[data-v-3b59b436] {
9193
9202
  width: 100%;
9194
9203
  min-width: 350px;
9195
9204
  height: 100%;
9196
9205
  min-height: 525px;
9197
9206
  }
9198
- #roomContainer.chat-room[data-v-d9ae22c4] {
9207
+ #roomContainer.chat-room[data-v-3b59b436] {
9199
9208
  position: absolute;
9200
9209
  top: 0;
9201
9210
  right: 0;
@@ -9207,8 +9216,8 @@ body, html {
9207
9216
  margin: auto;
9208
9217
  border-radius: 10px;
9209
9218
  }
9210
- #roomContainer.tui-room-h5[data-v-d9ae22c4],
9211
- #roomContainer .chat-room[data-v-d9ae22c4] {
9219
+ #roomContainer.tui-room-h5[data-v-3b59b436],
9220
+ #roomContainer .chat-room[data-v-3b59b436] {
9212
9221
  width: 100%;
9213
9222
  height: 100%;
9214
9223
  }.user-info-container[data-v-9e9aff53] {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndscnj/roomkit-web-vue3",
3
- "version": "25.12.23182",
3
+ "version": "25.12.24111",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.mjs",
6
6
  "types": "./es/index.d.ts",
@@ -54,6 +54,7 @@
54
54
  <voteControl
55
55
  class="center-container-item"
56
56
  @click="handleControlClick('voteControl')"
57
+ @on-vote="onVote"
57
58
  >
58
59
  <template #content>
59
60
  <slot name="content"></slot>
@@ -81,6 +82,7 @@
81
82
  </template>
82
83
 
83
84
  <script setup lang="ts">
85
+ import { defineEmits } from "vue";
84
86
  import {
85
87
  AudioSetting,
86
88
  VideoSetting,
@@ -101,13 +103,18 @@ import VirtualBackground from '../VirtualBackground.vue';
101
103
  import AIControl from '../AIControl.vue';
102
104
  import BasicBeauty from '../BasicBeauty.vue';
103
105
  import bus from '../../../hooks/useMitt';
104
- import voteControl from '../voteControl.vue';
106
+ import voteControl from '../voteControl';
105
107
  import useRoomFooter from './useRoomFooterHooks';
106
108
  import { isElectron } from '../../../utils/environment';
107
109
  const { roomStore, isMaster, isAdmin, isAudience } = useRoomFooter();
108
110
  function handleControlClick(name: string) {
109
111
  bus.emit('experience-communication', name);
110
112
  }
113
+ const emit = defineEmits(['on-vote']);
114
+ const onVote = (data: { name: string; visible: boolean }) => {
115
+ console.log(data,"data111")
116
+ emit('on-vote', { code: data.visible, message: 'vote' });
117
+ };
111
118
  </script>
112
119
 
113
120
  <style lang="scss" scoped>
@@ -0,0 +1,122 @@
1
+ <template>
2
+ <div>
3
+ <div v-if="moreControlConfig.visible" class="more-control-container">
4
+ <icon-button
5
+ v-tap="showMore"
6
+ :is-active="sidebarName === 'more'"
7
+ :title="t('More')"
8
+ >
9
+ <IconExtension size="24" />
10
+ </icon-button>
11
+ </div>
12
+ <div v-if="showMoreContent" ref="moreContentRef" class="show-more-content">
13
+ <div class="control-compent">
14
+ <chat-control
15
+ v-if="roomStore.isSpeakAfterTakingSeatMode"
16
+ @click="handleControlClick('chatControl')"
17
+ />
18
+ <contact-control @click="handleControlClick('contactControl')" />
19
+ <invite-control
20
+ @show-overlay="handleShowOverlay"
21
+ @click="handleControlClick('inviteControl')"
22
+ />
23
+ </div>
24
+ <div v-tap="handleCancelControl" class="close">{{ t('Cancel') }}</div>
25
+ </div>
26
+ </div>
27
+ </template>
28
+ <script setup lang="ts">
29
+ import { ref, onMounted, onUnmounted, defineEmits } from 'vue';
30
+ import { IconExtension } from '@tencentcloud/uikit-base-component-vue3';
31
+ import IconButton from '../../common/base/IconButton.vue';
32
+ import userVoteControl from './useVoteControlHooks';
33
+ import ChatControl from '../ChatControl.vue';
34
+ import InviteControl from '../InviteControl.vue';
35
+ import ContactControl from '../ContactControl.vue';
36
+ import { useRoomStore } from '../../../stores/room';
37
+ import bus from '../../../hooks/useMitt';
38
+ import vTap from '../../../directives/vTap';
39
+ import { roomService } from '../../../services';
40
+
41
+ const moreControlConfig = roomService.getComponentConfig('MoreControl');
42
+ const showMoreContent = ref(false);
43
+ const moreContentRef = ref();
44
+
45
+ const { t, sidebarName } = userVoteControl();
46
+ const roomStore = useRoomStore();
47
+ const emit = defineEmits(['show-overlay']);
48
+ function showMore() {
49
+ showMoreContent.value = true;
50
+ }
51
+
52
+ function handleCancelControl() {
53
+ showMoreContent.value = false;
54
+ }
55
+ function handleControlClick(name: string) {
56
+ bus.emit('experience-communication', name);
57
+ }
58
+
59
+ function handleShowOverlay(data: { name: string; visible: boolean }) {
60
+ showMoreContent.value = false;
61
+ emit('show-overlay', data);
62
+ }
63
+
64
+ function handleDocumentClick(event: MouseEvent) {
65
+ if (showMoreContent.value && !moreContentRef.value.contains(event.target)) {
66
+ showMoreContent.value = false;
67
+ }
68
+ }
69
+
70
+ onMounted(() => {
71
+ document?.addEventListener('click', handleDocumentClick, true);
72
+ });
73
+
74
+ onUnmounted(() => {
75
+ document?.removeEventListener('click', handleDocumentClick, true);
76
+ });
77
+ </script>
78
+ <style lang="scss" scoped>
79
+ .show-more-content {
80
+ position: absolute;
81
+ bottom: 15px;
82
+ left: 5%;
83
+ width: 90%;
84
+ height: 17vh;
85
+ padding: 10px;
86
+ border-radius: 13px;
87
+ animation-name: popup;
88
+ animation-duration: 200ms;
89
+ background-color: var(--bg-color-operate);
90
+ }
91
+
92
+ @keyframes popup {
93
+ from {
94
+ bottom: 0;
95
+ }
96
+
97
+ to {
98
+ bottom: 15px;
99
+ }
100
+ }
101
+
102
+ .control-compent {
103
+ display: flex;
104
+ }
105
+
106
+ .close {
107
+ position: relative;
108
+ top: 10%;
109
+ display: flex;
110
+ align-items: center;
111
+ justify-content: center;
112
+ width: 100%;
113
+ padding: 10px;
114
+ font-style: normal;
115
+ font-weight: 400;
116
+ line-height: 24px;
117
+ text-align: center;
118
+ border-radius: 8px;
119
+ color: var(--text-color-primary);
120
+ background-color: var(--button-color-secondary-default);
121
+ }
122
+ </style>
@@ -0,0 +1,35 @@
1
+ <template>
2
+ <div v-if="voteControlConfig.visible" class="vote-control-container">
3
+ <icon-button
4
+ :is-active="sidebarName === 'vote'"
5
+ :title="t('Vote')"
6
+ @click-icon="toggleMoreSidebar"
7
+ >
8
+ <IconMore size="24" />
9
+ </icon-button>
10
+ </div>
11
+ </template>
12
+ <script setup lang="ts">
13
+ import { IconMore } from '@tencentcloud/uikit-base-component-vue3';
14
+ import IconButton from '../../common/base/IconButton.vue';
15
+ import userVoteControl from './useVoteControlHooks';
16
+ import { roomService } from '../../../services';
17
+ import { defineEmits } from 'vue';
18
+ const voteControlConfig = roomService.getComponentConfig('VoteControl');
19
+ const { t, basicStore, sidebarName } = userVoteControl();
20
+ const emit = defineEmits(['on-vote']);
21
+ function toggleMoreSidebar() {
22
+ if (basicStore.setSidebarOpenStatus && basicStore.sidebarName === 'vote') {
23
+ basicStore.setSidebarOpenStatus(false);
24
+ basicStore.setSidebarName('');
25
+ return;
26
+ }
27
+ basicStore.setSidebarOpenStatus(true);
28
+ basicStore.setSidebarName('vote');
29
+ emit('on-vote', {
30
+ name: 'onVote',
31
+ visible: voteControlConfig.visible,
32
+ });
33
+ }
34
+ </script>
35
+ <style lang="scss" scoped></style>
@@ -0,0 +1,8 @@
1
+ import VoteControlH5 from './VoteControlH5.vue';
2
+ import VoteControlPc from './VoteControlPC.vue';
3
+
4
+ import { isMobile } from '../../../utils/environment';
5
+
6
+ const VoteControl = isMobile ? VoteControlH5 : VoteControlPc;
7
+
8
+ export default VoteControl;
@@ -0,0 +1,23 @@
1
+ import { computed } from 'vue';
2
+ import { useBasicStore } from '../../../stores/basic';
3
+ import { storeToRefs } from 'pinia';
4
+ import { useI18n } from '../../../locales';
5
+ import { ICON_NAME } from '../../../constants/icon';
6
+
7
+ export default function useControl() {
8
+ const { t } = useI18n();
9
+
10
+ const basicStore = useBasicStore();
11
+ const { sidebarName } = storeToRefs(basicStore);
12
+
13
+ const iconName = computed(() =>
14
+ sidebarName.value === 'vote' ? ICON_NAME.VoteActive : ICON_NAME.Vote
15
+ );
16
+
17
+ return {
18
+ t,
19
+ basicStore,
20
+ iconName,
21
+ sidebarName,
22
+ };
23
+ }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="more-container" v-if="voteControlConfig.visible">
2
+ <div class="vote-control-container">
3
3
  <icon-button
4
4
  :is-active="sidebarName === 'vote'"
5
5
  :title="t('Vote')"
@@ -7,11 +7,13 @@
7
7
  >
8
8
  <IconAIIcon size="24" />
9
9
  </icon-button>
10
- {{ sidebarName }}
11
- <div @click="toggleToolBox">0测试</div>
12
- <div class="tool-box" v-if="!isSidebarOpen && showToolBox">
13
- 123
10
+ <div class="contact-container" v-if="!isSidebarOpen && showToolBox">
14
11
  <slot name="content"></slot>
12
+ <!-- <room-vote ref="contactRef" @on-close-contact="handleOnCloseContact">
13
+ <template #content>
14
+ <slot name="content"></slot>
15
+ </template>
16
+ </room-vote> -->
15
17
  </div>
16
18
  </div>
17
19
  </template>
@@ -23,9 +25,8 @@ import { useI18n } from '../../locales';
23
25
  import IconButton from '../common/base/IconButton.vue';
24
26
  import {
25
27
  IconAIIcon,
26
- IconAISubtitles,
27
- IconAITranscription,
28
28
  } from '@tencentcloud/uikit-base-component-vue3';
29
+ import roomVote from '../RoomVote';
29
30
  const { basicStore } = roomService;
30
31
  const isSidebarOpen = computed(() => basicStore.isSidebarOpen);
31
32
  const sidebarName = computed(() => basicStore.sidebarName);
@@ -34,50 +35,30 @@ const showToolBox = ref(false);
34
35
  watch(isSidebarOpen, newValue => {
35
36
  showToolBox.value = newValue && false;
36
37
  });
37
- const voteControlConfig = roomService.getComponentConfig('VoteControl');
38
38
  const emit = defineEmits(['on-vote']);
39
39
  function toggleToolBox() {
40
+ console.log(showToolBox.value,"0000")
40
41
  showToolBox.value = !showToolBox.value;
41
42
  emit('on-vote', {
42
- name: 'onVote',
43
- visible: showToolBox.value,
44
- });
43
+ name: 'onVote',
44
+ visible: showToolBox.value,
45
+ });
46
+ }
47
+ function handleOnCloseContact() {
48
+ showToolBox.value = false;
45
49
  }
46
-
47
50
  </script>
48
51
 
49
52
  <style lang="scss" scoped>
50
- .tool-box {
51
- position: absolute;
52
- bottom: 72px;
53
- z-index: 2;
54
- display: flex;
55
- flex-direction: column;
56
- align-items: center;
57
- justify-content: center;
58
- padding: 5px 0;
59
- border-radius: 15px;
60
- background-color: var(--bg-color-dialog);
61
- box-shadow: 0 -8px 30p var(--uikit-color-black-8);
62
-
63
- .tool-box-item {
64
- display: flex;
65
- align-items: center;
66
- justify-content: flex-start;
67
- width: 100%;
68
- padding: 7px 10px;
69
- font-size: 12px;
70
- white-space: nowrap;
71
- cursor: pointer;
72
-
73
- .icon {
74
- margin-right: 8px;
75
- }
76
- }
77
-
78
- .tool-box-item:hover {
79
- border-radius: 8px;
80
- background-color: var(--list-color-hover);
81
- }
53
+ .contact-container {
54
+ position: fixed;
55
+ top: 0;
56
+ bottom: 0;
57
+ left: 0;
58
+ z-index: 11;
59
+ box-sizing: border-box;
60
+ width: 100vw;
61
+ height: auto;
62
+ background-color: var(--uikit-color-black-8);
82
63
  }
83
64
  </style>
@@ -3,7 +3,7 @@
3
3
  <div class="more-title">
4
4
  <IconEmail class="email-icon" />
5
5
  <div class="more-notice">
6
- {{ t('If you have any questions, please email us.') }}
6
+ {{ t('Vote') }}
7
7
  </div>
8
8
  </div>
9
9
  <div v-if="isZH" class="more-item">
@@ -15,6 +15,9 @@
15
15
  <div class="more-content">{{ email }}</div>
16
16
  <IconCopy class="copy-icon" @click="onCopy(email)" />
17
17
  </div>
18
+ <div class="contact-container">
19
+ <slot name="content"></slot>
20
+ </div>
18
21
  </div>
19
22
  </template>
20
23
 
@@ -322,6 +322,7 @@ function resetStore() {
322
322
  }
323
323
 
324
324
  const onVote = (data: { name: string; visible: boolean }) => {
325
+ console.log(data,"data222")
325
326
  emit('on-vote', { code: data.visible, message: 'vote' });
326
327
  };
327
328
  const onStartRoom = () => {
@@ -20,6 +20,8 @@ export enum ICON_NAME {
20
20
  ManageMember = 'manage-member',
21
21
  More = 'more',
22
22
  MoreActive = 'more-active',
23
+ Vote = 'vote',
24
+ VoteActive = 'vote-active',
23
25
  SettingActive = 'setting-active',
24
26
  Setting = 'setting',
25
27
  LineArrowUp = 'line-arrow-up',
@@ -1,15 +0,0 @@
1
- declare function __VLS_template(): {
2
- content?(_: {}): any;
3
- };
4
- declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
5
- "on-vote": (...args: any[]) => void;
6
- }, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
7
- "onOn-vote"?: ((...args: any[]) => any) | undefined;
8
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
9
- declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
10
- export default _default;
11
- type __VLS_WithTemplateSlots<T, S> = T & {
12
- new (): {
13
- $slots: S;
14
- };
15
- };
@@ -1,7 +0,0 @@
1
- import _sfc_main from "./voteControl.vue2.mjs";
2
- /* empty css */
3
- import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const voteControl = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-45795e90"]]);
5
- export {
6
- voteControl as default
7
- };