Skip to content

Commit d2fda93

Browse files
committed
Refactor
1 parent eb0389c commit d2fda93

File tree

1 file changed

+44
-53
lines changed

1 file changed

+44
-53
lines changed

src/components/Product/ProductFilters.component.tsx

Lines changed: 44 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,6 @@
11
import { Dispatch, SetStateAction } from 'react';
22

3-
interface ProductType {
4-
id: string;
5-
name: string;
6-
checked: boolean;
7-
}
8-
9-
interface Product {
10-
allPaSizes?: {
11-
nodes: {
12-
name: string;
13-
}[];
14-
};
15-
allPaColors?: {
16-
nodes: {
17-
name: string;
18-
}[];
19-
};
20-
}
3+
import { Product, ProductType } from '@/types/product';
214

225
interface ProductFiltersProps {
236
selectedSizes: string[];
@@ -45,46 +28,52 @@ const ProductFilters = ({
4528
resetFilters,
4629
}: ProductFiltersProps) => {
4730
// Get unique sizes from all products
48-
const sizes = Array.from(new Set(
49-
products.flatMap((product: Product) =>
50-
product.allPaSizes?.nodes.map((node: { name: string }) => node.name) || []
51-
)
52-
)).sort() as string[];
31+
const sizes = Array.from(
32+
new Set(
33+
products.flatMap(
34+
(product: Product) =>
35+
product.allPaSizes?.nodes.map(
36+
(node: { name: string }) => node.name,
37+
) || [],
38+
),
39+
),
40+
).sort() as string[];
5341
// Get unique colors from all products
54-
const availableColors = Array.from(new Set(
55-
products.flatMap((product: Product) =>
56-
product.allPaColors?.nodes.map((node: { name: string }) => node.name) || []
57-
)
58-
)).sort() as string[];
42+
const availableColors = Array.from(
43+
new Set(
44+
products.flatMap(
45+
(product: Product) =>
46+
product.allPaColors?.nodes.map(
47+
(node: { name: string }) => node.name,
48+
) || [],
49+
),
50+
),
51+
).sort() as string[];
5952

6053
// Map color names to their CSS classes
6154
const colorMap: { [key: string]: string } = {
62-
'Svart': 'bg-black',
63-
'Brun': 'bg-brown-500',
64-
'Beige': 'bg-[#D2B48C]',
65-
'Grå': 'bg-gray-500',
66-
'Hvit': 'bg-white border border-gray-300',
67-
'Blå': 'bg-blue-500'
55+
Svart: 'bg-black',
56+
Brun: 'bg-brown-500',
57+
Beige: 'bg-[#D2B48C]',
58+
Grå: 'bg-gray-500',
59+
Hvit: 'bg-white border border-gray-300',
60+
Blå: 'bg-blue-500',
6861
};
6962

70-
const colors = availableColors.map(colorName => ({
63+
const colors = availableColors.map((colorName) => ({
7164
name: colorName,
72-
class: colorMap[colorName] || 'bg-gray-300' // Fallback color if not in map
65+
class: colorMap[colorName] || 'bg-gray-300', // Fallback color if not in map
7366
}));
7467

7568
const toggleSize = (size: string) => {
76-
setSelectedSizes(prev =>
77-
prev.includes(size)
78-
? prev.filter(s => s !== size)
79-
: [...prev, size]
69+
setSelectedSizes((prev) =>
70+
prev.includes(size) ? prev.filter((s) => s !== size) : [...prev, size],
8071
);
8172
};
8273

8374
const toggleColor = (color: string) => {
84-
setSelectedColors(prev =>
85-
prev.includes(color)
86-
? prev.filter(c => c !== color)
87-
: [...prev, color]
75+
setSelectedColors((prev) =>
76+
prev.includes(color) ? prev.filter((c) => c !== color) : [...prev, color],
8877
);
8978
};
9079

@@ -115,7 +104,9 @@ const ProductFilters = ({
115104
min="0"
116105
max="1000"
117106
value={priceRange[1]}
118-
onChange={(e) => setPriceRange([priceRange[0], parseInt(e.target.value)])}
107+
onChange={(e) =>
108+
setPriceRange([priceRange[0], parseInt(e.target.value)])
109+
}
119110
className="w-full"
120111
/>
121112
<div className="flex justify-between mt-2">
@@ -158,17 +149,17 @@ const ProductFilters = ({
158149
title={color.name}
159150
/>
160151
))}
161-
</div>
152+
</div>
162153

163-
<button
164-
onClick={resetFilters}
165-
className="w-full mt-8 py-2 px-4 bg-gray-100 text-gray-700 rounded hover:bg-gray-200 transition-colors"
166-
>
167-
Resett filter
168-
</button>
154+
<button
155+
onClick={resetFilters}
156+
className="w-full mt-8 py-2 px-4 bg-gray-100 text-gray-700 rounded hover:bg-gray-200 transition-colors"
157+
>
158+
Resett filter
159+
</button>
160+
</div>
169161
</div>
170162
</div>
171-
</div>
172163
);
173164
};
174165

0 commit comments

Comments
 (0)