Issue Tracker const IssueBar = ({ progressCount, total, newCount, completedCount }) => { return ( <> {' '} Total: {total} New: {newCount} {' '} In Progress: {progressCount} {' '} Completed: {completedCount} ) } export default IssueBar !-- Add Issue --> import { useState, useRef } from 'react' import { v4 as uuid } from 'uuid' import { Col, Form, Button, Row } from 'react-bootstrap' const generateCurrentDate = () => { const date = new Date() const year = date.getFullYear() let month = date.getMonth() + 1 let day = date.getUTCDate() if (month < 10) { month = '0' + month } if (day < 10) { day = '0' + day } console.log(year, month, day) return `${year}-${day}-${month}` } const issue = { title: '', subTitle: '', assignedTo: '', start: generateCurrentDate(), end: '', priority: 'low', status: 'new', completedPercentage: 0, } const AddIssue = ({ addIssue }) => { const [issueInfo, setIssueInfo] = useState(issue) const [errorInfo, setErrorInfo] = useState({ title: '', subTitle: '', assignedTo: '', start: '', end: '', completedPercentage: '', }) const handleChange = (evt) => { setIssueInfo({ ...issueInfo, [evt.target.name]: evt.target.value, }) setErrorInfo({ ...errorInfo, [evt.target.name]: '', }) } const handleSubmit = (evt) => { const { title, subTitle, assignedTo, start, end } = issueInfo evt.preventDefault() console.log(start) //validation part if (title === '') { setErrorInfo((prevState) => { return { ...prevState, title: 'Title is Required', } }) } if (subTitle === '') { setErrorInfo((prevState) => { return { ...prevState, subTitle: 'SubTitle is Required', } }) } if (start === '') { setErrorInfo((prevState) => { return { ...prevState, start: 'Please provide start Date', } }) } if (end === '') { setErrorInfo((prevState) => { return { ...prevState, end: 'Please provide end Date', } }) } if (assignedTo === '') { setErrorInfo((prevState) => { return { ...prevState, assignedTo: 'Please provide assigned user name', } }) } //check every field (value) of userInfo obj , if every filed is true result will be true(valid) otherwise false(if any values is false) const isValid = Object.values(issueInfo).every((elm) => elm) console.log('There is a error') //incase valid is true form will be submitted if (isValid) { // if(errorInfo.values()) console.log('submitting') addIssue({ id: uuid(), ...issueInfo, }) //reset user Info setIssueInfo(issue) } } const { title, subTitle, assignedTo, start, end, priority, status, completedPercentage, } = issueInfo return ( <>

Add Issue

Title{' '} {errorInfo?.title && errorInfo?.title} Sub Title{' '} {errorInfo?.subTitle} Assigned To{' '} {errorInfo?.assignedTo && errorInfo?.assignedTo} Start{' '} {errorInfo?.start && errorInfo?.start} End{' '} {errorInfo?.end && errorInfo?.end} priority{' '} Status{' '} Completed In percentage{' '} {completedPercentage}
) } export default AddIssue @import url('https://fonts.googleapis.com/css2?family=Lobster&family=Recursive:wght@300;400;500&display=swap'); body { font-family: 'Recursive', sans-serif !important; } form label { font-style: italic; } .issue-brand { font-family: 'Lobster', cursive; font-size: 1.5rem !important; margin-right: auto !important; } import { useState } from 'react' import IssueBar from './IssueBar' import IssueNav from './IssueNav' import AddIssue from './AddIssue' import Issues from './Issues' import './index.css' import { Col, Row, Container } from 'react-bootstrap' //uncontrolled component