1-
2- import React , { useState } from 'react' ;
3- import { Dialog , DialogContent , DialogHeader , DialogTitle } from '@/components/ui/dialog' ;
4- import { Button } from '@/components/ui/button' ;
5- import { Input } from '@/components/ui/input' ;
6- import { Label } from '@/components/ui/label' ;
7- import { Textarea } from '@/components/ui/textarea' ;
8- import { Calendar } from '@/components/ui/calendar' ;
9- import { Popover , PopoverContent , PopoverTrigger } from '@/components/ui/popover' ;
10- import { CalendarIcon } from 'lucide-react' ;
11- import { format } from 'date-fns' ;
12- import { cn } from '@/lib/utils' ;
13- import { Sprint } from '../DigitalColleagues/types' ;
1+ import React , { useState } from 'react'
2+ import { Dialog , DialogContent , DialogHeader , DialogTitle } from '@/components/ui/dialog'
3+ import { Button } from '@/components/ui/button'
4+ import { Input } from '@/components/ui/input'
5+ import { Label } from '@/components/ui/label'
6+ import { Textarea } from '@/components/ui/textarea'
7+ import { Calendar } from '@/components/ui/calendar'
8+ import { Popover , PopoverContent , PopoverTrigger } from '@/components/ui/popover'
9+ import { CalendarIcon } from 'lucide-react'
10+ import { format } from 'date-fns'
11+ import { cn } from '@/lib/utils'
12+ import { Sprint } from '../Foundary/types'
1413
1514interface AddSprintModalProps {
16- isOpen : boolean ;
17- onClose : ( ) => void ;
18- onAddSprint : ( sprint : Omit < Sprint , 'id' > ) => void ;
15+ isOpen : boolean
16+ onClose : ( ) => void
17+ onAddSprint : ( sprint : Omit < Sprint , 'id' > ) => void
1918}
2019
21- export const AddSprintModal : React . FC < AddSprintModalProps > = ( {
22- isOpen,
23- onClose,
24- onAddSprint,
25- } ) => {
20+ export const AddSprintModal : React . FC < AddSprintModalProps > = ( { isOpen, onClose, onAddSprint } ) => {
2621 const [ formData , setFormData ] = useState ( {
2722 name : '' ,
2823 description : '' ,
2924 startDate : undefined as Date | undefined ,
3025 endDate : undefined as Date | undefined ,
31- isActive : false ,
32- } ) ;
26+ // isActive: false,
27+ } )
3328
3429 const handleSubmit = ( e : React . FormEvent ) => {
35- e . preventDefault ( ) ;
36-
30+ e . preventDefault ( )
31+
3732 if ( ! formData . name || ! formData . startDate || ! formData . endDate ) {
38- return ;
33+ return
3934 }
4035
4136 onAddSprint ( {
4237 name : formData . name ,
4338 description : formData . description ,
44- startDate : formData . startDate ,
45- endDate : formData . endDate ,
46- isActive : formData . isActive ,
47- isSelected : false ,
48- } ) ;
39+ startDate : formData . startDate . toISOString ( ) ,
40+ endDate : formData . endDate . toISOString ( ) ,
41+ createdAt : new Date ( ) . toISOString ( ) ,
42+ updatedAt : new Date ( ) . toISOString ( ) ,
43+ // isActive: formData.isActive,
44+ // isSelected: false,
45+ } )
4946
5047 // Reset form
5148 setFormData ( {
5249 name : '' ,
5350 description : '' ,
5451 startDate : undefined ,
5552 endDate : undefined ,
56- isActive : false ,
57- } ) ;
53+ // isActive: false,
54+ } )
5855
59- onClose ( ) ;
60- } ;
56+ onClose ( )
57+ }
6158
6259 const handleClose = ( ) => {
6360 setFormData ( {
6461 name : '' ,
6562 description : '' ,
6663 startDate : undefined ,
6764 endDate : undefined ,
68- isActive : false ,
69- } ) ;
70- onClose ( ) ;
71- } ;
65+ // isActive: false,
66+ } )
67+ onClose ( )
68+ }
7269
7370 return (
7471 < Dialog open = { isOpen } onOpenChange = { handleClose } >
7572 < DialogContent className = "sm:max-w-md" >
7673 < DialogHeader >
7774 < DialogTitle > Add New Sprint</ DialogTitle >
7875 </ DialogHeader >
79-
76+
8077 < form onSubmit = { handleSubmit } className = "space-y-4" >
8178 < div className = "space-y-2" >
8279 < Label htmlFor = "name" > Sprint Name *</ Label >
8380 < Input
8481 id = "name"
8582 value = { formData . name }
86- onChange = { ( e ) => setFormData ( prev => ( { ...prev , name : e . target . value } ) ) }
83+ onChange = { ( e ) => setFormData ( ( prev ) => ( { ...prev , name : e . target . value } ) ) }
8784 placeholder = "e.g., Sprint 3"
8885 required
8986 />
@@ -94,7 +91,7 @@ export const AddSprintModal: React.FC<AddSprintModalProps> = ({
9491 < Textarea
9592 id = "description"
9693 value = { formData . description }
97- onChange = { ( e ) => setFormData ( prev => ( { ...prev , description : e . target . value } ) ) }
94+ onChange = { ( e ) => setFormData ( ( prev ) => ( { ...prev , description : e . target . value } ) ) }
9895 placeholder = "Brief description of sprint goals"
9996 rows = { 3 }
10097 />
@@ -108,19 +105,19 @@ export const AddSprintModal: React.FC<AddSprintModalProps> = ({
108105 < Button
109106 variant = "outline"
110107 className = { cn (
111- " w-full justify-start text-left font-normal" ,
112- ! formData . startDate && " text-muted-foreground"
108+ ' w-full justify-start text-left font-normal' ,
109+ ! formData . startDate && ' text-muted-foreground' ,
113110 ) }
114111 >
115112 < CalendarIcon className = "mr-2 h-4 w-4" />
116- { formData . startDate ? format ( formData . startDate , " PPP" ) : " Pick a date" }
113+ { formData . startDate ? format ( formData . startDate , ' PPP' ) : ' Pick a date' }
117114 </ Button >
118115 </ PopoverTrigger >
119116 < PopoverContent className = "w-auto p-0" align = "start" >
120117 < Calendar
121118 mode = "single"
122119 selected = { formData . startDate }
123- onSelect = { ( date ) => setFormData ( prev => ( { ...prev , startDate : date } ) ) }
120+ onSelect = { ( date ) => setFormData ( ( prev ) => ( { ...prev , startDate : date } ) ) }
124121 initialFocus
125122 />
126123 </ PopoverContent >
@@ -134,44 +131,44 @@ export const AddSprintModal: React.FC<AddSprintModalProps> = ({
134131 < Button
135132 variant = "outline"
136133 className = { cn (
137- " w-full justify-start text-left font-normal" ,
138- ! formData . endDate && " text-muted-foreground"
134+ ' w-full justify-start text-left font-normal' ,
135+ ! formData . endDate && ' text-muted-foreground' ,
139136 ) }
140137 >
141138 < CalendarIcon className = "mr-2 h-4 w-4" />
142- { formData . endDate ? format ( formData . endDate , " PPP" ) : " Pick a date" }
139+ { formData . endDate ? format ( formData . endDate , ' PPP' ) : ' Pick a date' }
143140 </ Button >
144141 </ PopoverTrigger >
145142 < PopoverContent className = "w-auto p-0" align = "start" >
146143 < Calendar
147144 mode = "single"
148145 selected = { formData . endDate }
149- onSelect = { ( date ) => setFormData ( prev => ( { ...prev , endDate : date } ) ) }
146+ onSelect = { ( date ) => setFormData ( ( prev ) => ( { ...prev , endDate : date } ) ) }
150147 initialFocus
151- disabled = { ( date ) => formData . startDate ? date < formData . startDate : false }
148+ disabled = { ( date ) => ( formData . startDate ? date < formData . startDate : false ) }
152149 />
153150 </ PopoverContent >
154151 </ Popover >
155152 </ div >
156153 </ div >
157154
158- < div className = "flex items-center space-x-2" >
155+ { /* <div className="flex items-center space-x-2">
159156 <input
160157 type="checkbox"
161158 id="isActive"
162159 checked={formData.isActive}
163- onChange = { ( e ) => setFormData ( prev => ( { ...prev , isActive : e . target . checked } ) ) }
160+ onChange={(e) => setFormData(( prev) => ({ ...prev, isActive: e.target.checked }))}
164161 className="rounded border-gray-300"
165162 />
166163 <Label htmlFor="isActive">Set as active sprint</Label>
167- </ div >
164+ </div> */ }
168165
169166 < div className = "flex justify-end gap-3 pt-4" >
170167 < Button type = "button" variant = "outline" onClick = { handleClose } >
171168 Cancel
172169 </ Button >
173- < Button
174- type = "submit"
170+ < Button
171+ type = "submit"
175172 disabled = { ! formData . name || ! formData . startDate || ! formData . endDate }
176173 >
177174 Add Sprint
@@ -180,5 +177,5 @@ export const AddSprintModal: React.FC<AddSprintModalProps> = ({
180177 </ form >
181178 </ DialogContent >
182179 </ Dialog >
183- ) ;
184- } ;
180+ )
181+ }
0 commit comments