// 商店弹窗基础按钮事件绑定,替代 toolbar 商店区域内联 onclick。 let shopControlEventsBound = false; /** * 调用商店存量全局函数。 * * @param {string} functionName 全局函数名 * @returns {void} */ function callShopGlobal(functionName) { // 商店主体逻辑仍在 Blade 全局函数内,这里只把 data 事件桥接到旧函数。 if (typeof window[functionName] === "function") { window[functionName](); } } /** * 绑定商店关闭、改名和赠礼对话框按钮事件。 * * @returns {void} */ export function bindShopControls() { if (shopControlEventsBound || typeof document === "undefined") { return; } shopControlEventsBound = true; document.addEventListener("click", (event) => { if (!(event.target instanceof Element)) { return; } // 商店弹窗关闭入口与遮罩关闭逻辑保持同一个旧函数。 if (event.target.closest("[data-shop-modal-close]")) { event.preventDefault(); callShopGlobal("closeShopModal"); return; } // 改名确认/取消只转发按钮意图,接口请求仍由 Blade 内的 submitRename 处理。 if (event.target.closest("[data-shop-rename-confirm]")) { event.preventDefault(); callShopGlobal("submitRename"); return; } if (event.target.closest("[data-shop-rename-cancel]")) { event.preventDefault(); callShopGlobal("closeRenameModal"); return; } // 赠礼确认/取消对应单次特效卡流程,先保留旧的弹窗状态管理函数。 if (event.target.closest("[data-shop-gift-confirm]")) { event.preventDefault(); callShopGlobal("confirmGift"); return; } if (event.target.closest("[data-shop-gift-cancel]")) { event.preventDefault(); callShopGlobal("closeGiftDialog"); } }); }