You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
910 B
33 lines
910 B
// assets/controllers/share_dropdown_controller.js |
|
import { Controller } from '@hotwired/stimulus'; |
|
|
|
export default class extends Controller { |
|
static targets = ['menu', 'button']; |
|
|
|
connect() { |
|
document.addEventListener('click', this.closeMenu); |
|
} |
|
|
|
disconnect() { |
|
document.removeEventListener('click', this.closeMenu); |
|
} |
|
|
|
toggle(event) { |
|
event.stopPropagation(); |
|
this.menuTarget.style.display = this.menuTarget.style.display === 'block' ? 'none' : 'block'; |
|
} |
|
|
|
closeMenu = () => { |
|
this.menuTarget.style.display = 'none'; |
|
} |
|
|
|
copy(event) { |
|
const el = event.currentTarget; |
|
const text = el.dataset.copy; |
|
navigator.clipboard.writeText(text).then(() => { |
|
const orig = el.innerHTML; |
|
el.innerHTML = 'Copied!'; |
|
setTimeout(() => { el.innerHTML = orig; }, 1200); |
|
}); |
|
} |
|
}
|
|
|