contentoh-components-library 21.2.100 → 21.2.102

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 (118) hide show
  1. package/.env.development +3 -0
  2. package/.env.production +23 -23
  3. package/dist/components/molecules/CustomSelect/CustomSelect.stories.js +21 -22
  4. package/dist/components/molecules/CustomSelect/SelectItem.js +10 -1
  5. package/dist/components/molecules/Dropdown/Dropdown.stories.js +96 -0
  6. package/dist/components/molecules/Dropdown/index.js +148 -0
  7. package/dist/components/molecules/Dropdown/styles.js +26 -0
  8. package/dist/components/molecules/HeaderTop/index.js +10 -5
  9. package/dist/components/molecules/HeaderTop/styles.js +1 -1
  10. package/dist/components/organisms/OrderDetail/OrderDetail.stories.js +1 -1
  11. package/dist/components/organisms/OrderDetail/index.js +11 -20
  12. package/dist/components/organisms/OrderDetail/styles.js +1 -1
  13. package/dist/global-files/fonts.css +12 -0
  14. package/dist/global-files/variables.js +2 -0
  15. package/dist/index.js +254 -46
  16. package/package.json +12 -1
  17. package/src/assets/images/customSelect/starIcon.svg +14 -0
  18. package/{dist/assets/images/chatPopup → src/assets/images/defaultImages}/Spinner.gif +0 -0
  19. package/src/assets/images/defaultImages/notFound.svg +124 -0
  20. package/src/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +47 -0
  21. package/src/components/atoms/ButtonFileChooser/index.js +69 -0
  22. package/src/components/atoms/ButtonFileChooser/styles.js +4 -0
  23. package/src/components/atoms/ButtonV2/ButtonV2.stories.js +51 -0
  24. package/src/components/atoms/ButtonV2/index.js +79 -0
  25. package/src/components/atoms/ButtonV2/styles.js +195 -0
  26. package/src/components/atoms/CustomIcon/CustomIcon.stories.js +36 -0
  27. package/src/components/atoms/CustomIcon/index.js +41 -0
  28. package/src/components/atoms/CustomIcon/styles.js +85 -0
  29. package/src/components/atoms/IconFile/IconFile.stories.js +35 -0
  30. package/src/components/atoms/IconFile/index.js +119 -0
  31. package/src/components/atoms/IconFile/styles.js +67 -0
  32. package/src/components/atoms/Image/Image.stories.js +51 -0
  33. package/src/components/atoms/Image/index.js +55 -0
  34. package/src/components/atoms/Image/styles.js +34 -0
  35. package/src/components/atoms/ImageLink/ImageLink.stories.js +43 -0
  36. package/src/components/atoms/ImageLink/index.js +57 -0
  37. package/src/components/atoms/ImageLink/styles.js +30 -0
  38. package/src/components/atoms/ImagePreview/ImagePreview.stories.js +52 -0
  39. package/src/components/atoms/ImagePreview/index.js +191 -0
  40. package/src/components/atoms/ImagePreview/styles.js +77 -0
  41. package/src/components/atoms/InputText/InputText.stories.js +39 -0
  42. package/src/components/atoms/InputText/index.js +61 -0
  43. package/src/components/atoms/InputText/styles.js +89 -0
  44. package/src/components/atoms/NotFound/NotFound.stories.js +19 -0
  45. package/src/components/atoms/NotFound/index.js +52 -0
  46. package/src/components/atoms/NotFound/styles.js +55 -0
  47. package/src/components/atoms/SelectItemV2/SelectItemV2.stories.js +26 -0
  48. package/src/components/atoms/SelectItemV2/index.js +45 -0
  49. package/src/components/atoms/SelectItemV2/styles.js +55 -0
  50. package/src/components/atoms/Tooltip/Tooltip.stories.js +51 -0
  51. package/src/components/atoms/Tooltip/index.js +59 -0
  52. package/src/components/atoms/Tooltip/styles.js +42 -0
  53. package/src/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +54 -0
  54. package/src/components/molecules/ButtonDownloadFile/index.js +111 -0
  55. package/src/components/molecules/ButtonDownloadFile/styles.js +66 -0
  56. package/src/components/molecules/CustomSelect/CustomSelect.stories.js +20 -12
  57. package/src/components/molecules/CustomSelect/SelectItem.js +7 -0
  58. package/src/components/molecules/Dropdown/Dropdown.stories.js +101 -0
  59. package/src/components/molecules/Dropdown/index.js +142 -0
  60. package/src/components/molecules/Dropdown/styles.js +75 -0
  61. package/src/components/molecules/HeaderTop/index.js +11 -6
  62. package/src/components/molecules/HeaderTop/styles.js +4 -0
  63. package/src/components/molecules/ImageTooltip/ImageTooltip.stories.js +46 -0
  64. package/src/components/molecules/ImageTooltip/index.js +62 -0
  65. package/src/components/molecules/ImageTooltip/styles.js +18 -0
  66. package/src/components/molecules/SelectV2/SelectV2.stories.js +114 -0
  67. package/src/components/molecules/SelectV2/index.js +332 -0
  68. package/src/components/molecules/SelectV2/styles.js +100 -0
  69. package/src/components/organisms/Chat/Chat.stories.js +199 -0
  70. package/src/components/organisms/Chat/ChatLists/ChatLists.stories.js +65 -0
  71. package/src/components/organisms/Chat/ChatLists/Rotoplas.jpeg +0 -0
  72. package/src/components/organisms/Chat/ChatLists/THD.png +0 -0
  73. package/src/components/organisms/Chat/ChatLists/index.js +141 -0
  74. package/src/components/organisms/Chat/ChatLists/styles.js +162 -0
  75. package/src/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +142 -0
  76. package/src/components/organisms/Chat/ContainerItems/index.js +549 -0
  77. package/src/components/organisms/Chat/ContainerItems/styles.js +328 -0
  78. package/src/components/organisms/Chat/ContentChat/ContentChat.stories.js +102 -0
  79. package/src/components/organisms/Chat/ContentChat/Rotoplas.jpeg +0 -0
  80. package/src/components/organisms/Chat/ContentChat/THD.png +0 -0
  81. package/src/components/organisms/Chat/ContentChat/index.js +900 -0
  82. package/src/components/organisms/Chat/ContentChat/styles.js +41 -0
  83. package/src/components/organisms/Chat/Footer/Footer.stories.js +22 -0
  84. package/src/components/organisms/Chat/Footer/index.js +669 -0
  85. package/src/components/organisms/Chat/Footer/styles.js +286 -0
  86. package/src/components/organisms/Chat/Header/Header.stories.js +66 -0
  87. package/src/components/organisms/Chat/Header/index.js +94 -0
  88. package/src/components/organisms/Chat/Header/styles.js +49 -0
  89. package/src/components/organisms/Chat/index.js +294 -0
  90. package/src/components/organisms/Chat/styles.js +42 -0
  91. package/src/components/organisms/Modal/Modal.stories.js +55 -0
  92. package/src/components/organisms/Modal/index.js +97 -0
  93. package/src/components/organisms/Modal/styles.js +103 -0
  94. package/src/components/organisms/OrderDetail/OrderDetail.stories.js +1 -1
  95. package/src/components/organisms/OrderDetail/index.js +12 -19
  96. package/src/components/organisms/OrderDetail/styles.js +0 -1
  97. package/src/global-files/fonts.css +12 -0
  98. package/src/global-files/handle_http.js +231 -0
  99. package/src/global-files/utils.js +300 -0
  100. package/src/global-files/variables.js +2 -0
  101. package/src/index.js +16 -0
  102. package/dist/assets/images/chatPopup/close.svg +0 -3
  103. package/dist/assets/images/chatPopup/defaultImage.png +0 -0
  104. package/dist/assets/images/chatPopup/defaultProfile.png +0 -0
  105. package/dist/assets/images/chatPopup/doc.svg +0 -1
  106. package/dist/assets/images/chatPopup/document.svg +0 -1
  107. package/dist/assets/images/chatPopup/iconChat.svg +0 -19
  108. package/dist/assets/images/chatPopup/iconPlus.svg +0 -3
  109. package/dist/assets/images/chatPopup/pdf.svg +0 -75
  110. package/dist/assets/images/chatPopup/remove.svg +0 -4
  111. package/dist/assets/images/chatPopup/send.svg +0 -3
  112. package/dist/assets/images/chatPopup/svgIcon.svg +0 -109
  113. package/dist/assets/images/chatPopup/upload_file.svg +0 -3
  114. package/dist/assets/images/chatPopup/xls.svg +0 -53
  115. package/dist/components/atoms/ChatPopUp/ChatPopUp.stories.js +0 -28
  116. package/dist/components/atoms/ChatPopUp/index.js +0 -841
  117. package/dist/components/atoms/ChatPopUp/styles.js +0 -27
  118. package/dist/components/atoms/ChatPopUp/utils/handlersChat.js +0 -182
@@ -0,0 +1,332 @@
1
+ import { useEffect, useRef, useState } from "react";
2
+ import {
3
+ ClickAwayListener,
4
+ Fade,
5
+ Grow,
6
+ Popper,
7
+ Tooltip as TooltipMUI,
8
+ Zoom,
9
+ } from "@mui/material";
10
+ import { Container, ContainerSelect } from "./styles";
11
+ import React from "react";
12
+ import { ButtonV2 } from "../../atoms/ButtonV2";
13
+ import {
14
+ faCaretDown as IconDownArrow,
15
+ faSearch as IconSearch,
16
+ } from "@fortawesome/free-solid-svg-icons";
17
+ import { isArrayEmpty, isStringEmpty } from "../../../global-files/utils";
18
+ import { SelectItemV2 } from "../../atoms/SelectItemV2";
19
+ import { InputText } from "../../atoms/InputText";
20
+
21
+ export const SelectV2 = (props) => {
22
+ const {
23
+ items /* [
24
+ {
25
+ label: string,
26
+ value: string | number,
27
+ selected: (boolean) true -> item seleccionado al inicio
28
+ } ,
29
+ ...
30
+ ] */,
31
+ triggerType, // (string) "hover" | "click"
32
+ selectButton /* {
33
+ className: string,
34
+ type: (string) tipos validos de ButtonV2,
35
+ transparent: boolean,
36
+ disabled: boolean,
37
+ label: string ,
38
+ size: number ,
39
+ } */,
40
+ defaultItem /* {
41
+ label: string,
42
+ itemType: (string) "checkbox" | "marginCheckbox" | "labelOnly"
43
+ showLabelInSelect: boolean, cuando esta seleccionado ver label en el btnSelect??
44
+ } */,
45
+ inputSearch /* {
46
+ className: string,
47
+ defaultText: string ,
48
+ } */,
49
+ maxWidthSelect, // string
50
+ maxWidthDropdown, // string
51
+ maxHeightDropdown, // string
52
+ maxWidthItems, // string
53
+ alignmentItemsOverflow, // (string) "columns" | "rows" -> por default "rows"
54
+ typeSelectItems, // (string) "checkbox" | "marginCheckbox" | "labelOnly"
55
+ multiple, // (boolean) se permite multiple seleccion??
56
+ borderType, // (string) "rectangle" | "oval" -> por default oval
57
+ classNameSelect, // (string) clase del container select
58
+ classNameDropdown, // (string) clase del contenedor tooltip
59
+ positionDropdown, // (string) posicion del contenedor tooltip (values en object positions)
60
+ onChange, // (selectedItems: []) = {} array con los values de los items seleccionados
61
+ } = props;
62
+ const positions = {
63
+ topStart: "top-start",
64
+ topEnd: "top-end",
65
+ topCenter: "top",
66
+
67
+ rightStart: "right-start",
68
+ rightEnd: "right-end",
69
+ rightCenter: "right",
70
+
71
+ bottomStart: "bottom-start",
72
+ bottomEnd: "bottom-end",
73
+ bottomCenter: "bottom",
74
+
75
+ leftStart: "left-start",
76
+ leftEnd: "left-end",
77
+ leftCenter: "left",
78
+ };
79
+ const [selectedItems, setSelectedItems] = useState(); // { .. }
80
+ const [customItems, setCustomItems] = useState([]);
81
+ const [showDropdown, setShowDropdown] = useState(false);
82
+ const [labelSelect, setLabelSelect] = useState("Sin titulo");
83
+ const [textInputSearch, setTextInputSearch] = useState("");
84
+
85
+ const refInputTextSearch = useRef();
86
+
87
+ // cada que cambie la lista de items
88
+ useEffect(() => {
89
+ if (isArrayEmpty(items)) {
90
+ setSelectedItems({});
91
+ return;
92
+ }
93
+ // items iniciales seleccionados
94
+ let initialSelectedItems = {};
95
+ items.forEach((item) => {
96
+ if (item.selected) {
97
+ if (multiple) initialSelectedItems[item.value] = item.value;
98
+ else initialSelectedItems = { [item.value]: item.value };
99
+ }
100
+ });
101
+ setSelectedItems(initialSelectedItems);
102
+ }, [items]);
103
+
104
+ // cada que cambien los items seleccionados
105
+ useEffect(() => {
106
+ if (!selectedItems) return;
107
+ renderItems();
108
+ renderLabelSelect();
109
+ onChange && onChange(Object.values(selectedItems));
110
+ }, [selectedItems]);
111
+
112
+ // evento click de cada item de la lista
113
+ const onClickItem = (isSelected, value) => {
114
+ let selectedItemsCopy = { ...selectedItems };
115
+ if (isSelected) {
116
+ multiple
117
+ ? (selectedItemsCopy[value] = value)
118
+ : (selectedItemsCopy = { [value]: value });
119
+ } else delete selectedItemsCopy[value];
120
+ setSelectedItems(selectedItemsCopy);
121
+ };
122
+
123
+ const onClickSearch = () => {
124
+ setTextInputSearch(textInputSearch.trim());
125
+ refInputTextSearch?.current && refInputTextSearch.current.blur();
126
+ renderItems(textInputSearch.trim());
127
+ };
128
+
129
+ const renderLabelSelect = () => {
130
+ if (!selectedItems) return;
131
+ const selectedItemsCopy = Object.values(selectedItems);
132
+ if (selectedItemsCopy.length > 1) {
133
+ setLabelSelect("Personalizado");
134
+ } else if (selectedItemsCopy.length === 1) {
135
+ let labelItem = undefined;
136
+ for (const item of items) {
137
+ if (item.value == selectedItemsCopy[0]) {
138
+ labelItem = item.label;
139
+ break;
140
+ }
141
+ }
142
+ !isStringEmpty(labelItem)
143
+ ? setLabelSelect(labelItem)
144
+ : setLabelSelect("Sin titulo");
145
+ } else {
146
+ if (
147
+ !isStringEmpty(defaultItem?.label) &&
148
+ defaultItem?.showLabelInSelect
149
+ ) {
150
+ setLabelSelect(defaultItem.label);
151
+ } else if (!isStringEmpty(selectButton?.label)) {
152
+ setLabelSelect(selectButton.label);
153
+ } else {
154
+ setLabelSelect("Sin titulo");
155
+ }
156
+ }
157
+ };
158
+
159
+ const renderItems = (textSearch = "") => {
160
+ if (isArrayEmpty(items)) setCustomItems([]);
161
+ setCustomItems(
162
+ items.map((item, index) => {
163
+ if (
164
+ !isStringEmpty(textSearch) &&
165
+ !item.label
166
+ .trim()
167
+ .toLowerCase()
168
+ .includes(textSearch.trim().toLowerCase())
169
+ ) {
170
+ return null;
171
+ }
172
+ return (
173
+ <SelectItemV2
174
+ key={classNameSelect + "_item" + index}
175
+ label={item.label}
176
+ value={item.value}
177
+ checkbox={
178
+ typeSelectItems === "checkbox"
179
+ ? true
180
+ : typeSelectItems === "marginCheckbox"
181
+ ? false
182
+ : undefined
183
+ }
184
+ selected={selectedItems && selectedItems[item.value] ? true : false}
185
+ onClick={onClickItem}
186
+ />
187
+ );
188
+ })
189
+ );
190
+ };
191
+
192
+ return (
193
+ <ClickAwayListener
194
+ onClickAway={(event) => {
195
+ if (triggerType !== "hover") setShowDropdown(false);
196
+ }}
197
+ >
198
+ <Container
199
+ className={!isStringEmpty(classNameSelect) ? classNameSelect : ""}
200
+ borderType={borderType}
201
+ maxWidthSelect={maxWidthSelect}
202
+ maxWidthDropdown={maxWidthDropdown}
203
+ maxHeightDropdown={maxHeightDropdown}
204
+ alignmentItemsOverflow={alignmentItemsOverflow}
205
+ maxWidthItems={maxWidthItems}
206
+ >
207
+ <TooltipMUI
208
+ {...props}
209
+ placement={positions[positionDropdown] ?? positions.bottomCenter}
210
+ open={triggerType !== "hover" ? showDropdown : undefined}
211
+ arrow={false}
212
+ componentsProps={{
213
+ tooltip: {
214
+ className:
215
+ "dropdownSelect" +
216
+ (isStringEmpty(classNameDropdown)
217
+ ? ""
218
+ : " " + classNameDropdown),
219
+ },
220
+ popper: { disablePortal: true },
221
+ transition: { timeout: 300 },
222
+ }}
223
+ TransitionComponent={Fade}
224
+ enterDelay={100}
225
+ followCursor={false}
226
+ disableFocusListener
227
+ disableTouchListener
228
+ disableHoverListener={triggerType !== "hover"}
229
+ title={
230
+ <>
231
+ {/* input search */}
232
+ {inputSearch && (
233
+ <div
234
+ className={
235
+ "container-inputSearch" +
236
+ (!isStringEmpty(inputSearch?.className)
237
+ ? " " + inputSearch.className
238
+ : "")
239
+ }
240
+ >
241
+ <ButtonV2
242
+ className="buttonSearch"
243
+ type={"gray"}
244
+ transparent
245
+ size={14}
246
+ icon={IconSearch}
247
+ onClick={(event) => {
248
+ if (
249
+ isStringEmpty(textInputSearch) &&
250
+ refInputTextSearch?.current
251
+ ) {
252
+ setTextInputSearch("");
253
+ refInputTextSearch.current.focus();
254
+ } else {
255
+ onClickSearch();
256
+ }
257
+ }}
258
+ />
259
+
260
+ <InputText
261
+ className="inputSearch"
262
+ type="black"
263
+ transparent
264
+ size={12}
265
+ placeHolder={
266
+ isStringEmpty(inputSearch?.defaultText)
267
+ ? "Texto a buscar"
268
+ : inputSearch.defaultText
269
+ }
270
+ text={textInputSearch}
271
+ onChangeText={(newValue) => setTextInputSearch(newValue)}
272
+ onEnter={(event) => onClickSearch()}
273
+ refInputText={refInputTextSearch}
274
+ />
275
+ </div>
276
+ )}
277
+
278
+ {/* item por default */}
279
+ {defaultItem && (
280
+ <SelectItemV2
281
+ label={defaultItem.label}
282
+ value={null}
283
+ checkbox={
284
+ defaultItem.itemType === "checkbox"
285
+ ? true
286
+ : defaultItem.itemType === "marginCheckbox"
287
+ ? false
288
+ : undefined
289
+ }
290
+ selected={
291
+ selectedItems && Object.keys(selectedItems).length
292
+ ? false
293
+ : true
294
+ }
295
+ onClick={(isSelected, value) => {
296
+ selectedItems &&
297
+ Object.keys(selectedItems).length &&
298
+ setSelectedItems({});
299
+ }}
300
+ />
301
+ )}
302
+
303
+ {/* lista de items */}
304
+ <div className="container-items">{customItems}</div>
305
+ </>
306
+ }
307
+ >
308
+ <ContainerSelect className={"container-buttonSelect"}>
309
+ <ButtonV2
310
+ className={
311
+ "buttonSelect" +
312
+ (!isStringEmpty(selectButton?.className)
313
+ ? " " + selectButton.className
314
+ : "")
315
+ }
316
+ disabled={selectButton?.disabled}
317
+ type={selectButton?.type}
318
+ transparent={selectButton?.transparent}
319
+ label={labelSelect}
320
+ size={selectButton?.size}
321
+ icon={IconDownArrow}
322
+ iconPosition="end"
323
+ onClick={(event) => {
324
+ if (triggerType !== "hover") setShowDropdown((prev) => !prev);
325
+ }}
326
+ />
327
+ </ContainerSelect>
328
+ </TooltipMUI>
329
+ </Container>
330
+ </ClickAwayListener>
331
+ );
332
+ };
@@ -0,0 +1,100 @@
1
+ import { FontFamily } from "../../../global-files/variables";
2
+ import styled from "styled-components";
3
+
4
+ export const Container = styled.div`
5
+ width: fit-content;
6
+ max-width: ${({ maxWidthSelect }) =>
7
+ maxWidthSelect ? maxWidthSelect : "unset"};
8
+ //border: 1px solid red;
9
+ border-radius: ${({ borderType }) => {
10
+ return borderType?.toLowerCase() === "rectangle"
11
+ ? "6px"
12
+ : borderType?.toLowerCase() === "oval"
13
+ ? "17px"
14
+ : "0px"; // default none
15
+ }};
16
+ `;
17
+
18
+ export const ContainerSelect = styled.div`
19
+ width: 100%;
20
+ border-radius: inherit;
21
+
22
+ .buttonSelect {
23
+ width: 100%;
24
+ border-radius: inherit;
25
+
26
+ .button {
27
+ padding: 10px 16px;
28
+ gap: 10px;
29
+ .icon {
30
+ font-size: 13px;
31
+ }
32
+ }
33
+ }
34
+
35
+ + .MuiTooltip-popper {
36
+ background-color: transparent;
37
+
38
+ .dropdownSelect {
39
+ --background: white;
40
+ box-shadow: 0px 0px 10px 1px gray;
41
+ background-color: var(--background);
42
+ padding: 6px 0px;
43
+ border-radius: 7px;
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: 0px;
47
+ max-width: ${({ maxWidthDropdown }) =>
48
+ maxWidthDropdown ? maxWidthDropdown : "400px"};
49
+ max-height: ${({ maxHeightDropdown }) =>
50
+ maxHeightDropdown ? maxHeightDropdown : "80vh"};
51
+
52
+ .container-inputSearch {
53
+ width: 100%;
54
+ display: flex;
55
+ flex-direction: row;
56
+ flex-wrap: nowrap;
57
+ align-items: center;
58
+ gap: 0px;
59
+ padding: 0px 10px 8px 10px;
60
+ border-bottom: 1px solid #f0f0f0;
61
+
62
+ .inputSearch {
63
+ padding-left: 8px;
64
+ flex-grow: 2;
65
+ }
66
+ }
67
+
68
+ .selectItemV2 {
69
+ width: 100%;
70
+ }
71
+
72
+ .container-items {
73
+ flex-grow: 2;
74
+ display: flex;
75
+ flex-direction: column;
76
+ flex-wrap: ${({ alignmentItemsOverflow }) =>
77
+ alignmentItemsOverflow === "columns" ? "wrap" : "nowrap"};
78
+ overflow: auto;
79
+
80
+ .selectItemV2 {
81
+ width: ${({ maxWidthItems }) =>
82
+ maxWidthItems ? maxWidthItems : "100%"};
83
+ }
84
+ }
85
+ }
86
+
87
+ &[data-popper-placement*="bottom"] .dropdownSelect {
88
+ margin-top: 10px;
89
+ }
90
+ &[data-popper-placement*="top"] .dropdownSelect {
91
+ margin-bottom: 10px;
92
+ }
93
+ &[data-popper-placement*="left"] .dropdownSelect {
94
+ margin-right: 10px;
95
+ }
96
+ &[data-popper-placement*="right"] .dropdownSelect {
97
+ margin-left: 10px;
98
+ }
99
+ }
100
+ `;
@@ -0,0 +1,199 @@
1
+ import { Chat } from "./index";
2
+
3
+ export default {
4
+ title: "Components/organisms/Chat",
5
+ component: Chat,
6
+ argTypes: {
7
+ chatContainerType: {
8
+ options: ["popUp", "fixed"],
9
+ control: { type: "select" },
10
+ },
11
+ chatType: {
12
+ options: ["order_product", "merchant_product", "ticket"],
13
+ control: { type: "select" },
14
+ },
15
+ },
16
+ };
17
+
18
+ const Template = (args) => <Chat {...args} />;
19
+
20
+ // ejemplo del chat orderProduct con user CADENA
21
+ export const chatCAD_orderProduct = Template.bind({});
22
+ chatCAD_orderProduct.args = {
23
+ chatType: "order_product",
24
+ chatContainerType: "popUp",
25
+ chatData: {
26
+ userToken:
27
+ "eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI1ODg0YWUzNC01OWQ2LTQ0NTQtYjk4ZS04MjE1MThiY2MzYTciLCJjb2duaXRvOmdyb3VwcyI6WyJ1c3VhcmlvX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjpmYWxzZSwiY29nbml0bzp1c2VybmFtZSI6IjU4ODRhZTM0LTU5ZDYtNDQ1NC1iOThlLTgyMTUxOGJjYzNhNyIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiI2YmI0NzExMi03ZTNiLTRjYzUtYmVhZS02MzMxZjEwYjk3MzIiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY2NTYxNjI0MSwibmFtZSI6IkNhZGVuYSBJc21hZWwiLCJwaG9uZV9udW1iZXIiOiIrNTIzMTExMzY2MzM2IiwiZXhwIjoxNjY1NjE5ODQxLCJpYXQiOjE2NjU2MTYyNDEsImVtYWlsIjoiY2FkZW5hLmlzbWFlbEBhbGxmcmVlbWFpbC5uZXQifQ.gi1Jiua_O175vHLy-CYXOR945IRcObIj5j1LNk4_EhcKPz-MzPnfWDLH7L3sTiNS-VUhIRtAhtUVPUSYv0oP1qfJwFHomerxJvYgJge8SLWPjL6yGBnTxAvHVbuLU8kcaoZup2eNMV6XOIAEBAHeCDm4vW0rYWwfrKADPyYGZQF2si14o3wtgSMX5a4ccxGwikT3to3HttWBhmJs_I1Xr_BvBxePc4WghjQr5GVGbq8vhr4HwdkTmlcJAnQsc_fmIdbJ_ACyTa1wr343KYYOQVwBjAmZDa6rU16y0yTr_J4IVWY3aS5UpBEBHy4XE0c76UaN-_DcGiVl4ayWQIUz8A",
28
+ id: 84311,
29
+ retailerId: 68,
30
+ orderId: 3118,
31
+ },
32
+ };
33
+
34
+ // ejemplo del chat orderProduct con user PROVEEDOR
35
+ export const chatPROV_orderProduct = Template.bind({});
36
+ chatPROV_orderProduct.args = {
37
+ chatType: "order_product",
38
+ chatContainerType: "popUp",
39
+ chatData: {
40
+ userToken:
41
+ "eyJraWQiOiJEV3owZnNieXg2MXNFcVduN3RCXC81bVhod3ZNbFZIOTgwUnZcL3RjT0lKdEk9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI5ZDBjYzVjOC1hODllLTRiZGQtOWUyZC0zNThhMDFjYzlhNjIiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfbFN6UVo0WjdSIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjp0cnVlLCJjb2duaXRvOnVzZXJuYW1lIjoiOWQwY2M1YzgtYTg5ZS00YmRkLTllMmQtMzU4YTAxY2M5YTYyIiwiYXVkIjoiNTJkOXNra2RjZzhxanA4OG9vazF1c2U2bWsiLCJldmVudF9pZCI6IjU1NDQ5NzhmLWExMGEtNGE5Ni05M2NkLWY5Y2ZmNTFlNWRlOCIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjY1NjI0MjYyLCJuYW1lIjoiSXNtYWVsIExvcGV6IiwicGhvbmVfbnVtYmVyIjoiKzUyMzExMTM2NjMzNiIsImV4cCI6MTY2NTYyNzg2MiwiaWF0IjoxNjY1NjI0MjYyLCJlbWFpbCI6Imlsb3BlekBjb250ZW50b2guY29tIn0.bIDIv57LRgafkymcUY4DqFRxR91iTBlZ7H7v1o3TnwJpIFPUEvzfvHObDR534xfa-R5ZRz46YCjsV6yQ-2hd8OA97VFLrqyC8Yqx_hjoIA1QxX_5_-b4UWaIib_1wSkrWd2gQtuKAUucfzAisZp1UNiY6Sm4VPGXsc5Lk6kLo1X_rctLUlQMhl5KaMNaSWqvbcYZLz5XSpbJR_MHegkdquKBaQJVKl76TkvDT8Eyr6rPUUAtnRBAPfnP4dW82HgT-aZp-0wUH5fYcb02agPg4-wqVsxPr8WxihATqn9rVfR5CjZWYOGPdSw7AUS33yYAkx5Nmnz4oIcRlPsvF5U62g",
42
+ id: 84311,
43
+ retailerId: 68,
44
+ orderId: 3118,
45
+ },
46
+ };
47
+
48
+ // ejemplo del chat orderProduct con user FABRICA 37
49
+ export const chatFAB_orderProduct_user37 = Template.bind({});
50
+ chatFAB_orderProduct_user37.args = {
51
+ chatType: "order_product",
52
+ chatContainerType: "popUp",
53
+ chatData: {
54
+ userToken:
55
+ "eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI5YTIxMzEyOC02NDgyLTRjMTYtYTRiNi02ZTY0ZjIyNWIxYmQiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6IjlhMjEzMTI4LTY0ODItNGMxNi1hNGI2LTZlNjRmMjI1YjFiZCIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiI1YTg4MmFkMS04OWFjLTQwYTYtYWRhMi02NzgyNWNjMzNiZTciLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY2NjIwNTg2NSwibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTY2NjIwOTQ2NSwiaWF0IjoxNjY2MjA1ODY1LCJlbWFpbCI6ImlzbWFlbDk3bG9wZXpAZ21haWwuY29tIn0.HOsBuNBBeDL4Vwhi5Rou0jzZqOO_n_AIvoFOVRuFFiVppzaTDFNEVcapq9hCLIGQZT5NK8Arwo-nZkcVVAqHMsu8KKJsPQZIkGbHI6CVD7IkBBfm756e-tTuHHBYd4ND3HifVDWwno8mEODLZdaWRcy5MN3TErqCEy8cf1u7CQSguKmjeElL-8DHtNfLKMnxJOGGW_JAEa1JVWninzekPAeFKmWFOtByFCJZT1HBmL9XERIXXN6qWU_g0KlUm_wBWkmIDxuVRPorFEPinh0ETAGkGa5mf1SPaibXXSEoiF58DkFRyrOcTVKnV7Dixjo6DvBwN98fYW0zaeo3G5nSXw",
56
+ id: 84311,
57
+ retailerId: 68,
58
+ orderId: 3118,
59
+ },
60
+ };
61
+
62
+ // ejemplo del chat orderProduct con user FABRICA 49
63
+ export const chatFAB_orderProduct_user49 = Template.bind({});
64
+ chatFAB_orderProduct_user49.args = {
65
+ chatType: "order_product",
66
+ chatContainerType: "popUp",
67
+ chatData: {
68
+ userToken:
69
+ "eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIxODA1MDQ1Mi0xOGQ0LTQxM2ItYjg2MC1iMWMyMzZmMTM5OWYiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6IjE4MDUwNDUyLTE4ZDQtNDEzYi1iODYwLWIxYzIzNmYxMzk5ZiIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiJkYmU1ODRmOS0xOTJmLTRkNDEtOWMxMS0xMzRkMDgzODVjMDQiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY2NTcxNjI3NywibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTY2NTcxOTg3NywiaWF0IjoxNjY1NzE2Mjc3LCJlbWFpbCI6Im16dW5pZ2FAY29udGVudG9oLmNvbSJ9.KoPNFy9gZYoYjiCGanSe_MvnuX7rSvNTXqQVffXSzGYeb4R3G6yDWrWItjHfgFmmo1jLlTmLT_yiVC4g9Vpo9WxebPwZA9rFwKDbc3vKeAs1JSUfaatQOwIqS1NsHwEkAM-agsO2s2Rnqq4h-FCcURqjiknbvHXUjcXqSea-3JlxtVFw3x7NLG3bUPqfPyVV1N5jR-XMrDOSZctS2k4WvPqhxf75Iv77U23YNFRoOIUZIAYx8SmSw792h4YwmJqMUuZlo48aBaaZO3NE83KdMR-mYvvoa-TDIE2d9ww-vPctauVL9ydB5ISSB8gUz90o8IZIWjrwQgbzE7eRPKxPWw",
70
+ id: 84311,
71
+ retailerId: 68,
72
+ orderId: 3118,
73
+ },
74
+ };
75
+
76
+ // ejemplo del chat merchantProduct con user CADENA
77
+ export const chatCAD_merchantsProduct = Template.bind({});
78
+ chatCAD_merchantsProduct.args = {
79
+ chatType: "merchant_product",
80
+ chatContainerType: "popUp",
81
+ chatData: {
82
+ userToken:
83
+ "eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI1ODg0YWUzNC01OWQ2LTQ0NTQtYjk4ZS04MjE1MThiY2MzYTciLCJjb2duaXRvOmdyb3VwcyI6WyJ1c3VhcmlvX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjpmYWxzZSwiY29nbml0bzp1c2VybmFtZSI6IjU4ODRhZTM0LTU5ZDYtNDQ1NC1iOThlLTgyMTUxOGJjYzNhNyIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiI2YmI0NzExMi03ZTNiLTRjYzUtYmVhZS02MzMxZjEwYjk3MzIiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY2NTYxNjI0MSwibmFtZSI6IkNhZGVuYSBJc21hZWwiLCJwaG9uZV9udW1iZXIiOiIrNTIzMTExMzY2MzM2IiwiZXhwIjoxNjY1NjE5ODQxLCJpYXQiOjE2NjU2MTYyNDEsImVtYWlsIjoiY2FkZW5hLmlzbWFlbEBhbGxmcmVlbWFpbC5uZXQifQ.gi1Jiua_O175vHLy-CYXOR945IRcObIj5j1LNk4_EhcKPz-MzPnfWDLH7L3sTiNS-VUhIRtAhtUVPUSYv0oP1qfJwFHomerxJvYgJge8SLWPjL6yGBnTxAvHVbuLU8kcaoZup2eNMV6XOIAEBAHeCDm4vW0rYWwfrKADPyYGZQF2si14o3wtgSMX5a4ccxGwikT3to3HttWBhmJs_I1Xr_BvBxePc4WghjQr5GVGbq8vhr4HwdkTmlcJAnQsc_fmIdbJ_ACyTa1wr343KYYOQVwBjAmZDa6rU16y0yTr_J4IVWY3aS5UpBEBHy4XE0c76UaN-_DcGiVl4ayWQIUz8A",
84
+ id: 84300,
85
+ version: 1,
86
+ },
87
+ };
88
+
89
+ /*
90
+ export const chatPROV_merchantsProduct = Template.bind({});
91
+ chatPROV_merchantsProduct.args = {
92
+ userToken:
93
+ "eyJraWQiOiJEV3owZnNieXg2MXNFcVduN3RCXC81bVhod3ZNbFZIOTgwUnZcL3RjT0lKdEk9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI5ZDBjYzVjOC1hODllLTRiZGQtOWUyZC0zNThhMDFjYzlhNjIiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfbFN6UVo0WjdSIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjp0cnVlLCJjb2duaXRvOnVzZXJuYW1lIjoiOWQwY2M1YzgtYTg5ZS00YmRkLTllMmQtMzU4YTAxY2M5YTYyIiwiYXVkIjoiNTJkOXNra2RjZzhxanA4OG9vazF1c2U2bWsiLCJldmVudF9pZCI6IjU1NDQ5NzhmLWExMGEtNGE5Ni05M2NkLWY5Y2ZmNTFlNWRlOCIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjY1NjI0MjYyLCJuYW1lIjoiSXNtYWVsIExvcGV6IiwicGhvbmVfbnVtYmVyIjoiKzUyMzExMTM2NjMzNiIsImV4cCI6MTY2NTYyNzg2MiwiaWF0IjoxNjY1NjI0MjYyLCJlbWFpbCI6Imlsb3BlekBjb250ZW50b2guY29tIn0.bIDIv57LRgafkymcUY4DqFRxR91iTBlZ7H7v1o3TnwJpIFPUEvzfvHObDR534xfa-R5ZRz46YCjsV6yQ-2hd8OA97VFLrqyC8Yqx_hjoIA1QxX_5_-b4UWaIib_1wSkrWd2gQtuKAUucfzAisZp1UNiY6Sm4VPGXsc5Lk6kLo1X_rctLUlQMhl5KaMNaSWqvbcYZLz5XSpbJR_MHegkdquKBaQJVKl76TkvDT8Eyr6rPUUAtnRBAPfnP4dW82HgT-aZp-0wUH5fYcb02agPg4-wqVsxPr8WxihATqn9rVfR5CjZWYOGPdSw7AUS33yYAkx5Nmnz4oIcRlPsvF5U62g",
94
+ chatType: "merchants_products",
95
+ articleId: "84300",
96
+ articleVersion: "1",
97
+ };*/
98
+
99
+ // ejemplo del chat ticket con user FAB
100
+ export const chatFAB_ticketClosed_user49 = Template.bind({});
101
+ chatFAB_ticketClosed_user49.args = {
102
+ chatType: "ticket",
103
+ chatContainerType: "fixed",
104
+ chatData: {
105
+ id: 10,
106
+ ticketOwnerUserId: 23,
107
+ statusTicket: "COMPLETED",
108
+ currentUser: {
109
+ id: 49,
110
+ companyId: 2,
111
+ isUserTech: false,
112
+ },
113
+ },
114
+ };
115
+
116
+ // ejemplo del chat ticket con user TECH
117
+ export const chatTECH_ticketClosed_user65 = Template.bind({});
118
+ chatTECH_ticketClosed_user65.args = {
119
+ chatType: "ticket",
120
+ chatContainerType: "fixed",
121
+ chatData: {
122
+ id: 10,
123
+ ticketOwnerUserId: 23,
124
+ statusTicket: "COMPLETED",
125
+ currentUser: {
126
+ id: 65,
127
+ companyId: 2,
128
+ isUserTech: true,
129
+ },
130
+ },
131
+ };
132
+
133
+ // ejemplo del chat ticket con user TECH propietario del ticket
134
+ export const chatTECH_ticketClosedOwn_user66 = Template.bind({});
135
+ chatTECH_ticketClosedOwn_user66.args = {
136
+ chatType: "ticket",
137
+ chatContainerType: "fixed",
138
+ chatData: {
139
+ id: 10,
140
+ ticketOwnerUserId: 66,
141
+ statusTicket: "COMPLETED",
142
+ currentUser: {
143
+ id: 66,
144
+ companyId: 2,
145
+ isUserTech: true,
146
+ },
147
+ },
148
+ };
149
+
150
+ // ejemplo del chat ticket con user FAB
151
+ export const chatFAB_ticketOpen_user49 = Template.bind({});
152
+ chatFAB_ticketOpen_user49.args = {
153
+ chatType: "ticket",
154
+ chatContainerType: "fixed",
155
+ chatData: {
156
+ id: 11,
157
+ ticketOwnerUserId: 23,
158
+ statusTicket: "PENDING",
159
+ currentUser: {
160
+ id: 49,
161
+ companyId: 2,
162
+ isUserTech: false,
163
+ },
164
+ },
165
+ };
166
+
167
+ // ejemplo del chat ticket con user TECH
168
+ export const chatTECH_ticketOpen_user65 = Template.bind({});
169
+ chatTECH_ticketOpen_user65.args = {
170
+ chatType: "ticket",
171
+ chatContainerType: "fixed",
172
+ chatData: {
173
+ id: 11,
174
+ ticketOwnerUserId: 23,
175
+ statusTicket: "PENDING",
176
+ currentUser: {
177
+ id: 65,
178
+ companyId: 2,
179
+ isUserTech: true,
180
+ },
181
+ },
182
+ };
183
+
184
+ // ejemplo del chat ticket con user TECH propietario del ticket
185
+ export const chatTECH_ticketOpenOwn_user66 = Template.bind({});
186
+ chatTECH_ticketOpenOwn_user66.args = {
187
+ chatType: "ticket",
188
+ chatContainerType: "fixed",
189
+ chatData: {
190
+ id: 11,
191
+ ticketOwnerUserId: 66,
192
+ statusTicket: "PENDING",
193
+ currentUser: {
194
+ id: 66,
195
+ companyId: 2,
196
+ isUserTech: true,
197
+ },
198
+ },
199
+ };
@@ -0,0 +1,65 @@
1
+ import { ChatLists } from "./index";
2
+ import THD from "./THD.png";
3
+ import Rotoplas from "./Rotoplas.jpeg";
4
+
5
+ export default {
6
+ title: "Components/organisms/Chat/ChatLists",
7
+ component: ChatLists,
8
+ };
9
+
10
+ const Template = (args) => <ChatLists {...args} />;
11
+
12
+ // companies de prueba
13
+ const companies = {
14
+ 200: {
15
+ name: "The Home Depot",
16
+ src: THD,
17
+ lastChatDate: "2022-11-4 21:01:00",
18
+ statusChat: "disabled",
19
+ },
20
+ 300: {
21
+ name: "Rotoplas",
22
+ src: Rotoplas,
23
+ lastChatDate: "2022-11-03 21:01:00",
24
+ statusChat: "enabled",
25
+ },
26
+ 100: {
27
+ name: "Content-oh!",
28
+ src: "",
29
+ lastChatDate: "2022-11-02 21:01:00",
30
+ statusChat: "current",
31
+ },
32
+ };
33
+ // companies de prueba sin chats cerrados
34
+ const companies2 = {
35
+ 300: {
36
+ name: "Rotoplas",
37
+ src: Rotoplas,
38
+ lastChatDate: "2022-10-27 21:01:00",
39
+ statusChat: "enabled",
40
+ },
41
+ 100: {
42
+ name: "Content-oh!",
43
+ src: "",
44
+ lastChatDate: "2022-9-27 21:01:00",
45
+ statusChat: "current",
46
+ },
47
+ };
48
+
49
+ export const exampleChatLists = Template.bind({});
50
+ exampleChatLists.args = {
51
+ companies,
52
+ currentCompanyId: 100,
53
+ onClickCompany: (companyId) => {
54
+ console.log("click en company:", companyId);
55
+ },
56
+ };
57
+
58
+ export const onlyOpenChatLists = Template.bind({});
59
+ onlyOpenChatLists.args = {
60
+ companies: companies2,
61
+ currentCompanyId: 100,
62
+ onClickCompany: (companyId) => {
63
+ console.log("click en company:", companyId);
64
+ },
65
+ };