diff --git a/radio/internal/single-selection-controller.ts b/radio/internal/single-selection-controller.ts index 052dc3057a..e1bdc667d0 100644 --- a/radio/internal/single-selection-controller.ts +++ b/radio/internal/single-selection-controller.ts @@ -74,15 +74,9 @@ export class SingleSelectionController implements ReactiveController { constructor(private readonly host: SingleSelectionElement) {} hostConnected() { - this.root = this.host.getRootNode() as ParentNode; this.host.addEventListener('keydown', this.handleKeyDown); this.host.addEventListener('focusin', this.handleFocusIn); this.host.addEventListener('focusout', this.handleFocusOut); - if (this.host.checked) { - // Uncheck other siblings when attached if already checked. This mimics - // native behavior. - this.uncheckSiblings(); - } // Update siblings after a microtask to allow other synchronous connected // callbacks to settle before triggering additional Lit updates. This avoids @@ -90,6 +84,13 @@ export class SingleSelectionController implements ReactiveController { // connected at the same time. queueMicrotask(() => { // Update for the newly added host. + this.root = this.host.getRootNode() as ParentNode; + if (this.host.checked) { + // Uncheck other siblings when attached if already checked. This mimics + // native behavior. + this.uncheckSiblings(); + } + this.updateTabIndices(); }); }