@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.
- package/es/components/RoomFooter/index/index.d.ts +13 -3
- package/es/components/RoomFooter/index/indexPC.vue.d.ts +5 -1
- package/es/components/RoomFooter/index/indexPC.vue.mjs +1 -1
- package/es/components/RoomFooter/index/indexPC.vue2.mjs +11 -4
- package/es/components/RoomFooter/voteControl/VoteControlH5.vue.d.ts +6 -0
- package/es/components/RoomFooter/voteControl/VoteControlH5.vue.mjs +7 -0
- package/es/components/RoomFooter/voteControl/VoteControlH5.vue2.mjs +105 -0
- package/es/components/RoomFooter/voteControl/VoteControlPC.vue.d.ts +6 -0
- package/es/components/RoomFooter/voteControl/VoteControlPC.vue.mjs +55 -0
- package/es/components/RoomFooter/voteControl/VoteControlPC.vue2.mjs +4 -0
- package/es/components/RoomFooter/voteControl/index.d.ts +10 -0
- package/es/components/RoomFooter/voteControl/index.mjs +7 -0
- package/es/components/RoomFooter/voteControl/useVoteControlHooks.mjs +22 -0
- package/es/components/RoomVote/index.d.ts +17 -1
- package/es/components/RoomVote/indexPC.vue.d.ts +10 -1
- package/es/components/RoomVote/indexPC.vue.mjs +1 -1
- package/es/components/RoomVote/indexPC.vue2.mjs +6 -2
- package/es/conference.vue.mjs +1 -1
- package/es/conference.vue2.mjs +1 -0
- package/es/constants/icon.d.ts +2 -0
- package/es/constants/icon.mjs +2 -0
- package/es/index.mjs +53 -44
- package/lib/components/RoomFooter/index/index.d.ts +13 -3
- package/lib/components/RoomFooter/index/indexPC.vue.d.ts +5 -1
- package/lib/components/RoomFooter/index/indexPC.vue.js +1 -1
- package/lib/components/RoomFooter/index/indexPC.vue2.js +15 -8
- package/lib/components/RoomFooter/voteControl/VoteControlH5.vue.d.ts +6 -0
- package/lib/components/RoomFooter/voteControl/VoteControlH5.vue.js +7 -0
- package/lib/components/RoomFooter/voteControl/VoteControlH5.vue2.js +105 -0
- package/lib/components/RoomFooter/voteControl/VoteControlPC.vue.d.ts +6 -0
- package/lib/components/RoomFooter/voteControl/VoteControlPC.vue.js +55 -0
- package/lib/components/RoomFooter/voteControl/VoteControlPC.vue2.js +4 -0
- package/lib/components/RoomFooter/voteControl/index.d.ts +10 -0
- package/lib/components/RoomFooter/voteControl/index.js +7 -0
- package/lib/components/RoomFooter/voteControl/useVoteControlHooks.js +22 -0
- package/lib/components/RoomVote/index.d.ts +17 -1
- package/lib/components/RoomVote/indexPC.vue.d.ts +10 -1
- package/lib/components/RoomVote/indexPC.vue.js +1 -1
- package/lib/components/RoomVote/indexPC.vue2.js +5 -1
- package/lib/conference.vue.js +1 -1
- package/lib/conference.vue2.js +1 -0
- package/lib/constants/icon.d.ts +2 -0
- package/lib/constants/icon.js +2 -0
- package/lib/index.js +53 -44
- package/package.json +1 -1
- package/src/TUIRoom/components/RoomFooter/index/indexPC.vue +8 -1
- package/src/TUIRoom/components/RoomFooter/voteControl/VoteControlH5.vue +122 -0
- package/src/TUIRoom/components/RoomFooter/voteControl/VoteControlPC.vue +35 -0
- package/src/TUIRoom/components/RoomFooter/voteControl/index.ts +8 -0
- package/src/TUIRoom/components/RoomFooter/voteControl/useVoteControlHooks.ts +23 -0
- package/src/TUIRoom/components/RoomFooter/voteControl.vue +25 -44
- package/src/TUIRoom/components/RoomVote/indexPC.vue +4 -1
- package/src/TUIRoom/conference.vue +1 -0
- package/src/TUIRoom/constants/icon.ts +2 -0
- package/es/components/RoomFooter/voteControl.vue.d.ts +0 -15
- package/es/components/RoomFooter/voteControl.vue.mjs +0 -7
- package/es/components/RoomFooter/voteControl.vue2.mjs +0 -65
- package/lib/components/RoomFooter/voteControl.vue.d.ts +0 -15
- package/lib/components/RoomFooter/voteControl.vue.js +0 -7
- package/lib/components/RoomFooter/voteControl.vue2.js +0 -65
package/lib/conference.vue2.js
CHANGED
|
@@ -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 = () => {
|
package/lib/constants/icon.d.ts
CHANGED
package/lib/constants/icon.js
CHANGED
|
@@ -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
|
-
}.
|
|
3931
|
+
}.show-more-content[data-v-1506794c] {
|
|
3932
3932
|
position: absolute;
|
|
3933
|
-
bottom:
|
|
3934
|
-
|
|
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
|
-
.
|
|
3954
|
+
.close[data-v-1506794c] {
|
|
3955
|
+
position: relative;
|
|
3956
|
+
top: 10%;
|
|
3945
3957
|
display: flex;
|
|
3946
3958
|
align-items: center;
|
|
3947
|
-
justify-content:
|
|
3959
|
+
justify-content: center;
|
|
3948
3960
|
width: 100%;
|
|
3949
|
-
padding:
|
|
3950
|
-
font-
|
|
3951
|
-
|
|
3952
|
-
|
|
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
|
-
|
|
3960
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
5078
|
+
}.more-container[data-v-11728c2b] {
|
|
5070
5079
|
padding: 20px;
|
|
5071
5080
|
}
|
|
5072
|
-
.more-container .more-title[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
9211
|
-
#roomContainer .chat-room[data-v-
|
|
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
|
@@ -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
|
|
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,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="
|
|
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
|
-
|
|
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
|
-
|
|
43
|
-
|
|
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
|
-
.
|
|
51
|
-
position:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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('
|
|
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
|
|
|
@@ -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
|
-
};
|