1
1
import { useForm } from 'react-hook-form' ;
2
2
3
- const Input = ( {
4
- name,
5
- label,
6
- register,
7
- placeholder,
8
- value,
9
- parameters,
10
- type = 'text' ,
11
- readOnly = false ,
12
- } ) => (
13
- < >
14
- < label className = "pb-4" > { label } </ label >
15
- < input
16
- className = "w-full px-4 py-2 mt-2 text-base bg-white border border-gray-400 rounded focus:outline-none focus:border-black"
17
- name = { name }
18
- placeholder = { placeholder }
19
- type = "text"
20
- value = { value }
21
- ref = { register ( parameters ) }
22
- type = { type }
23
- readOnly = { readOnly }
24
- />
25
- </ >
26
- ) ;
27
-
28
3
const Billing = ( { onSubmit } ) => {
29
- const { register, handleSubmit, formState : { errors } } = useForm ( ) ;
4
+ const inputClasses =
5
+ 'w-full px-4 py-2 mt-2 text-base bg-white border border-gray-400 rounded focus:outline-none focus:border-black' ;
6
+ const {
7
+ register,
8
+ handleSubmit,
9
+ formState : { errors } ,
10
+ } = useForm ( ) ;
30
11
31
12
return (
32
13
< >
33
14
< section className = "text-gray-700" >
34
15
< form onSubmit = { handleSubmit ( onSubmit ) } >
35
- < div className = "container p-4 py-2 mx-auto" >
16
+ < div className = "container p-4 py-2 mx-auto" >
36
17
< div className = "mx-auto lg:w-1/2 md:w-2/3" >
37
18
< div className = "flex flex-wrap -m-2" >
38
19
< div className = "w-1/2 p-2" >
39
- < Input
20
+ < label className = "pb-4" > Fornavn</ label >
21
+ < input
22
+ className = { inputClasses }
40
23
name = "firstName"
41
24
placeholder = "Fornavn"
42
25
label = "Fornavn"
43
- register = { register }
44
- parameters = { { required : 'Dette feltet er påkrevd' } }
26
+ type = "text"
27
+ { ...register ( 'firstName' , {
28
+ required : 'Dette feltet er påkrevd' ,
29
+ } ) }
45
30
/>
46
31
{ errors . firstName && (
47
32
< span className = "text-red-500" >
@@ -50,12 +35,16 @@ const Billing = ({ onSubmit }) => {
50
35
) }
51
36
</ div >
52
37
< div className = "w-1/2 p-2" >
53
- < Input
38
+ < label className = "pb-4" > Etternavn</ label >
39
+ < input
40
+ className = { inputClasses }
54
41
name = "lastName"
55
42
placeholder = "Etternavn"
56
43
label = "Etternavn"
57
- register = { register }
58
- parameters = { { required : 'Dette feltet er påkrevd' } }
44
+ type = "text"
45
+ { ...register ( 'lastName' , {
46
+ required : 'Dette feltet er påkrevd' ,
47
+ } ) }
59
48
/>
60
49
{ errors . lastName && (
61
50
< span className = "text-red-500" >
@@ -64,12 +53,16 @@ const Billing = ({ onSubmit }) => {
64
53
) }
65
54
</ div >
66
55
< div className = "w-1/2 p-2" >
67
- < Input
56
+ < label className = "pb-4" > Addresse</ label >
57
+ < input
58
+ className = { inputClasses }
68
59
name = "address1"
69
60
placeholder = "Adresse"
70
61
label = "Adresse"
71
- register = { register }
72
- parameters = { { required : 'Dette feltet er påkrevd' } }
62
+ type = "text"
63
+ { ...register ( 'address1' , {
64
+ required : 'Dette feltet er påkrevd' ,
65
+ } ) }
73
66
/>
74
67
{ errors . address1 && (
75
68
< span className = "text-red-500" >
@@ -78,12 +71,14 @@ const Billing = ({ onSubmit }) => {
78
71
) }
79
72
</ div >
80
73
< div className = "w-1/2 p-2" >
81
- < Input
74
+ < label className = "pb-4" > Addresse</ label >
75
+ < input
76
+ className = { inputClasses }
82
77
name = "postcode"
83
78
placeholder = "Postnummer"
84
79
label = "Postnummer"
85
- register = { register }
86
- parameters = { {
80
+ type = "text"
81
+ { ... register ( 'postcode' , {
87
82
required : 'Dette feltet er påkrevd' ,
88
83
minLength : {
89
84
value : 4 ,
@@ -97,7 +92,7 @@ const Billing = ({ onSubmit }) => {
97
92
value : / ^ [ 0 - 9 ] + $ / i,
98
93
message : 'Postnummer må bare være tall' ,
99
94
} ,
100
- } }
95
+ } ) }
101
96
/>
102
97
{ errors . postcode && (
103
98
< span className = "text-red-500" >
@@ -106,12 +101,16 @@ const Billing = ({ onSubmit }) => {
106
101
) }
107
102
</ div >
108
103
< div className = "w-1/2 p-2" >
109
- < Input
104
+ < label className = "pb-4" > Sted</ label >
105
+ < input
106
+ className = { inputClasses }
110
107
name = "city"
111
108
placeholder = "Sted"
112
109
label = "Sted"
113
- register = { register }
114
- parameters = { { required : 'Dette feltet er påkrevd' } }
110
+ type = "text"
111
+ { ...register ( 'city' , {
112
+ required : 'Dette feltet er påkrevd' ,
113
+ } ) }
115
114
/>
116
115
{ errors . city && (
117
116
< span className = "text-red-500" >
@@ -120,18 +119,20 @@ const Billing = ({ onSubmit }) => {
120
119
) }
121
120
</ div >
122
121
< div className = "w-1/2 p-2" >
123
- < Input
122
+ < label className = "pb-4" > Epost</ label >
123
+ < input
124
+ className = { inputClasses }
124
125
name = "email"
125
126
placeholder = "Epost"
126
127
label = "Epost"
127
- register = { register }
128
- parameters = { {
128
+ type = "text"
129
+ { ... register ( 'email' , {
129
130
required : 'Dette feltet er påkrevd' ,
130
131
pattern : {
131
132
value : / [ ^ @ ] + @ [ ^ @ ] + \. [ ^ @ ] + / i,
132
133
message : 'Du må oppgi en gyldig epost' ,
133
134
} ,
134
- } }
135
+ } ) }
135
136
/>
136
137
{ errors . email && (
137
138
< span className = "text-red-500" >
@@ -140,12 +141,14 @@ const Billing = ({ onSubmit }) => {
140
141
) }
141
142
</ div >
142
143
< div className = "w-1/2 p-2" >
143
- < Input
144
+ < label className = "pb-4" > Telefon</ label >
145
+ < input
146
+ className = { inputClasses }
144
147
name = "phone"
145
148
placeholder = "Telefon"
146
149
label = "Telefon"
147
- register = { register }
148
- parameters = { {
150
+ type = "text"
151
+ { ... register ( 'phone' , {
149
152
required : 'Dette feltet er påkrevd' ,
150
153
minLength : {
151
154
value : 8 ,
@@ -155,12 +158,11 @@ const Billing = ({ onSubmit }) => {
155
158
value : 8 ,
156
159
message : 'Maksimalt 8 tall i telefonnummeret' ,
157
160
} ,
158
-
159
161
pattern : {
160
162
value : / ^ [ 0 - 9 ] + $ / i,
161
163
message : 'Ikke gyldig telefonnummer' ,
162
164
} ,
163
- } }
165
+ } ) }
164
166
/>
165
167
{ errors . phone && (
166
168
< span className = "text-red-500" >
@@ -169,15 +171,15 @@ const Billing = ({ onSubmit }) => {
169
171
) }
170
172
</ div >
171
173
< div className = "w-1/2 p-2" >
172
- < Input
174
+ < input
173
175
name = "paymentMethod"
174
176
placeholder = "paymentMethod"
175
177
label = ""
176
178
type = "hidden"
177
179
value = "cod"
178
- register = { register }
179
180
checked
180
- readOnly
181
+ type = "hidden"
182
+ { ...register ( 'paymentMethod' ) }
181
183
/>
182
184
</ div >
183
185
< div className = "w-full p-2" >
0 commit comments