contentoh-components-library 21.3.66 → 21.3.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.development +0 -2
- package/dist/assets/fonts/roboto/LICENSE.txt +202 -0
- package/dist/components/atoms/ButtonV2/styles.js +1 -1
- package/dist/components/atoms/InputFormatter/styles.js +1 -1
- package/dist/components/molecules/CarouselImagesLogin/index.js +1 -1
- package/dist/components/molecules/HeaderTop/index.js +11 -68
- package/dist/components/molecules/TagAndInput/index.js +1 -1
- package/dist/components/organisms/Chat/Chat.stories.js +1 -21
- package/dist/components/organisms/Chat/ContainerItems/index.js +3 -19
- package/dist/components/organisms/Chat/ContainerItems/styles.js +1 -1
- package/dist/components/organisms/Chat/ContentChat/index.js +191 -343
- package/dist/components/organisms/Chat/Footer/index.js +39 -48
- package/dist/components/organisms/Chat/index.js +3 -48
- package/dist/components/organisms/FullProductNameHeader/index.js +2 -2
- package/dist/components/organisms/Modal/styles.js +1 -1
- package/dist/components/organisms/SideModal/index.js +0 -11
- package/dist/components/organisms/SideModal/styles.js +1 -1
- package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +127 -172
- package/dist/components/pages/ProviderProductEdition/index.js +175 -188
- package/dist/components/pages/ProviderProductEdition/styles.js +1 -1
- package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +28 -40
- package/dist/components/pages/RetailerProductEdition/index.js +273 -265
- package/dist/components/pages/RetailerProductEdition/styles.js +1 -1
- package/dist/components/pages/RetailerProductEdition/utils.js +2 -61
- package/dist/index.js +0 -13
- package/package.json +1 -1
- package/src/components/atoms/ButtonV2/styles.js +1 -1
- package/src/components/atoms/InputFormatter/styles.js +1 -2
- package/src/components/molecules/CarouselImagesLogin/index.js +1 -1
- package/src/components/molecules/HeaderTop/index.js +6 -52
- package/src/components/molecules/TagAndInput/index.js +8 -10
- package/src/components/organisms/Chat/Chat.stories.js +0 -21
- package/src/components/organisms/Chat/ContainerItems/index.js +2 -18
- package/src/components/organisms/Chat/ContainerItems/styles.js +2 -10
- package/src/components/organisms/Chat/ContentChat/index.js +6 -81
- package/src/components/organisms/Chat/Footer/index.js +0 -11
- package/src/components/organisms/Chat/index.js +3 -47
- package/src/components/organisms/FullProductNameHeader/index.js +1 -1
- package/src/components/organisms/Modal/styles.js +1 -4
- package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +130 -177
- package/src/components/pages/ProviderProductEdition/index.js +129 -132
- package/src/components/pages/ProviderProductEdition/styles.js +1 -5
- package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +26 -38
- package/src/components/pages/RetailerProductEdition/index.js +135 -109
- package/src/components/pages/RetailerProductEdition/styles.js +0 -4
- package/src/components/pages/RetailerProductEdition/utils.js +0 -37
- package/src/index.js +0 -1
- package/src/components/organisms/SideModal/SideModal.stories.js +0 -23
- package/src/components/organisms/SideModal/index.js +0 -50
- package/src/components/organisms/SideModal/styles.js +0 -30
|
@@ -24,20 +24,15 @@ import descriptionSent from "../../../assets/images/modalsSVGs/descriptionSent.s
|
|
|
24
24
|
import imagesSent from "../../../assets/images/modalsSVGs/uploadingImages.svg";
|
|
25
25
|
import { TagAndInput } from "../../molecules/TagAndInput/index";
|
|
26
26
|
import { Button } from "../../atoms/GeneralButton";
|
|
27
|
+
import { Commentary } from "../../atoms/Commentary";
|
|
27
28
|
import { GenericModal } from "../../atoms/GenericModal";
|
|
28
29
|
import { ScreenHeader } from "../../atoms/ScreenHeader";
|
|
29
30
|
import { Loading } from "../../atoms/Loading";
|
|
30
31
|
import succes from "../../../assets/images/genericModal/genericModalCheck.svg";
|
|
32
|
+
import errorModal from "../../../assets/images/genericModal/errorModal.svg";
|
|
31
33
|
import { VersionSelector } from "../../organisms/VersionSelector";
|
|
32
34
|
import { useCloseModal } from "../../../global-files/customHooks";
|
|
33
|
-
import {
|
|
34
|
-
getAuditVersion,
|
|
35
|
-
getInputsData,
|
|
36
|
-
createMessage,
|
|
37
|
-
sendMessage,
|
|
38
|
-
} from "./utils";
|
|
39
|
-
import { Modal } from "../../organisms/Modal";
|
|
40
|
-
import { ButtonV2 } from "../../atoms/ButtonV2";
|
|
35
|
+
import { getAuditVersion, getInputsData } from "./utils";
|
|
41
36
|
|
|
42
37
|
const reducerImages = (state, action) => {
|
|
43
38
|
let { values, attrForImgs, inputsByRetailer } = state;
|
|
@@ -137,7 +132,6 @@ export const RetailerProductEdition = ({
|
|
|
137
132
|
const [datasheets, setDatasheets] = useState([]);
|
|
138
133
|
const [images, setImages] = useReducer(reducerImages, {});
|
|
139
134
|
const [showModal, setShowModal] = useState(false);
|
|
140
|
-
const [showRejectModal, setShowRejectModal] = useState(false);
|
|
141
135
|
const { getRootProps, getInputProps } = useDropzone({
|
|
142
136
|
accept: "image/*",
|
|
143
137
|
noKeyboard: true,
|
|
@@ -224,7 +218,6 @@ export const RetailerProductEdition = ({
|
|
|
224
218
|
const [auditDescriptions, setAuditDescriptions] = useState([]);
|
|
225
219
|
const [auditImages, setAuditImages] = useState([]);
|
|
226
220
|
const [compare, setCompare] = useState(false);
|
|
227
|
-
const [valRejAll, setValRejAll] = useState(false);
|
|
228
221
|
|
|
229
222
|
useEffect(async () => {
|
|
230
223
|
const { id_article } = product?.article || {};
|
|
@@ -862,25 +855,6 @@ export const RetailerProductEdition = ({
|
|
|
862
855
|
const { newStatus, newOrderStatus, newArticleStatus } = JSON.parse(
|
|
863
856
|
res.data.body
|
|
864
857
|
);
|
|
865
|
-
const messageToChat = createMessage(
|
|
866
|
-
product.retailers,
|
|
867
|
-
activeRetailer.id,
|
|
868
|
-
evalStatus,
|
|
869
|
-
newStatus,
|
|
870
|
-
activeTab
|
|
871
|
-
);
|
|
872
|
-
|
|
873
|
-
const data = {
|
|
874
|
-
paramsBody: {
|
|
875
|
-
id: product.article.id_article,
|
|
876
|
-
version: version,
|
|
877
|
-
items: [{ type: "status", value: messageToChat }],
|
|
878
|
-
retailerId: activeRetailer.id,
|
|
879
|
-
status: product.status,
|
|
880
|
-
},
|
|
881
|
-
paramsHeader: { Authorization: token },
|
|
882
|
-
};
|
|
883
|
-
await sendMessage(data);
|
|
884
858
|
if (newOrderStatus) productTemp.status = newArticleStatus[articleId];
|
|
885
859
|
productTemp[`${concept}_status`] = newStatus;
|
|
886
860
|
await loadData();
|
|
@@ -923,19 +897,35 @@ export const RetailerProductEdition = ({
|
|
|
923
897
|
return product?.article[`id_auditor`] === user.id_user;
|
|
924
898
|
};
|
|
925
899
|
|
|
926
|
-
const createComment = async (
|
|
900
|
+
const createComment = async (e, body, tab) => {
|
|
901
|
+
let concept = "";
|
|
902
|
+
switch (activeTab) {
|
|
903
|
+
case "Ficha técnica":
|
|
904
|
+
concept = "datasheet";
|
|
905
|
+
break;
|
|
906
|
+
case "Imágenes":
|
|
907
|
+
concept = "images";
|
|
908
|
+
break;
|
|
909
|
+
|
|
910
|
+
default:
|
|
911
|
+
concept = "description";
|
|
912
|
+
break;
|
|
913
|
+
}
|
|
927
914
|
const data = {
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
status: product.status,
|
|
934
|
-
},
|
|
935
|
-
paramsHeader: { Authorization: token },
|
|
915
|
+
articleId: product?.article?.id_article,
|
|
916
|
+
orderId: product?.orderId,
|
|
917
|
+
message: body?.replace(/<.*?\/?>/gm, ""),
|
|
918
|
+
concept: concept,
|
|
919
|
+
version: version,
|
|
936
920
|
};
|
|
921
|
+
await axios.post(`${process.env.REACT_APP_COMMENTS_ENDPOINT}`, data, {
|
|
922
|
+
headers: {
|
|
923
|
+
Authorization: token,
|
|
924
|
+
},
|
|
925
|
+
});
|
|
926
|
+
await getComments(tab);
|
|
937
927
|
setMessage("");
|
|
938
|
-
|
|
928
|
+
setComponentsArray([]);
|
|
939
929
|
};
|
|
940
930
|
|
|
941
931
|
const getRequired = (services) => {
|
|
@@ -1217,8 +1207,6 @@ export const RetailerProductEdition = ({
|
|
|
1217
1207
|
break;
|
|
1218
1208
|
}
|
|
1219
1209
|
|
|
1220
|
-
const messages = [];
|
|
1221
|
-
|
|
1222
1210
|
servicesData?.forEach((ret) => {
|
|
1223
1211
|
if (conceptArray.includes(ret.service)) {
|
|
1224
1212
|
let data = {
|
|
@@ -1229,21 +1217,6 @@ export const RetailerProductEdition = ({
|
|
|
1229
1217
|
evalStatus: ret.status,
|
|
1230
1218
|
retailerId: ret.id_retailer,
|
|
1231
1219
|
};
|
|
1232
|
-
if (product[`${ret.service}_status`] !== "NS") {
|
|
1233
|
-
const message = createMessage(
|
|
1234
|
-
product.retailers,
|
|
1235
|
-
ret.id_retailer,
|
|
1236
|
-
product[`${ret.service}_status`],
|
|
1237
|
-
`${result}A`,
|
|
1238
|
-
ret.service
|
|
1239
|
-
);
|
|
1240
|
-
messages.push(
|
|
1241
|
-
createComment(
|
|
1242
|
-
[{ type: "status", value: message }],
|
|
1243
|
-
ret.id_retailer
|
|
1244
|
-
)
|
|
1245
|
-
);
|
|
1246
|
-
}
|
|
1247
1220
|
evaluationArray.push(
|
|
1248
1221
|
axios.put(`${process.env.REACT_APP_EVALUATION_ENDPOINT}`, data, {
|
|
1249
1222
|
headers: {
|
|
@@ -1253,19 +1226,19 @@ export const RetailerProductEdition = ({
|
|
|
1253
1226
|
);
|
|
1254
1227
|
}
|
|
1255
1228
|
});
|
|
1229
|
+
|
|
1256
1230
|
await Promise.all(evaluationArray);
|
|
1257
1231
|
|
|
1258
1232
|
const productTemp = product;
|
|
1259
1233
|
productTemp.status = `${result}A`;
|
|
1260
1234
|
productTemp.datasheet_status =
|
|
1261
|
-
productTemp.datasheet_status === "
|
|
1235
|
+
productTemp.datasheet_status === "NA" ? "NA" : `${result}A`;
|
|
1262
1236
|
productTemp.description_status =
|
|
1263
|
-
productTemp.description_status === "
|
|
1237
|
+
productTemp.description_status === "NA" ? "NA" : `${result}A`;
|
|
1264
1238
|
productTemp.images_status =
|
|
1265
|
-
productTemp.images_status === "
|
|
1239
|
+
productTemp.images_status === "NA" ? "NA" : `${result}A`;
|
|
1266
1240
|
sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
|
|
1267
1241
|
setProduct(productTemp);
|
|
1268
|
-
const messagesResponse = await Promise.all(messages);
|
|
1269
1242
|
|
|
1270
1243
|
await loadData();
|
|
1271
1244
|
} catch (error) {
|
|
@@ -1281,10 +1254,8 @@ export const RetailerProductEdition = ({
|
|
|
1281
1254
|
setCompare={setCompare}
|
|
1282
1255
|
isAuditor={[1, 6].includes(user.id_role)}
|
|
1283
1256
|
withChat={location?.state?.withChat}
|
|
1284
|
-
|
|
1285
|
-
productSelected={product}
|
|
1257
|
+
productSelected={productSelected}
|
|
1286
1258
|
token={token}
|
|
1287
|
-
activeRetailer={activeRetailer}
|
|
1288
1259
|
/>
|
|
1289
1260
|
<div className="data-container">
|
|
1290
1261
|
<div className="image-data-panel">
|
|
@@ -1324,7 +1295,36 @@ export const RetailerProductEdition = ({
|
|
|
1324
1295
|
sendToFacilitator("A");
|
|
1325
1296
|
}}
|
|
1326
1297
|
reject={() => {
|
|
1327
|
-
|
|
1298
|
+
sendToFacilitator("R");
|
|
1299
|
+
setMessage("Rechazado");
|
|
1300
|
+
setComponentsArray([
|
|
1301
|
+
<img src={errorModal} />,
|
|
1302
|
+
<ScreenHeader
|
|
1303
|
+
text={"Agrega tu comentarios para enviar el rechazo"}
|
|
1304
|
+
headerType={"input-name-header"}
|
|
1305
|
+
color={"white"}
|
|
1306
|
+
/>,
|
|
1307
|
+
<TagAndInput
|
|
1308
|
+
label={"Caja de Comentario"}
|
|
1309
|
+
inputType={"textarea"}
|
|
1310
|
+
inputId={"modal-commentary-box"}
|
|
1311
|
+
index={0}
|
|
1312
|
+
color={"white"}
|
|
1313
|
+
/>,
|
|
1314
|
+
<Button
|
|
1315
|
+
buttonType={"general-default-button"}
|
|
1316
|
+
label={"Enviar comentario"}
|
|
1317
|
+
onClick={(e) =>
|
|
1318
|
+
createComment(
|
|
1319
|
+
e,
|
|
1320
|
+
document.querySelector(
|
|
1321
|
+
"#modal-commentary-box .ql-container .ql-editor > p"
|
|
1322
|
+
).innerHTML,
|
|
1323
|
+
activeTab
|
|
1324
|
+
)
|
|
1325
|
+
}
|
|
1326
|
+
/>,
|
|
1327
|
+
]);
|
|
1328
1328
|
}}
|
|
1329
1329
|
showApproveRejectAll={
|
|
1330
1330
|
approveRejectAllButtons() && (auditorAssigned() || userAssigned())
|
|
@@ -1334,8 +1334,36 @@ export const RetailerProductEdition = ({
|
|
|
1334
1334
|
}
|
|
1335
1335
|
approveAll={() => validateAll("A")}
|
|
1336
1336
|
rejectAll={() => {
|
|
1337
|
-
|
|
1338
|
-
|
|
1337
|
+
validateAll("R");
|
|
1338
|
+
setMessage("Rechazado");
|
|
1339
|
+
setComponentsArray([
|
|
1340
|
+
<img src={errorModal} />,
|
|
1341
|
+
<ScreenHeader
|
|
1342
|
+
text={"Agrega tu comentarios para enviar el rechazo"}
|
|
1343
|
+
headerType={"input-name-header"}
|
|
1344
|
+
color={"white"}
|
|
1345
|
+
/>,
|
|
1346
|
+
<TagAndInput
|
|
1347
|
+
label={"Caja de Comentario"}
|
|
1348
|
+
inputType={"textarea"}
|
|
1349
|
+
inputId={"modal-commentary-box"}
|
|
1350
|
+
index={0}
|
|
1351
|
+
color={"white"}
|
|
1352
|
+
/>,
|
|
1353
|
+
<Button
|
|
1354
|
+
buttonType={"general-default-button"}
|
|
1355
|
+
label={"Enviar comentario"}
|
|
1356
|
+
onClick={(e) =>
|
|
1357
|
+
createComment(
|
|
1358
|
+
e,
|
|
1359
|
+
document.querySelector(
|
|
1360
|
+
"#modal-commentary-box .ql-container .ql-editor > p"
|
|
1361
|
+
).innerHTML,
|
|
1362
|
+
activeTab
|
|
1363
|
+
)
|
|
1364
|
+
}
|
|
1365
|
+
/>,
|
|
1366
|
+
]);
|
|
1339
1367
|
}}
|
|
1340
1368
|
/>
|
|
1341
1369
|
<FullTabsMenu
|
|
@@ -1456,6 +1484,47 @@ export const RetailerProductEdition = ({
|
|
|
1456
1484
|
{(userAssigned(activeTab) || auditorAssigned()) &&
|
|
1457
1485
|
product[`${getConcept(activeTab)}_status`] !== "NS" && (
|
|
1458
1486
|
<div className="commentary-box">
|
|
1487
|
+
{!comment ? (
|
|
1488
|
+
<div className="commentary">
|
|
1489
|
+
<TagAndInput
|
|
1490
|
+
label={"Caja de Comentario"}
|
|
1491
|
+
inputType={"textarea"}
|
|
1492
|
+
inputCols={80}
|
|
1493
|
+
inputRows={4}
|
|
1494
|
+
inputId={"commentary-box"}
|
|
1495
|
+
index={0}
|
|
1496
|
+
/>
|
|
1497
|
+
<div className="buttons-box">
|
|
1498
|
+
<Button
|
|
1499
|
+
buttonType={"general-transparent-button"}
|
|
1500
|
+
label={"Enviar comentario"}
|
|
1501
|
+
onClick={(e) =>
|
|
1502
|
+
createComment(
|
|
1503
|
+
e,
|
|
1504
|
+
document.querySelector(
|
|
1505
|
+
"#commentary-box .ql-container .ql-editor > p"
|
|
1506
|
+
).innerHTML,
|
|
1507
|
+
activeTab
|
|
1508
|
+
)
|
|
1509
|
+
}
|
|
1510
|
+
/>
|
|
1511
|
+
</div>
|
|
1512
|
+
</div>
|
|
1513
|
+
) : (
|
|
1514
|
+
<div className="feedback-box">
|
|
1515
|
+
<Commentary
|
|
1516
|
+
comment={comment?.message?.replace(/<.*?\/?>/gm, "")}
|
|
1517
|
+
reviewed={crossComment}
|
|
1518
|
+
/>
|
|
1519
|
+
<Button
|
|
1520
|
+
buttonType={"circular-button accept-button"}
|
|
1521
|
+
onClick={async () => {
|
|
1522
|
+
setCrossComment(true);
|
|
1523
|
+
commentRevised();
|
|
1524
|
+
}}
|
|
1525
|
+
/>
|
|
1526
|
+
</div>
|
|
1527
|
+
)}
|
|
1459
1528
|
{[7, 8].includes(user.id_role) && (
|
|
1460
1529
|
<Button
|
|
1461
1530
|
buttonType={
|
|
@@ -1513,49 +1582,6 @@ export const RetailerProductEdition = ({
|
|
|
1513
1582
|
jwt={token}
|
|
1514
1583
|
/>
|
|
1515
1584
|
)}
|
|
1516
|
-
{showRejectModal && (
|
|
1517
|
-
<Modal
|
|
1518
|
-
title={`Agregar mensaje de rechazo para ${activeTab?.toLowerCase()}`}
|
|
1519
|
-
show={showRejectModal}
|
|
1520
|
-
customComponent={
|
|
1521
|
-
<TagAndInput
|
|
1522
|
-
inputType={"textarea"}
|
|
1523
|
-
inputId={"modal-message-box"}
|
|
1524
|
-
index={0}
|
|
1525
|
-
color={"white"}
|
|
1526
|
-
/>
|
|
1527
|
-
}
|
|
1528
|
-
buttons={[
|
|
1529
|
-
<ButtonV2
|
|
1530
|
-
key={"btn-Cancelar"}
|
|
1531
|
-
type={"white"}
|
|
1532
|
-
label={"Cancelar"}
|
|
1533
|
-
size={12}
|
|
1534
|
-
onClick={() => {
|
|
1535
|
-
setShowRejectModal(false);
|
|
1536
|
-
}}
|
|
1537
|
-
/>,
|
|
1538
|
-
<ButtonV2
|
|
1539
|
-
key={"btn-Aceptar"}
|
|
1540
|
-
type={"pink"}
|
|
1541
|
-
label={"Aceptar"}
|
|
1542
|
-
size={12}
|
|
1543
|
-
onClick={async () => {
|
|
1544
|
-
const body = document.querySelector(
|
|
1545
|
-
"#modal-message-box .ql-container .ql-editor > p"
|
|
1546
|
-
).innerHTML;
|
|
1547
|
-
const messages = [
|
|
1548
|
-
{ type: "message", value: body?.replace(/<.*?\/?>/gm, "") },
|
|
1549
|
-
];
|
|
1550
|
-
await createComment(messages, activeRetailer.id);
|
|
1551
|
-
valRejAll ? validateAll("R") : sendToFacilitator("R");
|
|
1552
|
-
setMessage("Rechazado");
|
|
1553
|
-
setShowRejectModal(false);
|
|
1554
|
-
}}
|
|
1555
|
-
/>,
|
|
1556
|
-
]}
|
|
1557
|
-
/>
|
|
1558
|
-
)}
|
|
1559
1585
|
</Container>
|
|
1560
1586
|
);
|
|
1561
1587
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
|
-
import { fetchPOST } from "../../../global-files/handle_http";
|
|
3
2
|
|
|
4
3
|
export const getAuditVersion = async (articleId, setState, token) => {
|
|
5
4
|
const auditResponse = await axios.get(
|
|
@@ -33,39 +32,3 @@ export const getInputsData = (
|
|
|
33
32
|
setDescriptionState(descriptions);
|
|
34
33
|
}
|
|
35
34
|
};
|
|
36
|
-
|
|
37
|
-
export const translateService = (tab) => {
|
|
38
|
-
switch (tab) {
|
|
39
|
-
case "description":
|
|
40
|
-
case "Descripción":
|
|
41
|
-
return "Descripciones";
|
|
42
|
-
case "datasheet":
|
|
43
|
-
case "Ficha técnica":
|
|
44
|
-
return "Fichas técnicas";
|
|
45
|
-
case "images":
|
|
46
|
-
case "Imágenes":
|
|
47
|
-
return "Imágenes";
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export const createMessage = (
|
|
52
|
-
retailers,
|
|
53
|
-
idRetailer,
|
|
54
|
-
oldStatus,
|
|
55
|
-
newStatus,
|
|
56
|
-
service
|
|
57
|
-
) => {
|
|
58
|
-
const [retailer] = retailers?.filter((ret) => ret.id === idRetailer) || [];
|
|
59
|
-
return `${translateService(service)} de ${
|
|
60
|
-
retailer.name
|
|
61
|
-
} |${oldStatus}| a |${newStatus}`;
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
export const sendMessage = async (data) => {
|
|
65
|
-
const { paramsBody, paramsHeader } = data;
|
|
66
|
-
return fetchPOST(
|
|
67
|
-
process.env.REACT_APP_CREATE_MESSAGES,
|
|
68
|
-
paramsBody,
|
|
69
|
-
paramsHeader
|
|
70
|
-
);
|
|
71
|
-
};
|
package/src/index.js
CHANGED
|
@@ -79,7 +79,6 @@ export * from "./components/organisms/Modal/index";
|
|
|
79
79
|
export * from "./components/organisms/OrderDetail/index";
|
|
80
80
|
export * from "./components/organisms/RangeCalendar";
|
|
81
81
|
export * from "./components/organisms/TableResizable";
|
|
82
|
-
export * from "./components/organisms/SideModal/index";
|
|
83
82
|
|
|
84
83
|
//pages
|
|
85
84
|
export * from "./components/pages/ChangePasswordLogin";
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { SideModal } from ".";
|
|
2
|
-
import { ButtonV2 } from "../../atoms/ButtonV2";
|
|
3
|
-
|
|
4
|
-
export default {
|
|
5
|
-
title: "Components/organisms/SideModal",
|
|
6
|
-
component: SideModal,
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
const Template = (args) => <SideModal {...args} />;
|
|
10
|
-
|
|
11
|
-
export const DefaultSideModal = Template.bind({});
|
|
12
|
-
DefaultSideModal.args = {
|
|
13
|
-
show: false,
|
|
14
|
-
header: [
|
|
15
|
-
<div className="title-container">
|
|
16
|
-
<h2></h2>
|
|
17
|
-
</div>,
|
|
18
|
-
<ButtonV2 label="Ir al Checkout" />,
|
|
19
|
-
<ButtonV2 label="X" />,
|
|
20
|
-
],
|
|
21
|
-
body: <></>,
|
|
22
|
-
footer: <></>,
|
|
23
|
-
};
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { useRef } from "react";
|
|
2
|
-
import { Container } from "./styles";
|
|
3
|
-
import { useEffect } from "react";
|
|
4
|
-
import { PropaneSharp } from "@mui/icons-material";
|
|
5
|
-
|
|
6
|
-
export const SideModal = ({
|
|
7
|
-
header,
|
|
8
|
-
body,
|
|
9
|
-
footer,
|
|
10
|
-
show,
|
|
11
|
-
setShow,
|
|
12
|
-
id = "side-modal",
|
|
13
|
-
}) => {
|
|
14
|
-
const modal = useRef();
|
|
15
|
-
|
|
16
|
-
const closeModal = (e) => {
|
|
17
|
-
if (!e.target.closest(`#${id}`) && show) {
|
|
18
|
-
document.removeEventListener("click", closeModal, false);
|
|
19
|
-
modal?.current?.classList?.remove("shown");
|
|
20
|
-
setShow && setShow(false);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
if (show && modal.current) {
|
|
26
|
-
document.addEventListener("click", closeModal, false);
|
|
27
|
-
modal?.current?.classList?.add("shown");
|
|
28
|
-
}
|
|
29
|
-
}, [show]);
|
|
30
|
-
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
return () => {
|
|
33
|
-
document.removeEventListener("click", closeModal, false);
|
|
34
|
-
modal?.current?.classList?.remove("shown");
|
|
35
|
-
setShow && setShow(false);
|
|
36
|
-
};
|
|
37
|
-
}, []);
|
|
38
|
-
|
|
39
|
-
return (
|
|
40
|
-
show && (
|
|
41
|
-
<Container>
|
|
42
|
-
<div id={id} ref={modal} className="modal-container">
|
|
43
|
-
<div className="modal-header">{header}</div>
|
|
44
|
-
<div className="modal-body">{body}</div>
|
|
45
|
-
<div className="modal-footer">{footer}</div>
|
|
46
|
-
</div>
|
|
47
|
-
</Container>
|
|
48
|
-
)
|
|
49
|
-
);
|
|
50
|
-
};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import styled from "styled-components";
|
|
2
|
-
|
|
3
|
-
export const Container = styled.div`
|
|
4
|
-
width: 100vw;
|
|
5
|
-
height: 100vh;
|
|
6
|
-
position: fixed;
|
|
7
|
-
z-index: 9999999;
|
|
8
|
-
background-color: transparent;
|
|
9
|
-
top: 0;
|
|
10
|
-
left: 0;
|
|
11
|
-
|
|
12
|
-
.modal-container {
|
|
13
|
-
width: 600px;
|
|
14
|
-
height: 100%;
|
|
15
|
-
position: absolute;
|
|
16
|
-
right: -600px;
|
|
17
|
-
background-color: #fff;
|
|
18
|
-
display: flex;
|
|
19
|
-
flex-direction: column;
|
|
20
|
-
box-shadow: -0.5px 0px 5px #f0f0f0;
|
|
21
|
-
border: 1px solid #f0f0f0;
|
|
22
|
-
.modal-body {
|
|
23
|
-
flex: 1;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
&.shown {
|
|
27
|
-
right: 0;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
`;
|