diff --git a/src/components/App.js b/src/components/App.js index 9ecf1260..33a5defd 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -1,6 +1,7 @@ import React, { useState } from "react"; import ShoppingList from "./ShoppingList"; import Header from "./Header"; +import ItemForm from "./ItemForm"; import itemData from "../data/items"; function App() { @@ -11,10 +12,15 @@ function App() { setIsDarkMode((isDarkMode) => !isDarkMode); } + function handleFormSubmit(newItem) { + setItems([...items, newItem]) + } + return (
- + +
); } diff --git a/src/components/Filter.js b/src/components/Filter.js index 6ec2bd93..eb7b6445 100644 --- a/src/components/Filter.js +++ b/src/components/Filter.js @@ -1,9 +1,15 @@ import React from "react"; -function Filter({ onCategoryChange }) { +function Filter({ onCategoryChange, onSearchChange, search }) { return (
- + + - ); diff --git a/src/components/ShoppingList.js b/src/components/ShoppingList.js index 8776dba8..74bdc15e 100644 --- a/src/components/ShoppingList.js +++ b/src/components/ShoppingList.js @@ -1,25 +1,29 @@ import React, { useState } from "react"; -import ItemForm from "./ItemForm"; import Filter from "./Filter"; import Item from "./Item"; function ShoppingList({ items }) { const [selectedCategory, setSelectedCategory] = useState("All"); + const [searchCategory, setSearchCategory] = useState('') + + function handleSearchChange(event) { + setSearchCategory(event.target.value) + } function handleCategoryChange(event) { setSelectedCategory(event.target.value); } const itemsToDisplay = items.filter((item) => { - if (selectedCategory === "All") return true; + const categoryMatch = selectedCategory === "All" || item.category === selectedCategory + const searchMatch = item.name.includes(searchCategory) - return item.category === selectedCategory; - }); + return categoryMatch && searchMatch + }) return (
- - +
    {itemsToDisplay.map((item) => (