diff --git a/BTCPayServer/wwwroot/js/copy-to-clipboard.js b/BTCPayServer/wwwroot/js/copy-to-clipboard.js index 7c1b196af..ce2628d20 100644 --- a/BTCPayServer/wwwroot/js/copy-to-clipboard.js +++ b/BTCPayServer/wwwroot/js/copy-to-clipboard.js @@ -1,19 +1,35 @@ +const confirmCopy = (el, message) => { + el.innerText = message; + setTimeout(function () { + el.innerText = el.dataset.clipboardInitialText; + }, 2500); +} + window.copyToClipboard = function (e, data) { - if (navigator.clipboard) { - e.preventDefault(); - const item = e.target.closest('[data-clipboard]'); - const confirm = item.querySelector('[data-clipboard-confirm]') || item; - const message = confirm.getAttribute('data-clipboard-confirm') || 'Copied ✔'; - if (!confirm.dataset.clipboardInitialText) { - confirm.dataset.clipboardInitialText = confirm.innerText; - confirm.style.minWidth = confirm.getBoundingClientRect().width + 'px'; - } - navigator.clipboard.writeText(data).then(function () { - confirm.innerText = message; - setTimeout(function(){ confirm.innerText = confirm.dataset.clipboardInitialText; }, 2500); - }); - item.blur(); + e.preventDefault(); + const item = e.target.closest('[data-clipboard]'); + const confirm = item.querySelector('[data-clipboard-confirm]') || item; + const message = confirm.getAttribute('data-clipboard-confirm') || 'Copied ✔'; + if (!confirm.dataset.clipboardInitialText) { + confirm.dataset.clipboardInitialText = confirm.innerText; + confirm.style.minWidth = confirm.getBoundingClientRect().width + 'px'; } + if (navigator.clipboard) { + navigator.clipboard.writeText(data).then(function () { + confirmCopy(confirm, message); + }); + } else { + const copyEl = document.createElement('textarea'); + copyEl.style.position = 'absolute'; + copyEl.style.opacity = '0'; + copyEl.value = data; + document.body.appendChild(copyEl); + copyEl.select(); + document.execCommand('copy'); + copyEl.remove(); + confirmCopy(confirm, message); + } + item.blur(); } window.copyUrlToClipboard = function (e) { diff --git a/BTCPayServer/wwwroot/main/site.js b/BTCPayServer/wwwroot/main/site.js index 9cac8f55e..c89697d53 100644 --- a/BTCPayServer/wwwroot/main/site.js +++ b/BTCPayServer/wwwroot/main/site.js @@ -80,8 +80,6 @@ document.addEventListener("DOMContentLoaded", function () { } } - $('[data-clipboard]').on('click', window.copyToClipboard); - $('[data-toggle="password"]').each(function () { var input = $(this); var eye_btn = $(this).parent().find('.input-group-text');