From 8d8129715b36f9a749a9ace323880ac37bf87a4c Mon Sep 17 00:00:00 2001
From: DyCTaTOR <125912249+DyCTaTOR@users.noreply.github.com>
Date: Fri, 12 Jan 2024 15:29:26 +0400
Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Lab5/src/components/banner/Banner.css | 25 ---------
Lab5/src/components/banner/Banner.jsx | 17 ------
Lab5/src/components/banner/BannerHook.js | 36 ------------
Lab5/src/components/cart/Cart.css | 8 ---
Lab5/src/components/cart/Cart.jsx | 59 --------------------
Lab5/src/components/cart/CartContext.jsx | 29 ----------
Lab5/src/components/cart/CartHook.js | 26 ---------
Lab5/src/components/cart/CartReducer.js | 71 ------------------------
Lab5/src/components/input/Select.jsx | 29 ----------
9 files changed, 300 deletions(-)
delete mode 100644 Lab5/src/components/banner/Banner.css
delete mode 100644 Lab5/src/components/banner/Banner.jsx
delete mode 100644 Lab5/src/components/banner/BannerHook.js
delete mode 100644 Lab5/src/components/cart/Cart.css
delete mode 100644 Lab5/src/components/cart/Cart.jsx
delete mode 100644 Lab5/src/components/cart/CartContext.jsx
delete mode 100644 Lab5/src/components/cart/CartHook.js
delete mode 100644 Lab5/src/components/cart/CartReducer.js
delete mode 100644 Lab5/src/components/input/Select.jsx
diff --git a/Lab5/src/components/banner/Banner.css b/Lab5/src/components/banner/Banner.css
deleted file mode 100644
index a15107b..0000000
--- a/Lab5/src/components/banner/Banner.css
+++ /dev/null
@@ -1,25 +0,0 @@
-#banner {
- margin: 2px;
- display: flex;
- align-items: center;
- flex-direction: column;
-}
-
-#banner img {
- border: 1px solid #3c3c3f;
- border-radius: 5px;
-}
-
-#banner img.banner-show {
- width: 100%;
- opacity: 1;
- transition: opacity 1s, visibility 0s;
-}
-
-#banner img.banner-hide {
- height: 0;
- width: 0;
- opacity: 0;
- visibility: hidden;
- transition: opacity 1s, visibility 0s 1s;
-}
\ No newline at end of file
diff --git a/Lab5/src/components/banner/Banner.jsx b/Lab5/src/components/banner/Banner.jsx
deleted file mode 100644
index d636661..0000000
--- a/Lab5/src/components/banner/Banner.jsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import './Banner.css';
-import useBannerHook from './BannerHook';
-
-const Banner = () => {
- const { banners, getBannerClass } = useBannerHook();
-
- return (
-
- {
- banners.map((banner, index) =>
-
)
- }
-
- );
-};
-
-export default Banner;
diff --git a/Lab5/src/components/banner/BannerHook.js b/Lab5/src/components/banner/BannerHook.js
deleted file mode 100644
index 1813699..0000000
--- a/Lab5/src/components/banner/BannerHook.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import { useEffect, useState } from 'react';
-import banner1 from '../../assets/banner1.png';
-import banner2 from '../../assets/banner2.png';
-import banner3 from '../../assets/banner3.png';
-
-const useBannerHook = () => {
- const [currentBanner, setCurrentBanner] = useState(0);
- const banners = [banner1, banner2, banner3];
-
- const getBannerClass = (index) => {
- return currentBanner === index ? 'banner-show' : 'banner-hide';
- };
-
- useEffect(() => {
- const bannerInterval = setInterval(
- () => {
- console.info('Banner changed');
- let current = currentBanner + 1;
- if (current === banners.length) {
- current = 0;
- }
- setCurrentBanner(current);
- },
- 5000,
- );
- return () => clearInterval(bannerInterval);
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, []);
-
- return {
- banners,
- getBannerClass,
- };
-};
-
-export default useBannerHook;
diff --git a/Lab5/src/components/cart/Cart.css b/Lab5/src/components/cart/Cart.css
deleted file mode 100644
index 8d9a13f..0000000
--- a/Lab5/src/components/cart/Cart.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.cart-image {
- width: 3.1rem;
- padding: .25rem;
-}
-
-.cart-item {
- height: auto;
-}
\ No newline at end of file
diff --git a/Lab5/src/components/cart/Cart.jsx b/Lab5/src/components/cart/Cart.jsx
deleted file mode 100644
index f617c17..0000000
--- a/Lab5/src/components/cart/Cart.jsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import { Button, ButtonGroup, Card } from 'react-bootstrap';
-import { DashLg, PlusLg, XLg } from 'react-bootstrap-icons';
-import imgPlaceholder from '../../assets/200.png';
-import './Cart.css';
-import useCart from './CartHook';
-
-const Cart = () => {
- const {
- cart,
- getCartSum,
- addToCart,
- removeFromCart,
- clearCart,
- } = useCart();
-
- return (
-
-
- Корзина
-
-
- {
- cart.map((cartItem) =>
-
-
-
-
- {cartItem.type.name}
-
-
-
- {cartItem.price}
- {' * '}
- {cartItem.count}
- {' = '}
- {parseFloat(cartItem.price * cartItem.count).toFixed(2)}
-
-
-
-
-
-
-
- )
- }
-
- Итого: {getCartSum()} ₽
-
-
- );
-};
-
-export default Cart;
diff --git a/Lab5/src/components/cart/CartContext.jsx b/Lab5/src/components/cart/CartContext.jsx
deleted file mode 100644
index 9c995ec..0000000
--- a/Lab5/src/components/cart/CartContext.jsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import PropTypes from 'prop-types';
-import {
- createContext,
- useEffect,
- useReducer,
-} from 'react';
-import { cartReducer, loadCart, saveCart } from './CartReducer';
-
-const CartContext = createContext(null);
-
-export const CartProvider = ({ children }) => {
- const [cart, dispatch] = useReducer(cartReducer, [], loadCart);
-
- useEffect(() => {
- saveCart(cart || []);
- }, [cart]);
-
- return (
-
- {children}
-
- );
-};
-
-CartProvider.propTypes = {
- children: PropTypes.node,
-};
-
-export default CartContext;
diff --git a/Lab5/src/components/cart/CartHook.js b/Lab5/src/components/cart/CartHook.js
deleted file mode 100644
index b899b45..0000000
--- a/Lab5/src/components/cart/CartHook.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import { useContext } from 'react';
-import CartContext from './CartContext.jsx';
-import { cartAdd, cartClear, cartRemove } from './CartReducer';
-
-const useCart = () => {
- const { cart, dispatch } = useContext(CartContext);
-
- const cartSum = () => {
- return parseFloat(
- cart?.reduce((sum, cartItem) => {
- return sum + (cartItem.price * cartItem.count);
- }, 0)
- ?? 0,
- ).toFixed(2);
- };
-
- return {
- cart,
- getCartSum: () => cartSum(),
- addToCart: (item) => dispatch(cartAdd(item)),
- removeFromCart: (item) => dispatch(cartRemove(item)),
- clearCart: () => dispatch(cartClear()),
- };
-};
-
-export default useCart;
diff --git a/Lab5/src/components/cart/CartReducer.js b/Lab5/src/components/cart/CartReducer.js
deleted file mode 100644
index f68e140..0000000
--- a/Lab5/src/components/cart/CartReducer.js
+++ /dev/null
@@ -1,71 +0,0 @@
-const setCartCount = (cart, item, value) => {
- return cart.map((cartItem) => {
- if (cartItem.id === item.id) {
- return { ...cartItem, count: cartItem.count + value };
- }
- return cartItem;
- });
-};
-
-const addToCart = (cart, item) => {
- const existsItem = cart.find((cartItem) => cartItem.id === item.id);
- if (existsItem !== undefined) {
- return setCartCount(cart, item, 1);
- }
- return [...cart, { ...item, count: 1 }];
-};
-
-const removeFromCart = (cart, item) => {
- const existsItem = cart.find((cartItem) => cartItem.id === item.id);
- if (existsItem !== undefined && existsItem.count > 1) {
- return setCartCount(cart, item, -1);
- }
- return cart.filter((cartItem) => cartItem.id !== item.id);
-};
-
-const CART_KEY = 'localCart';
-const CART_ADD = 'cart/add';
-const CART_REMOVE = 'cart/remove';
-const CART_CLEAR = 'cart/clear';
-
-export const saveCart = (cart) => {
- localStorage.setItem(CART_KEY, JSON.stringify(cart));
-};
-
-export const loadCart = (initialValue = []) => {
- const cartData = localStorage.getItem(CART_KEY);
- if (cartData) {
- return JSON.parse(cartData);
- }
- return initialValue;
-};
-
-export const cartReducer = (cart, action) => {
- const { item } = action;
- switch (action.type) {
- case CART_ADD: {
- return addToCart(cart, item);
- }
- case CART_REMOVE: {
- return removeFromCart(cart, item);
- }
- case CART_CLEAR: {
- return [];
- }
- default: {
- throw Error(`Unknown action: ${action.type}`);
- }
- }
-};
-
-export const cartAdd = (item) => ({
- type: CART_ADD, item,
-});
-
-export const cartRemove = (item) => ({
- type: CART_REMOVE, item,
-});
-
-export const cartClear = () => ({
- type: CART_CLEAR,
-});
diff --git a/Lab5/src/components/input/Select.jsx b/Lab5/src/components/input/Select.jsx
deleted file mode 100644
index 03eb53f..0000000
--- a/Lab5/src/components/input/Select.jsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import PropTypes from 'prop-types';
-import { Form } from 'react-bootstrap';
-
-const Select = ({
- values, name, label, value, onChange, className, ...rest
-}) => {
- return (
-
- {label}
-
-
- {
- values.map((type) => )
- }
-
-
- );
-};
-
-Select.propTypes = {
- values: PropTypes.array,
- name: PropTypes.string,
- label: PropTypes.string,
- value: PropTypes.string,
- onChange: PropTypes.func,
- className: PropTypes.string,
-};
-
-export default Select;