contentoh-components-library 21.3.82 → 21.3.83
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 -5
- package/.env.production +0 -3
- package/dist/components/atoms/ButtonV2/styles.js +1 -1
- package/dist/components/atoms/Card/index.js +5 -46
- package/dist/components/atoms/Card/styles.js +1 -3
- package/dist/components/atoms/CheckBox/index.js +2 -4
- package/dist/components/atoms/GeneralInput/index.js +20 -24
- package/dist/components/atoms/InputFormatter/index.js +16 -14
- 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/TabsMenu/index.js +48 -22
- package/dist/components/molecules/TagAndInput/index.js +3 -1
- package/dist/components/organisms/Chat/Chat.stories.js +8 -27
- 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 +208 -359
- package/dist/components/organisms/Chat/Footer/index.js +39 -48
- package/dist/components/organisms/Chat/index.js +4 -49
- package/dist/components/organisms/FullProductNameHeader/index.js +2 -2
- package/dist/components/organisms/FullTabsMenu/index.js +12 -2
- package/dist/components/organisms/Modal/styles.js +1 -1
- package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +96 -171
- package/dist/components/pages/ProviderProductEdition/index.js +196 -189
- 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 +290 -262
- package/dist/components/pages/RetailerProductEdition/styles.js +1 -1
- package/dist/components/pages/RetailerProductEdition/utils.js +2 -61
- package/dist/global-files/handle_http.js +2 -3
- package/dist/index.js +12 -51
- package/package.json +1 -3
- package/src/components/atoms/ButtonV2/styles.js +1 -1
- package/src/components/atoms/Card/index.js +2 -35
- package/src/components/atoms/Card/styles.js +5 -41
- package/src/components/atoms/CheckBox/index.js +0 -2
- package/src/components/atoms/GeneralInput/index.js +21 -20
- package/src/components/atoms/InputFormatter/index.js +18 -14
- 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/TabsMenu/index.js +88 -65
- package/src/components/molecules/TagAndInput/index.js +12 -10
- package/src/components/organisms/Chat/Chat.stories.js +7 -27
- 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 +23 -97
- package/src/components/organisms/Chat/Footer/index.js +0 -11
- package/src/components/organisms/Chat/index.js +4 -46
- package/src/components/organisms/FullProductNameHeader/index.js +1 -1
- package/src/components/organisms/FullTabsMenu/index.js +16 -4
- package/src/components/organisms/Modal/styles.js +1 -4
- package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +98 -181
- package/src/components/pages/ProviderProductEdition/index.js +142 -134
- 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 +148 -111
- package/src/components/pages/RetailerProductEdition/styles.js +0 -4
- package/src/components/pages/RetailerProductEdition/utils.js +0 -37
- package/src/global-files/handle_http.js +1 -2
- package/src/index.js +0 -3
- package/src/components/molecules/StripeCardForm/StripeCardForm.stories.js +0 -13
- package/src/components/molecules/StripeCardForm/index.js +0 -42
- package/src/components/molecules/StripeCardForm/paymentForm.js +0 -124
- package/src/components/molecules/StripeCardForm/styles.js +0 -73
- package/src/components/molecules/StripeCardSelector/CardSelector.stories.js +0 -12
- package/src/components/molecules/StripeCardSelector/index.js +0 -44
- package/src/components/molecules/StripeCardSelector/styles.js +0 -4
- package/src/components/molecules/StripeCardSelector/utils.js +0 -17
- 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
|
@@ -2,103 +2,126 @@ import { Container } from "./styles";
|
|
|
2
2
|
import { TabSection } from "../../atoms/TabSection";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
4
|
|
|
5
|
+
|
|
5
6
|
import { Modal } from "../../organisms/Modal";
|
|
6
7
|
import { ButtonV2 } from "../../atoms/ButtonV2";
|
|
7
8
|
|
|
9
|
+
|
|
8
10
|
export const TabsMenu = ({
|
|
9
11
|
tabsSections = {},
|
|
10
12
|
setImagesSection,
|
|
11
13
|
setActiveTab,
|
|
12
14
|
activeTab,
|
|
15
|
+
desc,
|
|
16
|
+
setDesc,
|
|
17
|
+
fich,
|
|
18
|
+
setFich,
|
|
19
|
+
imag,
|
|
20
|
+
setImag,
|
|
13
21
|
updatedDescriptions,
|
|
14
22
|
updatedDatasheets,
|
|
15
|
-
|
|
23
|
+
selectedImages,
|
|
24
|
+
setUpdatedDescriptions,
|
|
25
|
+
setUpdatedDatasheets,
|
|
26
|
+
setSelectedImages
|
|
16
27
|
}) => {
|
|
17
28
|
const [sections, setSections] = useState(tabsSections);
|
|
18
29
|
|
|
19
|
-
|
|
20
|
-
const [
|
|
21
|
-
const [
|
|
22
|
-
const [
|
|
30
|
+
|
|
31
|
+
const [modal, setModal] = useState(false)
|
|
32
|
+
const [isFirstExecution, setIsFirstExecution] = useState(true)
|
|
33
|
+
const [detectaTab, setDetectaTab] = useState('')
|
|
34
|
+
const [cancelAccept, setCancelAccept] = useState('')
|
|
35
|
+
const [llave, setLlave] = useState('')
|
|
36
|
+
const [objeto, setObjeto] = useState()
|
|
37
|
+
|
|
23
38
|
|
|
24
39
|
const activeSection = (key, array = {}) => {
|
|
25
40
|
let tempArray = {};
|
|
26
41
|
setImagesSection(key === "Imágenes");
|
|
27
42
|
Object.keys(array).forEach((section) => {
|
|
28
43
|
tempArray[section] = section === key;
|
|
29
|
-
if (section === key)
|
|
44
|
+
if (section === key) {
|
|
45
|
+
setUpdatedDatasheets([])
|
|
46
|
+
setUpdatedDescriptions([])
|
|
47
|
+
setSelectedImages([])
|
|
48
|
+
setDesc([])
|
|
49
|
+
setFich([])
|
|
50
|
+
setImag([])
|
|
51
|
+
return setActiveTab(key)
|
|
52
|
+
};
|
|
30
53
|
});
|
|
31
54
|
setSections(tempArray);
|
|
32
55
|
};
|
|
33
56
|
|
|
34
|
-
|
|
35
|
-
if (
|
|
36
|
-
setCancelAccept(
|
|
37
|
-
setModal(false)
|
|
38
|
-
activeSection(llave, objeto)
|
|
39
|
-
} else if (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
},
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
if (cancelAccept==='Aceptar' & llave!==''){
|
|
59
|
+
setCancelAccept('')
|
|
60
|
+
setModal(false)
|
|
61
|
+
activeSection(llave, objeto)
|
|
62
|
+
} else if (cancelAccept==='Cancelar' & llave!=='') {
|
|
63
|
+
setModal(false)
|
|
64
|
+
setCancelAccept('')
|
|
65
|
+
}
|
|
66
|
+
},[cancelAccept])
|
|
44
67
|
|
|
45
|
-
|
|
68
|
+
function detectClickFunction (e,key,sections) {
|
|
46
69
|
const targetIsTheCurrentTab = e.target.innerHTML === activeTab;
|
|
47
70
|
const descriptionsWereUpdated = updatedDescriptions.length > 0;
|
|
48
71
|
const datasheetWereUpdated = updatedDatasheets.length > 0;
|
|
49
|
-
const imagesWereUpdated =
|
|
50
|
-
const dataWereUpdated =
|
|
51
|
-
|
|
72
|
+
const imagesWereUpdated = selectedImages.length > 0;
|
|
73
|
+
const dataWereUpdated = descriptionsWereUpdated || datasheetWereUpdated || imagesWereUpdated;
|
|
74
|
+
|
|
75
|
+
if (!targetIsTheCurrentTab && !dataWereUpdated ){
|
|
76
|
+
setLlave(key)
|
|
77
|
+
setObjeto(sections)
|
|
78
|
+
activeSection(key, sections)
|
|
79
|
+
}
|
|
80
|
+
else if(!targetIsTheCurrentTab && dataWereUpdated ){
|
|
81
|
+
setModal(true)
|
|
82
|
+
setLlave(key)
|
|
83
|
+
setObjeto(sections)
|
|
52
84
|
|
|
53
|
-
if (!targetIsTheCurrentTab && !dataWereUpdated) {
|
|
54
|
-
setLlave(key);
|
|
55
|
-
setObjeto(sections);
|
|
56
|
-
activeSection(key, sections);
|
|
57
|
-
} else if (!targetIsTheCurrentTab && dataWereUpdated) {
|
|
58
|
-
setModal(true);
|
|
59
|
-
setLlave(key);
|
|
60
|
-
setObjeto(sections);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
85
|
|
|
86
|
+
}
|
|
87
|
+
}
|
|
64
88
|
return (
|
|
65
89
|
<>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
)}
|
|
90
|
+
{activeTab && <Modal
|
|
91
|
+
show={modal}
|
|
92
|
+
title='Cambios sin Guardar'
|
|
93
|
+
message= 'Estás cambiando de vista y aun no guardas cambios ¿Estás seguro?'
|
|
94
|
+
buttons={ [
|
|
95
|
+
<ButtonV2
|
|
96
|
+
key={"btn-Cancelar"}
|
|
97
|
+
type={"white"}
|
|
98
|
+
label={"Cancelar"}
|
|
99
|
+
size={12}
|
|
100
|
+
onClick={(event) => setCancelAccept(event.target.textContent)}
|
|
101
|
+
/>,
|
|
102
|
+
<ButtonV2
|
|
103
|
+
key={"btn-Aceptar"}
|
|
104
|
+
type={"pink"}
|
|
105
|
+
label={"Aceptar"}
|
|
106
|
+
size={12}
|
|
107
|
+
onClick={(event) => setCancelAccept(event.target.textContent)}
|
|
108
|
+
/>,
|
|
109
|
+
]}
|
|
110
|
+
/>
|
|
111
|
+
}
|
|
89
112
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
113
|
+
<Container>
|
|
114
|
+
{Object.keys(sections).map((key, index) => (
|
|
115
|
+
<TabSection
|
|
116
|
+
key={index}
|
|
117
|
+
label={key}
|
|
118
|
+
active={sections[key]}
|
|
119
|
+
onClick={(e)=>{
|
|
120
|
+
detectClickFunction (e, key, sections)
|
|
121
|
+
}}
|
|
122
|
+
/>
|
|
123
|
+
))}
|
|
124
|
+
</Container>
|
|
102
125
|
</>
|
|
103
126
|
);
|
|
104
127
|
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Container } from "./styles";
|
|
2
2
|
import { ScreenHeader } from "../../atoms/ScreenHeader/index";
|
|
3
3
|
import { GeneralInput } from "../../atoms/GeneralInput/index";
|
|
4
|
+
import { useEffect } from "react";
|
|
5
|
+
import { useState } from "react";
|
|
4
6
|
|
|
5
7
|
export const TagAndInput = ({
|
|
6
8
|
inputType,
|
|
@@ -30,22 +32,21 @@ export const TagAndInput = ({
|
|
|
30
32
|
showTooltip,
|
|
31
33
|
auditClass,
|
|
32
34
|
}) => {
|
|
35
|
+
|
|
33
36
|
return (
|
|
34
37
|
<Container
|
|
35
38
|
inputType={inputType}
|
|
36
39
|
className={"input-container"}
|
|
37
40
|
key={`generalTagInput-${inputType}`}
|
|
38
41
|
>
|
|
39
|
-
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
</div>
|
|
48
|
-
)}
|
|
42
|
+
<div className="title-container">
|
|
43
|
+
<ScreenHeader
|
|
44
|
+
text={label}
|
|
45
|
+
headerType={"input-name-header"}
|
|
46
|
+
color={color}
|
|
47
|
+
/>
|
|
48
|
+
{showTooltip && <span className="tooltip">{label}</span>}
|
|
49
|
+
</div>
|
|
49
50
|
<GeneralInput
|
|
50
51
|
inputId={inputId}
|
|
51
52
|
inputType={inputType}
|
|
@@ -73,4 +74,5 @@ export const TagAndInput = ({
|
|
|
73
74
|
/>
|
|
74
75
|
</Container>
|
|
75
76
|
);
|
|
77
|
+
|
|
76
78
|
};
|
|
@@ -148,37 +148,17 @@ chatTicket_userTECH.args = {
|
|
|
148
148
|
chatType: "ticket",
|
|
149
149
|
chatContainerType: "fixed",
|
|
150
150
|
chatData: {
|
|
151
|
-
id:
|
|
152
|
-
ticketOwnerUserId:
|
|
153
|
-
|
|
151
|
+
id: 130,
|
|
152
|
+
ticketOwnerUserId: 194,
|
|
153
|
+
ticketCompany: undefined,
|
|
154
|
+
statusTicket: "PENDING",
|
|
154
155
|
currentUser: {
|
|
155
156
|
token:
|
|
156
|
-
"eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.
|
|
157
|
-
id:
|
|
158
|
-
companyId:
|
|
157
|
+
"eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJmNTkyN2Y4ZS1jYmY3LTQ5MjItOWUwOS1lNjllYzBiMjczMWEiLCJjb2duaXRvOmdyb3VwcyI6WyJ1c3VhcmlvX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjpmYWxzZSwiY29nbml0bzp1c2VybmFtZSI6ImY1OTI3ZjhlLWNiZjctNDkyMi05ZTA5LWU2OWVjMGIyNzMxYSIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiJlYTRlZmQ1Zi1mYTg4LTRjNDEtYTM3Ny02MWVkNmY0YTMyOTciLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY4MDA1Njg2NSwibmFtZSI6IklzbWFlbCBMb3BleiIsInBob25lX251bWJlciI6Iis1MjMxMTEzNjYzMzYiLCJleHAiOjE2ODAwNjA0NjUsImlhdCI6MTY4MDA1Njg2NSwiZW1haWwiOiJpbG9wZXpAY29udGVudG9oLmNvbSJ9.oRuv3LkdvctEMUjmeGw0-XefzV_Aoh1O2hFMik4RxpkkCUeP1O7AjA7lJI6sgoqa9Nwa2fCPRXk6ufi84UbgxGEgkupQmAvXTHQCw_uwCUVAZitlNGXSBl-VSisMuXSnckxdZQ1MvLV5BgLmiw4mu6HxKDN-Uw0xc7yL_yDtGu3NWxoO0Cm2zbej8jYLE9DV9wG297bjfzVQ7hzpEfEcB52I5Tg6nF2VDTx-8_m4mVVrpisbV5uBoYokbFyyOFVLZzUU7Je5uHukscHS5dje9IMTY8DE5S8xUWJubHjf_ktcy7Y2-F2cG5dI5oSdrBNU-wNNW5-OtRLgclSJLmbPCw",
|
|
158
|
+
id: 28,
|
|
159
|
+
companyId: 1,
|
|
159
160
|
isUserTech: true,
|
|
160
161
|
},
|
|
161
162
|
},
|
|
162
163
|
classNameContainerFixed: "chatTicket",
|
|
163
164
|
};
|
|
164
|
-
|
|
165
|
-
// ejemplo del chat para los cambios de status del producto.
|
|
166
|
-
export const chatProduct_status = Template.bind({});
|
|
167
|
-
chatProduct_status.args = {
|
|
168
|
-
chatType: "product_status",
|
|
169
|
-
chatContainerType: "popUp",
|
|
170
|
-
chatData: {
|
|
171
|
-
id: 37414,
|
|
172
|
-
version: 7,
|
|
173
|
-
retailerId: 70,
|
|
174
|
-
status: "AA",
|
|
175
|
-
orderId: 15189,
|
|
176
|
-
userToken:
|
|
177
|
-
"eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI5YTIxMzEyOC02NDgyLTRjMTYtYTRiNi02ZTY0ZjIyNWIxYmQiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6IjlhMjEzMTI4LTY0ODItNGMxNi1hNGI2LTZlNjRmMjI1YjFiZCIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiJhOWFhMDQ4Zi05YzRjLTQxODMtYWUzMS03OWVjNjBhY2NjZGYiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY4MzU4ODM4OSwibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTY4MzU5MTk4OSwiaWF0IjoxNjgzNTg4Mzg5LCJlbWFpbCI6ImlzbWFlbDk3bG9wZXpAZ21haWwuY29tIn0.k9FQfRR02XC3WWfOzWhrbJGmp69AmCHJEIrgtXKhIwC69trdphSm1AKkZnDJMsEdkpUgjF_zAOsa_xYRxO6goXy7WXVc_p7N-yFHlkhZrRyn3LEFKaLzD8vVqlWx4kgfSERm7KhI1AxPmrA-lw8eF6Axvqn3PvuszAw89_WhPOcnOt8vU0MxAVhLgS8oM6vyHFmHEHWQ2FnSYYed9sEvAxGh_B44aIgWeDteQGeGdYhsm6rUcxgkrskywZJp9FW5VgYXuDcC5NpvomMMRy_v95UV897JzCHl__sK2Z9ahm0eczVN3tAc0GbKnlN96ZrGTQ_nmNHbuMDPQBPXH5HXZQ",
|
|
178
|
-
currentUser: {
|
|
179
|
-
id: 37,
|
|
180
|
-
companyId: 2,
|
|
181
|
-
isUserTech: false,
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
};
|
|
@@ -22,7 +22,6 @@ import { Tooltip } from "../../../atoms/Tooltip";
|
|
|
22
22
|
import { Slide, Zoom } from "@mui/material";
|
|
23
23
|
import { useRef } from "react";
|
|
24
24
|
import { ImagePreview } from "../../../atoms/ImagePreview";
|
|
25
|
-
import { Status } from "../../../atoms/Status";
|
|
26
25
|
import { isUserTech } from "../../../../global-files/handle_userTech";
|
|
27
26
|
import { container } from "aws-amplify";
|
|
28
27
|
|
|
@@ -56,10 +55,7 @@ export const ContainerItems = (props) => {
|
|
|
56
55
|
|
|
57
56
|
useEffect(() => {
|
|
58
57
|
if (!items) return;
|
|
59
|
-
if (
|
|
60
|
-
["merchant_product", "order_product", "product_status"].includes(chatType)
|
|
61
|
-
)
|
|
62
|
-
renderItems();
|
|
58
|
+
if (["merchant_product", "order_product"].includes(chatType)) renderItems();
|
|
63
59
|
else if (chatType === "ticket") renderItemsTicket();
|
|
64
60
|
else setCustomItems([]);
|
|
65
61
|
}, [items]);
|
|
@@ -134,16 +130,6 @@ export const ContainerItems = (props) => {
|
|
|
134
130
|
return <label className="item-statusTicket">{item.value}</label>;
|
|
135
131
|
};
|
|
136
132
|
|
|
137
|
-
const renderStatusItem = (item) => {
|
|
138
|
-
const splitText = item.value.split("|");
|
|
139
|
-
let message = [];
|
|
140
|
-
splitText.forEach((text, i) => {
|
|
141
|
-
if (i === 1 || i === 3) message.push(<Status statusType={text} />);
|
|
142
|
-
else message.push(text);
|
|
143
|
-
});
|
|
144
|
-
return <label className="item-statusItem">{message}</label>;
|
|
145
|
-
};
|
|
146
|
-
|
|
147
133
|
const renderStatusTicketNeutral = (item) => {
|
|
148
134
|
return (
|
|
149
135
|
<Tooltip
|
|
@@ -318,7 +304,7 @@ export const ContainerItems = (props) => {
|
|
|
318
304
|
>
|
|
319
305
|
<li
|
|
320
306
|
className={
|
|
321
|
-
(ownMessage
|
|
307
|
+
(ownMessage ? "own-message " : "") +
|
|
322
308
|
(lastUserId === item.userId ? "sameUser" : "")
|
|
323
309
|
}
|
|
324
310
|
>
|
|
@@ -353,8 +339,6 @@ export const ContainerItems = (props) => {
|
|
|
353
339
|
? renderComment(item)
|
|
354
340
|
: item.type === "img"
|
|
355
341
|
? renderImg(item)
|
|
356
|
-
: item.type === "status"
|
|
357
|
-
? renderStatusItem(item)
|
|
358
342
|
: item.type === "file"
|
|
359
343
|
? renderFile(item, ownMessage)
|
|
360
344
|
: item.type === "statusTicket" &&
|
|
@@ -158,8 +158,7 @@ export const Container = styled.div`
|
|
|
158
158
|
.item-message,
|
|
159
159
|
.item-comment,
|
|
160
160
|
.item-file,
|
|
161
|
-
.item-statusTicket
|
|
162
|
-
.item-statusItem {
|
|
161
|
+
.item-statusTicket {
|
|
163
162
|
border-radius: 10px;
|
|
164
163
|
padding: 10px;
|
|
165
164
|
font-family: ${FontFamily.RobotoRegular}, sans-serif;
|
|
@@ -174,17 +173,10 @@ export const Container = styled.div`
|
|
|
174
173
|
.item-file {
|
|
175
174
|
background-color: #8386ee;
|
|
176
175
|
}
|
|
177
|
-
.item-statusTicket
|
|
178
|
-
.item-statusItem {
|
|
176
|
+
.item-statusTicket {
|
|
179
177
|
background-color: #85bc5b;
|
|
180
178
|
}
|
|
181
179
|
|
|
182
|
-
.item-statusItem {
|
|
183
|
-
display: flex;
|
|
184
|
-
gap: 3px;
|
|
185
|
-
align-items: center;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
180
|
.item-message {
|
|
189
181
|
&.different-company {
|
|
190
182
|
border: 1px solid #e33aa9;
|
|
@@ -86,8 +86,7 @@ export const ContentChat = (props) => {
|
|
|
86
86
|
|
|
87
87
|
// al cargar el componente
|
|
88
88
|
useEffect(() => {
|
|
89
|
-
|
|
90
|
-
if (Object.keys(dataChat || {}).length) {
|
|
89
|
+
if (dataChat && showPopUpChat) {
|
|
91
90
|
stopUpdate();
|
|
92
91
|
if (dataChat.code) {
|
|
93
92
|
setErrorChat({
|
|
@@ -101,7 +100,6 @@ export const ContentChat = (props) => {
|
|
|
101
100
|
}
|
|
102
101
|
if (chatType === "merchant_product") getInitialMerchantProduct();
|
|
103
102
|
else if (chatType === "order_product") getInitialOrderProduct();
|
|
104
|
-
else if (chatType === "product_status") getInitialProductStatus();
|
|
105
103
|
else getInitialTicket();
|
|
106
104
|
}
|
|
107
105
|
if (!showPopUpChat) {
|
|
@@ -128,8 +126,6 @@ export const ContentChat = (props) => {
|
|
|
128
126
|
} else if (chatType === "order_product") {
|
|
129
127
|
if (companies) getUpdateLatestOrderProduct(true);
|
|
130
128
|
else getInitialOrderProduct();
|
|
131
|
-
} else if (chatType === "product_status") {
|
|
132
|
-
getInitialProductStatus();
|
|
133
129
|
} else {
|
|
134
130
|
if (singleChat.items) getUpdateLatestTicket(true);
|
|
135
131
|
else getInitialTicket();
|
|
@@ -139,47 +135,6 @@ export const ContentChat = (props) => {
|
|
|
139
135
|
/*=======================================================================
|
|
140
136
|
PETICION GET INICIAL SEGUN EL TIPO DE CHAT
|
|
141
137
|
======================================================================= */
|
|
142
|
-
const getInitialProductStatus = async () => {
|
|
143
|
-
const paramsQuery = {
|
|
144
|
-
articleData: {
|
|
145
|
-
articleId: JSON.stringify(dataChat.id),
|
|
146
|
-
version: JSON.stringify(dataChat.version),
|
|
147
|
-
retailerId: JSON.stringify(dataChat.retailerId),
|
|
148
|
-
status: dataChat.status,
|
|
149
|
-
},
|
|
150
|
-
};
|
|
151
|
-
const paramsHeaders = { Authorization: dataChat.userToken };
|
|
152
|
-
const response = await fetchGET(
|
|
153
|
-
process.env.REACT_APP_READ_MESSAGES,
|
|
154
|
-
paramsQuery,
|
|
155
|
-
paramsHeaders
|
|
156
|
-
);
|
|
157
|
-
if (!response.body) {
|
|
158
|
-
setErrorChat({
|
|
159
|
-
existError: true,
|
|
160
|
-
code: 400,
|
|
161
|
-
message: response.message,
|
|
162
|
-
errorDetail: response.errorDetail,
|
|
163
|
-
});
|
|
164
|
-
setIsLoading(false);
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
// success
|
|
168
|
-
setStartUpdate((prev) => prev + 1);
|
|
169
|
-
setCurrentUser({
|
|
170
|
-
id: response.body.data.currentUserId,
|
|
171
|
-
companyId: response.body.data.currentCompanyId,
|
|
172
|
-
});
|
|
173
|
-
setLastUpdateDate(response.body.data.lastUpdateDate);
|
|
174
|
-
setAllUsers(response.body.users);
|
|
175
|
-
setSingleChat({
|
|
176
|
-
items: response.body.items,
|
|
177
|
-
enabledLoadMore: response.body.items.length === 50,
|
|
178
|
-
});
|
|
179
|
-
setErrorChat({ existError: false });
|
|
180
|
-
setIsLoading(false);
|
|
181
|
-
};
|
|
182
|
-
|
|
183
138
|
const getInitialMerchantProduct = async () => {
|
|
184
139
|
const paramsQuery = {
|
|
185
140
|
getType: "initial",
|
|
@@ -286,11 +241,9 @@ export const ContentChat = (props) => {
|
|
|
286
241
|
isUserTech: dataChat.currentUser?.isUserTech,
|
|
287
242
|
};
|
|
288
243
|
const paramsQuery = {
|
|
289
|
-
|
|
290
|
-
id: dataChat.id,
|
|
244
|
+
id: JSON.stringify(dataChat.id),
|
|
291
245
|
getType: "initial",
|
|
292
|
-
|
|
293
|
-
currentUser: encodeURIComponent(JSON.stringify(dataUser)),
|
|
246
|
+
currentUser: encodeUriJson(dataUser),
|
|
294
247
|
currentItemsFront: encodeUriJson(getItemsIdSingleChat()),
|
|
295
248
|
};
|
|
296
249
|
const response = await fetchGET(
|
|
@@ -613,14 +566,14 @@ export const ContentChat = (props) => {
|
|
|
613
566
|
};
|
|
614
567
|
|
|
615
568
|
/*=======================================================================
|
|
616
|
-
FUNCION QUE EJECUTA EL MICROSERVICIO CREATE-ITEM
|
|
569
|
+
FUNCION QUE EJECUTA EL MICROSERVICIO CREATE-ITEM
|
|
617
570
|
Este metodo recibe los items que queremos agregar al chat.
|
|
618
571
|
requiere:
|
|
619
|
-
=> items: [ { type , value } , ... ]
|
|
572
|
+
=> items: [ { type , value } , ... ]
|
|
620
573
|
NOTA: si se quiere agregar un mensaje mandar un array con un object
|
|
621
|
-
example: [ {
|
|
622
|
-
type: "message" ,
|
|
623
|
-
value: "mi mensaje"
|
|
574
|
+
example: [ {
|
|
575
|
+
type: "message" ,
|
|
576
|
+
value: "mi mensaje"
|
|
624
577
|
} ]
|
|
625
578
|
======================================================================= */
|
|
626
579
|
const createItemsChat = async (items = []) => {
|
|
@@ -656,14 +609,12 @@ export const ContentChat = (props) => {
|
|
|
656
609
|
// enviar items a la BD
|
|
657
610
|
if (chatType === "merchant_product") {
|
|
658
611
|
errorCreate = await createItemsMerchantProduct(items);
|
|
659
|
-
} else if (chatType === "product_status") {
|
|
660
|
-
errorCreate = await createItemsProductStatus(items);
|
|
661
612
|
} else if (chatType === "order_product") {
|
|
662
613
|
errorCreate = await createItemsOrderProduct(items);
|
|
663
614
|
} else errorCreate = await createItemsTicket(items);
|
|
664
615
|
|
|
665
616
|
// actualizar chat para que aparezcan los items enviados
|
|
666
|
-
if (
|
|
617
|
+
if (chatType === "merchant_product") {
|
|
667
618
|
await getUpdateLatestMerchantProduct();
|
|
668
619
|
} else if (chatType === "order_product") {
|
|
669
620
|
await getUpdateLatestOrderProduct();
|
|
@@ -676,10 +627,9 @@ export const ContentChat = (props) => {
|
|
|
676
627
|
};
|
|
677
628
|
|
|
678
629
|
const createItemsMerchantProduct = async (items = []) => {
|
|
679
|
-
const { id, version
|
|
630
|
+
const { id, version } = dataChat;
|
|
680
631
|
const { id: retailerId } = activeRetailer;
|
|
681
632
|
const paramsBody = { id, version, items, retailerId };
|
|
682
|
-
if (chatType === "product_status") paramsBody["orderId"] = orderId;
|
|
683
633
|
const paramsHeaders = { Authorization: dataChat.userToken };
|
|
684
634
|
const response = await fetchPOST(
|
|
685
635
|
process.env.REACT_APP_PRODUCTS_CHAT_ENDPOINT,
|
|
@@ -693,23 +643,6 @@ export const ContentChat = (props) => {
|
|
|
693
643
|
};
|
|
694
644
|
}
|
|
695
645
|
};
|
|
696
|
-
const createItemsProductStatus = async (items = []) => {
|
|
697
|
-
const { id, version, orderId, status } = dataChat;
|
|
698
|
-
const { id: retailerId } = activeRetailer;
|
|
699
|
-
const paramsBody = { id, version, items, retailerId, orderId, status };
|
|
700
|
-
const paramsHeaders = { Authorization: dataChat.userToken };
|
|
701
|
-
const response = await fetchPOST(
|
|
702
|
-
process.env.REACT_APP_CREATE_MESSAGES,
|
|
703
|
-
paramsBody,
|
|
704
|
-
paramsHeaders
|
|
705
|
-
);
|
|
706
|
-
if (!response.body) {
|
|
707
|
-
return {
|
|
708
|
-
message: response.message,
|
|
709
|
-
errorDetail: response.errorDetail,
|
|
710
|
-
};
|
|
711
|
-
}
|
|
712
|
-
};
|
|
713
646
|
|
|
714
647
|
const createItemsOrderProduct = async (items = []) => {
|
|
715
648
|
const paramsBody = {
|
|
@@ -757,11 +690,7 @@ export const ContentChat = (props) => {
|
|
|
757
690
|
SECCION DE FUNCIONES
|
|
758
691
|
======================================================================= */
|
|
759
692
|
const isSingleChat = () => {
|
|
760
|
-
if (
|
|
761
|
-
chatType === "merchant_product" ||
|
|
762
|
-
chatType === "ticket" ||
|
|
763
|
-
chatType === "product_status"
|
|
764
|
-
) {
|
|
693
|
+
if (chatType === "merchant_product" || chatType === "ticket") {
|
|
765
694
|
return true;
|
|
766
695
|
}
|
|
767
696
|
if (companies && Object.keys(companies).length < 2) return true;
|
|
@@ -828,11 +757,15 @@ export const ContentChat = (props) => {
|
|
|
828
757
|
setPlaySound(false);
|
|
829
758
|
}, 5000);
|
|
830
759
|
}
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
760
|
+
if (chatType !== "ticket") {
|
|
761
|
+
return Object.values(itemsId).sort((a, b) => {
|
|
762
|
+
if (a.id > b.id) return 1;
|
|
763
|
+
if (a.id < b.id) return -1;
|
|
764
|
+
return 0;
|
|
765
|
+
});
|
|
766
|
+
} else {
|
|
767
|
+
return Object.values(itemsId).reverse();
|
|
768
|
+
}
|
|
836
769
|
};
|
|
837
770
|
|
|
838
771
|
const updateAllUsers = (newUsers = {}) => {
|
|
@@ -872,7 +805,7 @@ export const ContentChat = (props) => {
|
|
|
872
805
|
// mostrar chat?
|
|
873
806
|
let items;
|
|
874
807
|
let enabledLoadMore;
|
|
875
|
-
if (["merchant_product", "ticket"
|
|
808
|
+
if (["merchant_product", "ticket"].includes(chatType)) {
|
|
876
809
|
items = singleChat.items;
|
|
877
810
|
enabledLoadMore = singleChat.enabledLoadMore;
|
|
878
811
|
}
|
|
@@ -914,9 +847,7 @@ export const ContentChat = (props) => {
|
|
|
914
847
|
activeCompanyId={activeCompanyId}
|
|
915
848
|
ticketCompany={ticketCompany}
|
|
916
849
|
currentUser={
|
|
917
|
-
["merchant_product", "order_product"
|
|
918
|
-
chatType
|
|
919
|
-
)
|
|
850
|
+
["merchant_product", "order_product"].includes(chatType)
|
|
920
851
|
? currentUser
|
|
921
852
|
: dataChat.currentUser
|
|
922
853
|
}
|
|
@@ -955,12 +886,6 @@ export const ContentChat = (props) => {
|
|
|
955
886
|
? { id: dataChat.id, version: currentArticle.version }
|
|
956
887
|
: chatType === "ticket"
|
|
957
888
|
? { id: dataChat.id }
|
|
958
|
-
: chatType === "product_status"
|
|
959
|
-
? {
|
|
960
|
-
id: dataChat.id,
|
|
961
|
-
version: dataChat.version,
|
|
962
|
-
retailerId: dataChat.retailerId,
|
|
963
|
-
}
|
|
964
889
|
: undefined
|
|
965
890
|
}
|
|
966
891
|
chatCompany={getChatCompany()}
|
|
@@ -1003,6 +928,7 @@ export const ContentChat = (props) => {
|
|
|
1003
928
|
}}
|
|
1004
929
|
/>
|
|
1005
930
|
)}
|
|
931
|
+
|
|
1006
932
|
{/* body */}
|
|
1007
933
|
{renderBodyChat()}
|
|
1008
934
|
</Container>
|
|
@@ -169,17 +169,6 @@ export const Footer = (props) => {
|
|
|
169
169
|
errorMessage = "El ID del ticket no es valido";
|
|
170
170
|
}
|
|
171
171
|
break;
|
|
172
|
-
case "product_status":
|
|
173
|
-
if (
|
|
174
|
-
isValidNaturalNumber(dataChat?.id) &&
|
|
175
|
-
isValidNaturalNumber(dataChat?.version) &&
|
|
176
|
-
isValidNaturalNumber(dataChat?.retailerId)
|
|
177
|
-
) {
|
|
178
|
-
fileKey += `productStatus/${dataChat.id}-${dataChat?.version}-${dataChat?.retailerId}/`;
|
|
179
|
-
} else {
|
|
180
|
-
errorMessage = "El ID del ticket no es valido";
|
|
181
|
-
}
|
|
182
|
-
break;
|
|
183
172
|
|
|
184
173
|
default:
|
|
185
174
|
errorMessage =
|