@ndscnj/roomkit-web-vue3 25.12.23181 → 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/RoomInvite/useRoomInviteHooks.d.ts +1 -1
- package/es/components/RoomSidebar/useSideBarHooks.d.ts +1 -1
- 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 +54 -34
- package/es/locales/zh-CN.mjs +1 -1
- package/es/stores/basic.d.ts +1 -1
- 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/RoomInvite/useRoomInviteHooks.d.ts +1 -1
- package/lib/components/RoomSidebar/useSideBarHooks.d.ts +1 -1
- 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 +54 -34
- package/lib/locales/zh-CN.js +1 -1
- package/lib/stores/basic.d.ts +1 -1
- 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 +30 -33
- 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/src/TUIRoom/locales/zh-CN.ts +1 -1
- package/src/TUIRoom/stores/basic.ts +1 -1
- 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
|
@@ -14,6 +14,7 @@ const _hoisted_5 = { class: "item-title" };
|
|
|
14
14
|
const _hoisted_6 = { class: "more-item" };
|
|
15
15
|
const _hoisted_7 = { class: "item-title" };
|
|
16
16
|
const _hoisted_8 = { class: "more-content" };
|
|
17
|
+
const _hoisted_9 = { class: "contact-container" };
|
|
17
18
|
const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
18
19
|
__name: "indexPC",
|
|
19
20
|
setup(__props) {
|
|
@@ -22,7 +23,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
|
22
23
|
return Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
|
|
23
24
|
Vue.createElementVNode("div", _hoisted_2, [
|
|
24
25
|
Vue.createVNode(Vue.unref(uikitBaseComponentVue3.IconEmail), { class: "email-icon" }),
|
|
25
|
-
Vue.createElementVNode("div", _hoisted_3, Vue.toDisplayString(Vue.unref(t)("
|
|
26
|
+
Vue.createElementVNode("div", _hoisted_3, Vue.toDisplayString(Vue.unref(t)("Vote")), 1)
|
|
26
27
|
]),
|
|
27
28
|
Vue.unref(isZH) ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_4, [
|
|
28
29
|
Vue.createElementVNode("div", _hoisted_5, Vue.toDisplayString(Vue.unref(t)("Join our product discussion group")), 1),
|
|
@@ -40,6 +41,9 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
|
40
41
|
class: "copy-icon",
|
|
41
42
|
onClick: _cache[0] || (_cache[0] = ($event) => Vue.unref(onCopy)(Vue.unref(email)))
|
|
42
43
|
})
|
|
44
|
+
]),
|
|
45
|
+
Vue.createElementVNode("div", _hoisted_9, [
|
|
46
|
+
Vue.renderSlot(_ctx.$slots, "content", {}, void 0, true)
|
|
43
47
|
])
|
|
44
48
|
]);
|
|
45
49
|
};
|
package/lib/conference.vue.js
CHANGED
|
@@ -4,5 +4,5 @@ const conference_vue_vue_type_script_setup_true_lang = require("./conference.vue
|
|
|
4
4
|
;/* empty css */
|
|
5
5
|
;/* empty css */
|
|
6
6
|
const _pluginVue_exportHelper = require("./_virtual/_plugin-vue_export-helper.js");
|
|
7
|
-
const ConferenceMainView = /* @__PURE__ */ _pluginVue_exportHelper.default(conference_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-
|
|
7
|
+
const ConferenceMainView = /* @__PURE__ */ _pluginVue_exportHelper.default(conference_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-3b59b436"]]);
|
|
8
8
|
exports.default = ConferenceMainView;
|
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,25 +3928,45 @@ to {
|
|
|
3928
3928
|
}
|
|
3929
3929
|
.footer .mirror-container .mirror-text[data-v-21a63691] {
|
|
3930
3930
|
margin-left: 4px;
|
|
3931
|
-
}.more-
|
|
3932
|
-
|
|
3931
|
+
}.show-more-content[data-v-1506794c] {
|
|
3932
|
+
position: absolute;
|
|
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);
|
|
3933
3942
|
}
|
|
3934
|
-
|
|
3935
|
-
|
|
3936
|
-
|
|
3943
|
+
@keyframes popup-1506794c {
|
|
3944
|
+
from {
|
|
3945
|
+
bottom: 0;
|
|
3946
|
+
}
|
|
3947
|
+
to {
|
|
3948
|
+
bottom: 15px;
|
|
3937
3949
|
}
|
|
3938
|
-
.more-container .more-title .email-icon[data-v-412ed740] {
|
|
3939
|
-
color: var(--uikit-color-gray-7);
|
|
3940
3950
|
}
|
|
3941
|
-
.
|
|
3951
|
+
.control-compent[data-v-1506794c] {
|
|
3952
|
+
display: flex;
|
|
3953
|
+
}
|
|
3954
|
+
.close[data-v-1506794c] {
|
|
3955
|
+
position: relative;
|
|
3956
|
+
top: 10%;
|
|
3957
|
+
display: flex;
|
|
3958
|
+
align-items: center;
|
|
3959
|
+
justify-content: center;
|
|
3942
3960
|
width: 100%;
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
font-size: 14px;
|
|
3961
|
+
padding: 10px;
|
|
3962
|
+
font-style: normal;
|
|
3946
3963
|
font-weight: 400;
|
|
3947
|
-
line-height:
|
|
3964
|
+
line-height: 24px;
|
|
3965
|
+
text-align: center;
|
|
3966
|
+
border-radius: 8px;
|
|
3948
3967
|
color: var(--text-color-primary);
|
|
3949
|
-
|
|
3968
|
+
background-color: var(--button-color-secondary-default);
|
|
3969
|
+
}.footer-container[data-v-3a373c3a] {
|
|
3950
3970
|
position: absolute;
|
|
3951
3971
|
bottom: 0;
|
|
3952
3972
|
display: flex;
|
|
@@ -3960,25 +3980,25 @@ to {
|
|
|
3960
3980
|
background-color: var(--bg-color-topbar);
|
|
3961
3981
|
box-shadow: 0 -8px 30px var(--uikit-color-black-8);
|
|
3962
3982
|
}
|
|
3963
|
-
.footer-container .left-container[data-v-
|
|
3983
|
+
.footer-container .left-container[data-v-3a373c3a] {
|
|
3964
3984
|
display: flex;
|
|
3965
3985
|
align-items: center;
|
|
3966
3986
|
height: 100%;
|
|
3967
3987
|
}
|
|
3968
|
-
.footer-container .left-container .left-container-item[data-v-
|
|
3988
|
+
.footer-container .left-container .left-container-item[data-v-3a373c3a]:not(:first-child) {
|
|
3969
3989
|
margin-left: 1rem;
|
|
3970
3990
|
}
|
|
3971
|
-
.footer-container .center-container[data-v-
|
|
3991
|
+
.footer-container .center-container[data-v-3a373c3a] {
|
|
3972
3992
|
position: relative;
|
|
3973
3993
|
display: flex;
|
|
3974
3994
|
align-items: center;
|
|
3975
3995
|
height: 100%;
|
|
3976
3996
|
margin: 0 auto;
|
|
3977
3997
|
}
|
|
3978
|
-
.footer-container .center-container .center-container-item[data-v-
|
|
3998
|
+
.footer-container .center-container .center-container-item[data-v-3a373c3a]:not(:first-child) {
|
|
3979
3999
|
margin-left: 16px;
|
|
3980
4000
|
}
|
|
3981
|
-
.footer-container .right-container[data-v-
|
|
4001
|
+
.footer-container .right-container[data-v-3a373c3a] {
|
|
3982
4002
|
display: flex;
|
|
3983
4003
|
align-items: center;
|
|
3984
4004
|
height: 100%;
|
|
@@ -5055,17 +5075,17 @@ to {
|
|
|
5055
5075
|
font-size: 16px;
|
|
5056
5076
|
font-weight: 400;
|
|
5057
5077
|
text-align: end;
|
|
5058
|
-
}.more-container[data-v-
|
|
5078
|
+
}.more-container[data-v-11728c2b] {
|
|
5059
5079
|
padding: 20px;
|
|
5060
5080
|
}
|
|
5061
|
-
.more-container .more-title[data-v-
|
|
5081
|
+
.more-container .more-title[data-v-11728c2b] {
|
|
5062
5082
|
display: flex;
|
|
5063
5083
|
align-items: center;
|
|
5064
5084
|
}
|
|
5065
|
-
.more-container .more-title .email-icon[data-v-
|
|
5085
|
+
.more-container .more-title .email-icon[data-v-11728c2b] {
|
|
5066
5086
|
color: var(--uikit-color-gray-7);
|
|
5067
5087
|
}
|
|
5068
|
-
.more-container .more-title .more-notice[data-v-
|
|
5088
|
+
.more-container .more-title .more-notice[data-v-11728c2b] {
|
|
5069
5089
|
width: 100%;
|
|
5070
5090
|
height: 22px;
|
|
5071
5091
|
padding-left: 8px;
|
|
@@ -5074,15 +5094,15 @@ to {
|
|
|
5074
5094
|
line-height: 22px;
|
|
5075
5095
|
color: var(--text-color-primary);
|
|
5076
5096
|
}
|
|
5077
|
-
.more-container .more-item[data-v-
|
|
5097
|
+
.more-container .more-item[data-v-11728c2b] {
|
|
5078
5098
|
position: relative;
|
|
5079
5099
|
display: flex;
|
|
5080
5100
|
flex-direction: column;
|
|
5081
5101
|
}
|
|
5082
|
-
.more-container .more-item[data-v-
|
|
5102
|
+
.more-container .more-item[data-v-11728c2b]:not(:first-child) {
|
|
5083
5103
|
margin-top: 20px;
|
|
5084
5104
|
}
|
|
5085
|
-
.more-container .more-item:not(:first-child) .item-title[data-v-
|
|
5105
|
+
.more-container .more-item:not(:first-child) .item-title[data-v-11728c2b] {
|
|
5086
5106
|
width: 100%;
|
|
5087
5107
|
padding-bottom: 8px;
|
|
5088
5108
|
font-size: 14px;
|
|
@@ -5090,7 +5110,7 @@ to {
|
|
|
5090
5110
|
line-height: 22px;
|
|
5091
5111
|
color: var(--text-color-primary);
|
|
5092
5112
|
}
|
|
5093
|
-
.more-container .more-item:not(:first-child) .more-content[data-v-
|
|
5113
|
+
.more-container .more-item:not(:first-child) .more-content[data-v-11728c2b] {
|
|
5094
5114
|
position: relative;
|
|
5095
5115
|
box-sizing: border-box;
|
|
5096
5116
|
display: inline-block;
|
|
@@ -5110,7 +5130,7 @@ to {
|
|
|
5110
5130
|
background-color: var(--bg-color-input);
|
|
5111
5131
|
border: 1px solid var(--stroke-color-module);
|
|
5112
5132
|
}
|
|
5113
|
-
.more-container .more-item:not(:first-child) .copy-icon[data-v-
|
|
5133
|
+
.more-container .more-item:not(:first-child) .copy-icon[data-v-11728c2b] {
|
|
5114
5134
|
position: absolute;
|
|
5115
5135
|
top: 45px;
|
|
5116
5136
|
right: 10px;
|
|
@@ -9148,7 +9168,7 @@ body, html {
|
|
|
9148
9168
|
}
|
|
9149
9169
|
.tui-room :not([class|=el]) {
|
|
9150
9170
|
transition: background-color 0.3s, color 0.3s, box-shadow 0.3s;
|
|
9151
|
-
}.tui-room[data-v-
|
|
9171
|
+
}.tui-room[data-v-3b59b436] {
|
|
9152
9172
|
position: relative;
|
|
9153
9173
|
display: flex;
|
|
9154
9174
|
flex-direction: column;
|
|
@@ -9160,7 +9180,7 @@ body, html {
|
|
|
9160
9180
|
text-align: left;
|
|
9161
9181
|
background-color: var(--bg-color-topbar);
|
|
9162
9182
|
}
|
|
9163
|
-
.tui-room .header[data-v-
|
|
9183
|
+
.tui-room .header[data-v-3b59b436] {
|
|
9164
9184
|
position: absolute;
|
|
9165
9185
|
top: 0;
|
|
9166
9186
|
left: 0;
|
|
@@ -9171,20 +9191,20 @@ body, html {
|
|
|
9171
9191
|
border-bottom: 1px solid var(--stroke-color-primary);
|
|
9172
9192
|
box-shadow: 0 1px 0 var(--uikit-color-black-8);
|
|
9173
9193
|
}
|
|
9174
|
-
.tui-room .content[data-v-
|
|
9194
|
+
.tui-room .content[data-v-3b59b436] {
|
|
9175
9195
|
position: absolute;
|
|
9176
9196
|
top: 0;
|
|
9177
9197
|
width: 100%;
|
|
9178
9198
|
height: 100%;
|
|
9179
9199
|
background-color: var(--bg-color-topbar);
|
|
9180
9200
|
}
|
|
9181
|
-
.tui-room.tui-room-h5[data-v-
|
|
9201
|
+
.tui-room.tui-room-h5[data-v-3b59b436] {
|
|
9182
9202
|
width: 100%;
|
|
9183
9203
|
min-width: 350px;
|
|
9184
9204
|
height: 100%;
|
|
9185
9205
|
min-height: 525px;
|
|
9186
9206
|
}
|
|
9187
|
-
#roomContainer.chat-room[data-v-
|
|
9207
|
+
#roomContainer.chat-room[data-v-3b59b436] {
|
|
9188
9208
|
position: absolute;
|
|
9189
9209
|
top: 0;
|
|
9190
9210
|
right: 0;
|
|
@@ -9196,8 +9216,8 @@ body, html {
|
|
|
9196
9216
|
margin: auto;
|
|
9197
9217
|
border-radius: 10px;
|
|
9198
9218
|
}
|
|
9199
|
-
#roomContainer.tui-room-h5[data-v-
|
|
9200
|
-
#roomContainer .chat-room[data-v-
|
|
9219
|
+
#roomContainer.tui-room-h5[data-v-3b59b436],
|
|
9220
|
+
#roomContainer .chat-room[data-v-3b59b436] {
|
|
9201
9221
|
width: 100%;
|
|
9202
9222
|
height: 100%;
|
|
9203
9223
|
}.user-info-container[data-v-9e9aff53] {
|
package/lib/locales/zh-CN.js
CHANGED
package/lib/stores/basic.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { LAYOUT } from '../constants/render';
|
|
2
2
|
import { TUINetwork } from '../../../node_modules/@tencentcloud/tuiroom-engine-js';
|
|
3
3
|
|
|
4
|
-
type SideBarType = 'chat' | 'invite' | 'manage-member' | 'more' | 'transfer-leave' | 'apply' | 'aiTranscription' | '
|
|
4
|
+
type SideBarType = 'chat' | 'invite' | 'manage-member' | 'vote' | 'more' | 'transfer-leave' | 'apply' | 'aiTranscription' | '';
|
|
5
5
|
type SceneType = 'chat' | 'default';
|
|
6
6
|
interface BasicState {
|
|
7
7
|
sdkAppId: number;
|
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,19 +7,26 @@
|
|
|
7
7
|
>
|
|
8
8
|
<IconAIIcon size="24" />
|
|
9
9
|
</icon-button>
|
|
10
|
-
|
|
11
|
-
<div @click="toggleToolBox">测试</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>
|
|
18
20
|
|
|
19
21
|
<script setup lang="ts">
|
|
20
|
-
|
|
22
|
+
import { roomService } from '../../services';
|
|
21
23
|
import { defineEmits, ref,computed,watch } from 'vue';
|
|
22
24
|
import { useI18n } from '../../locales';
|
|
25
|
+
import IconButton from '../common/base/IconButton.vue';
|
|
26
|
+
import {
|
|
27
|
+
IconAIIcon,
|
|
28
|
+
} from '@tencentcloud/uikit-base-component-vue3';
|
|
29
|
+
import roomVote from '../RoomVote';
|
|
23
30
|
const { basicStore } = roomService;
|
|
24
31
|
const isSidebarOpen = computed(() => basicStore.isSidebarOpen);
|
|
25
32
|
const sidebarName = computed(() => basicStore.sidebarName);
|
|
@@ -28,40 +35,30 @@ const showToolBox = ref(false);
|
|
|
28
35
|
watch(isSidebarOpen, newValue => {
|
|
29
36
|
showToolBox.value = newValue && false;
|
|
30
37
|
});
|
|
31
|
-
const voteControlConfig = roomService.getComponentConfig('VoteControl');
|
|
32
38
|
const emit = defineEmits(['on-vote']);
|
|
33
39
|
function toggleToolBox() {
|
|
40
|
+
console.log(showToolBox.value,"0000")
|
|
34
41
|
showToolBox.value = !showToolBox.value;
|
|
35
42
|
emit('on-vote', {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
name: 'onVote',
|
|
44
|
+
visible: showToolBox.value,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function handleOnCloseContact() {
|
|
48
|
+
showToolBox.value = false;
|
|
39
49
|
}
|
|
40
|
-
|
|
41
50
|
</script>
|
|
42
51
|
|
|
43
52
|
<style lang="scss" scoped>
|
|
44
|
-
.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
.more-notice {
|
|
56
|
-
width: 100%;
|
|
57
|
-
height: 22px;
|
|
58
|
-
padding-left: 8px;
|
|
59
|
-
font-size: 14px;
|
|
60
|
-
font-weight: 400;
|
|
61
|
-
line-height: 22px;
|
|
62
|
-
color: var(--text-color-primary);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
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);
|
|
66
63
|
}
|
|
67
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
|
|