From 73a6c6767de4b5d259e977dbef7567ea59855a98 Mon Sep 17 00:00:00 2001 From: DarkWiiPlayer Date: Tue, 3 Aug 2021 14:42:40 +0200 Subject: [PATCH] Add disconnected handling parallel to connected --- better.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/better.js b/better.js index 21dfbb0..fe4c4fc 100644 --- a/better.js +++ b/better.js @@ -56,6 +56,23 @@ export class Better extends HTMLElement { this.#connected = [] } + // Array of disconnected callbacks + #disconnected = []; + + // disconnectedCallback but as a promise. + // Resolves instantly when already disconnected and can be used more than once. + get disconnected() { + if (this.isDisconnected) return Promise.resolve(this) + else return new Promise( (yes, no) => this.#disconnected.push({yes, no}) ) + } + + // Resolves all `disconnected promises + disconnectedCallback() { + if ("onDisconnect" in this) this.onDisonnect() + this.#disconnected.forEach( e => e.yes(this) ) + this.#disconnected = [] + } + setContent(...content) { this.innerHTML = "" content.forEach( element => this.appendChild(element) )