mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-23 22:46:49 +01:00
* Opt-in for new checkout * Update wording * Create invoice view update * Remove jQuery from checkout testing code * Checkout v2 basics * WIP * WIP 2 * Updates and fixes * Updates * Design updates * More design updates * Cheating and JS fixes * Use checkout form id whenever invoices get created * Improve email form handling * Cleanups * Payment method exclusion cases for Lightning and LNURL TODO: Cases and implementation need to be discussed * Introduce CheckoutType in API and replace UseNewCheckout in backend Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
52 lines
1.9 KiB
JavaScript
52 lines
1.9 KiB
JavaScript
const confirmCopy = (el, message) => {
|
|
el.innerText = message;
|
|
setTimeout(function () {
|
|
el.innerHTML = el.dataset.clipboardInitial;
|
|
}, 2500);
|
|
}
|
|
|
|
window.copyToClipboard = function (e, data) {
|
|
e.preventDefault();
|
|
const item = e.target.closest('[data-clipboard]') || e.target.closest('[data-clipboard-target]') || e.target;
|
|
const confirm = item.dataset.clipboardConfirmElement
|
|
? document.getElementById(item.dataset.clipboardConfirmElement) || item
|
|
: item.querySelector('[data-clipboard-confirm]') || item;
|
|
const message = confirm.getAttribute('data-clipboard-confirm') || 'Copied ✔';
|
|
if (!confirm.dataset.clipboardInitial) {
|
|
confirm.dataset.clipboardInitial = confirm.innerHTML;
|
|
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) {
|
|
window.copyToClipboard(e, window.location)
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
delegate('click', '[data-clipboard]', e => {
|
|
const data = e.target.closest('[data-clipboard]').getAttribute('data-clipboard')
|
|
window.copyToClipboard(e, data)
|
|
})
|
|
delegate('click', '[data-clipboard-target]', e => {
|
|
const selector = e.target.closest('[data-clipboard-target]').getAttribute('data-clipboard-target')
|
|
const target = document.querySelector(selector)
|
|
const data = target.innerText
|
|
window.copyToClipboard(e, data)
|
|
})
|
|
})
|