Files
mal/static/search/actions.ts

61 lines
1.3 KiB
TypeScript

import {
searchInput,
searchDialog,
rememberSearchOpener,
focusLastSearchOpener,
setLastQuery,
getActiveRequestController,
setActiveRequestController,
} from "./state";
import { setSearchState, setClearButtonState, clearResults } from "./render";
import { cancelScheduledFetch, fetchSearchItems } from "./fetch";
export const openSearch = (): void => {
if (!searchInput) {
window.location.href = "/search";
return;
}
rememberSearchOpener();
if (searchDialog) {
setSearchState(true);
searchInput.value = "";
setLastQuery("");
cancelScheduledFetch();
setClearButtonState(false);
clearResults();
}
searchInput.focus();
};
export const closeSearch = (): void => {
if (!searchDialog || !searchInput) {
return;
}
setSearchState(false);
cancelScheduledFetch();
const activeRequestController = getActiveRequestController();
if (activeRequestController) {
activeRequestController.abort();
setActiveRequestController(undefined);
}
searchInput.value = "";
setLastQuery("");
setClearButtonState(false);
clearResults();
focusLastSearchOpener();
};
export const clearSearchInput = (): void => {
if (!searchInput) {
return;
}
searchInput.value = "";
searchInput.focus();
cancelScheduledFetch();
setClearButtonState(false);
fetchSearchItems("");
};