import { Show, For, createSignal } from 'solid-js' import '../../styles/Search.scss' import type { Shout } from '../../graphql/types.gen' import { ArticleCard } from '../Feed/Card' import { loadShouts, useArticlesStore } from '../../stores/zine/articles' import { restoreScrollPosition, saveScrollPosition } from '../../utils/scroll' import { useRouter } from '../../stores/router' import { useLocalize } from '../../context/localize' type SearchPageSearchParams = { by: '' | 'relevance' | 'rating' } type Props = { query: string results: Shout[] } const LOAD_MORE_PAGE_SIZE = 50 export const SearchView = (props: Props) => { const { t } = useLocalize() const { sortedArticles } = useArticlesStore({ shouts: props.results }) const [isLoadMoreButtonVisible, setIsLoadMoreButtonVisible] = createSignal(false) const [query, setQuery] = createSignal(props.query) const [offset, setOffset] = createSignal(0) const { searchParams, handleClientRouteLinkClick } = useRouter() let searchEl: HTMLInputElement const handleQueryChange = (_ev) => { setQuery(searchEl.value) } const loadMore = async () => { saveScrollPosition() const { hasMore } = await loadShouts({ filters: { title: query(), body: query() }, offset: offset(), limit: LOAD_MORE_PAGE_SIZE }) setIsLoadMoreButtonVisible(hasMore) setOffset(offset() + LOAD_MORE_PAGE_SIZE) restoreScrollPosition() } return (
0}>

{t('Publications')}

{(article) => (
)}

) }