1
- import React , { useState } from "react"
2
- import { Button } from "react-bootstrap"
3
- import ClockPicker from "../ClockPicker/ClockPicker"
4
- import { useFormik } from "formik"
1
+ import React , { useState } from "react" ;
2
+ import { Button } from "react-bootstrap" ;
3
+ import ClockPicker from "../ClockPicker/ClockPicker" ;
4
+ import { useFormik } from "formik" ;
5
5
6
- import * as yup from "yup"
7
- import { compareTimes } from "../../util /helpers"
8
- import "./GeneralSettings.css"
6
+ import * as yup from "yup" ;
7
+ import { compareTimes } from "../../utils /helpers" ;
8
+ import "./GeneralSettings.css" ;
9
9
10
10
const GeneralSettings = ( { onConfirm, onBack, initialValues : defaults } ) => {
11
- const [ pickerTime , setPickerTime ] = useState ( null )
12
- const [ showPicker , setShowPicker ] = useState ( false )
13
- const [ pickerFunction , setPickerFunction ] = useState ( ( ) => ( ) => { } )
14
- const [ editMode , setEditMode ] = useState ( false )
11
+ const [ pickerTime , setPickerTime ] = useState ( null ) ;
12
+ const [ showPicker , setShowPicker ] = useState ( false ) ;
13
+ const [ pickerFunction , setPickerFunction ] = useState ( ( ) => ( ) => { } ) ;
14
+ const [ editMode , setEditMode ] = useState ( false ) ;
15
15
16
16
const formik = useFormik ( {
17
17
initialValues : {
@@ -21,104 +21,79 @@ const GeneralSettings = ({ onConfirm, onBack, initialValues: defaults }) => {
21
21
validationSchema : yup . object ( ) . shape ( {
22
22
startTime : yup . string ( ) . required ( "Starting time is required!" ) ,
23
23
endTime : yup . string ( ) . required ( "Ending time is required!" ) ,
24
- slotSize : yup
25
- . number ( )
26
- . min ( 0 , "Minutes must be positive numbers" )
27
- . max ( 120 , "Max slot size is 120 minutes" )
28
- . required ( "*Slot size is required!" ) ,
29
- address : yup
30
- . string ( )
31
- . min ( 8 , "address is Too Short!" )
32
- . max ( 50 , "address is Too Long!" )
33
- . required ( "*Address is required!" ) ,
24
+ slotSize : yup . number ( ) . min ( 0 , "Minutes must be positive numbers" ) . max ( 120 , "Max slot size is 120 minutes" ) . required ( "*Slot size is required!" ) ,
25
+ address : yup . string ( ) . min ( 8 , "address is Too Short!" ) . max ( 50 , "address is Too Long!" ) . required ( "*Address is required!" ) ,
34
26
} ) ,
35
27
onSubmit : ( values ) => {
36
28
if ( validateTime ( ) ) {
37
29
// console.log("time is valid")
38
30
// alert(JSON.stringify(values, null, 2))
39
- setEditMode ( false )
40
- onConfirm ( { ...values } )
31
+ setEditMode ( false ) ;
32
+ onConfirm ( { ...values } ) ;
41
33
}
42
34
} ,
43
- } )
35
+ } ) ;
44
36
45
37
const validateTime = ( ) => {
46
- const isValid = compareTimes ( formik . values . startTime , formik . values . endTime )
38
+ const isValid = compareTimes ( formik . values . startTime , formik . values . endTime ) ;
47
39
if ( ! isValid ) {
48
- formik . setFieldError ( "startTime" , "Start time must be before end time" )
49
- formik . setFieldError ( "endTime" , "Start time must be before end time" )
40
+ formik . setFieldError ( "startTime" , "Start time must be before end time" ) ;
41
+ formik . setFieldError ( "endTime" , "Start time must be before end time" ) ;
50
42
} else {
51
- formik . setFieldError ( "startTime" , "" )
52
- formik . setFieldError ( "endTime" , "" )
43
+ formik . setFieldError ( "startTime" , "" ) ;
44
+ formik . setFieldError ( "endTime" , "" ) ;
53
45
}
54
- return isValid
55
- }
46
+ return isValid ;
47
+ } ;
56
48
57
49
const handleChangeStartTime = ( value ) => {
58
- formik . setFieldValue ( "startTime" , value )
59
- formik . setFieldTouched ( "startTime" )
60
- }
50
+ formik . setFieldValue ( "startTime" , value ) ;
51
+ formik . setFieldTouched ( "startTime" ) ;
52
+ } ;
61
53
62
54
const handleChangeEndTime = ( value ) => {
63
- formik . setFieldValue ( "endTime" , value )
64
- formik . setFieldTouched ( "endTime" )
65
- }
55
+ formik . setFieldValue ( "endTime" , value ) ;
56
+ formik . setFieldTouched ( "endTime" ) ;
57
+ } ;
66
58
67
59
const handleUsePicker = ( setValueFunction , initalValue = null ) => {
68
- setPickerTime ( initalValue )
69
- setPickerFunction ( ( ) => setValueFunction )
70
- setShowPicker ( true )
71
- }
60
+ setPickerTime ( initalValue ) ;
61
+ setPickerFunction ( ( ) => setValueFunction ) ;
62
+ setShowPicker ( true ) ;
63
+ } ;
72
64
73
65
const handleClosePicker = ( ) => {
74
- setPickerFunction ( ( ) => ( ) => { } )
75
- setPickerTime ( null )
76
- setShowPicker ( false )
77
- }
66
+ setPickerFunction ( ( ) => ( ) => { } ) ;
67
+ setPickerTime ( null ) ;
68
+ setShowPicker ( false ) ;
69
+ } ;
78
70
79
71
const handleGoBack = ( ) => {
80
72
//TODO: findout why this needs to be called twice
81
73
// onBack()
82
- onBack ( )
83
- }
74
+ onBack ( ) ;
75
+ } ;
84
76
85
77
return (
86
78
< >
87
- < ClockPicker
88
- show = { showPicker }
89
- time = { pickerTime }
90
- onChange = { pickerFunction }
91
- onClose = { handleClosePicker }
92
- />
79
+ < ClockPicker show = { showPicker } time = { pickerTime } onChange = { pickerFunction } onClose = { handleClosePicker } />
93
80
< div className = "container min-vh-100 p-3" >
94
81
< h2 > General Shop Settings</ h2 >
95
82
< div className = "d-flex justify-content-between align-items-center mb-4" >
96
83
< h4 > Default Settings</ h4 >
97
84
< div className = "hstack gap-3" >
98
85
{ editMode ? (
99
86
< >
100
- < Button
101
- variant = "outline-secondary"
102
- size = "sm"
103
- onClick = { formik . handleSubmit }
104
- >
87
+ < Button variant = "outline-secondary" size = "sm" onClick = { formik . handleSubmit } >
105
88
Save
106
89
</ Button >
107
- < Button
108
- variant = "outline-secondary"
109
- size = "sm"
110
- onClick = { ( ) => setEditMode ( false ) }
111
- >
90
+ < Button variant = "outline-secondary" size = "sm" onClick = { ( ) => setEditMode ( false ) } >
112
91
Cancel
113
92
</ Button >
114
93
</ >
115
94
) : (
116
95
< >
117
- < Button
118
- variant = "outline-secondary"
119
- size = "sm"
120
- onClick = { ( ) => setEditMode ( true ) }
121
- >
96
+ < Button variant = "outline-secondary" size = "sm" onClick = { ( ) => setEditMode ( true ) } >
122
97
Edit
123
98
</ Button >
124
99
< Button variant = "secondary" size = "sm" onClick = { handleGoBack } >
@@ -137,25 +112,13 @@ const GeneralSettings = ({ onConfirm, onBack, initialValues: defaults }) => {
137
112
< span > { formik . values . startTime } </ span >
138
113
{ editMode && (
139
114
< >
140
- < span
141
- className = "text-primary fw-light fst-italic ms-3 change-text"
142
- onClick = { ( ) =>
143
- handleUsePicker (
144
- handleChangeStartTime ,
145
- formik . values . startTime
146
- )
147
- }
148
- >
115
+ < span className = "text-primary fw-light fst-italic ms-3 change-text" onClick = { ( ) => handleUsePicker ( handleChangeStartTime , formik . values . startTime ) } >
149
116
Change
150
117
</ span >
151
118
</ >
152
119
) }
153
120
</ div >
154
- { formik . touched . startTime && formik . errors . startTime && (
155
- < span className = "help-block text-danger col-8 offset-4" >
156
- { formik . errors . startTime }
157
- </ span >
158
- ) }
121
+ { formik . touched . startTime && formik . errors . startTime && < span className = "help-block text-danger col-8 offset-4" > { formik . errors . startTime } </ span > }
159
122
</ div >
160
123
161
124
< div className = "mb-3 row" >
@@ -165,21 +128,12 @@ const GeneralSettings = ({ onConfirm, onBack, initialValues: defaults }) => {
165
128
< div className = "col-8 d-flex align-items-center" >
166
129
< span > { formik . values . endTime } </ span >
167
130
{ editMode && (
168
- < span
169
- className = "text-primary fw-light fst-italic ms-3 change-text"
170
- onClick = { ( ) =>
171
- handleUsePicker ( handleChangeEndTime , formik . values . endTime )
172
- }
173
- >
131
+ < span className = "text-primary fw-light fst-italic ms-3 change-text" onClick = { ( ) => handleUsePicker ( handleChangeEndTime , formik . values . endTime ) } >
174
132
Change
175
133
</ span >
176
134
) }
177
135
</ div >
178
- { formik . touched . endTime && formik . errors . endTime && (
179
- < span className = "help-block text-danger col-8 offset-4" >
180
- { formik . errors . endTime }
181
- </ span >
182
- ) }
136
+ { formik . touched . endTime && formik . errors . endTime && < span className = "help-block text-danger col-8 offset-4" > { formik . errors . endTime } </ span > }
183
137
</ div >
184
138
185
139
< div className = "mb-3 row" >
@@ -188,56 +142,31 @@ const GeneralSettings = ({ onConfirm, onBack, initialValues: defaults }) => {
188
142
</ label >
189
143
< div className = "col-8 d-flex align-items-center" >
190
144
{ editMode ? (
191
- < input
192
- type = "number"
193
- className = "form-control w-25"
194
- id = "slotSize"
195
- name = "slotSize"
196
- onChange = { formik . handleChange }
197
- value = { formik . values . slotSize }
198
- />
145
+ < input type = "number" className = "form-control w-25" id = "slotSize" name = "slotSize" onChange = { formik . handleChange } value = { formik . values . slotSize } />
199
146
) : (
200
147
< span > { formik . values . slotSize } </ span >
201
148
) }
202
149
< span className = "ms-3" > Minutes</ span >
203
150
</ div >
204
- { formik . touched . slotSize && formik . errors . slotSize && (
205
- < span className = "help-block text-danger col-8 offset-4" >
206
- { formik . errors . slotSize }
207
- </ span >
208
- ) }
151
+ { formik . touched . slotSize && formik . errors . slotSize && < span className = "help-block text-danger col-8 offset-4" > { formik . errors . slotSize } </ span > }
209
152
</ div >
210
153
211
154
< div className = "mb-3 row" >
212
- < label
213
- htmlFor = "inputAddress"
214
- className = "col-4 col-form-label fw-bold"
215
- >
155
+ < label htmlFor = "inputAddress" className = "col-4 col-form-label fw-bold" >
216
156
Address
217
157
</ label >
218
158
< div className = "col-8 d-flex align-items-center" >
219
159
{ editMode ? (
220
- < textarea
221
- className = "form-control input-address"
222
- id = "inputAddress"
223
- rows = "3"
224
- name = "address"
225
- value = { formik . values . address }
226
- onChange = { formik . handleChange }
227
- />
160
+ < textarea className = "form-control input-address" id = "inputAddress" rows = "3" name = "address" value = { formik . values . address } onChange = { formik . handleChange } />
228
161
) : (
229
162
< span > { formik . values . address } </ span >
230
163
) }
231
164
</ div >
232
- { formik . touched . address && formik . errors . address && (
233
- < span className = "help-block text-danger col-8 offset-4" >
234
- { formik . errors . address }
235
- </ span >
236
- ) }
165
+ { formik . touched . address && formik . errors . address && < span className = "help-block text-danger col-8 offset-4" > { formik . errors . address } </ span > }
237
166
</ div >
238
167
</ div >
239
168
</ >
240
- )
241
- }
169
+ ) ;
170
+ } ;
242
171
243
- export default GeneralSettings
172
+ export default GeneralSettings ;
0 commit comments