Merge pull request #3296 from dennisreimann/clipboard

Fix clipboard copy edge case
This commit is contained in:
Nicolas Dorier
2022-01-13 13:23:26 +09:00
committed by GitHub
2 changed files with 30 additions and 16 deletions

View File

@@ -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) {

View File

@@ -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');