1
1
import { useForm } from 'react-hook-form' ;
2
2
import { InputField } from '../Input/InputField.component' ;
3
3
4
+ const getCustomNumberValidation = (
5
+ value ,
6
+ { minLength, maxLength, pattern }
7
+ ) => ( {
8
+ minLength : { value, message : minLength } ,
9
+ maxLength : { value, message : maxLength } ,
10
+ pattern : { value : / ^ \d + $ / i, message : pattern } ,
11
+ } ) ;
12
+
13
+ const inputs = [
14
+ { label : 'Fornavn' , name : 'firstName' } ,
15
+ { label : 'Etternavn' , name : 'lastName' } ,
16
+ { label : 'Adresse' , name : 'address1' } ,
17
+ {
18
+ label : 'Postnummer' ,
19
+ name : 'postcode' ,
20
+ customValidation : getCustomNumberValidation ( 4 , {
21
+ minLength : 'Postnummer må være minimum 4 tall' ,
22
+ maxLength : 'Postnummer må være maksimalt 4 tall' ,
23
+ pattern : 'Postnummer må bare være tall' ,
24
+ } ) ,
25
+ } ,
26
+ { label : 'Sted' , name : 'city' } ,
27
+ {
28
+ label : 'Epost' ,
29
+ name : 'email' ,
30
+ customValidation : {
31
+ pattern : {
32
+ value : / [ ^ @ ] + @ [ ^ @ ] + \. [ ^ @ ] + / i,
33
+ message : 'Du må oppgi en gyldig epost' ,
34
+ } ,
35
+ } ,
36
+ } ,
37
+ {
38
+ label : 'Telefon' ,
39
+ name : 'phone' ,
40
+ customValidation : getCustomNumberValidation ( 8 , {
41
+ minLength : 'Minimum 8 tall i telefonnummeret' ,
42
+ maxLength : 'Maksimalt 8 tall i telefonnummeret' ,
43
+ pattern : 'Ikke gyldig telefonnummer' ,
44
+ } ) ,
45
+ } ,
46
+ ] ;
47
+
4
48
const Billing = ( { onSubmit } ) => {
5
49
const {
6
50
register,
@@ -12,24 +56,16 @@ const Billing = ({ onSubmit }) => {
12
56
< section className = "text-gray-700 container p-4 py-2 mx-auto" >
13
57
< form onSubmit = { handleSubmit ( onSubmit ) } >
14
58
< div className = "mx-auto lg:w-1/2 flex flex-wrap" >
15
- < InputField
16
- label = "Fornavn"
17
- name = "firstName"
18
- errors = { errors }
19
- register = { register }
20
- />
21
- < InputField
22
- label = "Etternavn"
23
- name = "lastName"
24
- errors = { errors }
25
- register = { register }
26
- />
27
- < InputField
28
- label = "Adresse"
29
- name = "address1"
30
- errors = { errors }
31
- register = { register }
32
- />
59
+ { inputs . map ( ( { label, name, customValidation } , key ) => (
60
+ < InputField
61
+ key = { key }
62
+ label = { label }
63
+ name = { name }
64
+ customValidation = { customValidation }
65
+ errors = { errors }
66
+ register = { register }
67
+ />
68
+ ) ) }
33
69
< InputField
34
70
label = "Postnummer"
35
71
name = "postcode"
@@ -50,44 +86,6 @@ const Billing = ({ onSubmit }) => {
50
86
} ,
51
87
} }
52
88
/>
53
- < InputField
54
- label = "Sted"
55
- name = "city"
56
- errors = { errors }
57
- register = { register }
58
- />
59
- < InputField
60
- label = "Epost"
61
- name = "email"
62
- errors = { errors }
63
- register = { register }
64
- customValidation = { {
65
- pattern : {
66
- value : / [ ^ @ ] + @ [ ^ @ ] + \. [ ^ @ ] + / i,
67
- message : 'Du må oppgi en gyldig epost' ,
68
- } ,
69
- } }
70
- />
71
- < InputField
72
- label = "Telefon"
73
- name = "phone"
74
- errors = { errors }
75
- register = { register }
76
- customValidation = { {
77
- minLength : {
78
- value : 8 ,
79
- message : 'Minimum 8 tall i telefonnummeret' ,
80
- } ,
81
- maxLength : {
82
- value : 8 ,
83
- message : 'Maksimalt 8 tall i telefonnummeret' ,
84
- } ,
85
- pattern : {
86
- value : / ^ \d + $ / i,
87
- message : 'Ikke gyldig telefonnummer' ,
88
- } ,
89
- } }
90
- />
91
89
< OrderButton register = { register } />
92
90
</ div >
93
91
</ form >
0 commit comments