2024-10-14 23:09:27 +02:00
|
|
|
import { Controller } from "@hotwired/stimulus";
|
2024-09-11 19:04:39 +02:00
|
|
|
|
|
|
|
export default class extends Controller {
|
2024-10-14 23:09:27 +02:00
|
|
|
static targets = ["source", "iconDefault", "iconSuccess"];
|
2024-09-11 19:04:39 +02:00
|
|
|
|
|
|
|
copy(event) {
|
|
|
|
event.preventDefault();
|
2024-10-14 23:09:27 +02:00
|
|
|
if (this.sourceTarget?.textContent) {
|
|
|
|
navigator.clipboard
|
|
|
|
.writeText(this.sourceTarget.textContent)
|
2024-09-11 19:04:39 +02:00
|
|
|
.then(() => {
|
|
|
|
this.showSuccess();
|
|
|
|
})
|
|
|
|
.catch((error) => {
|
2024-10-14 23:09:27 +02:00
|
|
|
console.error("Failed to copy text: ", error);
|
2024-09-11 19:04:39 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
showSuccess() {
|
2024-10-14 23:09:27 +02:00
|
|
|
this.iconDefaultTarget.classList.add("hidden");
|
|
|
|
this.iconSuccessTarget.classList.remove("hidden");
|
2024-09-11 19:04:39 +02:00
|
|
|
setTimeout(() => {
|
2024-10-14 23:09:27 +02:00
|
|
|
this.iconDefaultTarget.classList.remove("hidden");
|
|
|
|
this.iconSuccessTarget.classList.add("hidden");
|
2024-09-11 19:04:39 +02:00
|
|
|
}, 3000);
|
|
|
|
}
|
|
|
|
}
|