@tencentcloud/roomkit-web-vue3
Version:
<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,
147 lines (146 loc) • 5.97 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const Vue = require("vue");
const Avatar = require("../../common/Avatar.vue2.js");
const uikitBaseComponentVue3 = require("@tencentcloud/uikit-base-component-vue3");
const environment = require("../../../utils/environment.js");
const index$1 = require("../../common/base/Dialog/index.js");
const vTap = require("../../../directives/vTap.js");
const useMemberControlHooks = require("./useMemberControlHooks.js");
const index = require("../../../locales/index.js");
require("../../../services/main.js");
const roomService = require("../../../services/roomService.js");
require("@tencentcloud/tuiroom-engine-js");
require("mitt");
require("../../../services/manager/roomActionManager.js");
require("@tencentcloud/tui-core");
const index$2 = require("../../common/base/Input/index.js");
const _hoisted_1 = { class: "member-control-container" };
const _hoisted_2 = { class: "member-title" };
const _hoisted_3 = { class: "member-title-content" };
const _hoisted_4 = {
key: 0,
class: "tab-cancel"
};
const _hoisted_5 = { class: "control-title" };
const _hoisted_6 = { class: "input-content" };
const _hoisted_7 = { class: "input" };
const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
__name: "MemberControlH5",
props: {
userInfo: {},
showMemberControl: { type: Boolean }
},
emits: ["on-close-control"],
setup(__props, { emit: __emit }) {
const props = __props;
const { t } = index.useI18n();
const {
controlList,
handleCancelDialog,
handleAction,
isDialogVisible,
dialogData,
tempUserName,
isShowInput,
editorInputEleContainer,
editorInputEle
} = useMemberControlHooks.default(props);
const emit = __emit;
function handleCloseControl() {
isShowInput.value = false;
emit("on-close-control");
}
function handleCloseInput(event) {
if (environment.isWeChat) {
isShowInput.value = false;
} else if (event.target !== event.currentTarget) {
return;
} else {
isShowInput.value = false;
}
}
return (_ctx, _cache) => {
return Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
Vue.createElementVNode("div", _hoisted_2, [
Vue.createVNode(Avatar.default, {
class: "avatar-url",
"img-src": _ctx.userInfo.avatarUrl
}, null, 8, ["img-src"]),
Vue.createElementVNode("div", _hoisted_3, Vue.toDisplayString(Vue.unref(roomService.roomService).getDisplayName(_ctx.userInfo)), 1),
Vue.unref(environment.isWeChat) ? Vue.withDirectives((Vue.openBlock(), Vue.createElementBlock("span", _hoisted_4, [
Vue.createTextVNode(Vue.toDisplayString(Vue.unref(t)("Cancel")), 1)
])), [
[
Vue.unref(vTap.default),
handleCloseControl,
void 0,
{ stop: true }
]
]) : Vue.createCommentVNode("", true)
]),
(Vue.openBlock(true), Vue.createElementBlock(Vue.Fragment, null, Vue.renderList(Vue.unref(controlList), (item) => {
return Vue.withDirectives((Vue.openBlock(), Vue.createElementBlock("div", {
key: item.key,
class: "user-operate-item"
}, [
item.icon ? (Vue.openBlock(), Vue.createBlock(Vue.unref(uikitBaseComponentVue3.TUIIcon), {
key: 0,
icon: item.icon,
class: "icon-svg"
}, null, 8, ["icon"])) : Vue.createCommentVNode("", true),
Vue.createElementVNode("div", _hoisted_5, Vue.toDisplayString(item.title), 1)
])), [
[Vue.unref(vTap.default), () => item.func(_ctx.userInfo)]
]);
}), 128)),
Vue.createVNode(Vue.unref(index$1.default), {
modelValue: Vue.unref(isDialogVisible),
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => Vue.isRef(isDialogVisible) ? isDialogVisible.value = $event : null),
title: Vue.unref(dialogData).title,
width: "480px",
modal: true,
"append-to-room-container": true,
"confirm-button": Vue.unref(dialogData).confirmText,
"cancel-button": Vue.unref(t)("Cancel"),
onConfirm: _cache[1] || (_cache[1] = ($event) => Vue.unref(handleAction)(props.userInfo)),
onCancel: Vue.unref(handleCancelDialog)
}, {
default: Vue.withCtx(() => [
Vue.createElementVNode("span", null, Vue.toDisplayString(Vue.unref(dialogData).content), 1)
]),
_: 1
}, 8, ["modelValue", "title", "confirm-button", "cancel-button", "onCancel"]),
Vue.withDirectives((Vue.openBlock(), Vue.createElementBlock("div", {
class: "input-content-container",
ref_key: "editorInputEleContainer",
ref: editorInputEleContainer
}, [
Vue.createElementVNode("div", _hoisted_6, [
Vue.createElementVNode("div", _hoisted_7, [
Vue.createVNode(Vue.unref(index$2.default), {
ref_key: "editorInputEle",
ref: editorInputEle,
theme: Vue.unref(roomService.roomService).basicStore.defaultTheme,
"model-value": Vue.unref(tempUserName),
type: "text",
enterkeyhint: "done",
onInput: _cache[2] || (_cache[2] = ($event) => tempUserName.value = $event),
onDone: _cache[3] || (_cache[3] = ($event) => Vue.unref(handleAction)(props.userInfo))
}, null, 8, ["theme", "model-value"])
])
])
])), [
[
Vue.unref(vTap.default),
handleCloseInput,
void 0,
{ stop: true }
],
[Vue.vShow, Vue.unref(isShowInput)]
])
]);
};
}
});
exports.default = _sfc_main;