Skip to content

Commit 82ac984

Browse files
committed
Use fromEvent in autofocus listeners
1 parent 37ee469 commit 82ac984

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

index.js

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class DetailsMenuElement extends HTMLElement {
4646
this.preload
4747
? fromEvent(details, 'mouseover', () => loadFragment(details, this), {once: true})
4848
: NullSubscription,
49-
focusOnOpen(details)
49+
...focusOnOpen(details)
5050
]
5151

5252
states.set(this, {subscriptions, loaded: false})
@@ -63,14 +63,16 @@ class DetailsMenuElement extends HTMLElement {
6363
}
6464

6565
const states = new WeakMap()
66+
67+
type Subscription = {unsubscribe(): void}
6668
const NullSubscription = {unsubscribe() {}}
6769

6870
function fromEvent(
6971
target: EventTarget,
7072
eventName: string,
7173
onNext: EventHandler,
7274
options: EventListenerOptionsOrUseCapture = false
73-
) {
75+
): Subscription {
7476
target.addEventListener(eventName, onNext, options)
7577
return {
7678
unsubscribe: () => {
@@ -96,7 +98,7 @@ function loadFragment(details: Element, menu: DetailsMenuElement) {
9698
}
9799
}
98100

99-
function focusOnOpen(details: Element) {
101+
function focusOnOpen(details: Element): Array<Subscription> {
100102
let isMouse = false
101103
const onmousedown = () => (isMouse = true)
102104
const onkeydown = () => (isMouse = false)
@@ -106,17 +108,11 @@ function focusOnOpen(details: Element) {
106108
if (!isMouse) focusFirstItem(details)
107109
}
108110

109-
details.addEventListener('mousedown', onmousedown)
110-
details.addEventListener('keydown', onkeydown)
111-
details.addEventListener('toggle', ontoggle)
112-
113-
return {
114-
unsubscribe: () => {
115-
details.removeEventListener('mousedown', onmousedown)
116-
details.removeEventListener('keydown', onkeydown)
117-
details.removeEventListener('toggle', ontoggle)
118-
}
119-
}
111+
return [
112+
fromEvent(details, 'mousedown', onmousedown),
113+
fromEvent(details, 'keydown', onkeydown),
114+
fromEvent(details, 'toggle', ontoggle)
115+
]
120116
}
121117

122118
function closeCurrentMenu(details: Element) {

0 commit comments

Comments
 (0)