contentoh-components-library 21.3.19 → 21.3.20

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.
Files changed (196) hide show
  1. package/.env.development +5 -0
  2. package/dist/assets/images/customSelect/starIcon.svg +14 -0
  3. package/dist/assets/images/defaultImages/Spinner.gif +0 -0
  4. package/dist/assets/images/defaultImages/notFound.svg +124 -0
  5. package/dist/assets/images/generalButton/closeIcon.svg +2 -2
  6. package/dist/assets/sounds/newMessage.mp3 +0 -0
  7. package/dist/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +72 -0
  8. package/dist/components/atoms/ButtonFileChooser/index.js +110 -0
  9. package/dist/components/atoms/ButtonFileChooser/styles.js +20 -0
  10. package/dist/components/atoms/ButtonV2/ButtonV2.stories.js +66 -0
  11. package/dist/components/atoms/ButtonV2/index.js +110 -0
  12. package/dist/components/atoms/ButtonV2/styles.js +53 -0
  13. package/dist/components/atoms/CustomIcon/CustomIcon.stories.js +50 -0
  14. package/dist/components/atoms/CustomIcon/index.js +40 -0
  15. package/dist/components/atoms/CustomIcon/styles.js +33 -0
  16. package/dist/components/atoms/IconFile/IconFile.stories.js +48 -0
  17. package/dist/components/atoms/IconFile/index.js +249 -0
  18. package/dist/components/atoms/IconFile/styles.js +23 -0
  19. package/dist/components/atoms/Image/Image.stories.js +73 -0
  20. package/dist/components/atoms/Image/index.js +76 -0
  21. package/dist/components/atoms/Image/styles.js +43 -0
  22. package/dist/components/atoms/ImageLink/ImageLink.stories.js +63 -0
  23. package/dist/components/atoms/ImageLink/index.js +77 -0
  24. package/dist/components/atoms/ImageLink/styles.js +40 -0
  25. package/dist/components/atoms/ImagePreview/ImagePreview.stories.js +70 -0
  26. package/dist/components/atoms/ImagePreview/index.js +208 -0
  27. package/dist/components/atoms/ImagePreview/styles.js +44 -0
  28. package/dist/components/atoms/InputText/InputText.stories.js +60 -0
  29. package/dist/components/atoms/InputText/index.js +66 -0
  30. package/dist/components/atoms/InputText/styles.js +32 -0
  31. package/dist/components/atoms/NotFound/NotFound.stories.js +36 -0
  32. package/dist/components/atoms/NotFound/index.js +75 -0
  33. package/dist/components/atoms/NotFound/styles.js +20 -0
  34. package/dist/components/atoms/ProgressBar/index.js +36 -6
  35. package/dist/components/atoms/ProgressBar/styles.js +11 -3
  36. package/dist/components/atoms/SelectItemV2/SelectItemV2.stories.js +45 -0
  37. package/dist/components/atoms/SelectItemV2/index.js +57 -0
  38. package/dist/components/atoms/SelectItemV2/styles.js +30 -0
  39. package/dist/components/atoms/Tooltip/Tooltip.stories.js +66 -0
  40. package/dist/components/atoms/Tooltip/index.js +72 -0
  41. package/dist/components/atoms/Tooltip/styles.js +20 -0
  42. package/dist/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +66 -0
  43. package/dist/components/molecules/ButtonDownloadFile/index.js +179 -0
  44. package/dist/components/molecules/ButtonDownloadFile/styles.js +23 -0
  45. package/dist/components/molecules/CustomSelect/CustomSelect.stories.js +21 -22
  46. package/dist/components/molecules/CustomSelect/SelectItem.js +10 -1
  47. package/dist/components/molecules/Dropdown/Dropdown.stories.js +98 -0
  48. package/dist/components/molecules/Dropdown/index.js +150 -0
  49. package/dist/components/molecules/Dropdown/styles.js +26 -0
  50. package/dist/components/molecules/HeaderTop/index.js +23 -6
  51. package/dist/components/molecules/HeaderTop/styles.js +1 -1
  52. package/dist/components/molecules/ImageTooltip/ImageTooltip.stories.js +82 -0
  53. package/dist/components/molecules/ImageTooltip/index.js +85 -0
  54. package/dist/components/molecules/ImageTooltip/styles.js +33 -0
  55. package/dist/components/molecules/ProductNameHeader/index.js +6 -4
  56. package/dist/components/molecules/SelectV2/SelectV2.stories.js +120 -0
  57. package/dist/components/molecules/SelectV2/index.js +306 -0
  58. package/dist/components/molecules/SelectV2/styles.js +42 -0
  59. package/dist/components/molecules/SelectV2/test.js +94 -0
  60. package/dist/components/molecules/SelectV2/test.stories.js +27 -0
  61. package/dist/components/organisms/Chat/Chat.stories.js +160 -0
  62. package/dist/components/organisms/Chat/ChatLists/ChatLists.stories.js +83 -0
  63. package/dist/components/organisms/Chat/ChatLists/index.js +160 -0
  64. package/dist/components/organisms/Chat/ChatLists/styles.js +29 -0
  65. package/dist/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +176 -0
  66. package/dist/components/organisms/Chat/ContainerItems/index.js +537 -0
  67. package/dist/components/organisms/Chat/ContainerItems/styles.js +20 -0
  68. package/dist/components/organisms/Chat/ContentChat/ContentChat.stories.js +142 -0
  69. package/dist/components/organisms/Chat/ContentChat/index.js +1466 -0
  70. package/dist/components/organisms/Chat/ContentChat/styles.js +20 -0
  71. package/dist/components/organisms/Chat/Footer/Footer.stories.js +43 -0
  72. package/dist/components/organisms/Chat/Footer/index.js +976 -0
  73. package/dist/components/organisms/Chat/Footer/styles.js +32 -0
  74. package/dist/components/organisms/Chat/Header/Header.stories.js +96 -0
  75. package/dist/components/organisms/Chat/Header/index.js +83 -0
  76. package/dist/components/organisms/Chat/Header/styles.js +20 -0
  77. package/dist/components/organisms/Chat/index.js +253 -0
  78. package/dist/components/organisms/Chat/styles.js +29 -0
  79. package/dist/components/organisms/FullProductNameHeader/index.js +1 -0
  80. package/dist/components/organisms/Modal/Modal.stories.js +66 -0
  81. package/dist/components/organisms/Modal/index.js +95 -0
  82. package/dist/components/organisms/Modal/styles.js +20 -0
  83. package/dist/components/organisms/RangeCalendar/RangeCalendar.stories.js +33 -0
  84. package/dist/components/organisms/RangeCalendar/index.js +149 -0
  85. package/dist/components/organisms/RangeCalendar/styles.js +27 -0
  86. package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +65 -50
  87. package/dist/components/pages/ProviderProductEdition/index.js +15 -11
  88. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +36 -44
  89. package/dist/components/pages/RetailerProductEdition/index.js +13 -12
  90. package/dist/global-files/data.js +18 -23
  91. package/dist/global-files/fonts.css +6 -0
  92. package/dist/global-files/handle_http.js +381 -0
  93. package/dist/global-files/handle_userTech.js +20 -0
  94. package/dist/global-files/utils.js +514 -0
  95. package/dist/global-files/variables.js +2 -0
  96. package/dist/index.js +267 -46
  97. package/package.json +13 -1
  98. package/src/assets/images/customSelect/starIcon.svg +14 -0
  99. package/src/assets/images/defaultImages/Spinner.gif +0 -0
  100. package/src/assets/images/defaultImages/notFound.svg +124 -0
  101. package/src/assets/images/generalButton/closeIcon.svg +2 -2
  102. package/src/assets/sounds/newMessage.mp3 +0 -0
  103. package/src/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +47 -0
  104. package/src/components/atoms/ButtonFileChooser/index.js +68 -0
  105. package/src/components/atoms/ButtonFileChooser/styles.js +4 -0
  106. package/src/components/atoms/ButtonV2/ButtonV2.stories.js +53 -0
  107. package/src/components/atoms/ButtonV2/index.js +85 -0
  108. package/src/components/atoms/ButtonV2/styles.js +217 -0
  109. package/src/components/atoms/CustomIcon/CustomIcon.stories.js +36 -0
  110. package/src/components/atoms/CustomIcon/index.js +41 -0
  111. package/src/components/atoms/CustomIcon/styles.js +85 -0
  112. package/src/components/atoms/IconFile/IconFile.stories.js +35 -0
  113. package/src/components/atoms/IconFile/index.js +119 -0
  114. package/src/components/atoms/IconFile/styles.js +67 -0
  115. package/src/components/atoms/Image/Image.stories.js +51 -0
  116. package/src/components/atoms/Image/index.js +55 -0
  117. package/src/components/atoms/Image/styles.js +34 -0
  118. package/src/components/atoms/ImageLink/ImageLink.stories.js +43 -0
  119. package/src/components/atoms/ImageLink/index.js +57 -0
  120. package/src/components/atoms/ImageLink/styles.js +30 -0
  121. package/src/components/atoms/ImagePreview/ImagePreview.stories.js +52 -0
  122. package/src/components/atoms/ImagePreview/index.js +178 -0
  123. package/src/components/atoms/ImagePreview/styles.js +77 -0
  124. package/src/components/atoms/InputText/InputText.stories.js +39 -0
  125. package/src/components/atoms/InputText/index.js +61 -0
  126. package/src/components/atoms/InputText/styles.js +89 -0
  127. package/src/components/atoms/NotFound/NotFound.stories.js +19 -0
  128. package/src/components/atoms/NotFound/index.js +52 -0
  129. package/src/components/atoms/NotFound/styles.js +55 -0
  130. package/src/components/atoms/ProgressBar/index.js +40 -5
  131. package/src/components/atoms/ProgressBar/styles.js +24 -0
  132. package/src/components/atoms/SelectItemV2/SelectItemV2.stories.js +26 -0
  133. package/src/components/atoms/SelectItemV2/index.js +61 -0
  134. package/src/components/atoms/SelectItemV2/styles.js +90 -0
  135. package/src/components/atoms/Tooltip/Tooltip.stories.js +51 -0
  136. package/src/components/atoms/Tooltip/index.js +59 -0
  137. package/src/components/atoms/Tooltip/styles.js +42 -0
  138. package/src/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +54 -0
  139. package/src/components/molecules/ButtonDownloadFile/index.js +109 -0
  140. package/src/components/molecules/ButtonDownloadFile/styles.js +66 -0
  141. package/src/components/molecules/CustomSelect/CustomSelect.stories.js +20 -12
  142. package/src/components/molecules/CustomSelect/SelectItem.js +7 -0
  143. package/src/components/molecules/Dropdown/Dropdown.stories.js +103 -0
  144. package/src/components/molecules/Dropdown/index.js +150 -0
  145. package/src/components/molecules/Dropdown/styles.js +75 -0
  146. package/src/components/molecules/HeaderTop/index.js +29 -8
  147. package/src/components/molecules/HeaderTop/styles.js +4 -0
  148. package/src/components/molecules/ImageTooltip/ImageTooltip.stories.js +68 -0
  149. package/src/components/molecules/ImageTooltip/index.js +63 -0
  150. package/src/components/molecules/ImageTooltip/styles.js +18 -0
  151. package/src/components/molecules/ProductNameHeader/index.js +7 -2
  152. package/src/components/molecules/SelectV2/SelectV2.stories.js +115 -0
  153. package/src/components/molecules/SelectV2/index.js +357 -0
  154. package/src/components/molecules/SelectV2/styles.js +105 -0
  155. package/src/components/molecules/SelectV2/test.js +60 -0
  156. package/src/components/molecules/SelectV2/test.stories.js +10 -0
  157. package/src/components/organisms/Chat/Chat.stories.js +147 -0
  158. package/src/components/organisms/Chat/ChatLists/ChatLists.stories.js +65 -0
  159. package/src/components/organisms/Chat/ChatLists/Rotoplas.jpeg +0 -0
  160. package/src/components/organisms/Chat/ChatLists/THD.png +0 -0
  161. package/src/components/organisms/Chat/ChatLists/index.js +141 -0
  162. package/src/components/organisms/Chat/ChatLists/styles.js +162 -0
  163. package/src/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +142 -0
  164. package/src/components/organisms/Chat/ContainerItems/index.js +512 -0
  165. package/src/components/organisms/Chat/ContainerItems/styles.js +328 -0
  166. package/src/components/organisms/Chat/ContentChat/ContentChat.stories.js +102 -0
  167. package/src/components/organisms/Chat/ContentChat/Rotoplas.jpeg +0 -0
  168. package/src/components/organisms/Chat/ContentChat/THD.png +0 -0
  169. package/src/components/organisms/Chat/ContentChat/index.js +919 -0
  170. package/src/components/organisms/Chat/ContentChat/styles.js +41 -0
  171. package/src/components/organisms/Chat/Footer/Footer.stories.js +22 -0
  172. package/src/components/organisms/Chat/Footer/index.js +661 -0
  173. package/src/components/organisms/Chat/Footer/styles.js +286 -0
  174. package/src/components/organisms/Chat/Header/Header.stories.js +66 -0
  175. package/src/components/organisms/Chat/Header/index.js +93 -0
  176. package/src/components/organisms/Chat/Header/styles.js +49 -0
  177. package/src/components/organisms/Chat/index.js +235 -0
  178. package/src/components/organisms/Chat/styles.js +42 -0
  179. package/src/components/organisms/FullProductNameHeader/index.js +1 -0
  180. package/src/components/organisms/Modal/Modal.stories.js +55 -0
  181. package/src/components/organisms/Modal/index.js +97 -0
  182. package/src/components/organisms/Modal/styles.js +103 -0
  183. package/src/components/organisms/RangeCalendar/RangeCalendar.stories.js +16 -0
  184. package/src/components/organisms/RangeCalendar/index.js +121 -0
  185. package/src/components/organisms/RangeCalendar/styles.js +883 -0
  186. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +67 -49
  187. package/src/components/pages/ProviderProductEdition/index.js +16 -9
  188. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +36 -46
  189. package/src/components/pages/RetailerProductEdition/index.js +14 -10
  190. package/src/global-files/data.js +18 -23
  191. package/src/global-files/fonts.css +6 -0
  192. package/src/global-files/handle_http.js +225 -0
  193. package/src/global-files/handle_userTech.js +7 -0
  194. package/src/global-files/utils.js +330 -0
  195. package/src/global-files/variables.js +2 -0
  196. package/src/index.js +17 -0
@@ -0,0 +1,512 @@
1
+ import { Container } from "./styles";
2
+ import { useEffect, useState } from "react";
3
+ import { getProfilePicture } from "../../../../global-files/data";
4
+ import { ImageTooltip } from "../../../molecules/ImageTooltip";
5
+ import {
6
+ decodeJSON,
7
+ getFullDate,
8
+ getImageURL,
9
+ getResizeImgHeight,
10
+ getTime,
11
+ } from "../../../../global-files/utils";
12
+ import {
13
+ faUser as IconUser,
14
+ faImage as IconImage,
15
+ faRedoAlt as IconReload,
16
+ } from "@fortawesome/free-solid-svg-icons";
17
+ import { CustomIcon } from "../../../atoms/CustomIcon";
18
+ import { ButtonV2 } from "../../../atoms/ButtonV2";
19
+ import { ButtonDownloadFile } from "../../../molecules/ButtonDownloadFile";
20
+ import { Modal } from "../../Modal";
21
+ import { Tooltip } from "../../../atoms/Tooltip";
22
+ import { Slide, Zoom } from "@mui/material";
23
+ import { useRef } from "react";
24
+ import { ImagePreview } from "../../../atoms/ImagePreview";
25
+ import { isUserTech } from "../../../../global-files/handle_userTech";
26
+
27
+ export const ContainerItems = (props) => {
28
+ const {
29
+ items /* [
30
+ { id , date , type , value , userId } ,
31
+ ...
32
+ ] */,
33
+ users /* {
34
+ id: { name , companyId } ,
35
+ ...
36
+ } */,
37
+ currentUser, // { id , companyId , ... }
38
+ activeCompanyId, // number
39
+ chatType, // string
40
+ showBtnLoadMore, // boolean
41
+ onClickBtnLoadMore, // () => {}
42
+ } = props;
43
+ const [scrollHeight, setScrollHeight] = useState(0);
44
+ const [btnLoadMoreLoading, setBtnLoadMoreLoading] = useState(false);
45
+ const [customItems, setCustomItems] = useState([]);
46
+ const [modalAlert, setModalAlert] = useState({
47
+ show: false,
48
+ title: "",
49
+ message: "",
50
+ });
51
+ const containerList = useRef(null);
52
+
53
+
54
+ useEffect(() => {
55
+ if (!items) return;
56
+ if (["merchant_product", "order_product"].includes(chatType)) renderItems();
57
+ else if (chatType === "ticket") renderItemsTicket();
58
+ else setCustomItems([]);
59
+ }, [items]);
60
+
61
+ const updateScroll = () => {
62
+ const containerScroll = document.getElementById("containerItems");
63
+ if (containerScroll) {
64
+ const newScrollHeight = containerScroll.scrollHeight + 15;
65
+ const positionScroll = newScrollHeight - scrollHeight;
66
+
67
+ if (newScrollHeight !== scrollHeight) {
68
+ containerScroll.scrollTop = positionScroll;
69
+ setScrollHeight(newScrollHeight);
70
+ }
71
+ }
72
+ };
73
+
74
+ const renderGrayLabel = (text, key) => {
75
+ return (
76
+ <Zoom
77
+ in={true}
78
+ timeout={600}
79
+ container={containerList.current}
80
+ key={key ?? ""}
81
+ >
82
+ <li className={`label-gray`}>
83
+ <div className="separator"></div>
84
+ <label>{text}</label>
85
+ <div className="separator"></div>
86
+ </li>
87
+ </Zoom>
88
+ );
89
+ };
90
+
91
+ const renderStatusService = (text, key) => {
92
+ return (
93
+ <Zoom
94
+ in={true}
95
+ timeout={600}
96
+ container={containerList.current}
97
+ key={key ?? ""}
98
+ >
99
+ <div className="label-statusService">{text}</div>
100
+ </Zoom>
101
+ );
102
+ };
103
+
104
+ const renderStatusArticle = (text, key) => {
105
+ return (
106
+ <Zoom
107
+ in={true}
108
+ timeout={600}
109
+ container={containerList.current}
110
+ key={key ?? ""}
111
+ >
112
+ <div className="label-statusArticle">{text}</div>
113
+ </Zoom>
114
+ );
115
+ };
116
+
117
+ const renderStatusTicket = (item) => {
118
+ return <label className="item-statusTicket">{item.value}</label>;
119
+ };
120
+
121
+ const renderStatusTicketNeutral = (item) => {
122
+ return (
123
+ <Tooltip
124
+ componentTooltip={<label>{users[item.userId].name}</label>}
125
+ className="itemStatus ticket"
126
+ position={"topCenter"}
127
+ addArrow={false}
128
+ transitionType={"zoom"}
129
+ followCursor={false}
130
+ >
131
+ {item.value}
132
+ </Tooltip>
133
+ );
134
+ };
135
+
136
+ const renderMessage = (item) => {
137
+ return <label className="item-message"> {item.value} </label>;
138
+ };
139
+
140
+ const renderComment = (item) => {
141
+ return <label className="item-comment"> {item.value} </label>;
142
+ };
143
+
144
+ const renderImg = (item) => {
145
+ const value = decodeJSON(item.value);
146
+ const originalImgURL = `${process.env.REACT_APP_IMAGES_ENDPOINT}/${value.key}`;
147
+ // dimensiones de la imagen a mostrar en el chat
148
+ const imgHeight = getResizeImgHeight(
149
+ value.width ?? 400,
150
+ value.height ?? 400,
151
+ 400
152
+ );
153
+ const imgURL = getImageURL(
154
+ process.env.REACT_APP_IMAGES_BUCKET,
155
+ value.key,
156
+ 400,
157
+ imgHeight
158
+ );
159
+ // dimensiones de la imagen a mostrar en modal full
160
+ const modalImgHeight = getResizeImgHeight(
161
+ value.width ?? screen.width,
162
+ value.height ?? screen.height,
163
+ screen.width
164
+ );
165
+ const modalImgURL = getImageURL(
166
+ process.env.REACT_APP_IMAGES_BUCKET,
167
+ value.key,
168
+ screen.width,
169
+ modalImgHeight
170
+ );
171
+
172
+ return (
173
+ <div className="item-img">
174
+ <ImagePreview
175
+ className="container-ImagePreview"
176
+ width={"100%"}
177
+ sizeLoading={35}
178
+ colorLoading={undefined}
179
+ imgURL={imgURL}
180
+ modalImgURL={modalImgURL}
181
+ downloadImgURL={originalImgURL}
182
+ imageName={value.name}
183
+ showButtonDownload={true}
184
+ componentDefault={
185
+ <Tooltip
186
+ componentTooltip={<label>{value.name}</label>}
187
+ className="label-nameImg"
188
+ position={"topCenter"}
189
+ addArrow={false}
190
+ transitionType={"zoom"}
191
+ followCursor={false}
192
+ >
193
+ <CustomIcon
194
+ className="iconDefaultImg"
195
+ type={"white"}
196
+ size={60}
197
+ borderType={"rectangle"}
198
+ icon={IconImage}
199
+ />
200
+ </Tooltip>
201
+ }
202
+ componentDefaultModal={
203
+ <Tooltip
204
+ componentTooltip={<label>{value.name}</label>}
205
+ className="label-nameImgModal"
206
+ position={"topCenter"}
207
+ addArrow={false}
208
+ transitionType={"zoom"}
209
+ followCursor={false}
210
+ >
211
+ <CustomIcon
212
+ className="iconDefaultImgModal"
213
+ type={"white"}
214
+ size={100}
215
+ borderType={"rectangle"}
216
+ icon={IconImage}
217
+ />
218
+ </Tooltip>
219
+ }
220
+ />
221
+ </div>
222
+ );
223
+ /*
224
+ <Tooltip
225
+ componentTooltip={<label>{value.name}</label>}
226
+ className="label-nameFileShort"
227
+ position={"topCenter"}
228
+ addArrow={false}
229
+ transitionType={"zoom"}
230
+ followCursor={false}
231
+ >
232
+ {value.name}
233
+ </Tooltip>
234
+ */
235
+ };
236
+
237
+ const renderFile = (item, ownMessage) => {
238
+ const value = decodeJSON(item.value);
239
+ const url = `${process.env.REACT_APP_IMAGES_ENDPOINT}/${value.key}`;
240
+
241
+ return (
242
+ <div className="item-file">
243
+ <ButtonDownloadFile
244
+ className="btnDownloadFileItem"
245
+ size={22}
246
+ type={ownMessage ? "black" : "white"}
247
+ transparent
248
+ url={url}
249
+ onDownload={(error) => {
250
+ error &&
251
+ setModalAlert((prev) => ({
252
+ show: true,
253
+ title: error.message,
254
+ message: error.details,
255
+ }));
256
+ }}
257
+ />
258
+ <Tooltip
259
+ componentTooltip={<label>{value.name}</label>}
260
+ className="label-nameFileShort"
261
+ position={"topCenter"}
262
+ addArrow={false}
263
+ transitionType={"zoom"}
264
+ followCursor={false}
265
+ >
266
+ {value.name}
267
+ </Tooltip>
268
+ </div>
269
+ );
270
+ };
271
+
272
+ const getUserCreatedItem = (ownMessage, item, lastUserId) => {
273
+ return (
274
+ <Slide
275
+ id={"itemScroll-" + item.id}
276
+ direction={ownMessage ? "left" : "right"}
277
+ in={true}
278
+ timeout={500}
279
+ container={containerList.current}
280
+ key={"item-" + item.id}
281
+ >
282
+ <li
283
+ className={
284
+ (ownMessage ? "own-message " : "") +
285
+ (lastUserId === item.userId ? "sameUser" : "")
286
+ }
287
+ >
288
+ {/* img del user */}
289
+ {lastUserId !== item.userId && (
290
+ <ImageTooltip
291
+ className={"container-imgUser"}
292
+ sizeLoading={25}
293
+ colorLoading={undefined}
294
+ src={getProfilePicture(item.userId, 34, 34)}
295
+ componentDefault={
296
+ <CustomIcon
297
+ className="icon-imgUser"
298
+ type={"whiteS2"}
299
+ size={17}
300
+ borderType={"circle"}
301
+ icon={IconUser}
302
+ />
303
+ }
304
+ classNameTooltip={"tooltip-imgUser"}
305
+ componentTooltip={
306
+ <label className="label-nameUser">
307
+ {users[item.userId].name}
308
+ </label>
309
+ }
310
+ />
311
+ )}
312
+
313
+ {item.type === "message"
314
+ ? renderMessage(item)
315
+ : item.type === "comment"
316
+ ? renderComment(item)
317
+ : item.type === "img"
318
+ ? renderImg(item)
319
+ : item.type === "file"
320
+ ? renderFile(item, ownMessage)
321
+ : item.type === "statusTicket"
322
+ ? renderStatusTicket(item)
323
+ : null}
324
+
325
+ <label className="label-time">{getTime(item.date)}</label>
326
+ </li>
327
+ </Slide>
328
+ );
329
+ };
330
+
331
+ const getItemNeutral = (item) => {
332
+ return (
333
+ <Zoom
334
+ in={true}
335
+ timeout={600}
336
+ container={containerList.current}
337
+ key={"item-" + item.id}
338
+ >
339
+ <li className={"itemNeutral"}>
340
+ {item.type === "statusTicket"
341
+ ? renderStatusTicketNeutral(item)
342
+ : null}
343
+ </li>
344
+ </Zoom>
345
+ );
346
+ };
347
+
348
+ const renderItems = () => {
349
+ let jsxItems = [];
350
+ let date = undefined;
351
+ let countDate = 1;
352
+ for (const item of items) {
353
+ // manejo de las etiquetas fechas
354
+ if (!date) {
355
+ date = getFullDate(new Date(item.date));
356
+ jsxItems.push(renderGrayLabel(date, `itemDate-${countDate++}`));
357
+ } else {
358
+ let newDate = getFullDate(new Date(item.date));
359
+ if (newDate !== date) {
360
+ jsxItems.push(renderGrayLabel(newDate, `itemDate-${countDate++}`));
361
+ date = newDate;
362
+ }
363
+ }
364
+
365
+ // elementos que van alineados al centro
366
+ switch (item.type) {
367
+ case "statusArticle":
368
+ jsxItems.push(renderStatusArticle(item.value, `item-${item.id}`));
369
+ break;
370
+ case "statusService":
371
+ jsxItems.push(renderStatusService(item.value, `item-${item.id}`));
372
+ break;
373
+ }
374
+
375
+ // acomodo del item (left o right)
376
+ let ownMessage = false;
377
+ // CHAT MERCHANT ARTICLE
378
+ if (chatType === "merchant_product") {
379
+ if (currentUser.companyId === users[item.userId].companyId) {
380
+ ownMessage = true;
381
+ }
382
+ }
383
+ // CHAT ORDER ARTICLE
384
+ else if (chatType === "order_product") {
385
+ if (currentUser.companyId === users[item.userId].companyId) {
386
+ if (activeCompanyId && activeCompanyId === currentUser.companyId) {
387
+ if (item.userId === currentUser.id) {
388
+ ownMessage = true;
389
+ }
390
+ } else {
391
+ ownMessage = true;
392
+ }
393
+ }
394
+ }
395
+
396
+ // renderizar tipo de item
397
+ jsxItems.push(getUserCreatedItem(ownMessage, item));
398
+ }
399
+ setCustomItems(jsxItems);
400
+ };
401
+
402
+ const renderItemsTicket = () => {
403
+ let jsxItems = [];
404
+ let date = undefined;
405
+ let countDate = 1;
406
+ let lastUserId = undefined;
407
+
408
+
409
+ // recorrido de los items (del mas viejo al mas reciente)
410
+ for (let index = items.length - 1; index >= 0; index--) {
411
+ const item = items[index];
412
+ // manejo de las etiquetas fechas
413
+ if (!date) {
414
+ date = getFullDate(new Date(item.date));
415
+ jsxItems.push(renderGrayLabel(date, `itemDate-${countDate++}`));
416
+ lastUserId = undefined;
417
+ } else {
418
+ let newDate = getFullDate(new Date(item.date));
419
+ if (newDate !== date) {
420
+ jsxItems.push(renderGrayLabel(newDate, `itemDate-${countDate++}`));
421
+ date = newDate;
422
+ lastUserId = undefined;
423
+ }
424
+ }
425
+
426
+ // elementos que van alineados al centro
427
+ /*
428
+ switch (item.type) {
429
+ case "statusTicket":
430
+ jsxItems.push(getItemNeutral(item));
431
+ lastUserId = undefined;
432
+ continue;
433
+ }
434
+ */
435
+
436
+ // acomodo del item (left o right)
437
+ let ownMessage = false;
438
+ // user tech
439
+ if (currentUser.isUserTech) {
440
+ if (isUserTech(users[item.userId].isUserTech)) ownMessage = true;
441
+ }
442
+ // user normal
443
+ else {
444
+ if (!isUserTech(users[item.userId].isUserTech)) {
445
+ if (currentUser.companyId === users[item.userId].companyId) {
446
+ ownMessage = true;
447
+ }
448
+ } else if (currentUser.id === item.userId) {
449
+ ownMessage = true;
450
+ }
451
+ }
452
+
453
+ // renderizar tipo de item
454
+ jsxItems.push(getUserCreatedItem(ownMessage, item, lastUserId));
455
+ lastUserId = item.userId;
456
+ }
457
+
458
+ setCustomItems(jsxItems);
459
+ };
460
+
461
+ return (
462
+ <>
463
+ <Container id="containerItems">
464
+ <div className="btn-loadMore">
465
+ {showBtnLoadMore && (
466
+ <ButtonV2
467
+ className="container-btnLoadMore"
468
+ type={"purple"}
469
+ label={"cargar más"}
470
+ size={10}
471
+ borderType="oval"
472
+ icon={IconReload}
473
+ iconPosition="start"
474
+ isLoading={btnLoadMoreLoading}
475
+ onClick={async (event) => {
476
+ setBtnLoadMoreLoading(true);
477
+ if (onClickBtnLoadMore) {
478
+ const responseError = await onClickBtnLoadMore();
479
+ if (responseError) {
480
+ setModalAlert({
481
+ show: true,
482
+ title: responseError.title,
483
+ message: responseError.message,
484
+ });
485
+ }
486
+ }
487
+ setBtnLoadMoreLoading(false);
488
+ }}
489
+ />
490
+ )}
491
+ </div>
492
+
493
+ <ul id="ulItems" ref={containerList}>
494
+ {customItems}
495
+ </ul>
496
+ </Container>
497
+
498
+ <Modal
499
+ show={modalAlert.show}
500
+ title={modalAlert.title}
501
+ message={modalAlert.message}
502
+ icon={"info"}
503
+ onClickBtnDefault={(event) =>
504
+ setModalAlert((prev) => ({
505
+ ...prev,
506
+ show: false,
507
+ }))
508
+ }
509
+ />
510
+ </>
511
+ );
512
+ };