contentoh-components-library 21.3.11 → 21.3.13

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