diff --git a/apps/svelte.dev/src/routes/(packages)/packages/+page.server.ts b/apps/svelte.dev/src/routes/(packages)/packages/+page.server.ts index dab68d7fd8..b0003ce934 100644 --- a/apps/svelte.dev/src/routes/(packages)/packages/+page.server.ts +++ b/apps/svelte.dev/src/routes/(packages)/packages/+page.server.ts @@ -8,16 +8,17 @@ export const prerender = false; export async function load({ url }) { const query = url.searchParams.get('query'); const tags = (url.searchParams.get('tags') ?? '').split(',').filter(Boolean); - let page = +(url.searchParams.get('page')?.toString() ?? 0); + let page = Math.max(1, +(url.searchParams.get('page')?.toString() ?? 1)); init(registry); const current_results = search(query, { tags, sort_by: 'popularity' }); const total_pages = Math.ceil(current_results.length / REGISTRY_PAGE_LIMIT); + console.log(page, total_pages); - if (page + 1 > total_pages) { - page = 0; + if (page > total_pages) { + page = 1; const new_url = new URL(url); new_url.searchParams.set('page', page + ''); @@ -25,8 +26,8 @@ export async function load({ url }) { } const current_results_paged = current_results.slice( - page * REGISTRY_PAGE_LIMIT, - page * REGISTRY_PAGE_LIMIT + REGISTRY_PAGE_LIMIT + (page - 1) * REGISTRY_PAGE_LIMIT, + (page - 1) * REGISTRY_PAGE_LIMIT + REGISTRY_PAGE_LIMIT ); return { diff --git a/apps/svelte.dev/src/routes/(packages)/packages/+page.svelte b/apps/svelte.dev/src/routes/(packages)/packages/+page.svelte index 63c2c44a20..2e0baddd7a 100644 --- a/apps/svelte.dev/src/routes/(packages)/packages/+page.svelte +++ b/apps/svelte.dev/src/routes/(packages)/packages/+page.svelte @@ -5,13 +5,15 @@ import { Box, ReactiveQueryParam } from '@sveltejs/site-kit/reactivity'; import { onMount } from 'svelte'; import SearchWorker from './packages-worker.ts?worker'; + import { stopPropagation } from 'svelte/legacy'; + import Pagination from './pagination.svelte'; const { data } = $props(); const query_qp = new ReactiveQueryParam('query'); const page_qp = new ReactiveQueryParam('page', { encode: (v) => v.toString(), - decode: (v) => +v + decode: (v) => Math.max(1, v.length ? +v : 1) }); const tags_qp = new ReactiveQueryParam('tags', { encode: (v) => v.join(','), @@ -63,24 +65,25 @@ tags_qp.current; page_qp.current; - if (ready) { - if (worker_first_run) { - worker_first_run = false; - } else { - const id = uid++; - pending.add(id); - - worker.postMessage({ - type: 'get', - id, - payload: { - query: query_qp.current, - page: page_qp.current, - tags: $state.snapshot(tags_qp.current) - } - }); - } + if (!ready) return; + + if (worker_first_run) { + worker_first_run = false; + return; } + + const id = uid++; + pending.add(id); + + worker.postMessage({ + type: 'get', + id, + payload: { + query: query_qp.current, + page: page_qp.current, + tags: $state.snapshot(tags_qp.current) + } + }); }); const number_formatter = Intl.NumberFormat(); @@ -103,7 +106,7 @@

Packages

-
+

Packages

-
-
-
- { - if (e.key === 'Enter' && !e.isComposing) { - // const element = modal.querySelector('a[data-has-node]') as HTMLElement | undefined; - // element?.click(); - } - }} - bind:value={query_qp.current} - placeholder="Search" - aria-describedby="search-description" - aria-label={'Search'} - spellcheck="false" - /> - - -
- - -
+
+