bpist-squalk-forum/src/lib/searchModal.svelte.ts

24 lines
678 B
TypeScript

let open = $state(false);
export const searchModal = {
get open() {
return open;
},
};
// When the page hosts an inline search input (the homepage), every search
// trigger focuses it instead of opening the modal, so a modal input never
// opens on top of an inline one. Resolved through the DOM rather than a
// registration callback: it needs no lifecycle bookkeeping and stays correct
// even if HMR instantiates this module twice in dev.
export function openSearch() {
const inline = document.querySelector<HTMLInputElement>(
"[data-search-inline]",
);
if (inline) inline.focus();
else open = true;
}
export function closeSearch() {
open = false;
}