diff --git a/src/App.jsx b/src/App.jsx index 0218d5b..89349dc 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,22 +1,70 @@ -import Footer from "./Footer"; -import Header from "./Header"; + +import React, { useState } from 'react'; +import Footer from './Footer'; +import Header from './Header'; +import MenuList from './menuList'; +import data from './data'; function App() { + const [currentOrder, setCurrentOrder] = useState([]); + const [totalCost, setTotalCost] = useState(0); + + const addToOrder = (item) => { + setCurrentOrder([...currentOrder, item]); + setTotalCost((prevTotal) => prevTotal + item.price); + }; + + const removeFromOrder = (index) => { + const removedItem = currentOrder[index]; + setCurrentOrder(currentOrder.filter((_, i) => i !== index)); + setTotalCost((prevTotal) => prevTotal - removedItem.price); + }; + + const tidyOrder = () => { + const tidiedOrder = currentOrder.reduce((acc, item) => { + const existingItem = acc.find((el) => el.id === item.id); + existingItem + ? (existingItem.quantity += 1) + : acc.push({ ...item, quantity: 1 }); + return acc; + }, []); + setCurrentOrder(tidiedOrder); + setTotalCost(tidiedOrder.reduce((total, item) => total + item.price * item.quantity, 0)); + }; + + const closeOrder = () => { + setCurrentOrder([]); + setTotalCost(0); + }; + return (

Current Order

-
    -

    Total:

    +
      + {currentOrder.map((item, index) => ( +
    • + {item.name} - ${item.price} x {item.quantity}{' '} + +
    • + ))} +
    +

    Total: ${totalCost}

    - - + +
    diff --git a/src/menuList.jsx b/src/menuList.jsx new file mode 100644 index 0000000..e8bd437 --- /dev/null +++ b/src/menuList.jsx @@ -0,0 +1,30 @@ +//Menu list +import React from 'react'; + +const MenuList = ({ item, onAddToOrder }) => { + const { name, price, spiceLevel, image } = item; + + const addToOrder = () => { + onAddToOrder(item); + }; + + return ( + + + + {image} + + + + {name}
    + {'🌶️'.repeat(spiceLevel)} + + {price} + + + + + ); +}; + +export default MenuList;