diff --git a/index.d.ts b/index.d.ts index ef87173..459f1ac 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,6 +1,8 @@ export default class DetailsMenuElement extends HTMLElement { preload: boolean; src: string; + clearFocus(): void; + selectFocusOrFirst(): void; } declare global { diff --git a/index.js b/index.js index ee618b8..788c619 100644 --- a/index.js +++ b/index.js @@ -31,6 +31,17 @@ class DetailsMenuElement extends HTMLElement { return input instanceof HTMLInputElement ? input : null } + clearFocus() { + clearFocus(this) + } + + selectFocusOrFirst() { + const details = this.parentElement + if (!details) return + const element = getFocusedMenuItem(details) || sibling(details, true) + if (element) element.click() + } + connectedCallback() { if (!this.hasAttribute('role') && !this.hasAttribute('input')) this.setAttribute('role', 'menu') diff --git a/index.js.flow b/index.js.flow index 0c275f3..a9f68e2 100644 --- a/index.js.flow +++ b/index.js.flow @@ -6,6 +6,8 @@ declare class DetailsMenuElement extends HTMLElement { get src(): string; set src(url: string): void; get input(): ?HTMLInputElement; + clearFocus(): void; + selectFocusOrFirst(): void; } declare module '@github/details-menu-element' {