Files
ueblueprint/js/input/mouse/Unfocus.js
barsdeveloper 7469d55518 Replace parsing and test libraries
* WIP

* WIP

* wip

* WIP

* Several fixes

* Tests wip port to playwright

* WIP

* Fix more tests

* Serialization tests fixed

* Several fixes for tests

* Input options types

* Type adjustments

* Fix object reference parser

* Tests fixes

* More tests fixes
2024-02-14 00:40:42 +01:00

43 lines
1.1 KiB
JavaScript
Executable File

import IInput from "../IInput.js"
/**
* @typedef {import("../IInput.js").Options & {
* listenOnFocus?: Boolean,
* }} Options
*/
export default class Unfocus extends IInput {
/** @param {MouseEvent} e */
#clickHandler = e => this.clickedSomewhere(/** @type {HTMLElement} */(e.target))
/**
* @param {HTMLElement} target
* @param {Blueprint} blueprint
* @param {Options} options
*/
constructor(target, blueprint, options = {}) {
options.listenOnFocus = true
super(target, blueprint, options)
if (this.blueprint.focus) {
document.addEventListener("click", this.#clickHandler)
}
}
/** @param {HTMLElement} target */
clickedSomewhere(target) {
// If target is outside the blueprint grid
if (!target.closest("ueb-blueprint")) {
this.blueprint.setFocused(false)
}
}
listenEvents() {
document.addEventListener("click", this.#clickHandler)
}
unlistenEvents() {
document.removeEventListener("click", this.#clickHandler)
}
}