import React, { useState } from 'react' //components import Dropdown, { QtDropdown } from '../../Dropdown' //styles import { StyledModal, ModalHeader, WrapperInput, WrapperDropdown, WrapperButtons, VerticalSeperator, Input, Button, IconWrong, IconCheck, InputSmall } from '../styles/modal' import { IconProduct, IconAmount, IconPerson, IconDetails } from './styles/addItem' import { IconTag, IconDollar } from './styles/addProduct' //redux import { useDispatch, useSelector } from 'react-redux'; import { itemAdded } from '../../../redux/slices/groceryList/itemsSlice'; const ModalAddItem = (props) => { const dispatch = useDispatch() const products = useSelector(state => state.products.entities) const tags = useSelector(state => state.tags.entities) const lists = useSelector(state => state.lists.entities) const [productName, setProductName] = useState(''); const [amount, setAmount] = useState(''); const [qt, setQt] = useState('') const [person, setPerson] = useState(''); const [details, setDetails] = useState(''); const [tag, setTag] = useState(''); const [price, setPrice] = useState(''); const [focusedProduct, setFocusedProduct] = React.useState(false) const [focusedQt, setFocusedQt] = React.useState(false) const [focusedTag, setFocusedTag] = React.useState(false) const handleSubmit = () => { if (props.visible && productName !== '') { let amountObj = { am: amount ? Number(amount) : 1, qt: qt } console.log(amountObj) let listId = lists.find((list) => list.open === true)._id if (tags.find(t => t.tagName === tag)) { dispatch(itemAdded({ productName, amount: amountObj, person, details, tag, price, listId })); } else { dispatch(itemAdded({ productName, amount: amountObj, person, details, tag: 'uncategorized', price, listId })); } setProductName(''); setAmount(''); setQt(''); setPerson(''); setDetails(''); setTag(''); setPrice(''); props.closeModal(); } else { alert('Fill in a valid product name'); } } const handleDropdownPress = (pName) => { let product = products.find((product) => product.productName === pName); setProductName(product.productName) setTag(product.tag) setPrice(product.price) } return ( Add product {/* {product && product.image && } */} setFocusedProduct(true)} onBlur={() => { setTimeout(() => { setFocusedProduct(false) }, 100) }} type="text" value={productName} onChange={(text) => setProductName(text.target.value)} placeholder="Product name" /> {productName ? : } {focusedProduct && product.productName)} text={productName} setElement={handleDropdownPress} /> } setAmount(text.target.value)} placeholder="Amount" /> {amount ? : } setFocusedQt(true)} onBlur={() => { setTimeout(() => { setFocusedQt(false) }, 100) }} type="text" value={qt} onChange={(text) => setQt(text.target.value)} placeholder="Qt." /> {focusedQt && } setPerson(text.target.value)} placeholder="For" /> setDetails(text.target.value)} placeholder="Additional details" /> setFocusedTag(true)} onBlur={() => { setTimeout(() => { setFocusedTag(false) }, 100) }} value={tag} onChange={(text) => setTag(text.target.value)} placeholder="Tag" /> {focusedTag && tag.tagName)} text={tag} setElement={setTag} /> } setPrice(text.target.value)} placeholder="Price" /> ) } export default ModalAddItem