33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
export default function() {
|
|
Array.from(document.querySelectorAll('[data-copy-button=true]')).forEach(e => {
|
|
const copyButton = document.createElement('button');
|
|
copyButton.classList.add('copy-button');
|
|
copyButton.title = "Click to copy";
|
|
|
|
copyButton.addEventListener('click', () => {
|
|
const addTemporaryClass = (className, time) => {
|
|
copyButton.classList.add(className);
|
|
|
|
setTimeout(() => {
|
|
if (copyButton.classList.contains(className)) {
|
|
copyButton.classList.remove(className);
|
|
}
|
|
}, time);
|
|
}
|
|
|
|
if (!navigator || !navigator.clipboard) {
|
|
console.warn("Clipboard not accessible");
|
|
addTemporaryClass('copy-failed', 2000);
|
|
}
|
|
|
|
const content = e.innerText.trim();
|
|
navigator.clipboard.writeText(content).then(() => {
|
|
addTemporaryClass('copy-successful', 2000);
|
|
});
|
|
});
|
|
|
|
e.classList.add('contains-copy-button');
|
|
e.insertBefore(copyButton, e.firstChild);
|
|
});
|
|
}
|