@@ -13,18 +13,26 @@ import {
1313import Link from "next/link" ;
1414
1515export default function ExpenseDetailsPage ( ) {
16- const today = new Date ( ) . toISOString ( ) . split ( "T" ) [ 0 ] ;
17- const [ editId , setEditId ] = useState < number | null > ( null ) ;
16+ // Force type to string
17+ const today : string = new Date ( ) . toISOString ( ) . split ( "T" ) [ 0 ] ! ;
1818
19+ const [ editId , setEditId ] = useState < number | null > ( null ) ;
1920 const [ expenses , setExpenses ] = useState < any [ ] > ( [ ] ) ;
20- const [ formData , setFormData ] = useState ( {
21+ const [ selectedDate , setSelectedDate ] = useState < string > ( today ) ;
22+ const [ formData , setFormData ] = useState < {
23+ title : string ;
24+ amount : string ;
25+ category : string ;
26+ description : string ;
27+ date : string ;
28+ } > ( {
2129 title : "" ,
2230 amount : "" ,
2331 category : "" ,
2432 description : "" ,
25- date : today , // always a string
33+ date : today ,
2634 } ) ;
27- const [ selectedDate , setSelectedDate ] = useState ( today ) ;
35+
2836 const [ showForm , setShowForm ] = useState ( false ) ;
2937
3038 useEffect ( ( ) => {
@@ -34,13 +42,14 @@ export default function ExpenseDetailsPage() {
3442 } ) ( ) ;
3543 } , [ showForm ] ) ;
3644
37- const handleChange = ( e : any ) => {
45+ const handleChange = ( e : React . ChangeEvent < HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement > ) => {
3846 const { name, value } = e . target ;
3947 setFormData ( ( prev ) => ( {
4048 ...prev ,
41- [ name ] : name === "date" ? value || today : value ,
49+ [ name ] : name === "date" ? ( value || today ) : value ,
4250 } ) ) ;
4351 } ;
52+
4453 const handleEdit = ( expense : any ) => {
4554 setFormData ( {
4655 ...expense ,
@@ -56,12 +65,12 @@ export default function ExpenseDetailsPage() {
5665 setExpenses ( await getAllExpenses ( ) ) ;
5766 } ;
5867
59- const handleSubmit = async ( e : any ) => {
68+ const handleSubmit = async ( e : React . FormEvent ) => {
6069 e . preventDefault ( ) ;
6170 const data = {
6271 ...formData ,
6372 amount : parseFloat ( formData . amount ) ,
64- date : formData . date || today , // <-- ensures date is always a string
73+ date : ( formData . date || today ) as string ,
6574 } ;
6675 if ( editId !== null ) {
6776 await updateExpense ( editId , data ) ;
@@ -83,20 +92,21 @@ export default function ExpenseDetailsPage() {
8392 const totalAmount = filteredExpenses . reduce ( ( sum , e ) => sum + e . amount , 0 ) ;
8493
8594 return (
86- < div className = "min-h-screen bg-white p-4 " >
95+ < div className = "min-h-screen bg-white p-4" >
8796 < div className = "flex justify-between items-center mb-4 text-center" >
8897 < h1 className = "text-2xl text-center font-bold text-black w-full" >
8998 Expense Tracker
9099 </ h1 >
91100 </ div >
101+
92102 { ! showForm && (
93103 < >
94104 < DateSelector
95- selectedDate = { selectedDate ? selectedDate : today }
105+ selectedDate = { selectedDate ?? today }
96106 onDateChange = { setSelectedDate }
97107 />
98108
99- < div className = "flex justify-between mt-4 text-black " >
109+ < div className = "flex justify-between mt-4 text-black" >
100110 < h2 className = "text-lg font-semibold" > Expenses</ h2 >
101111 < span className = "font-semibold underline mb-1" >
102112 Total: ₹{ totalAmount }
@@ -129,7 +139,7 @@ export default function ExpenseDetailsPage() {
129139 onSubmit = { handleSubmit }
130140 formData = { {
131141 ...formData ,
132- date : formData . date ?? today , // ensures date is always a string
142+ date : formData . date ?? today ,
133143 } }
134144 />
135145 ) }
0 commit comments