Personal_Website/assets/js/copy-button.js

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);
});
}