diff --git a/src/components/dropdown/dropdown.ts b/src/components/dropdown/dropdown.ts index 88da1b09f..cfe2bc4c9 100644 --- a/src/components/dropdown/dropdown.ts +++ b/src/components/dropdown/dropdown.ts @@ -295,9 +295,9 @@ export default class WaDropdown extends WebAwesomeElement { // 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) { + if (target === undefined || target === null) { customElements.whenDefined(tagName).then(async () => { - await (target as WaButton | WaIconButton).updateComplete; + await (accessibleTrigger as WaButton | WaIconButton).updateComplete; this.updateAccessibleTrigger(); }); diff --git a/src/components/input/input.ts b/src/components/input/input.ts index ed55d971a..d472fb0f2 100644 --- a/src/components/input/input.ts +++ b/src/components/input/input.ts @@ -260,16 +260,23 @@ export default class WaInput extends WebAwesomeFormAssociatedElement { return; } - const button = [...form.elements].find((el: HTMLButtonElement) => el.type === 'submit' && !el.disabled) as - | undefined - | HTMLButtonElement - | WaButton; + const formElements = [...form.elements]; - if (!button) { + // If we're the only formElement, we submit like a native input. + if (formElements.length === 1) { form.requestSubmit(null); return; } + const button = formElements.find( + (el: HTMLButtonElement) => el.type === 'submit' && !el.matches(':disabled') + ) as undefined | HTMLButtonElement | WaButton; + + // No button found, don't submit. + if (!button) { + return; + } + if (button.tagName.toLowerCase() === 'button') { form.requestSubmit(button); } else {