mirror of
https://github.com/jcreek/LivingDexTracker.git
synced 2026-09-15 01:52:39 +00:00
3a2c18bbeb
`npm run check` reported 15 errors and `npm run lint` 20, all pre-existing, so
neither gate could pass. Fixing them turned up three real bugs:
- SignOut destructured `{ error }` off `.then(() => {})`, which resolves to
undefined, so every sign-out threw a TypeError - after the signed-out event had
already been emitted. Sign-out also left the user on the protected page they
were on, still showing its content; it now returns them to the home page and
re-runs the server loads.
- SignUp passed `redirectTo`, which is not a signUp option and was silently
ignored, so the confirmation link has always used Supabase's configured site
URL. Documented rather than changed, since pointing it elsewhere needs an
absolute allow-listed URL.
- The Pokédex page tracked totalRecordsCreated but never passed it to the box
view, so the "Processed N entries so far" progress message never rendered.
The rest is typing and dead code: cookie callback parameters in hooks.server.ts
and +layout.ts, the untyped supabase props, a query-builder type that made
PostgREST rows untyped downstream, an unused session destructure, and
`while (true)` paging loops rewritten as `for (;;)`.
35 lines
987 B
Svelte
35 lines
987 B
Svelte
<script lang="ts">
|
|
export let currentPage: number;
|
|
export let itemsPerPage: number;
|
|
export let totalPages: number;
|
|
|
|
function nextPage() {
|
|
currentPage = Math.min(currentPage + 1, totalPages);
|
|
}
|
|
|
|
function previousPage() {
|
|
currentPage = Math.max(currentPage - 1, 1);
|
|
}
|
|
|
|
function setItemsPerPage(event: Event) {
|
|
itemsPerPage = parseInt((event.target as HTMLSelectElement).value, 10);
|
|
}
|
|
</script>
|
|
|
|
<div class="join mb-4">
|
|
<button class="join-item btn" on:click={previousPage} disabled={currentPage === 1}>«</button>
|
|
<button class="join-item btn">Page {currentPage} of {totalPages}</button>
|
|
<button class="join-item btn" on:click={nextPage} disabled={currentPage === totalPages}>»</button>
|
|
</div>
|
|
|
|
<label for="itemsPerPage">Items per page:</label>
|
|
<select
|
|
id="itemsPerPage"
|
|
class="select select-bordered w-full max-w-xs text-black"
|
|
on:change={setItemsPerPage}
|
|
>
|
|
<option value="20">20</option>
|
|
<option value="50">50</option>
|
|
<option value="100">100</option>
|
|
</select>
|