diff --git a/layout/includes/third-party/chat/knocket.pug b/layout/includes/third-party/chat/knocket.pug index 12b9cce..0f76439 100644 --- a/layout/includes/third-party/chat/knocket.pug +++ b/layout/includes/third-party/chat/knocket.pug @@ -8,22 +8,33 @@ script. const isChatBtn = !{theme.chat.rightside_button} const isChatHideShow = !{theme.chat.button_hide_show} - const getWidget = () => document.querySelector('#knocket-widget, [id*="knocket"]') + const getWidget = () => document.getElementById('contact-widget-auto') if (isChatBtn) { const hide = () => { const w = getWidget(); if (w) w.style.display = 'none' } const show = () => { const w = getWidget(); if (w) w.style.display = '' } + // Hide the native Knocket floating button + const observer = new MutationObserver(() => { + if (getWidget()) { hide(); observer.disconnect() } + }) + observer.observe(document.body, { childList: true, subtree: true }) hide() window.chatBtnFn = () => { const w = getWidget() - if (w && w.style.display === 'none') show() + if (!w) return + if (w.style.display === 'none') show() else hide() } document.getElementById('chat-btn').style.display = 'block' } else if (isChatHideShow) { + const observer = new MutationObserver(() => { + if (getWidget()) observer.disconnect() + }) + observer.observe(document.body, { childList: true, subtree: true }) + window.chatBtn = { hide: () => { const w = getWidget(); if (w) w.style.display = 'none' }, show: () => { const w = getWidget(); if (w) w.style.display = '' }