Your Cart
-
+ {basketItems.map((item) => (
+
diff --git a/src/App.jsx b/src/App.jsx
index 03e658b..2990399 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,20 +1,120 @@
-import './styles/reset.css'
-import './styles/index.css'
+import "./styles/reset.css";
+import "./styles/index.css";
-import initialStoreItems from './store-items'
+import { useState } from "react";
+import initialStoreItems from "./store-items";
+import StoreItem from "./StoreItem";
+import BasketItem from "./BasketItem";
export default function App() {
+ const [storeItems, setStoreItems] = useState(initialStoreItems);
+ const [basketItems, setBasketItems] = useState([]);
+ const [sort, setSort] = useState(false);
+
+ const basketTotal = basketItems
+ .reduce((total, item) => total + item.price * item.quantity, 0)
+ .toFixed(2);
+
+ const addItem = (newItem) => {
+ const inArray = basketItems.some((item) => item.id === newItem.id);
+
+ if (inArray) {
+ const newArray = basketItems.map((item) =>
+ item.id === newItem.id ? { ...item, quantity: item.quantity + 1 } : item
+ );
+ setBasketItems(newArray);
+ } else {
+ const itemToAdd = { ...newItem, quantity: 1 };
+ setBasketItems([...basketItems, itemToAdd]);
+ }
+ };
+
+ const handleAdd = (currentItem) => {
+ const newArray = basketItems.map((item) =>
+ item.id === currentItem.id
+ ? { ...item, quantity: item.quantity + 1 }
+ : item
+ );
+ setBasketItems(newArray);
+ };
+
+ const handleMinus = (currentItem) => {
+ const newArray = basketItems.map((item) =>
+ item.id === currentItem.id
+ ? { ...item, quantity: item.quantity - 1 }
+ : item
+ );
+ const filtered = newArray.filter((item) => item.quantity > 0);
+ setBasketItems(filtered);
+ };
+
+ const filterVeg = () => {
+ if (storeItems.some((item) => item.type === "fruit")) {
+ const newArray = [...storeItems].filter(
+ (item) => item.type === "vegetable"
+ );
+ setStoreItems(newArray);
+ } else {
+ setStoreItems(initialStoreItems);
+ }
+ };
+
+ const filterFruit = () => {
+ if (storeItems.some((item) => item.type === "vegetable")) {
+ const newArray = [...storeItems].filter((item) => item.type === "fruit");
+ setStoreItems(newArray);
+ } else {
+ setStoreItems(initialStoreItems);
+ }
+ };
+
+ const sortAlphabetical = () => {
+ if (sort === false) {
+ const newArray = [...storeItems];
+ newArray.sort((a, b) => {
+ if (a.name < b.name) {
+ return -1;
+ }
+ if (a.name > b.name) {
+ return 1;
+ }
+ return 0;
+ });
+ setStoreItems(newArray);
+ setSort(true);
+ } else {
+ setStoreItems(initialStoreItems);
+ setSort(false);
+ }
+ };
+
return (
<>
Greengrocers
+
+
+
+
+
+ {storeItems.map((item) => (
+
Your Cart
+ {basketItems.map((item) => (
+
Total
{item.name}
+ + {item.quantity} + +