mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-04 08:50:33 +08:00
* 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
43 lines
1.1 KiB
JavaScript
Executable File
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)
|
|
}
|
|
}
|