From 1e507880646b51869592e3a0ab6e26c7465487b0 Mon Sep 17 00:00:00 2001 From: Juthatip McDevitt Date: Sun, 19 May 2024 19:11:17 -0500 Subject: [PATCH] made change on menu item page --- .../src/app/menu-items/edit/[id]/page.js | 38 ++++--------------- .../src/app/menu-items/new/page.js | 27 ++----------- .../src/components/layout/MenuItemForm.js | 34 +++++++++++++++++ 3 files changed, 45 insertions(+), 54 deletions(-) create mode 100644 donutshop_ecommerce/src/components/layout/MenuItemForm.js diff --git a/donutshop_ecommerce/src/app/menu-items/edit/[id]/page.js b/donutshop_ecommerce/src/app/menu-items/edit/[id]/page.js index cb443b2..daa9209 100644 --- a/donutshop_ecommerce/src/app/menu-items/edit/[id]/page.js +++ b/donutshop_ecommerce/src/app/menu-items/edit/[id]/page.js @@ -4,33 +4,28 @@ import useProfile from '../../../../components/UseProfile'; import { redirect, useParams } from 'next/navigation' import Link from 'next/link' import UserTab from '../../../../components/layout/UserTab'; -import EditImage from '../../../../components/layout/EditImage'; +import MenuItemForm from '../../../../components/layout/MenuItemForm'; +import toast from 'react-hot-toast'; const EditMenuItemPage = () => { const {loading, data} = useProfile(); - const [menuImg, setMenuImg] = useState(''); - const [itemName, setItemName] = useState(''); - const [description, setDescription] = useState(''); - const [basePrice, setBasePrice] = useState(''); const [goToItems, setGoToItems] = useState(false); + const [menuItem, setMenuItem] = useState(null); const {id} = useParams(); - + useEffect(() => { fetch('/api/menu-items').then(res => { res.json().then(items => { const item = items.find(i => i._id === id); - setMenuImg(item.menuImg); - setItemName(item.itemName); - setDescription(item.description); - setBasePrice(item.basePrice); + setMenuItem(item); }) }) }, []) - async function handleMenuFormSubmit(ev){ + async function handleMenuFormSubmit(ev, data){ ev.preventDefault(); - const data = {menuImg, itemName, description, basePrice, _id:id}; + data = {...data, _id:id}; const menuSavingPromise = new Promise(async (resolve, reject) => { const response = await fetch('/api/menu-items', { method: 'PUT', @@ -67,24 +62,7 @@ const EditMenuItemPage = () => {
-
-
- -
-
- - setItemName(ev.target.value)}/> -
-
- - setDescription(ev.target.value)}/> -
-
- - setBasePrice(ev.target.value)}/> -
- -
+
Show all menu items
diff --git a/donutshop_ecommerce/src/app/menu-items/new/page.js b/donutshop_ecommerce/src/app/menu-items/new/page.js index 00d1f33..c8075dd 100644 --- a/donutshop_ecommerce/src/app/menu-items/new/page.js +++ b/donutshop_ecommerce/src/app/menu-items/new/page.js @@ -6,18 +6,14 @@ import toast from 'react-hot-toast' import useProfile from '../../../components/UseProfile' import Link from 'next/link' import { redirect } from 'next/navigation' +import MenuItemForm from '../../../components/layout/MenuItemForm' const NewMenuItemPage = () => { const {loading, data} = useProfile(); - const [menuImg, setMenuImg] = useState(''); - const [itemName, setItemName] = useState(''); - const [description, setDescription] = useState(''); - const [basePrice, setBasePrice] = useState(''); const [goToItems, setGoToItems] = useState(false) - async function handleMenuFormSubmit(ev){ + async function handleMenuFormSubmit(ev, data){ ev.preventDefault(); - const data = {menuImg, itemName, description, basePrice,}; const menuSavingPromise = new Promise(async (resolve, reject) => { const response = await fetch('/api/menu-items', { method: 'POST', @@ -54,24 +50,7 @@ const NewMenuItemPage = () => {
-
-
- -
-
- - setItemName(ev.target.value)}/> -
-
- - setDescription(ev.target.value)}/> -
-
- - setBasePrice(ev.target.value)}/> -
- -
+
Show all menu items
diff --git a/donutshop_ecommerce/src/components/layout/MenuItemForm.js b/donutshop_ecommerce/src/components/layout/MenuItemForm.js new file mode 100644 index 0000000..f5432c3 --- /dev/null +++ b/donutshop_ecommerce/src/components/layout/MenuItemForm.js @@ -0,0 +1,34 @@ +import React, { useState } from 'react' +import EditImage from './EditImage'; + +const MenuItemForm = ({handleMenuFormSubmit, menuItem}) => { + const [menuImg, setMenuImg] = useState(menuItem?.menuImg || ''); + const [itemName, setItemName] = useState(menuItem?.itemName || ''); + const [description, setDescription] = useState(menuItem?.description || ''); + const [basePrice, setBasePrice] = useState(menuItem?.basePrice || ''); + + + + return ( +
handleMenuFormSubmit(ev, {menuImg, itemName, description, basePrice})}> +
+ +
+
+ + setItemName(ev.target.value)}/> +
+
+ + setDescription(ev.target.value)}/> +
+
+ + setBasePrice(ev.target.value)}/> +
+ +
+ ) +} + +export default MenuItemForm \ No newline at end of file