From aebbc2cc2ef6641a8d838179cf2b85ff35d5f7ba Mon Sep 17 00:00:00 2001 From: Ronicah Date: Wed, 6 Nov 2024 00:14:41 +0300 Subject: [PATCH] origin --- .vscode/launch.json | 15 +++++ package-lock.json | 1 + src/{components => __tests__}/App.js | 4 +- src/components/Filtersort.js | 31 +++++++++ src/components/Hogtile.js | 44 +++++++++++++ src/components/NewHogForm.js | 97 ++++++++++++++++++++++++++++ 6 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 .vscode/launch.json rename src/{components => __tests__}/App.js (75%) create mode 100644 src/components/Filtersort.js create mode 100644 src/components/Hogtile.js create mode 100644 src/components/NewHogForm.js diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..2ba986f6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index babba088..101be093 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13858,6 +13858,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", diff --git a/src/components/App.js b/src/__tests__/App.js similarity index 75% rename from src/components/App.js rename to src/__tests__/App.js index 344d48d4..37dbe10f 100644 --- a/src/components/App.js +++ b/src/__tests__/App.js @@ -1,4 +1,4 @@ -import React from "react"; +mport React from "react"; import Nav from "./Nav"; import hogs from "../porkers_data"; @@ -11,4 +11,4 @@ function App() { ); } -export default App; +export default App; \ No newline at end of file diff --git a/src/components/Filtersort.js b/src/components/Filtersort.js new file mode 100644 index 00000000..f39fa526 --- /dev/null +++ b/src/components/Filtersort.js @@ -0,0 +1,31 @@ +import React from "react"; + +const FilterSort = ({ filterGreased, setFilterGreased, setSortType }) => { + return ( +
+
+ +
+ +
+ +
+
+ ); +}; + +export default FilterSort; \ No newline at end of file diff --git a/src/components/Hogtile.js b/src/components/Hogtile.js new file mode 100644 index 00000000..5eac90b1 --- /dev/null +++ b/src/components/Hogtile.js @@ -0,0 +1,44 @@ +import React, { useState } from "react"; + +function HogTile({ hog, hideHog }) { + const [showDetails, setShowDetails] = useState(false); + + const toggleDetails = () => { + setShowDetails(!showDetails); + }; + + return ( +
+
+
+ {hog.name} +
+
+

{hog.name}

+
+ Specialty: {hog.specialty} +
+
+ {showDetails && ( + <> +

Weight: {hog.weight}

+

Greased: {hog.greased ? "Yes" : "No"}

+

Highest Medal Achieved: {hog["highest medal achieved"]}

+ + )} +
+
+
+ + +
+
+
+ ); +} + +export default HogTile; diff --git a/src/components/NewHogForm.js b/src/components/NewHogForm.js new file mode 100644 index 00000000..ee21ea78 --- /dev/null +++ b/src/components/NewHogForm.js @@ -0,0 +1,97 @@ +import React, { useState } from "react"; + +const NewHogForm = ({ addNewHog }) => { + const [name, setName] = useState(""); + const [specialty, setSpecialty] = useState(""); + const [greased, setGreased] = useState(false); + const [weight, setWeight] = useState(""); + const [medal, setMedal] = useState(""); + const [image, setImage] = useState(""); + + const handleSubmit = (e) => { + e.preventDefault(); + const newHog = { name, specialty, greased, weight, medal, image }; + addNewHog(newHog); + // Clear the form after submission + setName(""); + setSpecialty(""); + setGreased(false); + setWeight(""); + setMedal(""); + setImage(""); + }; + + return ( +
+

Add a New Hog

+
+ + setName(e.target.value)} + required + /> +
+ +
+ + setSpecialty(e.target.value)} + required + /> +
+ +
+ + setGreased(e.target.checked)} + /> +
+ +
+ + setWeight(e.target.value)} + required + /> +
+ +
+ + setMedal(e.target.value)} + required + /> +
+ +
+ + setImage(e.target.value)} + required + /> +
+ + +
+ ); +}; + +export default NewHogForm;