38 lines
920 B
JavaScript
38 lines
920 B
JavaScript
import { Controller } from "@hotwired/stimulus"
|
|
|
|
export default class extends Controller {
|
|
|
|
static values = {
|
|
content: String,
|
|
label: String,
|
|
}
|
|
|
|
connect() {
|
|
this.originalLabel = this.element.innerText
|
|
}
|
|
|
|
disconnect() {
|
|
clearTimeout(this.resetTimer)
|
|
}
|
|
|
|
copy() {
|
|
navigator.clipboard.writeText(this.contentValue).then(() => {
|
|
this.dispatch('copied', {
|
|
detail: {
|
|
content: this.contentValue,
|
|
}
|
|
})
|
|
}).catch((error) => {
|
|
console.error('Failed to copy to clipboard:', error)
|
|
})
|
|
|
|
if (this.hasLabelValue) {
|
|
this.element.innerText = this.labelValue
|
|
clearTimeout(this.resetTimer)
|
|
this.resetTimer = setTimeout(() => {
|
|
this.element.innerText = this.originalLabel
|
|
}, 3000)
|
|
}
|
|
}
|
|
}
|