diff --git a/client/src/app.js b/client/src/app.js index 147a99e..5947d2c 100644 --- a/client/src/app.js +++ b/client/src/app.js @@ -7,6 +7,12 @@ import Modal from './modal'; function App() { + const [data, setData] = useState(); + const [boxName, setBoxName] = useState(''); + const [boxDescription, setBoxDescription] = useState(''); + const [showFormBox, setShowFormBox] = useState(false); + const [showBox, setShowBox] = useState(false); + //fetch all box data useEffect(() => { const fetchData = async () => { @@ -15,13 +21,6 @@ function App() { fetchData(); }, []); - const [data, setData] = useState(); - - const [boxName, setBoxName] = useState(''); - const [boxDescription, setBoxDescription] = useState(''); - - const [showFormBox, setShowFormBox] = useState(false); - const fetchDataAsync = async () => { try { const resp = await axios.get(api.baseApiUrl); @@ -45,7 +44,9 @@ function App() { const removeBox = async (id) => { try { const response = await axios.delete(`${api.baseApiUrl}/${id}`); - setData(data.filter(box => box._id !== id)); + const storageData = response.data; + console.log(storageData); + setData(storageData); } catch (error) { console.log(error); @@ -88,6 +89,56 @@ function App() { handleName: handleBoxName, handleDescription: handleBoxDescription }; + + + + const [itemName, setItemName] = useState(''); + const [itemDescription, setItemDescription] = useState(''); + + + const createItem = async (id, itemData) => { + try { + const response = await axios.post(`${api.baseApiUrl}/${id}/item`, itemData); + } + catch (error) { + console.log(error); + } + } + + const removeItem = async (id) => { + try { + const response = await axios.delete(`${api.baseApiUrl}/${data._id}/item/${id}`); + //box data copy + let boxData = Object.assign({}, data); + boxData = Object.assign(boxData, {item: response.data}) + } + catch (error) { + console.log(error); + } + } + const handleAddItem = () => { + //setShowFormItem(true); + } + const handleRemoveItem = (id) => { + removeItem(id); + } + const handleSubmitItem = (event) => { + event.preventDefault(); + clearForm(); + const id = (event.target).querySelector("#id").value; + const itemData = { + name: itemName, + description: itemDescription + } + createItem(id, itemData); + return false; + } + + const itemHandler = { + handleSubmit: handleSubmitItem, + handleRemove: handleRemoveItem, + }; + const formNewBox =
New Box @@ -104,12 +155,15 @@ function App() { return ( <> - {} + {showBox && }
    {data && data.map((box) => { return ( - + ); })}
diff --git a/client/src/box.js b/client/src/box.js index da068d2..e0ea836 100644 --- a/client/src/box.js +++ b/client/src/box.js @@ -3,83 +3,24 @@ import Item from './item'; import api from './api'; import axios from 'axios'; -const Box = ({ boxData, handleRemove }) => { - console.log(boxData); - const [data, setData] = useState(boxData); - const [showFormItem, setShowFormItem] = useState(false); - - const [itemName, setItemName] = useState(''); - const [itemDescription, setItemDescription] = useState(''); - - - const createItem = async (id, itemData) => { - try { - const response = await axios.post(`${api.baseApiUrl}/${id}/item`, itemData); - setData(response.data); - } - catch (error) { - console.log(error); - } +const Box = ({ boxData, handleRemoveBox, itemHandler }) => { + const [itemName, setItemName] = useState(); + const [itemDescription, setItemDescription] = useState(); + const handleName = (e) => { + setItemName(e.target.value) } - - const removeItem = async (id) => { - try { - const response = await axios.delete(`${api.baseApiUrl}/${data._id}/item/${id}`); - //box data copy - let boxData = Object.assign({}, data); - boxData = Object.assign(boxData, {item: response.data}) - setData(boxData); - } - catch (error) { - console.log(error); - } + const handleDescription = (e) => { + setItemDescription(e.target.value) } - const clearForm = () => { - setItemName(); - setItemDescription(); - } - const handleItemName = (e) => { - setItemName(e.target.value); - } - const handleItemDescription = (e) => { - setItemDescription(e.target.value); - } - - const handleAddItem = () => { - setShowFormItem(true); - } - const handleRemoveItem = (id) => { - removeItem(id); - } - const handleSubmitItem = (event) => { - event.preventDefault(); - setShowFormItem(false); - clearForm(); - const id = (event.target).querySelector("#id").value; - const itemData = { - name: itemName, - description: itemDescription - } - createItem(id, itemData); - return false; - } - - const itemHandler = { - handleSubmit: handleSubmitItem, - handleRemove: handleRemoveItem, - handleName: handleItemName, - handleDescription: handleItemDescription - }; - const formNewItem = New Item
- +
@@ -87,19 +28,19 @@ const Box = ({ boxData, handleRemove }) => { return (
  • -

    {data.name}

    +

    {boxData.name}

    -

    {data.description}

    - +

    {boxData.description}

    +
      - {data.item.map(((item) => { + {boxData.item.map(((item) => { return }))}
    - - {showFormItem && formNewItem} + + {true && formNewItem}
  • ) } diff --git a/client/src/styles/app.css b/client/src/styles/app.css index 8cb0c15..287a40c 100644 --- a/client/src/styles/app.css +++ b/client/src/styles/app.css @@ -43,6 +43,7 @@ ul.list-box { grid-template-columns: repeat(5, 1fr); padding: 0 0 0 1em; margin: 0; + gap: 1em; } ul.list-box-item { padding: 0 0 0 1em;