@@ -21,7 +21,7 @@ const FilterContainer = styled.div`
2121 flex-wrap: wrap;
2222 justify-content: center;
2323 margin-top: 0.5rem;
24- ` ;
24+ ` ;
2525
2626const DayRow = styled . div `
2727 padding: 0.75rem;
@@ -61,115 +61,115 @@ const NameInput = styled.input`
6161` ;
6262
6363const intToTime = ( t : number ) => {
64- let hour = Math . floor ( t % 12 ) ;
65- const min = Math . round ( ( t % 1 ) * 60 ) ;
66- let meridian ;
67- if ( t === 24 ) {
68- meridian = "AM" ;
69- } else {
70- meridian = t < 12 ? "AM" : "PM" ;
71- }
72- if ( hour === 0 ) {
73- hour = 12 ;
74- }
75- const minString = min > 9 ? min : `0${ min } ` ;
76- if ( min === 0 ) {
77- return `${ hour } ${ meridian } ` ;
78- }
79- return `${ hour } :${ minString } ${ meridian } ` ;
64+ let hour = Math . floor ( t % 12 ) ;
65+ const min = Math . round ( ( t % 1 ) * 60 ) ;
66+ let meridian ;
67+ if ( t === 24 ) {
68+ meridian = "AM" ;
69+ } else {
70+ meridian = t < 12 ? "AM" : "PM" ;
71+ }
72+ if ( hour === 0 ) {
73+ hour = 12 ;
74+ }
75+ const minString = min > 9 ? min : `0${ min } ` ;
76+ if ( min === 0 ) {
77+ return `${ hour } ${ meridian } ` ;
78+ }
79+ return `${ hour } :${ minString } ${ meridian } ` ;
8080} ;
8181
8282interface DayTimeSelectorProps {
83- minRange : number ;
84- maxRange : number ;
85- step : number ;
86- selectedDays : string [ ] ;
87- setSelectedDays : ( days : string [ ] ) => void ;
88- selectedTimes : [ number , number ] ;
89- setSelectedTimes : ( times : [ number , number ] ) => void ;
90- name : string ;
91- setName : ( name : string ) => void ;
83+ minRange : number ;
84+ maxRange : number ;
85+ step : number ;
86+ selectedDays : string [ ] ;
87+ setSelectedDays : ( days : string [ ] ) => void ;
88+ selectedTimes : [ number , number ] ;
89+ setSelectedTimes : ( times : [ number , number ] ) => void ;
90+ name : string ;
91+ setName : ( name : string ) => void ;
9292}
9393
94- export function DayTimeSelector ( {
95- minRange, maxRange, step, selectedDays, setSelectedDays, selectedTimes, setSelectedTimes, name, setName } : DayTimeSelectorProps ) {
96-
97- const daysOfWeek = [ "M" , "T" , "W" , "R" , "F" , "S" , "U" ] ;
98-
99- const handleDayToggle = ( day : string ) => {
100- const updatedDays = selectedDays . includes ( day )
101- ? selectedDays . filter ( ( d ) => d !== day )
102- : [ ...selectedDays , day ] ;
103-
104- setSelectedDays ( updatedDays ) ;
105- } ;
106-
107- const handleTimeChange = ( values : number | number [ ] ) => {
108- const newTimes = values as [ number , number ] ;
109- setSelectedTimes ( newTimes ) ;
110- } ;
111-
112- return (
113- < DayTimeFilterContainer >
114- < NameRow >
115- < p > < strong > Name</ strong > </ p >
116- < NameInput
117- type = "text"
118- placeholder = "Break Name"
119- value = { name }
120- onChange = { ( e ) => setName ( e . target . value ) }
121- />
122- </ NameRow >
123-
124- < DayRow >
125- < p > < strong > Day</ strong > </ p >
126- < FilterContainer >
127- { daysOfWeek . map ( ( day ) => (
128- < FilterRow key = { "day-" + day } >
129- < CheckboxInput
130- type = "checkbox"
131- id = { "day-" + day }
132- checked = { selectedDays . includes ( day ) }
133- onChange = { ( ) => handleDayToggle ( day ) }
134- />
135- < CheckboxLabel htmlFor = { "day-" + day } > { day } </ CheckboxLabel >
136- </ FilterRow >
137- ) ) }
138- </ FilterContainer >
139- </ DayRow >
140- < Column >
141- < p > < strong > Time</ strong > </ p >
142- < RangeFilterContainer >
143- < StyledRangeWrapper >
144- < Slider
145- range
146- min = { minRange }
147- max = { maxRange }
148- value = { selectedTimes }
149- marks = { {
150- 10.5 : {
151- style : { } ,
152- label : intToTime (
153- selectedTimes [ 0 ]
154- ) ,
155- } ,
156-
157- 22 : {
158- label :
159- intToTime (
160- selectedTimes [ 1 ]
161- )
162- } ,
163- } }
164- step = { step }
165- vertical = { false }
166- allowCross = { false }
167- onChange = { handleTimeChange }
168- // style={{ width: "100%" }}
169- />
170- </ StyledRangeWrapper >
171- </ RangeFilterContainer >
172- </ Column >
173- </ DayTimeFilterContainer >
174- ) ;
94+ export function DayTimeSelector ( {
95+ minRange, maxRange, step, selectedDays, setSelectedDays, selectedTimes, setSelectedTimes, name, setName } : DayTimeSelectorProps ) {
96+
97+ const daysOfWeek = [ "M" , "T" , "W" , "R" , "F" , "S" , "U" ] ;
98+
99+ const handleDayToggle = ( day : string ) => {
100+ const updatedDays = selectedDays . includes ( day )
101+ ? selectedDays . filter ( ( d ) => d !== day )
102+ : [ ...selectedDays , day ] ;
103+
104+ setSelectedDays ( updatedDays ) ;
105+ } ;
106+
107+ const handleTimeChange = ( values : number | number [ ] ) => {
108+ const newTimes = values as [ number , number ] ;
109+ setSelectedTimes ( newTimes ) ;
110+ } ;
111+
112+ return (
113+ < DayTimeFilterContainer >
114+ < NameRow >
115+ < p > < strong > Name</ strong > </ p >
116+ < NameInput
117+ type = "text"
118+ placeholder = "Break Name"
119+ value = { name }
120+ onChange = { ( e ) => setName ( e . target . value ) }
121+ />
122+ </ NameRow >
123+
124+ < DayRow >
125+ < p > < strong > Day</ strong > </ p >
126+ < FilterContainer >
127+ { daysOfWeek . map ( ( day ) => (
128+ < FilterRow key = { "day-" + day } >
129+ < CheckboxInput
130+ type = "checkbox"
131+ id = { "day-" + day }
132+ checked = { selectedDays . includes ( day ) }
133+ onChange = { ( ) => handleDayToggle ( day ) }
134+ />
135+ < CheckboxLabel htmlFor = { "day-" + day } > { day } </ CheckboxLabel >
136+ </ FilterRow >
137+ ) ) }
138+ </ FilterContainer >
139+ </ DayRow >
140+ < Column >
141+ < p > < strong > Time</ strong > </ p >
142+ < RangeFilterContainer >
143+ < StyledRangeWrapper >
144+ < Slider
145+ range
146+ min = { minRange }
147+ max = { maxRange }
148+ value = { selectedTimes }
149+ marks = { {
150+ 10.5 : {
151+ style : { } ,
152+ label : intToTime (
153+ selectedTimes [ 0 ]
154+ ) ,
155+ } ,
156+
157+ 22 : {
158+ label :
159+ intToTime (
160+ selectedTimes [ 1 ]
161+ )
162+ } ,
163+ } }
164+ step = { step }
165+ vertical = { false }
166+ allowCross = { false }
167+ onChange = { handleTimeChange }
168+ // style={{ width: "100%" }}
169+ />
170+ </ StyledRangeWrapper >
171+ </ RangeFilterContainer >
172+ </ Column >
173+ </ DayTimeFilterContainer >
174+ ) ;
175175}
0 commit comments