Skip to content
Snippets Groups Projects
Commit 4d60ee22 authored by Tiago Brito's avatar Tiago Brito
Browse files

Implemented Header.js

parent 863a1e70
No related branches found
No related tags found
No related merge requests found
import React from 'react'; import React, { useEffect, useState } from 'react';
import { Link } from 'react-router-dom'; import { Link, useNavigate } from 'react-router-dom';
import { useCart } from '../contexts/CartContext'; // Import useCart
import '../css/Header.css';
function Header() { function Header() {
const { cart } = useCart(); // Access the cart context
const [searchTerm, setSearchTerm] = useState('');
const [brands, setBrands] = useState([]);
const [selectedBrand, setSelectedBrand] = useState('All Brands');
const navigate = useNavigate();
useEffect(() => {
fetch('http://localhost:5000/brand')
.then(response => response.json())
.then(data => setBrands(data))
.catch(console.error);
}, []);
const handleSearchChange = (e) => {
setSearchTerm(e.target.value);
};
const handleSearchSubmit = (e) => {
e.preventDefault();
navigate(`/search?query=${searchTerm}&brand=${selectedBrand}`);
};
const handleBrandChange = (e) => {
setSelectedBrand(e.target.value);
};
// Calculate total items in the cart
const totalItems = cart.items.reduce((total, item) => total + item.quantity, 0);
return ( return (
<header> <header>
<nav> <div className="logo">
<ul> <Link to="/">ElectroMart</Link>
<li><Link to="/">Home</Link></li> </div>
<li><Link to="/products">Products</Link></li> <form className="search-bar" onSubmit={handleSearchSubmit}>
<li><Link to="/orders">Orders</Link></li> <select value={selectedBrand} onChange={handleBrandChange} className="brand-select">
</ul> <option value="All Brands">All Brands</option>
</nav> {brands.map(brand => (
<option key={brand.BrandID} value={brand.Name}>{brand.Name}</option>
))}
</select>
<input type="text" placeholder="Search ElectroMart" value={searchTerm} onChange={handleSearchChange} />
<button type="submit"><i className="fa-solid fa-magnifying-glass"></i></button>
</form>
<div className="user-controls">
<Link to="" className="signin-button">
<i className="fa-solid fa-user"></i>
<span>Sign In</span>
</Link>
<Link to="/cart" className="cart-button">
<i className="fa-solid fa-cart-shopping"></i>
<span>Cart{totalItems > 0 ? ": " + totalItems : ''}</span>
</Link>
</div>
</header> </header>
); );
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment