@ndscnj/roomkit-web-vue3 25.12.24141 → 25.12.24142
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/voteControl/index.d.ts +6 -0
- package/es/components/RoomFooter/voteControl.vue.mjs +1 -1
- package/es/components/RoomFooter/voteControl.vue2.mjs +2 -6
- package/es/components/RoomVote/indexPC.vue.mjs +1 -1
- package/es/components/RoomVote/indexPC.vue2.mjs +1 -1
- package/es/index.mjs +10 -10
- package/lib/components/RoomFooter/voteControl/index.d.ts +6 -0
- package/lib/components/RoomFooter/voteControl.vue.js +1 -1
- package/lib/components/RoomFooter/voteControl.vue2.js +1 -5
- package/lib/components/RoomVote/indexPC.vue.js +1 -1
- package/lib/components/RoomVote/indexPC.vue2.js +1 -1
- package/lib/index.js +10 -10
- package/package.json +1 -1
- package/src/TUIRoom/components/RoomFooter/voteControl/VoteControlH5.vue +122 -0
- package/src/TUIRoom/components/RoomFooter/voteControl/VoteControlPC.vue +31 -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 +1 -10
- package/src/TUIRoom/components/RoomVote/indexPC.vue +1 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare const VoteControl: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
2
|
+
"show-overlay": (...args: any[]) => void;
|
|
3
|
+
}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
|
|
4
|
+
"onShow-overlay"?: ((...args: any[]) => any) | undefined;
|
|
5
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any> | import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
6
|
+
export default VoteControl;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./voteControl.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const voteControl = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const voteControl = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-753053ea"]]);
|
|
5
5
|
export {
|
|
6
6
|
voteControl as default
|
|
7
7
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, computed, ref,
|
|
1
|
+
import { defineComponent, computed, ref, createElementBlock, openBlock, createVNode, createCommentVNode, unref, withCtx, renderSlot } from "vue";
|
|
2
2
|
import "../../services/main.mjs";
|
|
3
3
|
import { roomService } from "../../services/roomService.mjs";
|
|
4
4
|
import { useI18n } from "../../locales/index.mjs";
|
|
@@ -19,13 +19,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
19
19
|
emits: ["on-vote"],
|
|
20
20
|
setup(__props, { emit: __emit }) {
|
|
21
21
|
const { basicStore } = roomService;
|
|
22
|
-
const isSidebarOpen = computed(() => basicStore.isSidebarOpen);
|
|
23
22
|
const sidebarName = computed(() => basicStore.sidebarName);
|
|
24
23
|
const { t } = useI18n();
|
|
25
24
|
const showToolBox = ref(false);
|
|
26
|
-
watch(isSidebarOpen, (newValue) => {
|
|
27
|
-
showToolBox.value = newValue && false;
|
|
28
|
-
});
|
|
29
25
|
const emit = __emit;
|
|
30
26
|
function toggleToolBox() {
|
|
31
27
|
console.log(showToolBox.value, "0000");
|
|
@@ -47,7 +43,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
47
43
|
]),
|
|
48
44
|
_: 1
|
|
49
45
|
}, 8, ["is-active", "title"]),
|
|
50
|
-
|
|
46
|
+
showToolBox.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
51
47
|
renderSlot(_ctx.$slots, "content", {}, void 0, true)
|
|
52
48
|
])) : createCommentVNode("", true)
|
|
53
49
|
]);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./indexPC.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const indexPC = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const indexPC = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c82f5e3c"]]);
|
|
5
5
|
export {
|
|
6
6
|
indexPC as default
|
|
7
7
|
};
|
|
@@ -21,7 +21,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
21
21
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
22
22
|
createElementVNode("div", _hoisted_2, [
|
|
23
23
|
createVNode(unref(IconEmail), { class: "email-icon" }),
|
|
24
|
-
createElementVNode("div", _hoisted_3, toDisplayString(unref(t)("
|
|
24
|
+
createElementVNode("div", _hoisted_3, toDisplayString(unref(t)("Vote")), 1)
|
|
25
25
|
]),
|
|
26
26
|
unref(isZH) ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
27
27
|
createElementVNode("div", _hoisted_5, toDisplayString(unref(t)("Join our product discussion group")), 1),
|
package/es/index.mjs
CHANGED
|
@@ -3928,7 +3928,7 @@ to {
|
|
|
3928
3928
|
}
|
|
3929
3929
|
.footer .mirror-container .mirror-text[data-v-21a63691] {
|
|
3930
3930
|
margin-left: 4px;
|
|
3931
|
-
}.contact-container[data-v-
|
|
3931
|
+
}.contact-container[data-v-753053ea] {
|
|
3932
3932
|
position: fixed;
|
|
3933
3933
|
top: 0;
|
|
3934
3934
|
bottom: 0;
|
|
@@ -5047,17 +5047,17 @@ to {
|
|
|
5047
5047
|
font-size: 16px;
|
|
5048
5048
|
font-weight: 400;
|
|
5049
5049
|
text-align: end;
|
|
5050
|
-
}.more-container[data-v-
|
|
5050
|
+
}.more-container[data-v-c82f5e3c] {
|
|
5051
5051
|
padding: 20px;
|
|
5052
5052
|
}
|
|
5053
|
-
.more-container .more-title[data-v-
|
|
5053
|
+
.more-container .more-title[data-v-c82f5e3c] {
|
|
5054
5054
|
display: flex;
|
|
5055
5055
|
align-items: center;
|
|
5056
5056
|
}
|
|
5057
|
-
.more-container .more-title .email-icon[data-v-
|
|
5057
|
+
.more-container .more-title .email-icon[data-v-c82f5e3c] {
|
|
5058
5058
|
color: var(--uikit-color-gray-7);
|
|
5059
5059
|
}
|
|
5060
|
-
.more-container .more-title .more-notice[data-v-
|
|
5060
|
+
.more-container .more-title .more-notice[data-v-c82f5e3c] {
|
|
5061
5061
|
width: 100%;
|
|
5062
5062
|
height: 22px;
|
|
5063
5063
|
padding-left: 8px;
|
|
@@ -5066,15 +5066,15 @@ to {
|
|
|
5066
5066
|
line-height: 22px;
|
|
5067
5067
|
color: var(--text-color-primary);
|
|
5068
5068
|
}
|
|
5069
|
-
.more-container .more-item[data-v-
|
|
5069
|
+
.more-container .more-item[data-v-c82f5e3c] {
|
|
5070
5070
|
position: relative;
|
|
5071
5071
|
display: flex;
|
|
5072
5072
|
flex-direction: column;
|
|
5073
5073
|
}
|
|
5074
|
-
.more-container .more-item[data-v-
|
|
5074
|
+
.more-container .more-item[data-v-c82f5e3c]:not(:first-child) {
|
|
5075
5075
|
margin-top: 20px;
|
|
5076
5076
|
}
|
|
5077
|
-
.more-container .more-item:not(:first-child) .item-title[data-v-
|
|
5077
|
+
.more-container .more-item:not(:first-child) .item-title[data-v-c82f5e3c] {
|
|
5078
5078
|
width: 100%;
|
|
5079
5079
|
padding-bottom: 8px;
|
|
5080
5080
|
font-size: 14px;
|
|
@@ -5082,7 +5082,7 @@ to {
|
|
|
5082
5082
|
line-height: 22px;
|
|
5083
5083
|
color: var(--text-color-primary);
|
|
5084
5084
|
}
|
|
5085
|
-
.more-container .more-item:not(:first-child) .more-content[data-v-
|
|
5085
|
+
.more-container .more-item:not(:first-child) .more-content[data-v-c82f5e3c] {
|
|
5086
5086
|
position: relative;
|
|
5087
5087
|
box-sizing: border-box;
|
|
5088
5088
|
display: inline-block;
|
|
@@ -5102,7 +5102,7 @@ to {
|
|
|
5102
5102
|
background-color: var(--bg-color-input);
|
|
5103
5103
|
border: 1px solid var(--stroke-color-module);
|
|
5104
5104
|
}
|
|
5105
|
-
.more-container .more-item:not(:first-child) .copy-icon[data-v-
|
|
5105
|
+
.more-container .more-item:not(:first-child) .copy-icon[data-v-c82f5e3c] {
|
|
5106
5106
|
position: absolute;
|
|
5107
5107
|
top: 45px;
|
|
5108
5108
|
right: 10px;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare const VoteControl: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
2
|
+
"show-overlay": (...args: any[]) => void;
|
|
3
|
+
}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
|
|
4
|
+
"onShow-overlay"?: ((...args: any[]) => any) | undefined;
|
|
5
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any> | import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
6
|
+
export default VoteControl;
|
|
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const voteControl_vue_vue_type_script_setup_true_lang = require("./voteControl.vue2.js");
|
|
4
4
|
;/* empty css */
|
|
5
5
|
const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.js");
|
|
6
|
-
const voteControl = /* @__PURE__ */ _pluginVue_exportHelper.default(voteControl_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-
|
|
6
|
+
const voteControl = /* @__PURE__ */ _pluginVue_exportHelper.default(voteControl_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-753053ea"]]);
|
|
7
7
|
exports.default = voteControl;
|
|
@@ -21,13 +21,9 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
|
21
21
|
emits: ["on-vote"],
|
|
22
22
|
setup(__props, { emit: __emit }) {
|
|
23
23
|
const { basicStore } = roomService.roomService;
|
|
24
|
-
const isSidebarOpen = Vue.computed(() => basicStore.isSidebarOpen);
|
|
25
24
|
const sidebarName = Vue.computed(() => basicStore.sidebarName);
|
|
26
25
|
const { t } = index.useI18n();
|
|
27
26
|
const showToolBox = Vue.ref(false);
|
|
28
|
-
Vue.watch(isSidebarOpen, (newValue) => {
|
|
29
|
-
showToolBox.value = newValue && false;
|
|
30
|
-
});
|
|
31
27
|
const emit = __emit;
|
|
32
28
|
function toggleToolBox() {
|
|
33
29
|
console.log(showToolBox.value, "0000");
|
|
@@ -49,7 +45,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
|
49
45
|
]),
|
|
50
46
|
_: 1
|
|
51
47
|
}, 8, ["is-active", "title"]),
|
|
52
|
-
|
|
48
|
+
showToolBox.value ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_2, [
|
|
53
49
|
Vue.renderSlot(_ctx.$slots, "content", {}, void 0, true)
|
|
54
50
|
])) : Vue.createCommentVNode("", true)
|
|
55
51
|
]);
|
|
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const indexPC_vue_vue_type_script_setup_true_lang = require("./indexPC.vue2.js");
|
|
4
4
|
;/* empty css */
|
|
5
5
|
const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.js");
|
|
6
|
-
const indexPC = /* @__PURE__ */ _pluginVue_exportHelper.default(indexPC_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-
|
|
6
|
+
const indexPC = /* @__PURE__ */ _pluginVue_exportHelper.default(indexPC_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-c82f5e3c"]]);
|
|
7
7
|
exports.default = indexPC;
|
|
@@ -23,7 +23,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
|
23
23
|
return Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
|
|
24
24
|
Vue.createElementVNode("div", _hoisted_2, [
|
|
25
25
|
Vue.createVNode(Vue.unref(uikitBaseComponentVue3.IconEmail), { class: "email-icon" }),
|
|
26
|
-
Vue.createElementVNode("div", _hoisted_3, Vue.toDisplayString(Vue.unref(t)("
|
|
26
|
+
Vue.createElementVNode("div", _hoisted_3, Vue.toDisplayString(Vue.unref(t)("Vote")), 1)
|
|
27
27
|
]),
|
|
28
28
|
Vue.unref(isZH) ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_4, [
|
|
29
29
|
Vue.createElementVNode("div", _hoisted_5, Vue.toDisplayString(Vue.unref(t)("Join our product discussion group")), 1),
|
package/lib/index.js
CHANGED
|
@@ -3928,7 +3928,7 @@ to {
|
|
|
3928
3928
|
}
|
|
3929
3929
|
.footer .mirror-container .mirror-text[data-v-21a63691] {
|
|
3930
3930
|
margin-left: 4px;
|
|
3931
|
-
}.contact-container[data-v-
|
|
3931
|
+
}.contact-container[data-v-753053ea] {
|
|
3932
3932
|
position: fixed;
|
|
3933
3933
|
top: 0;
|
|
3934
3934
|
bottom: 0;
|
|
@@ -5047,17 +5047,17 @@ to {
|
|
|
5047
5047
|
font-size: 16px;
|
|
5048
5048
|
font-weight: 400;
|
|
5049
5049
|
text-align: end;
|
|
5050
|
-
}.more-container[data-v-
|
|
5050
|
+
}.more-container[data-v-c82f5e3c] {
|
|
5051
5051
|
padding: 20px;
|
|
5052
5052
|
}
|
|
5053
|
-
.more-container .more-title[data-v-
|
|
5053
|
+
.more-container .more-title[data-v-c82f5e3c] {
|
|
5054
5054
|
display: flex;
|
|
5055
5055
|
align-items: center;
|
|
5056
5056
|
}
|
|
5057
|
-
.more-container .more-title .email-icon[data-v-
|
|
5057
|
+
.more-container .more-title .email-icon[data-v-c82f5e3c] {
|
|
5058
5058
|
color: var(--uikit-color-gray-7);
|
|
5059
5059
|
}
|
|
5060
|
-
.more-container .more-title .more-notice[data-v-
|
|
5060
|
+
.more-container .more-title .more-notice[data-v-c82f5e3c] {
|
|
5061
5061
|
width: 100%;
|
|
5062
5062
|
height: 22px;
|
|
5063
5063
|
padding-left: 8px;
|
|
@@ -5066,15 +5066,15 @@ to {
|
|
|
5066
5066
|
line-height: 22px;
|
|
5067
5067
|
color: var(--text-color-primary);
|
|
5068
5068
|
}
|
|
5069
|
-
.more-container .more-item[data-v-
|
|
5069
|
+
.more-container .more-item[data-v-c82f5e3c] {
|
|
5070
5070
|
position: relative;
|
|
5071
5071
|
display: flex;
|
|
5072
5072
|
flex-direction: column;
|
|
5073
5073
|
}
|
|
5074
|
-
.more-container .more-item[data-v-
|
|
5074
|
+
.more-container .more-item[data-v-c82f5e3c]:not(:first-child) {
|
|
5075
5075
|
margin-top: 20px;
|
|
5076
5076
|
}
|
|
5077
|
-
.more-container .more-item:not(:first-child) .item-title[data-v-
|
|
5077
|
+
.more-container .more-item:not(:first-child) .item-title[data-v-c82f5e3c] {
|
|
5078
5078
|
width: 100%;
|
|
5079
5079
|
padding-bottom: 8px;
|
|
5080
5080
|
font-size: 14px;
|
|
@@ -5082,7 +5082,7 @@ to {
|
|
|
5082
5082
|
line-height: 22px;
|
|
5083
5083
|
color: var(--text-color-primary);
|
|
5084
5084
|
}
|
|
5085
|
-
.more-container .more-item:not(:first-child) .more-content[data-v-
|
|
5085
|
+
.more-container .more-item:not(:first-child) .more-content[data-v-c82f5e3c] {
|
|
5086
5086
|
position: relative;
|
|
5087
5087
|
box-sizing: border-box;
|
|
5088
5088
|
display: inline-block;
|
|
@@ -5102,7 +5102,7 @@ to {
|
|
|
5102
5102
|
background-color: var(--bg-color-input);
|
|
5103
5103
|
border: 1px solid var(--stroke-color-module);
|
|
5104
5104
|
}
|
|
5105
|
-
.more-container .more-item:not(:first-child) .copy-icon[data-v-
|
|
5105
|
+
.more-container .more-item:not(:first-child) .copy-icon[data-v-c82f5e3c] {
|
|
5106
5106
|
position: absolute;
|
|
5107
5107
|
top: 45px;
|
|
5108
5108
|
right: 10px;
|
package/package.json
CHANGED
|
@@ -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,31 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="moreControlConfig.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 userMoreControl from './useMoreControlHooks';
|
|
16
|
+
import { roomService } from '../../../services';
|
|
17
|
+
|
|
18
|
+
const moreControlConfig = roomService.getComponentConfig('VoteControl');
|
|
19
|
+
const { t, basicStore, sidebarName } = userMoreControl();
|
|
20
|
+
|
|
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
|
+
}
|
|
30
|
+
</script>
|
|
31
|
+
<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.MoreActive : ICON_NAME.More
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
t,
|
|
19
|
+
basicStore,
|
|
20
|
+
iconName,
|
|
21
|
+
sidebarName,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -7,13 +7,8 @@
|
|
|
7
7
|
>
|
|
8
8
|
<IconAIIcon size="24" />
|
|
9
9
|
</icon-button>
|
|
10
|
-
<div class="contact-container" v-if="
|
|
10
|
+
<div class="contact-container" v-if="showToolBox">
|
|
11
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> -->
|
|
17
12
|
</div>
|
|
18
13
|
</div>
|
|
19
14
|
</template>
|
|
@@ -28,13 +23,9 @@ import {
|
|
|
28
23
|
} from '@tencentcloud/uikit-base-component-vue3';
|
|
29
24
|
import roomVote from '../RoomVote';
|
|
30
25
|
const { basicStore } = roomService;
|
|
31
|
-
const isSidebarOpen = computed(() => basicStore.isSidebarOpen);
|
|
32
26
|
const sidebarName = computed(() => basicStore.sidebarName);
|
|
33
27
|
const { t } = useI18n();
|
|
34
28
|
const showToolBox = ref(false);
|
|
35
|
-
watch(isSidebarOpen, newValue => {
|
|
36
|
-
showToolBox.value = newValue && false;
|
|
37
|
-
});
|
|
38
29
|
const emit = defineEmits(['on-vote']);
|
|
39
30
|
function toggleToolBox() {
|
|
40
31
|
console.log(showToolBox.value,"0000")
|