MCPcopy Create free account
hub / github.com/SyntaxUI/syntaxui / SearchDialog

Function SearchDialog

src/components/Search.tsx:319–429  ·  view source on GitHub ↗
({
  open,
  setOpen,
  className,
}: {
  open: boolean
  setOpen: (open: boolean) => void
  className?: string
})

Source from the content-addressed store, hash-verified

317})
318
319function SearchDialog({
320 open,
321 setOpen,
322 className,
323}: {
324 open: boolean
325 setOpen: (open: boolean) => void
326 className?: string
327}) {
328 let formRef = useRef<React.ElementRef<'form'>>(null)
329 let panelRef = useRef<React.ElementRef<'div'>>(null)
330 let inputRef = useRef<React.ElementRef<typeof SearchInput>>(null)
331 let { autocomplete, autocompleteState } = useAutocomplete({
332 close() {
333 setOpen(false)
334 },
335 })
336 let pathname = usePathname()
337 let searchParams = useSearchParams()
338
339 useEffect(() => {
340 setOpen(false)
341 }, [pathname, searchParams, setOpen])
342
343 useEffect(() => {
344 if (open) {
345 return
346 }
347
348 function onKeyDown(event: KeyboardEvent) {
349 if (event.key === 'k' && (event.metaKey || event.ctrlKey)) {
350 event.preventDefault()
351 setOpen(true)
352 }
353 }
354
355 window.addEventListener('keydown', onKeyDown)
356
357 return () => {
358 window.removeEventListener('keydown', onKeyDown)
359 }
360 }, [open, setOpen])
361
362 return (
363 <Transition.Root
364 show={open}
365 as={Fragment}
366 afterLeave={() => autocomplete.setQuery('')}
367 >
368 <Dialog
369 onClose={setOpen}
370 className={clsx('fixed inset-0 z-50', className)}
371 >
372 <Transition.Child
373 as={Fragment}
374 enter="ease-out duration-50"
375 enterFrom="opacity-0"
376 enterTo="opacity-100"

Callers

nothing calls this directly

Calls 1

useAutocompleteFunction · 0.85

Tested by

no test coverage detected