From 231df0a0367593dc049c9d8fa867e5bdd1d9e0c2 Mon Sep 17 00:00:00 2001 From: konnorrogers Date: Tue, 18 Jun 2024 13:46:08 -0400 Subject: [PATCH] fix timing issues with dropdown updating triggers --- src/components/dropdown/dropdown.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/components/dropdown/dropdown.ts b/src/components/dropdown/dropdown.ts index 689b58f28..2d58ae93d 100644 --- a/src/components/dropdown/dropdown.ts +++ b/src/components/dropdown/dropdown.ts @@ -286,11 +286,23 @@ export default class WaDropdown extends WebAwesomeElement { let target: HTMLElement; if (accessibleTrigger) { - switch (accessibleTrigger.tagName.toLowerCase()) { + const tagName = accessibleTrigger.tagName.toLowerCase() + switch (tagName) { // Web Awesome buttons have to update the internal button so it's announced correctly by screen readers case 'wa-button': case 'wa-icon-button': target = (accessibleTrigger as WaButton | WaIconButton).button; + + // Either the tag hasn't registered, or it hasn't rendered. + // So, wait for the tag to register, and then try again. + if (target === undefined) { + customElements.whenDefined(tagName).then(async () => { + await (target as WaButton | WaIconButton).updateComplete + this.updateAccessibleTrigger() + }) + + return + } break; default: