11import { useForm } from 'react-hook-form' ;
22import { InputField } from '../Input/InputField.component' ;
33
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+
448const Billing = ( { onSubmit } ) => {
549 const {
650 register,
@@ -12,24 +56,16 @@ const Billing = ({ onSubmit }) => {
1256 < section className = "text-gray-700 container p-4 py-2 mx-auto" >
1357 < form onSubmit = { handleSubmit ( onSubmit ) } >
1458 < 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+ ) ) }
3369 < InputField
3470 label = "Postnummer"
3571 name = "postcode"
@@ -50,44 +86,6 @@ const Billing = ({ onSubmit }) => {
5086 } ,
5187 } }
5288 />
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- />
9189 < OrderButton register = { register } />
9290 </ div >
9391 </ form >
0 commit comments