Skip to content

Commit

Permalink
Merge pull request #17 from muhammadshakkeerp/feature/optimization
Browse files Browse the repository at this point in the history
Feature/optimization
  • Loading branch information
muhammadshakkeerp authored Sep 10, 2024
2 parents 63833dc + aaa7fbd commit fadc9fb
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 36 deletions.
51 changes: 26 additions & 25 deletions src/components/HeaderCategory.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import { BiChevronDown } from "react-icons/bi";
import { FC, useState } from "react";
import { HeaderCategory, SubCategory } from "../types/layoutTypes";
import { FC, useMemo, useState } from "react";
import { HeaderCategoryProps } from "../types/layoutTypes";
import { Link } from "react-router-dom";
import { RootState } from "../redux/store";
import { useSelector } from "react-redux";
import { headerCategories } from "../assets/headerCategoryData";

interface headerCategoriesProps {
headerCategories: HeaderCategory[]
headerCategories: HeaderCategoryProps[]
}

export const HeaderCatogory: FC<headerCategoriesProps> = () => {
export const HeaderCategory: FC<headerCategoriesProps> = () => {
const [hoveredCategory, setHoveredCategory] = useState<string | null>(null);
const [findSubCetogory, setFindSubCetogory] = useState<
SubCategory[] | undefined
>([]);
// const [findSubCategory, setFindSubCategory] = useState<
// SubCategory[] | undefined
// >([]);

// Darkmode
const DarkMode = useSelector((state: RootState) => state?.dark)
Expand All @@ -26,23 +26,16 @@ export const HeaderCatogory: FC<headerCategoriesProps> = () => {
const handleMouseLeave = () => {
setHoveredCategory(null);
};
const handleHoverCategory = (categoryName: string) => {
let foundSubCategory: SubCategory[] | undefined;
if (categoryName) {
const foundCategory = headerCategories.find(
(item: HeaderCategory) => item.title === categoryName
);
if (foundCategory && foundCategory.subCategories) {
foundSubCategory = foundCategory.subCategories;
} else {
foundSubCategory = undefined;
}
}
setFindSubCetogory(foundSubCategory);
};
const handleHoverCategory = useMemo(() => (categoryName: string) => {
// setFindSubCategory(foundSubCategory);
const foundCategory = headerCategories?.find((item: HeaderCategoryProps) => item.title === categoryName)
// setFindSubCategory(foundCategory?.subCategories || [])
return foundCategory?.subCategories || []
// console.log(foundCategory?.subCategories)
}, [])

return (
<div className={`flex gap-1 flex-shrink-0 justify-between ${DarkMode?.isEnabled ? "bg-slate-800 text-white" : "bg-[#e4adff] md:bg-white"} md:gap-3 header-category-img-p relative`}>
<div className={`flex gap-1 flex-shrink-0 justify-between ${DarkMode?.isEnabled ? "bg-slate-800 text-white" : "bg-[#e4adff] md:bg-white"} md:gap-3 header-category-img-p relative`}>
{headerCategories?.map((category, index) => (
<Link to="/productsGroup" key={index}>
<div
Expand All @@ -69,15 +62,23 @@ export const HeaderCatogory: FC<headerCategoriesProps> = () => {
onMouseEnter={() => handleHoverCategory(category.title)}
className={`hidden md:block absolute w-[200px] transform origin-top -translate-y-10 group-hover:-translate-y-0 transition-transform duration-300 top-[120px] left-0 ${DarkMode ? "bg-darkModeBg/90 border border-white/50 text-darkModeText" : "bg-white"} shadow-2xl shadow-slate-700 px-2 py-1 rounded-sm z-50`}
>
{findSubCetogory &&
Array.from(findSubCetogory)?.map((item, subIndex) => (
{/* {findSubCategory &&
Array.from(findSubCategory)?.map((item, subIndex) => (
<li
key={subIndex}
className="primary-font font-semibold py-2 px-1 cursor-pointer hover:bg-slate-600"
>
{item?.category}
</li>
))}
))} */}
{handleHoverCategory(category.title)?.map((item, subIndex) => (
<li
key={subIndex}
className="primary-font font-semibold py-2 px-1 cursor-pointer hover:bg-slate-600"
>
{item?.category}
</li>
))}
</ul>
)}
</div>
Expand Down
2 changes: 2 additions & 0 deletions src/components/HomeSlider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ const HomeSlider = () => {
const [currentImg, setCurrentImg] = useState(0);

useEffect(() => {
// Modulo Operation algorithms used here
// Cycling Through Images Using Modulo
const timer = setInterval(() => {
// (1+1) % 5 =
const nextImg = (currentImg + 1) % bannerImgArray.length;
Expand Down
4 changes: 2 additions & 2 deletions src/components/Offer.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useState, useEffect } from 'react';
import { offerImgs } from '../assets/globalUtlities';

export const Offer = () => {
export const Offer = () => {
const [numImagesToShow, setNumImagesToShow] = useState(4);

useEffect(() => {
Expand All @@ -28,7 +28,7 @@ export const Offer = () => {
}, []);

return (
<div className="flex flex-wrap justify-center flex-shrink-0 flex-row">
<div className="flex flex-wrap justify-center flex-shrink-0 flex-row relative z-30">
{offerImgs?.slice(0, numImagesToShow).map((img, index) => (
<div key={index} className="w-full md:w-1/2 lg:w-1/3 xl:w-1/4 md:p-1">
<img src={img.img} alt={img.img} className="w-full h-auto " />
Expand Down
8 changes: 4 additions & 4 deletions src/pages/Home.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { FC, } from "react";
import { HeaderCategory } from "../types/layoutTypes";
import { HeaderCategoryProps } from "../types/layoutTypes";
import {
Ad,
CustomProductsRows,
HeaderCatogory,
HeaderCategory,
HomeSlider,
Offer,
} from "../paths";
Expand All @@ -12,7 +12,7 @@ import { AxiosFetchState } from "../redux/store";
import { featuredProducts } from "../assets/globalUtlities";

interface headerCategoriesProps {
headerCategories: HeaderCategory[],
headerCategories: HeaderCategoryProps[],

}

Expand All @@ -22,7 +22,7 @@ const Home: FC<headerCategoriesProps> = () => {
return (
<div>
<HomeSlider />
<HeaderCatogory headerCategories={[]} />
<HeaderCategory headerCategories={[]} />
<Offer />
<div>
<CustomProductsRows title={"Popular Products"} starProducts={0} endProducts={12} featuredProducts={undefined} />
Expand Down
4 changes: 2 additions & 2 deletions src/paths.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { CustomProductsRows } from "./components/CustomProductsRows";
import { Header } from "./components/Header";
import { HeaderCatogory } from "./components/HeaderCategory";
import { HeaderCategory } from "./components/HeaderCategory";
import { HomeBanner } from "./components/HomeBanner";
import { HomeSlider } from "./components/HomeSlider";
import { Offer } from "./components/Offer";
Expand All @@ -27,7 +27,7 @@ export {
CustomProductsRows,
Ad,
Header,
HeaderCatogory,
HeaderCategory,
HomeBanner,
HomeSlider,
Rewards,
Expand Down
6 changes: 3 additions & 3 deletions src/types/layoutTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ export type SubCategory = {
subItems: SubItem[];
};

type HeaderCategory = {
type HeaderCategoryProps = {
title: string;
img: string;
subCategories: SubCategory[];
};

type headerCategoriesProps = HeaderCategory[];
type headerCategoriesProps = HeaderCategoryProps[];

type RowProductsProps = {
id: number;
Expand Down Expand Up @@ -50,5 +50,5 @@ export type {
ProductDetailsProps,
FooterDataProps,
headerCategoriesProps,
HeaderCategory,
HeaderCategoryProps,
};

0 comments on commit fadc9fb

Please sign in to comment.