cleanup event listeners with solid-primitives/event-listener (#20619)

This commit is contained in:
Brendan Allan 2026-04-02 17:40:03 +08:00 committed by GitHub
commit 69d047ae7d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 102 additions and 176 deletions

View file

@ -1,15 +1,7 @@
import { Popover as Kobalte } from "@kobalte/core/popover"
import {
ComponentProps,
JSXElement,
ParentProps,
Show,
createEffect,
onCleanup,
splitProps,
ValidComponent,
} from "solid-js"
import { ComponentProps, JSXElement, ParentProps, Show, createEffect, splitProps, ValidComponent } from "solid-js"
import { createStore } from "solid-js/store"
import { makeEventListener } from "@solid-primitives/event-listener"
import { useI18n } from "../context/i18n"
import { IconButton } from "./icon-button"
@ -104,15 +96,9 @@ export function Popover<T extends ValidComponent = "div">(props: PopoverProps<T>
close("outside")
}
window.addEventListener("keydown", onKeyDown, true)
window.addEventListener("pointerdown", onPointerDown, true)
window.addEventListener("focusin", onFocusIn, true)
onCleanup(() => {
window.removeEventListener("keydown", onKeyDown, true)
window.removeEventListener("pointerdown", onPointerDown, true)
window.removeEventListener("focusin", onFocusIn, true)
})
makeEventListener(window, "keydown", onKeyDown, { capture: true })
makeEventListener(window, "pointerdown", onPointerDown, { capture: true })
makeEventListener(window, "focusin", onFocusIn, { capture: true })
})
const content = () => (