Various improvements

This commit is contained in:
barsdeveloper
2022-11-09 22:14:30 +01:00
parent 97a9c99732
commit aa7c9932f0
26 changed files with 293 additions and 103 deletions

40
js/input/common/IFocus.js Normal file
View File

@@ -0,0 +1,40 @@
import IInput from "../IInput"
export default class IFocus extends IInput {
/** @type {(e: FocusEvent) => void} */
#focusHandler
/** @type {(e: FocusEvent) => void} */
#focusoutHandler
constructor(target, blueprint, options = {}) {
options.listenOnFocus ??= true
super(target, blueprint, options)
const self = this
this.#focusHandler = e => {
e.preventDefault()
this.focused()
}
this.#focusoutHandler = e => {
e.preventDefault()
this.unfocused()
}
}
listenEvents() {
this.target.addEventListener("focus", this.#focusHandler)
this.target.addEventListener("focusout", this.#focusoutHandler)
}
unlistenEvents() {
this.target.removeEventListener("focus", this.#focusHandler)
this.target.removeEventListener("focusout", this.#focusoutHandler)
}
focused() {
}
unfocused() {
}
}