From 0d287f588ec29c2c3bea4042879cd4a8a5587b7b Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Tue, 2 Dec 2025 11:44:52 -0500 Subject: [PATCH] add combobox support --- .../webawesome/src/components/option/option.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/webawesome/src/components/option/option.ts b/packages/webawesome/src/components/option/option.ts index 5c0f10957..171f7b2ce 100644 --- a/packages/webawesome/src/components/option/option.ts +++ b/packages/webawesome/src/components/option/option.ts @@ -5,6 +5,7 @@ import getText from '../../internal/get-text.js'; import WebAwesomeElement from '../../internal/webawesome-element.js'; import { LocalizeController } from '../../utilities/localize.js'; import '../icon/icon.js'; +import type WaSelect from '../select/select.js'; import styles from './option.css'; /** @@ -109,7 +110,7 @@ export default class WaOption extends WebAwesomeElement { this.updateDefaultLabel(); if (this.isInitialized) { - // When the label changes, tell the controller to update + // When the label changes, tell the parent to update customElements.whenDefined('wa-select').then(() => { const controller = this.closest('wa-select'); if (controller) { @@ -117,6 +118,16 @@ export default class WaOption extends WebAwesomeElement { controller.selectionChanged?.(); } }); + + // When the label changes, tell the parent to update + customElements.whenDefined('wa-combobox').then(() => { + // We cast to because it shares the same API as combobox + const controller = this.closest('wa-combobox'); + if (controller) { + controller.handleDefaultSlotChange(); + controller.selectionChanged?.(); + } + }); } else { this.isInitialized = true; } @@ -134,7 +145,8 @@ export default class WaOption extends WebAwesomeElement { protected willUpdate(changedProperties: PropertyValues): void { if (changedProperties.has('defaultSelected')) { - if (!this.closest('wa-select')?.hasInteracted) { + // We cast to because it shares the same API as combobox + if (!this.closest('wa-combobox, wa-select')?.hasInteracted) { const oldVal = this.selected; this.selected = this.defaultSelected; this.requestUpdate('selected', oldVal);