@ndscnj/roomkit-web-vue3 25.12.2409 → 25.12.2411

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 (42) hide show
  1. package/es/components/RoomFooter/index/indexPC.vue.mjs +1 -1
  2. package/es/components/RoomFooter/index/indexPC.vue2.mjs +2 -2
  3. package/es/components/RoomFooter/voteControl/VoteControlH5.vue.d.ts +6 -0
  4. package/es/components/RoomFooter/voteControl/VoteControlH5.vue.mjs +7 -0
  5. package/es/components/RoomFooter/voteControl/VoteControlH5.vue2.mjs +105 -0
  6. package/es/components/RoomFooter/voteControl/VoteControlPC.vue.d.ts +2 -0
  7. package/es/components/RoomFooter/voteControl/VoteControlPC.vue.mjs +49 -0
  8. package/es/components/RoomFooter/voteControl/VoteControlPC.vue2.mjs +4 -0
  9. package/es/components/RoomFooter/voteControl/index.d.ts +6 -0
  10. package/es/components/RoomFooter/voteControl/index.mjs +7 -0
  11. package/es/components/RoomFooter/voteControl/useMoreControlHooks.mjs +22 -0
  12. package/es/constants/icon.d.ts +2 -0
  13. package/es/constants/icon.mjs +2 -0
  14. package/es/index.mjs +180 -152
  15. package/lib/components/RoomFooter/index/indexPC.vue.js +1 -1
  16. package/lib/components/RoomFooter/index/indexPC.vue2.js +6 -6
  17. package/lib/components/RoomFooter/voteControl/VoteControlH5.vue.d.ts +6 -0
  18. package/lib/components/RoomFooter/voteControl/VoteControlH5.vue.js +7 -0
  19. package/lib/components/RoomFooter/voteControl/VoteControlH5.vue2.js +105 -0
  20. package/lib/components/RoomFooter/voteControl/VoteControlPC.vue.d.ts +2 -0
  21. package/lib/components/RoomFooter/voteControl/VoteControlPC.vue.js +49 -0
  22. package/lib/components/RoomFooter/voteControl/VoteControlPC.vue2.js +4 -0
  23. package/lib/components/RoomFooter/voteControl/index.d.ts +6 -0
  24. package/lib/components/RoomFooter/voteControl/index.js +7 -0
  25. package/lib/components/RoomFooter/voteControl/useMoreControlHooks.js +22 -0
  26. package/lib/constants/icon.d.ts +2 -0
  27. package/lib/constants/icon.js +2 -0
  28. package/lib/index.js +180 -152
  29. package/package.json +1 -1
  30. package/src/TUIRoom/components/RoomFooter/index/indexPC.vue +1 -1
  31. package/src/TUIRoom/components/RoomFooter/voteControl/VoteControlH5.vue +122 -0
  32. package/src/TUIRoom/components/RoomFooter/voteControl/VoteControlPC.vue +31 -0
  33. package/src/TUIRoom/components/RoomFooter/voteControl/index.ts +8 -0
  34. package/src/TUIRoom/components/RoomFooter/voteControl/useMoreControlHooks.ts +23 -0
  35. package/src/TUIRoom/components/RoomFooter/voteControl.vue +3 -2
  36. package/src/TUIRoom/constants/icon.ts +2 -0
  37. package/es/components/RoomFooter/voteControl.vue.d.ts +0 -15
  38. package/es/components/RoomFooter/voteControl.vue.mjs +0 -7
  39. package/es/components/RoomFooter/voteControl.vue2.mjs +0 -71
  40. package/lib/components/RoomFooter/voteControl.vue.d.ts +0 -15
  41. package/lib/components/RoomFooter/voteControl.vue.js +0 -7
  42. package/lib/components/RoomFooter/voteControl.vue2.js +0 -71
@@ -103,7 +103,7 @@ import VirtualBackground from '../VirtualBackground.vue';
103
103
  import AIControl from '../AIControl.vue';
104
104
  import BasicBeauty from '../BasicBeauty.vue';
105
105
  import bus from '../../../hooks/useMitt';
106
- import voteControl from '../voteControl.vue';
106
+ import voteControl from '../voteControl';
107
107
  import useRoomFooter from './useRoomFooterHooks';
108
108
  import { isElectron } from '../../../utils/environment';
109
109
  const { roomStore, isMaster, isAdmin, isAudience } = useRoomFooter();
@@ -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 userMoreControl from './useMoreControlHooks';
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 } = userMoreControl();
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,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 === 'more' ? ICON_NAME.MoreActive : ICON_NAME.More
15
+ );
16
+
17
+ return {
18
+ t,
19
+ basicStore,
20
+ iconName,
21
+ sidebarName,
22
+ };
23
+ }
@@ -8,11 +8,12 @@
8
8
  <IconAIIcon size="24" />
9
9
  </icon-button>
10
10
  <div class="contact-container" v-if="!isSidebarOpen && showToolBox">
11
- <room-vote ref="contactRef" @on-close-contact="handleOnCloseContact">
11
+ <slot name="content"></slot>
12
+ <!-- <room-vote ref="contactRef" @on-close-contact="handleOnCloseContact">
12
13
  <template #content>
13
14
  <slot name="content"></slot>
14
15
  </template>
15
- </room-vote>
16
+ </room-vote> -->
16
17
  </div>
17
18
  </div>
18
19
  </template>
@@ -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-c9bb5a2b"]]);
5
- export {
6
- voteControl as default
7
- };
@@ -1,71 +0,0 @@
1
- import { defineComponent, computed, ref, watch, createElementBlock, openBlock, createVNode, createCommentVNode, unref, withCtx, renderSlot } from "vue";
2
- import "../../services/main.mjs";
3
- import { roomService } from "../../services/roomService.mjs";
4
- import { useI18n } from "../../locales/index.mjs";
5
- import "@tencentcloud/tuiroom-engine-js";
6
- import "../../utils/environment.mjs";
7
- import "mitt";
8
- import "../../services/manager/roomActionManager.mjs";
9
- import "@tencentcloud/tui-core";
10
- import IconButton from "../common/base/IconButton.vue.mjs";
11
- import { IconAIIcon } from "@tencentcloud/uikit-base-component-vue3";
12
- import Index from "../RoomVote/index.mjs";
13
- const _hoisted_1 = { class: "vote-control-container" };
14
- const _hoisted_2 = {
15
- key: 0,
16
- class: "contact-container"
17
- };
18
- const _sfc_main = /* @__PURE__ */ defineComponent({
19
- __name: "voteControl",
20
- emits: ["on-vote"],
21
- setup(__props, { emit: __emit }) {
22
- const { basicStore } = roomService;
23
- const isSidebarOpen = computed(() => basicStore.isSidebarOpen);
24
- const sidebarName = computed(() => basicStore.sidebarName);
25
- const { t } = useI18n();
26
- const showToolBox = ref(false);
27
- watch(isSidebarOpen, (newValue) => {
28
- showToolBox.value = newValue && false;
29
- });
30
- const emit = __emit;
31
- function toggleToolBox() {
32
- console.log(showToolBox.value, "0000");
33
- showToolBox.value = !showToolBox.value;
34
- emit("on-vote", {
35
- name: "onVote",
36
- visible: showToolBox.value
37
- });
38
- }
39
- function handleOnCloseContact() {
40
- showToolBox.value = false;
41
- }
42
- return (_ctx, _cache) => {
43
- return openBlock(), createElementBlock("div", _hoisted_1, [
44
- createVNode(IconButton, {
45
- "is-active": sidebarName.value === "vote",
46
- title: unref(t)("Vote"),
47
- onClickIcon: toggleToolBox
48
- }, {
49
- default: withCtx(() => [
50
- createVNode(unref(IconAIIcon), { size: "24" })
51
- ]),
52
- _: 1
53
- }, 8, ["is-active", "title"]),
54
- !isSidebarOpen.value && showToolBox.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
55
- createVNode(unref(Index), {
56
- ref: "contactRef",
57
- onOnCloseContact: handleOnCloseContact
58
- }, {
59
- content: withCtx(() => [
60
- renderSlot(_ctx.$slots, "content", {}, void 0, true)
61
- ]),
62
- _: 3
63
- }, 512)
64
- ])) : createCommentVNode("", true)
65
- ]);
66
- };
67
- }
68
- });
69
- export {
70
- _sfc_main as default
71
- };
@@ -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
- "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const voteControl_vue_vue_type_script_setup_true_lang = require("./voteControl.vue2.js");
4
- ;/* empty css */
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-c9bb5a2b"]]);
7
- exports.default = voteControl;
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const Vue = require("vue");
4
- require("../../services/main.js");
5
- const roomService = require("../../services/roomService.js");
6
- const index = require("../../locales/index.js");
7
- require("@tencentcloud/tuiroom-engine-js");
8
- require("../../utils/environment.js");
9
- require("mitt");
10
- require("../../services/manager/roomActionManager.js");
11
- require("@tencentcloud/tui-core");
12
- const IconButton = require("../common/base/IconButton.vue.js");
13
- const uikitBaseComponentVue3 = require("@tencentcloud/uikit-base-component-vue3");
14
- const index$1 = require("../RoomVote/index.js");
15
- const _hoisted_1 = { class: "vote-control-container" };
16
- const _hoisted_2 = {
17
- key: 0,
18
- class: "contact-container"
19
- };
20
- const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
21
- __name: "voteControl",
22
- emits: ["on-vote"],
23
- setup(__props, { emit: __emit }) {
24
- const { basicStore } = roomService.roomService;
25
- const isSidebarOpen = Vue.computed(() => basicStore.isSidebarOpen);
26
- const sidebarName = Vue.computed(() => basicStore.sidebarName);
27
- const { t } = index.useI18n();
28
- const showToolBox = Vue.ref(false);
29
- Vue.watch(isSidebarOpen, (newValue) => {
30
- showToolBox.value = newValue && false;
31
- });
32
- const emit = __emit;
33
- function toggleToolBox() {
34
- console.log(showToolBox.value, "0000");
35
- showToolBox.value = !showToolBox.value;
36
- emit("on-vote", {
37
- name: "onVote",
38
- visible: showToolBox.value
39
- });
40
- }
41
- function handleOnCloseContact() {
42
- showToolBox.value = false;
43
- }
44
- return (_ctx, _cache) => {
45
- return Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
46
- Vue.createVNode(IconButton.default, {
47
- "is-active": sidebarName.value === "vote",
48
- title: Vue.unref(t)("Vote"),
49
- onClickIcon: toggleToolBox
50
- }, {
51
- default: Vue.withCtx(() => [
52
- Vue.createVNode(Vue.unref(uikitBaseComponentVue3.IconAIIcon), { size: "24" })
53
- ]),
54
- _: 1
55
- }, 8, ["is-active", "title"]),
56
- !isSidebarOpen.value && showToolBox.value ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_2, [
57
- Vue.createVNode(Vue.unref(index$1.default), {
58
- ref: "contactRef",
59
- onOnCloseContact: handleOnCloseContact
60
- }, {
61
- content: Vue.withCtx(() => [
62
- Vue.renderSlot(_ctx.$slots, "content", {}, void 0, true)
63
- ]),
64
- _: 3
65
- }, 512)
66
- ])) : Vue.createCommentVNode("", true)
67
- ]);
68
- };
69
- }
70
- });
71
- exports.default = _sfc_main;