Skip to content
This repository was archived by the owner on Sep 20, 2025. It is now read-only.

Commit 2e7d154

Browse files
committed
Design delete address modal screen
1 parent 5df356f commit 2e7d154

File tree

4 files changed

+125
-10
lines changed

4 files changed

+125
-10
lines changed

frontend/src/components/pages/adminDashboard/products/DeleteProductModal.jsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@ const customStyles = {
1717
},
1818
}
1919

20+
const defaultModalIsOpenValue = false
2021
const defaultChoiceValue = "0"
2122

2223
export default function DeleteProductModal() {
23-
const [modalIsOpen, setIsOpen] = React.useState(false)
24+
const [modalIsOpen, setModalIsOpen] = useState(
25+
defaultModalIsOpenValue
26+
)
2427
const dispatch = useDispatch()
2528
const state = useSelector(state => ({
2629
adminProduct: state.adminProduct,
@@ -34,25 +37,25 @@ export default function DeleteProductModal() {
3437
false === state.adminDeleteProduct.loading &&
3538
true === state.adminDeleteProduct.data
3639
) {
37-
setIsOpen(false)
40+
setModalIsOpen(false)
3841
navigate("/admin/products")
3942
}
4043
}, [state.adminDeleteProduct])
4144

4245
function openModal() {
43-
setIsOpen(true)
46+
setModalIsOpen(true)
4447
}
4548

4649
function closeModal() {
4750
setChoice(defaultChoiceValue)
48-
setIsOpen(false)
51+
setModalIsOpen(false)
4952
}
5053

5154
function handleSubmit(e) {
5255
e.preventDefault()
5356
setChoice(defaultChoiceValue)
5457
if ("0" === choice) {
55-
setIsOpen(false)
58+
setModalIsOpen(false)
5659
} else {
5760
dispatch(deleteAdminProduct(
5861
state.adminProduct.data.slug,
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import React, { useState, } from "react"
2+
import Modal from "react-modal"
3+
4+
import "./DeleteDeliveryAddressModal.scss"
5+
6+
const customStyles = {
7+
content: {
8+
top: "46%",
9+
left: "50%",
10+
right: "auto",
11+
bottom: "auto",
12+
marginRight: "-50%",
13+
transform: "translate(-50%, -50%)",
14+
},
15+
}
16+
17+
const defaultModalIsOpenValue = false
18+
const defaultChoiceValue = "0"
19+
20+
export default function DeleteDeliveryAddressModal({
21+
onSuccess,
22+
data,
23+
}) {
24+
const [modalIsOpen, setModalIsOpen] = React.useState(
25+
defaultModalIsOpenValue
26+
)
27+
const [choice, setChoice] = useState(defaultChoiceValue)
28+
29+
function closeModal() {
30+
setChoice(defaultChoiceValue)
31+
setModalIsOpen(false)
32+
}
33+
34+
function handleSubmit(e) {
35+
e.preventDefault()
36+
setChoice(defaultChoiceValue)
37+
if ("0" === choice) {
38+
setModalIsOpen(false)
39+
} else {
40+
onSuccess()
41+
}
42+
}
43+
44+
function handleChoiceChange(e) {
45+
setChoice(e.target.value)
46+
}
47+
48+
function openModal() {
49+
setModalIsOpen(true)
50+
}
51+
52+
return (
53+
<>
54+
<button
55+
className="btn btn-danger"
56+
onClick={openModal}
57+
>
58+
Delete
59+
</button>
60+
<Modal
61+
isOpen={modalIsOpen}
62+
onRequestClose={closeModal}
63+
style={customStyles}
64+
contentLabel="Delete User Address Modal"
65+
>
66+
<div className="delete-user-address-modal">
67+
<h2>
68+
Are you sure you want to delete&nbsp;
69+
{data.addressLine1}, {data.zipCode}?
70+
</h2>
71+
<form
72+
className="delete-user-address-form"
73+
onSubmit={handleSubmit}
74+
>
75+
<select
76+
name="option"
77+
className="form-control admin-delete-product-option-select-input"
78+
value={choice}
79+
onChange={handleChoiceChange}
80+
>
81+
<option value="0">No</option>
82+
<option value="1">Yes</option>
83+
</select>
84+
<input
85+
type="submit"
86+
className="btn btn-success"
87+
/>
88+
<button
89+
onClick={closeModal}
90+
className="btn btn-default"
91+
>
92+
Close
93+
</button>
94+
</form>
95+
</div>
96+
</Modal>
97+
</>
98+
)
99+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.delete-user-address-form * {
2+
display: inline-block;
3+
}
4+
5+
.delete-user-address-form {
6+
display: flex;
7+
align-items: center;
8+
justify-content: center;
9+
}

frontend/src/components/pages/deliveryAddresses/DeliveryAddressesComponent.jsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useEffect, } from "react"
22
import { Helmet, } from "react-helmet"
33
import { useSelector, useDispatch } from "react-redux"
44
import { getUserAddresses } from "../../../redux/actions/userAddressesActions"
5+
import DeleteDeliveryAddressModal from "./DeleteDeliveryAddressModal"
56

67
import "./DeliveryAddressesComponent.scss"
78

@@ -15,6 +16,10 @@ export default function DeliveryAddressesComponent() {
1516
dispatch(getUserAddresses())
1617
}, [])
1718

19+
const handleDeleteAddress = () => {
20+
21+
}
22+
1823
if (state.userAddresses.loading) {
1924
return (
2025
<div className="container delivery-addresses-container text-center">
@@ -61,11 +66,10 @@ export default function DeliveryAddressesComponent() {
6166
>
6267
Edit
6368
</button>
64-
<button
65-
className="btn btn-danger"
66-
>
67-
Delete
68-
</button>
69+
<DeleteDeliveryAddressModal
70+
onSuccess={handleDeleteAddress}
71+
data={address}
72+
/>
6973
</div>
7074
</div>
7175
</div>

0 commit comments

Comments
 (0)