From 3a437b7f1d13fad7d81de155ff36f11d56b0336c Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 19 Nov 2025 10:19:07 +0545 Subject: [PATCH] fix: Brands filter --- src/routes/brand/+page.svelte | 23 ++++++++++--------- .../[categoryType]/[[slug]]/+page.server.ts | 8 ++++--- .../[categoryType]/[[slug]]/+page.svelte | 15 +++++++++++- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/routes/brand/+page.svelte b/src/routes/brand/+page.svelte index 64206ef..43cd6c9 100644 --- a/src/routes/brand/+page.svelte +++ b/src/routes/brand/+page.svelte @@ -4,8 +4,8 @@ $metaTitle.title = 'Brands'; let { data } = $props(); - let brands = $state<[{ id: Number; name: string; image: string }]>([ - { id: 0, name: '', image: '' } + let brands = $state<[{ id: Number; name: string; slug: string; image: string }]>([ + { id: 0, name: '', slug: '', image: '' } ]); $effect(() => { @@ -16,7 +16,7 @@ .catch((e) => console.log(e)); }); - $inspect(brands); + // $inspect(brands); const alphabets = [ 'a', @@ -71,10 +71,11 @@ {/each} {#each alphabets as letter} - {#each brands as brand} - {#if letter === brand?.name.slice(0, 1).toLowerCase()} - - + + {#each brands as brand} + {#if letter === brand?.name.slice(0, 1).toLowerCase()} + +
@@ -83,14 +84,14 @@ alt={brand?.name} class="aspect-square rounded-sm object-contain object-center" /> -

+

{brand?.name}

-
- {/if} - {/each} + {/if} + {/each} + {/each} diff --git a/src/routes/category/[categoryType]/[[slug]]/+page.server.ts b/src/routes/category/[categoryType]/[[slug]]/+page.server.ts index baf2c72..955145e 100644 --- a/src/routes/category/[categoryType]/[[slug]]/+page.server.ts +++ b/src/routes/category/[categoryType]/[[slug]]/+page.server.ts @@ -4,16 +4,18 @@ import type { PageServerLoad } from './$types'; export const load: PageServerLoad = async ({ fetch, params, url }) => { const categoryId = params.categoryType === 'q' ? '' : params.slug; + const brandName = params.categoryType === 'q' ? '' : params.slug; const searchQuery = url.searchParams.get('q') || ''; - const knownParams = ['q', 'category', 'sort_by', 'page', 'per_page']; + const knownParams = ['q', 'category', 'brand', 'sort_by', 'page', 'per_page']; const backendParams = new URLSearchParams(); backendParams.set('q', searchQuery); - if (categoryId) { + if (categoryId && params.categoryType !== 'brands') { backendParams.set('category', categoryId); } + if (brandName && params.categoryType === 'brands') backendParams.set('brand', brandName); url.searchParams.forEach((value, key) => { if (!knownParams.includes(key)) { @@ -55,7 +57,7 @@ export const load: PageServerLoad = async ({ fetch, params, url }) => { return { status: 'error', message: 'Unable to fetch products', - error: err + error: err instanceof Error ? err.message : 'Unknown error' }; } }; diff --git a/src/routes/category/[categoryType]/[[slug]]/+page.svelte b/src/routes/category/[categoryType]/[[slug]]/+page.svelte index e65b37c..1422e16 100644 --- a/src/routes/category/[categoryType]/[[slug]]/+page.svelte +++ b/src/routes/category/[categoryType]/[[slug]]/+page.svelte @@ -11,6 +11,10 @@ const { data } = $props(); + // $effect(() => { + // data?.productCategory?.then((e) => console.log(e)).catch((e) => console.log(e)); + // }); + // let selectedAttributes: Record = $state({}); let selectedFilters: Record> = $state({}); let originalFilters: { title: string; values: { value: string }[] }[] = $state([]); @@ -119,6 +123,14 @@ invalidateAll: true }); } + + function toTitleCase(str: string) { + return str.replace( + /\w\S*/g, + (text) => text.charAt(0).toUpperCase() + text.substring(1).toLowerCase() + ); + } + $effect(() => { data?.productCategory ?.then( @@ -127,7 +139,8 @@ ? e?.query : page.url.searchParams.get('q') === '' ? 'All' - : e?.filters?.categories[0].title) + : toTitleCase(page.params.slug.replaceAll('-', ' ')) || + e?.filters?.categories[0].title) ) .catch((e) => console.log(e)); });