Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Jay Mehta
/
zango-frontend
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Registry
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit 9f7c8652
authored
2024-06-06 17:31:46 +0530
by
Ravindra Kanojiya
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
conflict merge
2 parents
b95b2a68
0c9229e2
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
179 additions
and
90 deletions
components/user/MyProfile.js
components/user/MyProfile.js
View file @
9f7c865
import
{
Field
,
Formik
}
from
"formik"
;
import
Image
from
"next/image"
;
import
React
,
{
Fragment
,
useEffect
,
useRef
,
useState
}
from
"react"
;
import
{
Button
,
Form
,
Table
}
from
"react-bootstrap"
;
import
{
Field
,
Formik
}
from
'formik'
;
import
Image
from
'next/image'
;
import
React
,
{
Fragment
,
useEffect
,
useRef
,
useState
}
from
'react'
;
import
{
Button
,
Form
,
Table
}
from
'react-bootstrap'
;
import
*
as
Yup
from
"yup"
;
import
{
renderImage
}
from
"../../services/imageHandling"
;
import
{
renderImage
}
from
'../../services/imageHandling'
;
import
{
useSelector
}
from
'react-redux'
;
const
MyProfile
=
()
=>
{
let
formikUploadImage
;
const
[
readOnly
,
setReadOnly
]
=
useState
(
true
);
const
{
endUser
}
=
useSelector
(
state
=>
state
.
endUser
);
console
.
log
(
"users info"
,
endUser
);
const
profileValidationSchema
=
Yup
.
object
().
shape
({
first_name
:
Yup
.
string
().
required
(
"First Name is Required"
),
last_name
:
Yup
.
string
().
required
(
"Last Name is Required"
),
email
:
Yup
.
string
().
required
(
"Email Id is Required"
).
email
(
"Please Enter An Valid Email Id"
),
country_code
:
Yup
.
string
().
required
(
"Country Code is Required"
),
first_name
:
Yup
.
string
()
.
required
(
"First Name is Required"
),
last_name
:
Yup
.
string
()
.
required
(
"Last Name is Required"
),
email
:
Yup
.
string
()
.
required
(
"Email Id is Required"
)
.
email
(
"Please Enter An Valid Email Id"
),
country_code
:
Yup
.
string
()
.
required
(
"Country Code is Required"
),
mobile
:
Yup
.
string
()
.
required
(
"Mobile Number is Required"
)
.
matches
(
/^
[
0-9
\s]
+$/
,
"Please Enter Correct Mobile No."
),
...
...
@@ -23,12 +30,12 @@ const MyProfile = () => {
const
addressesValidationSchema
=
Yup
.
object
().
shape
({
addresses
:
Yup
.
array
().
of
(
Yup
.
object
().
shape
({
pincode
:
Yup
.
string
().
required
(
"Pincode is required"
),
country
:
Yup
.
string
().
required
(
"Country is required"
),
state
:
Yup
.
string
().
required
(
"State is required"
),
city
:
Yup
.
string
().
required
(
"City is required"
),
addressLine1
:
Yup
.
string
().
required
(
"Address Line1 is required"
),
addressLine2
:
Yup
.
string
().
required
(
"Adrress Line2 is required"
)
pincode
:
Yup
.
string
().
required
(
'Pincode is required'
),
country
:
Yup
.
string
().
required
(
'Country is required'
),
state
:
Yup
.
string
().
required
(
'State is required'
),
city
:
Yup
.
string
().
required
(
'City is required'
),
addressLine1
:
Yup
.
string
().
required
(
'Address Line1 is required'
),
addressLine2
:
Yup
.
string
().
required
(
'Adrress Line2 is required'
)
})
)
});
...
...
@@ -40,25 +47,25 @@ const MyProfile = () => {
country_code
:
"+1 (406)"
,
mobile
:
"785-9909"
,
password
:
"*********"
};
}
// Ref for the first input field
const
firstFieldRef
=
useRef
(
null
);
// Effect to focus on the first field when entering edit mode
useEffect
(()
=>
{
console
.
log
(
"firstFieldRef"
,
readOnly
,
firstFieldRef
.
current
);
console
.
log
(
"firstFieldRef"
,
readOnly
,
firstFieldRef
.
current
)
if
(
!
readOnly
&&
firstFieldRef
.
current
)
{
firstFieldRef
.
current
.
focus
();
}
},
[
readOnly
]);
const
handleProfileUploadChange
=
event
=>
{
console
.
log
(
event
);
console
.
log
(
event
?.
currentTarget
?.
files
[
0
]);
const
handleProfileUploadChange
=
(
event
)
=>
{
console
.
log
(
event
)
console
.
log
(
event
?.
currentTarget
?.
files
[
0
])
formikUploadImage
.
setFieldValue
(
"profile_image"
,
event
.
currentTarget
.
files
[
0
]);
formikUploadImage
.
submitForm
();
};
formikUploadImage
.
submitForm
()
}
return
(
<
Fragment
>
...
...
@@ -66,11 +73,11 @@ const MyProfile = () => {
<
div
className
=
"row"
>
<
div
className
=
"col-12 col-lg-12"
>
<
div
className
=
"form-container content-wraaper"
>
<
div
className
=
""
>
<
div
className
=
"bg-white border-div"
>
<
div
className
=
'px-5'
>
<
h2
>
My
Profile
<
/h2
>
<
Table
className
=
"abc"
>
{
/* <Table className='abc'>
<thead>
<tr>
<th>1</th>
...
...
@@ -80,36 +87,35 @@ const MyProfile = () => {
</tr>
</thead>
<tbody>
<
tr
className
=
"main"
>
<tr className='main'
>
<td rowSpan={3}>1</td>
</tr>
<
tr
className
=
"sub1"
>
<tr className='sub1'
>
<td>11</td>
<td>22</td>
<td>33</td>
</tr>
<
tr
className
=
"sub2"
>
<tr className='sub2'
>
<td>11</td>
<td>22</td>
<td>33</td>
</tr>
<
tr
className
=
"main"
>
<tr className='main'
>
<td rowSpan={3}>1</td>
</tr>
<
tr
className
=
"sub"
>
<tr className='sub'
>
<td>11</td>
<td>22</td>
<td>33</td>
</tr>
<
tr
className
=
"sub"
>
<tr className='sub'
>
<td>11</td>
<td>22</td>
<td>33</td>
</tr>
</tbody>
<
/Table
>
<
/div
>
</Table> */
}
<
div
className
=
"bg-white border-div"
>
<
Formik
initialValues
=
{{
profile_image
:
null
}}
...
...
@@ -118,7 +124,7 @@ const MyProfile = () => {
})}
enableReinitialize
=
{
true
}
onSubmit
=
{
values
=>
{
console
.
log
(
"profile image"
,
values
);
console
.
log
(
"profile image"
,
values
)
// onSubmit: async (values, { setSubmitting }) => {
// setSubmitting(true);
...
...
@@ -150,17 +156,19 @@ const MyProfile = () => {
onSubmit
=
{
e
=>
{
e
.
preventDefault
();
handleSubmit
();
console
.
log
(
errors
);
console
.
log
(
errors
)
}}
>
<
div
className
=
"row align-items-center justify-content-between"
>
<
div
className
=
"col-lg-6
d-flex align-items-center"
>
<
div
className
=
"col-lg-12
d-flex align-items-center"
>
<
span
className
=
"image-container me-4"
>
<
Image
layout
=
"fill"
alt
=
""
src
=
"/images/user/user-big.jpg"
className
=
"image"
/>
<
/span
>
<
p
className
=
"username"
>
John
Doe
<
/p
>
<
p
className
=
"username"
>
{
endUser
?.
attributes
?.
name
}
<
/p
>
<
/div
>
<
div
className
=
"col-lg-4"
>
{
/*
<div className="col-lg-4">
<label className="uploadProfileImage" htmlFor="file-upload">
<p className="mb-0">Upload Profile Photo</p>
<Image alt="" src="/images/user/icon-upload.svg" width="24" height="24" className="pb-1" />
...
...
@@ -177,8 +185,8 @@ const MyProfile = () => {
target.value = "";
}}
/>
{
errors
.
profile_image
&&
touched
.
profile_image
&&
<
span
className
=
"form-error"
>
{
errors
.
profile_image
}
<
/span>
}
<
/div
>
{errors.profile_image && touched.profile_image && (<span className="form-error">{errors.profile_image}</span>)
}
</div> */
}
<
/div
>
<
/Form
>
)}
...
...
@@ -190,7 +198,7 @@ const MyProfile = () => {
validationSchema
=
{
profileValidationSchema
}
enableReinitialize
=
{
true
}
onSubmit
=
{
values
=>
{
console
.
log
(
"profile personal details"
,
values
);
console
.
log
(
"profile personal details"
,
values
)
}}
>
{({
values
,
errors
,
touched
,
handleChange
,
handleBlur
,
handleSubmit
})
=>
(
...
...
@@ -201,55 +209,81 @@ const MyProfile = () => {
}}
>
<>
<
div
className
=
"d-flex justify-content-between mb-4 align-items-center
"
>
<
div
className
=
"d-flex justify-content-between mb-4
"
>
<
h2
className
=
"mb-0"
>
Personal
Information
<
/h2
>
{
/* onClick={() => setReadOnly(prevState => !prevState)} */
}
{
readOnly
&&
(
{
/*
{readOnly && (
<div className="btn-edit">
<span className="me-3">Edit</span>
<
span
className
=
"image-container"
>
<
Image
className
=
"image img-fluid"
layout
=
"fill"
alt
=
""
src
=
"/images/icons/edit-icon.svg"
/>
<
/span
>
<i className="fa fa-edit"></i>
</div>
)
}
)} */
}
<
/div
>
<
div
className
=
"row"
>
<
div
className
=
"col-12 col-lg-5"
>
<
div
className
=
"input-group"
>
<
label
>
Your
First
Name
<
/label
>
<
label
>
Your
Full
Name
<
/label
>
<
Field
type
=
"text"
name
=
"first_name"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
values
.
first_
name
}
value
=
{
endUser
?.
attributes
?.
name
}
readOnly
=
{
readOnly
}
innerRef
=
{
firstFieldRef
}
/
>
{
errors
.
first_name
&&
touched
.
first_name
&&
<
span
className
=
"form-error"
>
{
errors
.
first_name
}
<
/span>
}
{
/* {errors.first_name && touched.first_name && (<span className="form-error">{errors.first_name}</span>)} */
}
<
/div
>
<
/div
>
<
div
className
=
"col-12 offset-lg-1
col-lg-5"
>
<
div
className
=
"col-12
col-lg-5"
>
<
div
className
=
"input-group"
>
<
label
>
Your
Last
Name
<
/label
>
<
Field
type
=
"text"
name
=
"last_name"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
values
.
last_name
}
readOnly
=
{
readOnly
}
/
>
{
errors
.
last_name
&&
touched
.
last_name
&&
<
span
className
=
"form-error"
>
{
errors
.
last_name
}
<
/span>
}
<
label
>
Email
Id
<
/label
>
<
Field
type
=
"text"
name
=
"email"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
endUser
?.
attributes
?.
email
}
readOnly
=
{
readOnly
}
/
>
{
/* {errors.email && touched.email && (<span className="form-error">{errors.email}</span>)} */
}
<
/div
>
<
/div
>
{
/* <div className="col-12 offset-lg-1 col-lg-5">
<div className="input-group">
<label>Your Last Name</label>
<Field
type="text"
name="last_name"
onChange={handleChange}
onBlur={handleBlur}
value={values.last_name}
readOnly={readOnly}
/>
{errors.last_name && touched.last_name && (<span className="form-error">{errors.last_name}</span>)}
</div>
</div> */
}
<
/div
>
<
div
className
=
"row"
>
<
div
className
=
"col-12 col-lg-5"
>
{
/*
<div className="col-12 col-lg-5">
<div className="input-group">
<label>Email Id</label>
<
Field
type
=
"text"
name
=
"email"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
values
.
email
}
readOnly
=
{
readOnly
}
/
>
{
errors
.
email
&&
touched
.
email
&&
<
span
className
=
"form-error"
>
{
errors
.
email
}
<
/span>
}
<
/div
>
<Field
type="text"
name="email"
onChange={handleChange}
onBlur={handleBlur}
value={values.email}
readOnly={readOnly}
/>
{errors.email && touched.email && (<span className="form-error">{errors.email}</span>)}
</div>
<
div
className
=
"col-12 offset-lg-1 col-lg-5"
>
</div> */
}
<
div
className
=
"col-12 col-lg-5"
>
<
div
className
=
"input-group"
>
<
label
>
Mobile
Number
<
/label
>
<
div
className
=
"contact-number"
>
{
readOnly
&&
(
{
/*
{readOnly && (
<Field
type="text"
name="country_code"
...
...
@@ -259,46 +293,70 @@ const MyProfile = () => {
readOnly={readOnly}
style={{ width: "80px" }}
/>
)
}
)} */
}
{
!
readOnly
&&
(
<
select
id
=
"country_code"
name
=
"country_code"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
style
=
{{
width
:
"80px"
}}
>
<
select
id
=
"country_code"
name
=
"country_code"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
style
=
{{
width
:
"80px"
}}
>
<
option
value
=
"+91"
>+
91
<
/option
>
<
option
value
=
"+44"
>+
44
<
/option
>
<
/select
>
)}
<
Field
type
=
"text"
name
=
"mobile"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
values
.
mobile
}
readOnly
=
{
readOnly
}
/
>
<
Field
className
=
'm-0'
type
=
"text"
name
=
"mobile"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
endUser
?.
attributes
?.
phone
}
readOnly
=
{
readOnly
}
/
>
<
/div
>
{
errors
.
mobile
&&
touched
.
mobile
&&
<
span
className
=
"form-error"
>
{
errors
.
mobile
}
<
/span>
}
{
/* {errors.mobile && touched.mobile && (<span className="form-error">{errors.mobile}</span>)} */
}
<
/div
>
<
/div
>
<
/div
>
<
div
className
=
"row"
>
{
/*
<div className="row">
<div className="col-12 col-lg-5">
<div className="input-group">
<label>Current Password</label>
<
input
type
=
"text"
name
=
"password"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
values
.
password
}
readOnly
=
{
readOnly
}
disabled
=
{
true
}
/
>
<
/div
>
<input
type="text"
name="password"
onChange={handleChange}
onBlur={handleBlur}
value={values.password}
readOnly={readOnly}
disabled={true}
/>
</div>
</div>
</div> */
}
<
/
>
<
/Form
>
)}
<
/Formik
>
<
/div
>
<
div
className
=
"bg-white border-div"
>
{
/* <div className="bg-white border-div">
<Formik
initialValues={{
addresses: [
{
pincode
:
""
pincode: "",
}
]
}}
validationSchema={addressesValidationSchema}
// enableReinitialize={true}
onSubmit={values => {
console
.
log
(
"profile address details"
,
values
);
console.log("profile address details", values)
}}
>
{({ values, errors, touched, handleChange, handleBlur, handleSubmit }) => (
...
...
@@ -310,30 +368,39 @@ const MyProfile = () => {
>
<>
<div className="d-flex justify-content-between mb-4">
<
h2
className
=
"mb-0"
>
Address
<
/h2
>
<h2 className='mb-0'
>Address</h2>
<div className="btn-edit">
<span className="me-3">Add</span>
<
span
className
=
"image-container"
>
<
Image
className
=
"image img-fluid"
layout
=
"fill"
alt
=
""
src
=
"/images/icons/add-icon.svg"
/>
<
/span
>
<i className="fa fa-plus"></i>
</div>
</div>
<div className="row">
<div className="col-12 col-lg-5">
<div className="input-group">
<label>Pincode</label>
<
input
type
=
"text"
name
=
"pincode"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
values
.
pincode
}
/
>
{
errors
.
pincode
&&
touched
.
pincode
&&
<
span
className
=
"form-error"
>
{
errors
.
pincode
}
<
/span>
}
<input
type="text"
name="pincode"
onChange={handleChange}
onBlur={handleBlur}
value={values.pincode}
/>
{errors.pincode && touched.pincode && (<span className="form-error">{errors.pincode}</span>)}
</div>
</div>
<div className="col-12 offset-lg-1 col-lg-5">
<div className="input-group">
<label>Country</label>
<
select
id
=
"country"
name
=
"country"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
>
<select
id="country"
name="country"
onChange={handleChange}
onBlur={handleBlur}
>
<option value="India">India</option>
<option value="America">America</option>
</select>
{
errors
.
country
&&
touched
.
country
&&
<
span
className
=
"form-error"
>
{
errors
.
country
}
<
/span>
}
{errors.country && touched.country && (<span className="form-error">{errors.country}</span>)
}
</div>
</div>
</div>
...
...
@@ -341,21 +408,31 @@ const MyProfile = () => {
<div className="col-12 col-lg-5">
<div className="input-group">
<label>State</label>
<
select
id
=
"state"
name
=
"state"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
>
<select
id="state"
name="state"
onChange={handleChange}
onBlur={handleBlur}
>
<option value="India">India</option>
<option value="America">America</option>
</select>
{
errors
.
state
&&
touched
.
state
&&
<
span
className
=
"form-error"
>
{
errors
.
state
}
<
/span>
}
{errors.state && touched.state && (<span className="form-error">{errors.state}</span>)
}
</div>
</div>
<div className="col-12 offset-lg-1 col-lg-5">
<div className="input-group">
<label>City</label>
<
select
id
=
"city"
name
=
"city"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
>
<select
id="city"
name="city"
onChange={handleChange}
onBlur={handleBlur}
>
<option value="India">India</option>
<option value="America">America</option>
</select>
{
errors
.
city
&&
touched
.
city
&&
<
span
className
=
"form-error"
>
{
errors
.
city
}
<
/span>
}
{errors.city && touched.city && (<span className="form-error">{errors.city}</span>)
}
</div>
</div>
</div>
...
...
@@ -363,15 +440,27 @@ const MyProfile = () => {
<div className="col-12 col-lg-5">
<div className="input-group">
<label>Address Line 1</label>
<
input
type
=
"text"
name
=
"addressLine1"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
values
.
addressLine1
}
/
>
{
errors
.
addressLine1
&&
touched
.
addressLine1
&&
<
span
className
=
"form-error"
>
{
errors
.
addressLine1
}
<
/span>
}
<input
type="text"
name="addressLine1"
onChange={handleChange}
onBlur={handleBlur}
value={values.addressLine1}
/>
{errors.addressLine1 && touched.addressLine1 && (<span className="form-error">{errors.addressLine1}</span>)}
</div>
</div>
<div className="col-12 offset-lg-1 col-lg-5">
<div className="input-group">
<label>Address Line 2</label>
<
input
type
=
"text"
name
=
"addressLine2"
onChange
=
{
handleChange
}
onBlur
=
{
handleBlur
}
value
=
{
values
.
addressLine2
}
/
>
{
errors
.
addressLine2
&&
touched
.
addressLine2
&&
<
span
className
=
"form-error"
>
{
errors
.
addressLine2
}
<
/span>
}
<input
type="text"
name="addressLine2"
onChange={handleChange}
onBlur={handleBlur}
value={values.addressLine2}
/>
{errors.addressLine2 && touched.addressLine2 && (<span className="form-error">{errors.addressLine2}</span>)}
</div>
</div>
</div>
...
...
@@ -379,14 +468,14 @@ const MyProfile = () => {
</Form>
)}
</Formik>
<
/div
>
</div> */
}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/Fragment
>
);
}
;
)
}
export
default
MyProfile
;
\ No newline at end of file
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment