// 聊天室欢迎语快捷菜单事件绑定,替代 Blade 内联 onclick。 let welcomeMenuEventsBound = false; /** * 绑定欢迎语菜单按钮、菜单内点击拦截与模板发送事件。 * * @returns {void} */ export function bindWelcomeMenuControls() { if (welcomeMenuEventsBound || typeof document === "undefined") { return; } welcomeMenuEventsBound = true; document.addEventListener("click", (event) => { if (!(event.target instanceof Element)) { return; } // 欢迎语菜单外部点击关闭仍由主脚本处理,这里只负责菜单按钮与菜单内部。 const toggleButton = event.target.closest("[data-chat-welcome-menu-toggle]"); if (toggleButton) { event.preventDefault(); window.toggleWelcomeMenu?.(event); return; } const menu = event.target.closest("[data-chat-welcome-menu]"); if (!menu) { return; } // 阻止菜单内部点击冒泡,避免选择模板时被外层关闭逻辑抢先处理。 event.stopPropagation(); const item = event.target.closest("[data-chat-welcome-template]"); if (!item || !menu.contains(item)) { return; } const template = item.getAttribute("data-chat-welcome-template") || ""; // 模板内容只从 data 属性读取,实际发送仍交给旧的 sendWelcomeTpl。 if (template && typeof window.sendWelcomeTpl === "function") { window.sendWelcomeTpl(template); } }); }