Viewing File: /home/ubuntu/route-and-root-frontend-base/src/components/landingPage/HeroStaticProductIndex.jsx

import React, { useState, useEffect } from "react";
import { Navbar, Container, Image, Nav, Row, Col } from "react-bootstrap";
import { Link } from "react-router-dom";
import { fetchCategoriesListStart } from "../store/actions/HomePageAction";
import "./Landing.css";
import { connect } from "react-redux";
import Slider from "react-slick";
import CustomLazyLoad from "../Helper/CustomLazyLoad";
import Skeleton from "react-loading-skeleton";
import { useNavigate } from 'react-router-dom';

const HeroStaticProductIndex = (props) => {
  const navigate = useNavigate();

  useEffect(() => {
    props.dispatch(fetchCategoriesListStart());
  }, []);

  var settings = {
    dots: false,
    infinite: true,
    arrows: false,
    speed: 500,
    slidesToShow: 5,
    slidesToScroll: 1,
    speed: 500,
    autoplay: true,
    adaptiveHeight: true,
    responsive: [
      {
        breakpoint: 1024,
        settings: {
          slidesToShow: 3,
          slidesToScroll: 3,
          infinite: true,
          dots: true,
        },
      },
      {
        breakpoint: 600,
        settings: {
          slidesToShow: 2,
          slidesToScroll: 2,
          initialSlide: 2,
        },
      },
      {
        breakpoint: 480,
        settings: {
          slidesToShow: 1,
          slidesToScroll: 1,
        },
      },
    ],
  };

  return (
    <>
      <div className="hero-static-product-sec">
        <Container>
          <Row>
            <Col md={12}>
              {props.categoriesList.loading ? (
                <div className="d-flex justify-content-between">
                  <Skeleton height={260} width={240} />
                  <Skeleton height={260} width={240} />
                  <Skeleton height={260} width={240} />
                  <Skeleton height={260} width={240} />
                  <Skeleton height={260} width={240} />
                </div>
              ) : (
                <div className="">
                  <Slider {...settings}>
                    {props.categoriesList.data.categories &&
                      props.categoriesList.data.categories.map(
                        (category, i) => (
                          <div className="hero-static-product-item"
                            onClick={e => navigate(`/shop?category=${category.category_unique_id}`)}>
                            <div className="hero-static-product-card">
                              <div className="hero-static-product-img-sec">
                                {/* <Image
                                className="hero-static-product-img"
                                src={category.picture}
                              /> */}
                                <CustomLazyLoad
                                  src={category.picture}
                                  placeholderSrc={
                                    window.location.origin +
                                    "/images/loading.svg"
                                  }
                                  classes="hero-static-product-img"
                                  alt={category.name}
                                />
                              </div>
                              <div className="hero-static-product-info">
                                <h4>{category.name}</h4>
                                <p>({category.total_products})</p>
                              </div>
                            </div>
                          </div>
                        )
                      )}
                  </Slider>
                </div>
              )}
            </Col>
          </Row>
        </Container>
      </div>
    </>
  );
};

const mapStateToPros = (state) => ({
  categoriesList: state.homepage.categoriesList,
});

function mapDispatchToProps(dispatch) {
  return { dispatch };
}

export default connect(
  mapStateToPros,
  mapDispatchToProps
)(HeroStaticProductIndex);
Back to Directory File Manager