From a8cc01f5ebc9e32037efdfe5472454d04599f254 Mon Sep 17 00:00:00 2001 From: VISHAL SAHOO Date: Fri, 18 Oct 2024 20:41:59 +0530 Subject: [PATCH] used basic useState , props , components to complete the project assignment in short duration, for optimization we can connect database and store the key in env file but one cannot use the project quick at moment if wants to check functionalities --- week-9/petAdoption/package-lock.json | 51 +++++- week-9/petAdoption/package.json | 4 +- week-9/petAdoption/src/App.css | 42 ----- week-9/petAdoption/src/App.jsx | 31 +++- week-9/petAdoption/src/assets/backimg.jpg | Bin 0 -> 29334 bytes week-9/petAdoption/src/assets/react.svg | 1 - week-9/petAdoption/src/components/Header.jsx | 17 +- .../src/components/PetAdoptionForm.jsx | 165 +++++++++++++++++- .../petAdoption/src/components/TableData.jsx | 85 ++++++++- week-9/petAdoption/src/index.css | 70 +------- week-9/petAdoption/src/main.jsx | 7 +- week-9/petAdoption/src/pages/DataPage.jsx | 29 +++ 12 files changed, 363 insertions(+), 139 deletions(-) create mode 100644 week-9/petAdoption/src/assets/backimg.jpg delete mode 100644 week-9/petAdoption/src/assets/react.svg create mode 100644 week-9/petAdoption/src/pages/DataPage.jsx diff --git a/week-9/petAdoption/package-lock.json b/week-9/petAdoption/package-lock.json index 4fcf73b0..b80f0b15 100644 --- a/week-9/petAdoption/package-lock.json +++ b/week-9/petAdoption/package-lock.json @@ -1,15 +1,17 @@ { - "name": "petadotion", + "name": "petadoption", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "petadotion", + "name": "petadoption", "version": "0.0.0", "dependencies": { + "prop-types": "^15.8.1", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-router-dom": "^6.27.0" }, "devDependencies": { "@eslint/js": "^9.11.1", @@ -916,6 +918,14 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@remix-run/router": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", + "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", @@ -3095,7 +3105,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3327,7 +3336,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -3369,8 +3377,7 @@ "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-refresh": { "version": "0.14.2", @@ -3381,6 +3388,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", + "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", + "dependencies": { + "@remix-run/router": "1.20.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", + "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", + "dependencies": { + "@remix-run/router": "1.20.0", + "react-router": "6.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", diff --git a/week-9/petAdoption/package.json b/week-9/petAdoption/package.json index 555bb334..04330f31 100644 --- a/week-9/petAdoption/package.json +++ b/week-9/petAdoption/package.json @@ -10,8 +10,10 @@ "preview": "vite preview" }, "dependencies": { + "prop-types": "^15.8.1", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-router-dom": "^6.27.0" }, "devDependencies": { "@eslint/js": "^9.11.1", diff --git a/week-9/petAdoption/src/App.css b/week-9/petAdoption/src/App.css index b9d355df..e69de29b 100644 --- a/week-9/petAdoption/src/App.css +++ b/week-9/petAdoption/src/App.css @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/week-9/petAdoption/src/App.jsx b/week-9/petAdoption/src/App.jsx index fef914a7..b81e3a4e 100644 --- a/week-9/petAdoption/src/App.jsx +++ b/week-9/petAdoption/src/App.jsx @@ -1,11 +1,32 @@ +import { useState } from 'react'; +import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import './App.css'; +import Header from './components/Header'; +import PetAdoptionForm from './components/PetAdoptionForm'; +import DataPage from './pages/DataPage'; + +const App = () => { + const [formDataList, setFormDataList] = useState([]); + + -function App() { return ( -
-

Pet Adoption Project

-
+ +
+
+ + setFormDataList((prevList) => [...prevList, data])} />} + /> + } + /> + +
+
); -} +}; export default App; diff --git a/week-9/petAdoption/src/assets/backimg.jpg b/week-9/petAdoption/src/assets/backimg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3dd6c7d49e39e91edc37a9421ab234a04cb9e23 GIT binary patch literal 29334 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 literal 0 HcmV?d00001 diff --git a/week-9/petAdoption/src/assets/react.svg b/week-9/petAdoption/src/assets/react.svg deleted file mode 100644 index 6c87de9b..00000000 --- a/week-9/petAdoption/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/week-9/petAdoption/src/components/Header.jsx b/week-9/petAdoption/src/components/Header.jsx index 041aba3e..ecbbdf80 100644 --- a/week-9/petAdoption/src/components/Header.jsx +++ b/week-9/petAdoption/src/components/Header.jsx @@ -1,8 +1,21 @@ -import React from 'react' + + +const header_styles = { + textAlign: 'center', + fontSize: '35px', + fontWeight: 'bold', + padding: '12px', + backgroundColor: 'rgba(173, 76, 241, 0.64)', + color: 'solid black', + position: 'fixed', + top: 0, + width: '100%', + zIndex: 1000, +}; const Header = () => { return ( -
Header
+
Pet Adoption Project
) } diff --git a/week-9/petAdoption/src/components/PetAdoptionForm.jsx b/week-9/petAdoption/src/components/PetAdoptionForm.jsx index 105375b4..a37d383f 100644 --- a/week-9/petAdoption/src/components/PetAdoptionForm.jsx +++ b/week-9/petAdoption/src/components/PetAdoptionForm.jsx @@ -1,9 +1,162 @@ -import React from 'react' +import { useState } from 'react'; +import PropTypes from 'prop-types'; +import {useNavigate} from 'react-router-dom'; -const PetAdoptionForm = () => { +const PetAdoptionForm = ({ onSubmit }) => { + const [formData, setFormData] = useState({ + petName: '', + petType: '', + breed: '', + yourName: '', + email: '', + phone: '', + }); + const navigate = useNavigate(); + + const handleChange = (e) => { + const { name, value } = e.target; + setFormData({ ...formData, [name]: value }); + }; + + const handleSubmit = (e) => { + e.preventDefault(); + onSubmit( formData); + setFormData({ + petName: '', + petType: '', + breed: '', + yourName: '', + email: '', + phone: '', + }); + navigate('/data'); + }; return ( -
PetAdoptionForm
- ) -} +
+
+ + + -export default PetAdoptionForm \ No newline at end of file + + + + + + + + + + + + + + + + +
+
+); +}; + +// Styles +const containerStyle = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + height: '80vh', + width: '80vw', + margin: '10vh auto', + padding: '20px', + boxSizing: 'border-box', +}; + +const formStyle = { + backgroundColor: 'rgba(173, 76, 241, 0.64)', + padding: '60px', + borderRadius: '8px', + width: '400px', + boxShadow: '0 4px 8px rgba(0, 0, 0, 0.2)', + marginTop: '50px', +}; + +const labelStyle = { +display: 'block', +marginBottom: '5px', +fontWeight: 'bold', +color: '#3A3A3A', +fontSize: '14px', +}; + +const inputStyle = { + width: '100%', + padding: '10px', + marginBottom: '15px', + borderRadius: '4px', + border: '1px solid #ccc', + fontSize: '14px', + boxSizing: 'border-box', +}; + + +const selectStyle = { + ...inputStyle, + appearance: 'none', +}; + +const buttonStyle = { +width: '100%', +padding: '10px', +backgroundColor: '#2F4F2F', +color: '#fff', +border: 'none', +borderRadius: '4px', +cursor: 'pointer', +fontSize: '16px', +}; +PetAdoptionForm.propTypes = { + onSubmit: PropTypes.func.isRequired, + formDataList: PropTypes.array +}; + +export default PetAdoptionForm diff --git a/week-9/petAdoption/src/components/TableData.jsx b/week-9/petAdoption/src/components/TableData.jsx index a68aaa33..2a00182b 100644 --- a/week-9/petAdoption/src/components/TableData.jsx +++ b/week-9/petAdoption/src/components/TableData.jsx @@ -1,9 +1,82 @@ -import React from 'react' +import PropTypes from 'prop-types'; -const TableData = () => { +const TableData = ({ data }) => { return ( -
TableData
- ) -} +
+

Submitted Pet Adoption Applications

+ + + + + + + + + + + + + {data.map((entry, index) => ( + + + + + + + + + ))} + +
Pet NamePet TypeBreedYour NameEmailPhone
{entry.petName}{entry.petType}{entry.breed}{entry.yourName}{entry.email}{entry.phone}
+
+ ); +}; +TableData.propTypes = { + data: PropTypes.arrayOf( + PropTypes.shape({ + petName: PropTypes.string.isRequired, + petType: PropTypes.string.isRequired, + breed: PropTypes.string.isRequired, + yourName: PropTypes.string.isRequired, + email: PropTypes.string.isRequired, + phone: PropTypes.string.isRequired, + }) + ).isRequired, +}; -export default TableData \ No newline at end of file +// Styles +const tableContainerStyle = { + margin: '20px auto', + padding: '20px', + maxWidth: '80%', + marginTop:'80px', + backgroundColor: 'rgba(173, 76, 241, 0.64)', + borderRadius: '8px', + boxShadow: '0 4px 8px rgba(0, 0, 0, 0.2)', +}; + +const headerStyle = { + textAlign: 'center', + marginBottom: '20px', + color: '#3A3A3A', +}; + +const tableStyle = { + width: '100%', + borderCollapse: 'collapse', +}; + +const headerCellStyle = { + backgroundColor: '#F3C623', + padding: '10px', + border: '1px solid black', + fontWeight: 'bold', + textAlign: 'left', +}; + +const cellStyle = { + padding: '10px', + border: '1px solid black', +}; + +export default TableData; diff --git a/week-9/petAdoption/src/index.css b/week-9/petAdoption/src/index.css index 6119ad9a..3619218f 100644 --- a/week-9/petAdoption/src/index.css +++ b/week-9/petAdoption/src/index.css @@ -1,68 +1,8 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - body { + background-image: url('assets/backimg.jpg'); + background-size: cover; + background-position: center; + background-repeat: no-repeat; + height:100vh; margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } } diff --git a/week-9/petAdoption/src/main.jsx b/week-9/petAdoption/src/main.jsx index 89f91e54..89583b5b 100644 --- a/week-9/petAdoption/src/main.jsx +++ b/week-9/petAdoption/src/main.jsx @@ -1,10 +1,9 @@ -import { StrictMode } from 'react' + import { createRoot } from 'react-dom/client' import App from './App.jsx' import './index.css' createRoot(document.getElementById('root')).render( - - - , + + , ) diff --git a/week-9/petAdoption/src/pages/DataPage.jsx b/week-9/petAdoption/src/pages/DataPage.jsx new file mode 100644 index 00000000..f9c1d917 --- /dev/null +++ b/week-9/petAdoption/src/pages/DataPage.jsx @@ -0,0 +1,29 @@ +import TableData from '../components/TableData'; +import { useNavigate } from 'react-router-dom'; +import PropTypes from 'prop-types'; +const DataPage = ({ data }) => { + const navigate = useNavigate(); + + return ( +
+ +
+ +
+
+ ); +}; +DataPage.propTypes = { + data: PropTypes.arrayOf( + PropTypes.shape({ + petName: PropTypes.string.isRequired, + petType: PropTypes.string.isRequired, + breed: PropTypes.string.isRequired, + yourName: PropTypes.string.isRequired, + email: PropTypes.string.isRequired, + phone: PropTypes.string.isRequired, + }) + ).isRequired, +}; +export default DataPage; +