From 3445f3f014e0af661569da081592985eb2abff73 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 1 Dec 2023 23:56:32 +0100 Subject: [PATCH] Preserve focus across node replacements --- packages/html2/src/index.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/html2/src/index.ts b/packages/html2/src/index.ts index 2afcb49..9401169 100644 --- a/packages/html2/src/index.ts +++ b/packages/html2/src/index.ts @@ -57,7 +57,13 @@ export class Widget implements EventTarget { } } + const wasFocus = oldNode && document.activeElement === oldNode; oldNode?.parentNode?.replaceChild(newNode, oldNode); + if (wasFocus) { + if (newNode && newNode instanceof HTMLElement) { + newNode.focus(); + } + } this.node.value = newNode; }