20 lines
466 B
JavaScript
20 lines
466 B
JavaScript
import { Controller } from "@hotwired/stimulus"
|
|
import { isInput } from "helpers/html_helpers"
|
|
|
|
export default class extends Controller {
|
|
click(event) {
|
|
if (this.#isClickable && !this.#shouldIgnore(event)) {
|
|
event.preventDefault()
|
|
this.element.click()
|
|
}
|
|
}
|
|
|
|
#shouldIgnore(event) {
|
|
return event.defaultPrevented || isInput(event.target)
|
|
}
|
|
|
|
get #isClickable() {
|
|
return getComputedStyle(this.element).pointerEvents !== "none"
|
|
}
|
|
}
|