fix: Improve accuracy of determining activeElement in Dropdown (#224)

pull/231/head
Kevin Zolkiewicz 2020-09-28 07:16:56 -05:00 zatwierdzone przez GitHub
rodzic df7141874d
commit 01d484aa91
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 11 dodań i 4 usunięć

Wyświetl plik

@ -220,10 +220,17 @@ export class Dropdown {
if (event.key === 'Tab') {
setTimeout(() => {
// Tabbing outside of the containing element closes the panel
if (
document.activeElement &&
document.activeElement.closest(this.containingElement.tagName.toLowerCase()) !== this.containingElement
) {
// If the dropdown is used within a shadow DOM, we need to
// obtain the activeElement within that shadowRoot, otherwise
// `document.activeElement` will only return the name of the
// parent shadow DOM element.
const activeElement =
this.containingElement.getRootNode() instanceof ShadowRoot
? document.activeElement.shadowRoot?.activeElement
: document.activeElement;
if (activeElement?.closest(this.containingElement.tagName.toLowerCase()) !== this.containingElement) {
this.hide();
return;
}