Skip to content

Commit

Permalink
File structure changed, removed products placeholder file and removed…
Browse files Browse the repository at this point in the history
… its contexts
  • Loading branch information
webdevsk committed Oct 9, 2023
1 parent 2ab3af0 commit c0b4859
Show file tree
Hide file tree
Showing 13 changed files with 76 additions and 650 deletions.
583 changes: 0 additions & 583 deletions src/assets/disposable.jsx

This file was deleted.

4 changes: 2 additions & 2 deletions src/components/Header/BurgerMenu.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { Popover, Transition } from "@headlessui/react"
import { Fragment, useState } from "react"
import { HiChevronLeft, HiChevronRight } from "react-icons/hi"
import { Link } from "react-router-dom"
import { useMainMenuContext } from "../../contexts/MainMenuContext"
import { useHeaderMenuContext } from "../../contexts/HeaderMenuContext"
import { useMainMenuContext } from "../../hooks/useMainMenuContext"
import { useHeaderMenuContext } from "../../hooks/useHeaderMenuContext"

const BurgerMenu = () => {
return (
Expand Down
79 changes: 41 additions & 38 deletions src/components/Header/Header.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,50 +2,17 @@ import { Typography } from "@material-tailwind/react"
import { Link } from "react-router-dom"
import SearchBar from "./SearchBar"
import { useEffect, useRef, useState } from "react"
import createUnique from "../../hooks/createUnique"
import { response } from "../../assets/disposable"
import MainMenuContext from "../../contexts/MainMenuContext"
import HeaderMenuContext from "../../contexts/HeaderMenuContext"
import { Desktop, Mobile } from "../common/ReactResponsive"
import { HeaderToolBar } from "./HeaderToolBar"
import { MainMenuDesktop } from "./MainMenuDesktop"
import { TopMiniMenuDesktop } from "./TopMiniMenuDesktop"

const mainMenu = [
{
id: 1,
label: "Shop",
items: ["Dress", "Phones"],
},
{
id: 2,
label: "Brands",
items: createUnique(response.products, "brand"),
},
{
id: 3,
label: "Categories",
items: createUnique(response.products, "category"),
},
]

const headerMenu = [
{
id: 1,
label: "Order Status",
link: "#",
},
{
id: 2,
label: "Blog",
link: "#",
},
{
id: 3,
label: "Best Buy Business",
link: "#",
},
]
import { useSelector } from "react-redux"
import {
selectProductBrands,
selectProductCategories,
} from "../../features/products/productsSlice"

const Header = () => {
const headerRef = useRef(null)
Expand Down Expand Up @@ -78,6 +45,42 @@ const Header = () => {
return () => removeEventListener("scroll", handleScroll)
}, [stickyHeaderRef, headerRef])

const mainMenu = [
{
id: 1,
label: "Shop",
items: ["All Products", "Dress", "Phones"],
},
{
id: 2,
label: "Brands",
items: useSelector((state) => selectProductBrands(state)),
},
{
id: 3,
label: "Categories",
items: useSelector((state) => selectProductCategories(state)),
},
]

const headerMenu = [
{
id: 1,
label: "Order Status",
link: "#",
},
{
id: 2,
label: "Blog",
link: "#",
},
{
id: 3,
label: "Best Buy Business",
link: "#",
},
]

return (
<MainMenuContext.Provider value={mainMenu}>
<HeaderMenuContext.Provider value={headerMenu}>
Expand Down
6 changes: 3 additions & 3 deletions src/components/Header/MainMenuDesktop.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { FloatingOverlay, FloatingPortal, size } from "@floating-ui/react"
import { Popover } from "@headlessui/react"
import { Float } from "@headlessui-float/react"
import { HiChevronDown } from "react-icons/hi"
import { useMainMenuContext } from "../../contexts/MainMenuContext"
import { useMainMenuContext } from "../../hooks/useMainMenuContext"

export const MainMenuDesktop = () => {
const mainMenu = useMainMenuContext()
Expand Down Expand Up @@ -51,8 +51,8 @@ export const MainMenuDesktop = () => {
<div
className={`relative max-h-full w-80 overflow-y-scroll border border-t-transparent bg-white py-2 text-black`}
>
{menu.items.map((item) => (
<li key={item}>
{menu.items.map((item, i) => (
<li key={i}>
<Link
to={item}
className="block px-3 py-1 transition-colors hover:bg-gray-100 hover:text-theme"
Expand Down
6 changes: 3 additions & 3 deletions src/components/Header/TopMiniMenuDesktop.jsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { Typography } from "@material-tailwind/react"
import { Link } from "react-router-dom"
import { useHeaderMenuContext } from "../../contexts/HeaderMenuContext"
import { useHeaderMenuContext } from "../../hooks/useHeaderMenuContext"

export const TopMiniMenuDesktop = () => {
const headerMenu = useHeaderMenuContext()
return (
<div className="container hidden flex-wrap justify-end gap-3 lg:flex">
{headerMenu.map((menu) => (
<Link key={menu.id} to={menu.link} className="hover:underline">
{headerMenu.map((menu, i) => (
<Link key={i} to={menu.link} className="hover:underline">
<Typography variant="small">{menu.label}</Typography>
</Link>
))}
Expand Down
19 changes: 12 additions & 7 deletions src/components/common/Filters.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ import {
import { useRef } from "react"
import { Link } from "react-router-dom"
import RatingBar from "./RatingBar"
import createUnique from "../../hooks/createUnique"
import { MdKeyboardArrowDown } from "react-icons/md"
import { useProductsContext } from "../../contexts/ProductsContext"
import useLocalStorage from "../../hooks/useLocalStorage"
import { useSelector } from "react-redux"
import {
selectProductBrands,
selectProductCategories,
} from "../../features/products/productsSlice"

const Filters = () => {
const products = useProductsContext()
const [openObj, setOpenObj] = useLocalStorage("openFilters", {
category: true,
// brands: true,
Expand All @@ -35,6 +37,9 @@ const Filters = () => {
const minPriceRef = useRef(null)
const maxPriceRef = useRef(null)

const categories = useSelector((state) => selectProductCategories(state))
const brands = useSelector((state) => selectProductBrands(state))

const handlePriceBtn = () => {
priceBtnRef.current.disabled =
minPriceRef.current.value === "" && maxPriceRef.current.value === ""
Expand All @@ -60,8 +65,8 @@ const Filters = () => {
</AccordionHeader>
<AccordionBody className="capitalize text-body">
<ul className="flex flex-col gap-2">
{createUnique(products, "category").map((category) => (
<Link to={"/" + category} key={category}>
{categories.map((category, i) => (
<Link to={"/" + category} key={i}>
<Typography className="hover:underline">{category}</Typography>
</Link>
))}
Expand All @@ -87,8 +92,8 @@ const Filters = () => {
</AccordionHeader>
<AccordionBody className=" text-body">
<ul className="flex flex-col gap-2">
{createUnique(products, "brand").map((brand) => (
<Link to={"/" + brand} key={brand}>
{brands.map((brand, i) => (
<Link to={"/" + brand} key={i}>
<Typography className="hover:underline">{brand}</Typography>
</Link>
))}
Expand Down
3 changes: 1 addition & 2 deletions src/contexts/HeaderMenuContext.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { createContext, useContext } from "react"
import { createContext } from "react"

const HeaderMenuContext = createContext(null)
export const useHeaderMenuContext = () => useContext(HeaderMenuContext)
export default HeaderMenuContext
3 changes: 1 addition & 2 deletions src/contexts/MainMenuContext.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { createContext, useContext } from "react"
import { createContext } from "react"

const MainMenuContext = createContext(null)
export const useMainMenuContext = () => useContext(MainMenuContext)
export default MainMenuContext
5 changes: 0 additions & 5 deletions src/contexts/ProductsContext.jsx

This file was deleted.

3 changes: 3 additions & 0 deletions src/features/products/productsSlice.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ export const selectExclusiveProducts = createSelector([
product.category === "laptops"))
})

export const selectProductCategories = state => state.products.categories
export const selectProductBrands = state => state.products.brands

export const fetchProducts = createAsyncThunk('products/fetchProducts', async () => {
const response = await axios('https://dummyjson.com/products')
return response.data
Expand Down
4 changes: 4 additions & 0 deletions src/hooks/useHeaderMenuContext.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { useContext } from "react"
import HeaderMenuContext from "../contexts/HeaderMenuContext"

export const useHeaderMenuContext = () => useContext(HeaderMenuContext)
4 changes: 4 additions & 0 deletions src/hooks/useMainMenuContext.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { useContext } from "react"
import MainMenuContext from "../contexts/MainMenuContext"

export const useMainMenuContext = () => useContext(MainMenuContext)
7 changes: 2 additions & 5 deletions src/routes/HomePage.jsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
import { response } from "../assets/disposable"
import ProductsContext from "../contexts/ProductsContext"
import ProductsGallery from "../features/products/ProductsGallery"
import Hero from "../components/Hero"
import PinnedProducts from "../components/PinnedProducts"
const { products } = response

const HomePage = () => {
return (
<ProductsContext.Provider value={products}>
<>
<Hero />
<PinnedProducts />
<ProductsGallery />
</ProductsContext.Provider>
</>
)
}

Expand Down

0 comments on commit c0b4859

Please sign in to comment.