From 81e94f26246519bb390ad6616177000dff6dbb83 Mon Sep 17 00:00:00 2001 From: Susanne Kirchner Date: Thu, 2 Jan 2025 15:59:18 +0100 Subject: [PATCH] Only trigger defaultslotchange of select after initialization (#2318) --- src/components/option/option.component.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/components/option/option.component.ts b/src/components/option/option.component.ts index 27e1f096..f3950cfe 100644 --- a/src/components/option/option.component.ts +++ b/src/components/option/option.component.ts @@ -34,6 +34,8 @@ export default class SlOption extends ShoelaceElement { // @ts-expect-error - Controller is currently unused private readonly localize = new LocalizeController(this); + private isInitialized = false; + @query('.option__label') defaultSlot: HTMLSlotElement; @state() current = false; // the user has keyed into the option, but hasn't selected it yet (shows a highlight) @@ -57,13 +59,17 @@ export default class SlOption extends ShoelaceElement { } private handleDefaultSlotChange() { - // When the label changes, tell the controller to update - customElements.whenDefined('sl-select').then(() => { - const controller = this.closest('sl-select'); - if (controller) { - controller.handleDefaultSlotChange(); - } - }); + if (this.isInitialized) { + // When the label changes, tell the controller to update + customElements.whenDefined('sl-select').then(() => { + const controller = this.closest('sl-select'); + if (controller) { + controller.handleDefaultSlotChange(); + } + }); + } else { + this.isInitialized = true; + } } private handleMouseEnter() {