@@ -2,98 +2,63 @@ import { useState, useEffect } from 'react';
22import DatePicker from 'react-datepicker' ;
33import 'react-datepicker/dist/react-datepicker.css' ;
44
5- function TimeFilter ( { onFilterChange, darkMode } ) {
5+ function TimeFilter ( { onFilterChange } ) {
66 const [ selectedOption , setSelectedOption ] = useState ( 'weekly' ) ;
77 const [ startDate , setStartDate ] = useState ( null ) ;
88 const [ endDate , setEndDate ] = useState ( null ) ;
9- const [ error , setError ] = useState ( '' ) ;
109
1110 useEffect ( ( ) => {
12- if ( selectedOption === 'custom' && startDate && endDate ) {
13- if ( startDate > endDate ) {
14- setError ( '🚨 Start date cannot be after end date.' ) ;
15- return ;
16- } else {
17- setError ( '' ) ;
18- }
19- } else {
20- setError ( '' ) ;
21- }
22-
23- onFilterChange ( { selectedOption, startDate, endDate, error : '' } ) ;
11+ onFilterChange ( { selectedOption, startDate, endDate } ) ;
2412 } , [ selectedOption , startDate , endDate ] ) ;
2513
2614 return (
2715 < div
2816 style = { {
2917 display : 'flex' ,
30- flexDirection : 'column ' ,
18+ justifyContent : 'center ' ,
3119 alignItems : 'center' ,
32- gap : '12px ' ,
20+ gap : '16px ' ,
3321 margin : '20px auto' ,
22+ flexWrap : 'wrap' ,
3423 } }
3524 >
36- { /* Top row */ }
37- < div style = { { display : 'flex' , gap : '12px' , flexWrap : 'wrap' , alignItems : 'center' } } >
38- < label
39- htmlFor = "timeFilterSelect"
40- style = { {
41- fontWeight : 600 ,
42- color : darkMode ? '#fff' : '#000' ,
43- } }
44- >
45- Time Filter:
46- </ label >
47-
48- < select
49- id = "timeFilterSelect"
50- value = { selectedOption }
51- onChange = { e => setSelectedOption ( e . target . value ) }
52- style = { {
53- padding : '6px 12px' ,
54- borderRadius : '4px' ,
55- border : '1px solid #ccc' ,
56- fontSize : '14px' ,
57- } }
58- >
59- < option value = "weekly" > Weekly</ option >
60- < option value = "monthly" > Monthly</ option >
61- < option value = "yearly" > Yearly</ option >
62- < option value = "custom" > Custom Dates</ option >
63- </ select >
64-
65- { selectedOption === 'custom' && (
66- < >
67- < DatePicker
68- selected = { startDate }
69- onChange = { date => setStartDate ( date ) }
70- placeholderText = "Start Date"
71- dateFormat = "yyyy/MM/dd"
72- />
73- < span style = { { color : darkMode ? '#fff' : '#000' } } > to</ span >
74- < DatePicker
75- selected = { endDate }
76- onChange = { date => setEndDate ( date ) }
77- placeholderText = "End Date"
78- dateFormat = "yyyy/MM/dd"
79- />
80- </ >
81- ) }
82- </ div >
25+ < label htmlFor = "timeFilterSelect" style = { { fontWeight : 500 } } >
26+ Time Filter:
27+ </ label >
28+ < select
29+ id = "timeFilterSelect"
30+ value = { selectedOption }
31+ onChange = { e => setSelectedOption ( e . target . value ) }
32+ style = { {
33+ padding : '6px 12px' ,
34+ borderRadius : '4px' ,
35+ border : '1px solid #ccc' ,
36+ fontSize : '14px' ,
37+ } }
38+ >
39+ < option value = "weekly" > Weekly</ option >
40+ < option value = "monthly" > Monthly</ option >
41+ < option value = "yearly" > Yearly</ option >
42+ < option value = "custom" > Custom Dates</ option >
43+ </ select >
8344
84- { /* Error message */ }
85- { error && (
86- < p
87- style = { {
88- color : 'red' ,
89- fontSize : '18px' ,
90- fontWeight : '600' ,
91- textAlign : 'center' ,
92- marginTop : '8px' ,
93- } }
94- >
95- { error }
96- </ p >
45+ { selectedOption === 'custom' && (
46+ < >
47+ < DatePicker
48+ selected = { startDate }
49+ onChange = { date => setStartDate ( date ) }
50+ placeholderText = "Start Date"
51+ dateFormat = "yyyy/MM/dd"
52+ style = { { marginRight : '10px' } }
53+ />
54+ < span > to</ span >
55+ < DatePicker
56+ selected = { endDate }
57+ onChange = { date => setEndDate ( date ) }
58+ placeholderText = "End Date"
59+ dateFormat = "yyyy/MM/dd"
60+ />
61+ </ >
9762 ) }
9863 </ div >
9964 ) ;
0 commit comments