fix(search): dont rely on mouse to manipulate focus
This commit is contained in:
		@@ -310,38 +310,12 @@ document.addEventListener("nav", async (e: CustomEventMap["nav"]) => {
 | 
			
		||||
    itemTile.href = resolveUrl(slug).toString()
 | 
			
		||||
    itemTile.innerHTML = `<h3>${title}</h3>${htmlTags}<p class="preview">${content}</p>`
 | 
			
		||||
 | 
			
		||||
    async function onMouseEnter(ev: MouseEvent) {
 | 
			
		||||
      if (!ev.target) return
 | 
			
		||||
      currentHover?.classList.remove("focus")
 | 
			
		||||
      currentHover?.blur()
 | 
			
		||||
      const target = ev.target as HTMLInputElement
 | 
			
		||||
      currentHover = target
 | 
			
		||||
      currentHover.classList.add("focus")
 | 
			
		||||
      await displayPreview(target)
 | 
			
		||||
    const handler = (event: MouseEvent) => {
 | 
			
		||||
      if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return
 | 
			
		||||
      hideSearch()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async function onMouseLeave(ev: MouseEvent) {
 | 
			
		||||
      if (!ev.target) return
 | 
			
		||||
      const target = ev.target as HTMLElement
 | 
			
		||||
      target.classList.remove("focus")
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const events = [
 | 
			
		||||
      ["mouseenter", onMouseEnter],
 | 
			
		||||
      ["mouseleave", onMouseLeave],
 | 
			
		||||
      [
 | 
			
		||||
        "click",
 | 
			
		||||
        (event: MouseEvent) => {
 | 
			
		||||
          if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return
 | 
			
		||||
          hideSearch()
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
    ] as const
 | 
			
		||||
 | 
			
		||||
    events.forEach(([event, handler]) => {
 | 
			
		||||
      itemTile.addEventListener(event, handler)
 | 
			
		||||
      window.addCleanup(() => itemTile.removeEventListener(event, handler))
 | 
			
		||||
    })
 | 
			
		||||
    itemTile.addEventListener("click", handler)
 | 
			
		||||
    window.addCleanup(() => itemTile.removeEventListener("click", handler))
 | 
			
		||||
 | 
			
		||||
    return itemTile
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user