contentoh-components-library 21.5.3 → 21.5.4

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 (294) hide show
  1. package/dist/components/organisms/InputGroup/index.js +1 -1
  2. package/dist/components/organisms/Table/styles.js +1 -1
  3. package/dist/components/pages/MultipleEdition/saveData.js +9 -19
  4. package/dist/components/pages/MultipleEdition/styles.js +1 -1
  5. package/dist/components/pages/MultipleEdition/utils.js +86 -153
  6. package/package.json +4 -1
  7. package/src/assets/images/Icons/addv2.svg +8 -0
  8. package/src/assets/images/Icons/beenhere.svg +9 -0
  9. package/src/assets/images/Icons/checkv2.svg +8 -0
  10. package/src/assets/images/Icons/close-magenta.svg +9 -0
  11. package/src/assets/images/Icons/close.svg +8 -0
  12. package/src/assets/images/Icons/closeCircle.svg +8 -0
  13. package/src/assets/images/Icons/delete-forever-red.svg +9 -0
  14. package/src/assets/images/Icons/delete-forever-white.svg +10 -0
  15. package/src/assets/images/Icons/edit.svg +8 -0
  16. package/src/assets/images/Icons/fullscreen.svg +3 -0
  17. package/src/assets/images/Icons/infoNR.svg +8 -0
  18. package/src/assets/images/Icons/options.svg +3 -0
  19. package/src/assets/images/Icons/save-white-gray.svg +9 -0
  20. package/src/assets/images/Icons/save-white.svg +9 -0
  21. package/src/assets/images/Icons/save.svg +8 -0
  22. package/src/assets/images/Icons/search.svg +3 -0
  23. package/src/assets/images/Icons/settings.svg +8 -0
  24. package/src/assets/images/Icons/trash.svg +8 -0
  25. package/src/assets/images/Icons/undo.svg +8 -0
  26. package/src/assets/images/Icons/upload-file-white.svg +4 -0
  27. package/src/assets/images/Icons/upload-file.svg +10 -0
  28. package/src/assets/images/Icons/upload_file.svg +10 -0
  29. package/src/assets/images/Icons/warningv2.svg +3 -0
  30. package/src/assets/images/checkBox/checkrosa.svg +3 -0
  31. package/src/assets/images/checkBox/checkverde.svg +3 -0
  32. package/src/assets/images/flagsv2/highPriority.svg +3 -0
  33. package/src/assets/images/flagsv2/lowPriority.svg +3 -0
  34. package/src/assets/images/flagsv2/mediumPriority.svg +3 -0
  35. package/src/assets/images/flagsv2/noPriority.svg +3 -0
  36. package/src/assets/images/generalButton/closeIconWhite.svg +4 -0
  37. package/src/assets/images/generalButton/closeIconv2.svg +4 -0
  38. package/src/assets/images/generalButton/saveIconpink.svg +3 -0
  39. package/src/components/atoms/Avatar/index.js +8 -2
  40. package/src/components/atoms/ButtonV2/ButtonV2.stories.js +1 -0
  41. package/src/components/atoms/ButtonV2/index.js +1 -0
  42. package/src/components/atoms/ButtonV2/styles.js +16 -0
  43. package/src/components/atoms/CharsMissing/Wysiwyg.stories.js +12 -0
  44. package/src/components/atoms/CharsMissing/index.js +60 -0
  45. package/src/components/atoms/CharsMissing/styles.js +44 -0
  46. package/src/components/atoms/CheckBox/CheckBox.stories.js +5 -0
  47. package/src/components/atoms/CheckBox/index.js +5 -1
  48. package/src/components/atoms/CheckBox/styles.js +9 -3
  49. package/src/components/atoms/CustomChip/CustomChip.stories.js +16 -0
  50. package/src/components/atoms/CustomChip/index.js +34 -0
  51. package/src/components/atoms/CustomChip/styles.js +6 -0
  52. package/src/components/atoms/FeatureTagv2/FeatureTagv2.stories.js +16 -0
  53. package/src/components/atoms/FeatureTagv2/index.js +10 -0
  54. package/src/components/atoms/FeatureTagv2/styles.js +56 -0
  55. package/src/components/atoms/GeneralButton/styles.js +46 -0
  56. package/src/components/atoms/GeneralInput/index.js +3 -0
  57. package/src/components/atoms/GeneralInput/styles.js +19 -1
  58. package/src/components/atoms/GeneralInputv2/GeneralInputv2.stories.js +33 -0
  59. package/src/components/atoms/GeneralInputv2/index.js +155 -0
  60. package/src/components/atoms/GeneralInputv2/styles.js +67 -0
  61. package/src/components/atoms/InputFormatter/index.js +2 -1
  62. package/src/components/atoms/InputFormatter/styles.js +9 -4
  63. package/src/components/atoms/InputFormatterv2/Wysiwyg.stories.js +12 -0
  64. package/src/components/atoms/InputFormatterv2/index.js +148 -0
  65. package/src/components/atoms/InputFormatterv2/styles.js +39 -0
  66. package/src/components/atoms/InputImages/InputImages.stories.js +19 -0
  67. package/src/components/atoms/InputImages/index.js +25 -0
  68. package/src/components/atoms/InputImages/styles.js +17 -0
  69. package/src/components/atoms/Multiselect/Multiselect.stories.js +364 -0
  70. package/src/components/atoms/Multiselect/index.js +351 -0
  71. package/src/components/atoms/Multiselect/styles.js +33 -0
  72. package/src/components/atoms/NumberMandatory/NumberMandatory.stories.js +19 -0
  73. package/src/components/atoms/NumberMandatory/index.js +16 -0
  74. package/src/components/atoms/NumberMandatory/styles.js +11 -0
  75. package/src/components/atoms/ObservationFlag/ObservationFlag.stories.js +20 -0
  76. package/src/components/atoms/ObservationFlag/index.js +167 -0
  77. package/src/components/atoms/ObservationFlag/styles.js +104 -0
  78. package/src/components/atoms/PriorityFlagv2/PriorityFlagv2.stories.js +20 -0
  79. package/src/components/atoms/PriorityFlagv2/index.js +20 -0
  80. package/src/components/atoms/PriorityFlagv2/styles.js +6 -0
  81. package/src/components/atoms/ProductImage/index.js +24 -11
  82. package/src/components/atoms/ProductImage/styles.js +7 -0
  83. package/src/components/atoms/ProductImagev2/ProductImagev2.stories.js +28 -0
  84. package/src/components/atoms/ProductImagev2/index.js +16 -0
  85. package/src/components/atoms/ProductImagev2/styles.js +62 -0
  86. package/src/components/atoms/Progress/Progress.stories.js +25 -0
  87. package/src/components/atoms/Progress/index.js +74 -0
  88. package/src/components/atoms/Progress/styles.js +98 -0
  89. package/src/components/atoms/ScreenHeaderv2/ScreenHeaderv2.stories.js +53 -0
  90. package/src/components/atoms/ScreenHeaderv2/index.js +134 -0
  91. package/src/components/atoms/ScreenHeaderv2/styles.js +103 -0
  92. package/src/components/atoms/Selectv2/VersionSelect.js +27 -0
  93. package/src/components/atoms/Selectv2/index.js +35 -0
  94. package/src/components/atoms/Selectv2/style.js +93 -0
  95. package/src/components/atoms/SliderToolTip/styles.js +1 -1
  96. package/src/components/atoms/TabSection/index.js +1 -1
  97. package/src/components/atoms/TabSection/styles.js +0 -3
  98. package/src/components/atoms/TabSectionv2/TabSection.stories.js +25 -0
  99. package/src/components/atoms/TabSectionv2/index.js +9 -0
  100. package/src/components/atoms/TabSectionv2/styles.js +20 -0
  101. package/src/components/atoms/TooltipLight/Tooltip.stories.js +20 -0
  102. package/src/components/atoms/TooltipLight/index.js +46 -0
  103. package/src/components/atoms/TooltipLight/styles.js +65 -0
  104. package/src/components/atoms/WordsMissing/Wysiwyg.stories.js +12 -0
  105. package/src/components/atoms/WordsMissing/index.js +60 -0
  106. package/src/components/atoms/WordsMissing/styles.js +10 -0
  107. package/src/components/molecules/AddGroup/AddGroup.stories.js +15 -0
  108. package/src/components/molecules/AddGroup/index.js +84 -0
  109. package/src/components/molecules/AddGroup/styles.js +141 -0
  110. package/src/components/molecules/AsignationInfo/AsignationInfo.stories.js +17 -0
  111. package/src/components/molecules/AsignationInfo/index.js +108 -0
  112. package/src/components/molecules/AsignationInfo/styles.js +86 -0
  113. package/src/components/molecules/BoxAttribute/index.js +32 -25
  114. package/src/components/molecules/BoxAttribute/styles.js +1 -1
  115. package/src/components/molecules/BoxButtons/index.js +23 -22
  116. package/src/components/molecules/CarouselImagesLogin/index.js +1 -1
  117. package/src/components/molecules/EditionActiveImagev2/EditionActiveImagev2.stories.js +12 -0
  118. package/src/components/molecules/EditionActiveImagev2/index.js +15 -0
  119. package/src/components/molecules/EditionActiveImagev2/styles.js +7 -0
  120. package/src/components/molecules/EditionTabs/EditionTabs.stories.js +12 -0
  121. package/src/components/molecules/EditionTabs/index.js +33 -0
  122. package/src/components/molecules/EditionTabs/styles.js +24 -0
  123. package/src/components/molecules/FeaturesBarv2/FeaturesBarv2.stories.js +20 -0
  124. package/src/components/molecules/FeaturesBarv2/index.js +32 -0
  125. package/src/components/molecules/FeaturesBarv2/styles.js +17 -0
  126. package/src/components/molecules/GalleryElement/index.js +76 -1
  127. package/src/components/molecules/GalleryElementv2/GalleryElementv2.stories.js +30 -0
  128. package/src/components/molecules/GalleryElementv2/index.js +142 -0
  129. package/src/components/molecules/GalleryElementv2/styles.js +119 -0
  130. package/src/components/molecules/GalleryHeader/index.js +1 -0
  131. package/src/components/molecules/GalleryHeaderv2/GalleryHeaderv2.stories.js +10 -0
  132. package/src/components/molecules/GalleryHeaderv2/index.js +25 -0
  133. package/src/components/molecules/GalleryHeaderv2/styles.js +47 -0
  134. package/src/components/molecules/GroupSelect/GroupSelect.stories.js +35 -0
  135. package/src/components/molecules/GroupSelect/SelectItem.js +105 -0
  136. package/src/components/molecules/GroupSelect/index.js +190 -0
  137. package/src/components/molecules/GroupSelect/styles.js +124 -0
  138. package/src/components/molecules/HeaderTop/index.js +52 -6
  139. package/src/components/molecules/HeaderTopv2/HeaderTopv2.stories.js +10 -0
  140. package/src/components/molecules/HeaderTopv2/index.js +100 -0
  141. package/src/components/molecules/HeaderTopv2/styles.js +33 -0
  142. package/src/components/molecules/ImageSelectorv2/ImageSelectorv2.stories.js +46 -0
  143. package/src/components/molecules/ImageSelectorv2/index.js +22 -0
  144. package/src/components/molecules/ImageSelectorv2/styles.js +15 -0
  145. package/src/components/molecules/Phase/Phase.stories.js +107 -0
  146. package/src/components/molecules/Phase/index.js +391 -0
  147. package/src/components/molecules/Phase/styles.js +97 -0
  148. package/src/components/molecules/ProductNameHeader/index.js +19 -1
  149. package/src/components/molecules/ProductNameHeaderv2/ProductNameHeaderv2.stories.js +37 -0
  150. package/src/components/molecules/ProductNameHeaderv2/index.js +12 -0
  151. package/src/components/molecules/ProductNameHeaderv2/styles.js +10 -0
  152. package/src/components/molecules/ProductSkuStatus/ProductSkuStatus.stories.js +37 -0
  153. package/src/components/molecules/ProductSkuStatus/index.js +26 -0
  154. package/src/components/molecules/ProductSkuStatus/styles.js +7 -0
  155. package/src/components/molecules/RetailerSelectorv2/RetailerSelectorv2.stories.js +35 -0
  156. package/src/components/molecules/RetailerSelectorv2/index.js +80 -0
  157. package/src/components/molecules/RetailerSelectorv2/styles.js +21 -0
  158. package/src/components/molecules/ServiceDataValidator/ServiceDataValidator.stories.js +90 -0
  159. package/src/components/molecules/ServiceDataValidator/index.js +49 -0
  160. package/src/components/molecules/ServiceDataValidator/styles.js +36 -0
  161. package/src/components/molecules/SignInLogin/index.js +11 -11
  162. package/src/components/molecules/StatusAsignationInfo/FinancedCompanies.js +501 -63
  163. package/src/components/molecules/StatusAsignationInfo/index.js +1 -1
  164. package/src/components/molecules/StatusRetailer/StatusAsignationInfo.stories.js +17 -0
  165. package/src/components/molecules/StatusRetailer/index.js +55 -0
  166. package/src/components/molecules/StatusRetailer/styles.js +85 -0
  167. package/src/components/molecules/StripeCardSelector/CardSelector.stories.js +1 -2
  168. package/src/components/molecules/TabsMenuv2/TabsMenuv2.stories.js +19 -0
  169. package/src/components/molecules/TabsMenuv2/index.js +112 -0
  170. package/src/components/molecules/TabsMenuv2/styles.js +19 -0
  171. package/src/components/molecules/TagAndInput/index.js +8 -6
  172. package/src/components/molecules/TagAndInputv2/TagAndInputv2.stories.js +24 -0
  173. package/src/components/molecules/TagAndInputv2/index.js +86 -0
  174. package/src/components/molecules/TagAndInputv2/styles.js +35 -0
  175. package/src/components/molecules/Validation/Validation.stories.js +12 -0
  176. package/src/components/molecules/Validation/index.js +77 -0
  177. package/src/components/molecules/Validation/styles.js +19 -0
  178. package/src/components/molecules/VersionItemv2/VersionItemv2.stories.js +14 -0
  179. package/src/components/molecules/VersionItemv2/index.js +59 -0
  180. package/src/components/molecules/VersionItemv2/styles.js +47 -0
  181. package/src/components/organisms/BarButtons/BarButtons.stories.js +13 -0
  182. package/src/components/organisms/BarButtons/index.js +150 -0
  183. package/src/components/organisms/BarButtons/styles.js +54 -0
  184. package/src/components/organisms/Chat/Chat.stories.js +27 -7
  185. package/src/components/organisms/Chat/ContainerItems/index.js +18 -2
  186. package/src/components/organisms/Chat/ContainerItems/styles.js +14 -2
  187. package/src/components/organisms/Chat/ContentChat/index.js +88 -12
  188. package/src/components/organisms/Chat/Footer/index.js +11 -0
  189. package/src/components/organisms/Chat/index.js +46 -4
  190. package/src/components/organisms/Chat/styles.js +4 -0
  191. package/src/components/organisms/Chatv2/ChatLists/ChatLists.stories.js +65 -0
  192. package/src/components/organisms/Chatv2/ChatLists/Rotoplas.jpeg +0 -0
  193. package/src/components/organisms/Chatv2/ChatLists/THD.png +0 -0
  194. package/src/components/organisms/Chatv2/ChatLists/index.js +141 -0
  195. package/src/components/organisms/Chatv2/ChatLists/styles.js +162 -0
  196. package/src/components/organisms/Chatv2/Chatv2.stories.js +184 -0
  197. package/src/components/organisms/Chatv2/ContainerItems/ContainerItems.stories.js +142 -0
  198. package/src/components/organisms/Chatv2/ContainerItems/index.js +538 -0
  199. package/src/components/organisms/Chatv2/ContainerItems/styles.js +360 -0
  200. package/src/components/organisms/Chatv2/ContentChat/ContentChat.stories.js +102 -0
  201. package/src/components/organisms/Chatv2/ContentChat/Rotoplas.jpeg +0 -0
  202. package/src/components/organisms/Chatv2/ContentChat/THD.png +0 -0
  203. package/src/components/organisms/Chatv2/ContentChat/index.js +1016 -0
  204. package/src/components/organisms/Chatv2/ContentChat/styles.js +44 -0
  205. package/src/components/organisms/Chatv2/Footer/Footer.stories.js +22 -0
  206. package/src/components/organisms/Chatv2/Footer/index.js +668 -0
  207. package/src/components/organisms/Chatv2/Footer/styles.js +290 -0
  208. package/src/components/organisms/Chatv2/Header/Header.stories.js +66 -0
  209. package/src/components/organisms/Chatv2/Header/index.js +93 -0
  210. package/src/components/organisms/Chatv2/Header/styles.js +49 -0
  211. package/src/components/organisms/Chatv2/index.js +281 -0
  212. package/src/components/organisms/Chatv2/styles.js +85 -0
  213. package/src/components/organisms/CompleteServices/CompleteServices.stories.js +91 -0
  214. package/src/components/organisms/CompleteServices/index.js +82 -0
  215. package/src/components/organisms/CompleteServices/styles.js +35 -0
  216. package/src/components/organisms/DashboardMetric/index.js +6 -3
  217. package/src/components/organisms/DragAndDropPhases/DragAndDropPhases.stories.js +13 -0
  218. package/src/components/organisms/DragAndDropPhases/index.js +336 -0
  219. package/src/components/organisms/DragAndDropPhases/styles.js +107 -0
  220. package/src/components/organisms/DragPrueba/DragPrueba.stories.js +12 -0
  221. package/src/components/organisms/DragPrueba/index.js +57 -0
  222. package/src/components/organisms/DragPrueba/styles.js +8 -0
  223. package/src/components/organisms/EditGroup/EditGroup.stories.js +20 -0
  224. package/src/components/organisms/EditGroup/index.js +321 -0
  225. package/src/components/organisms/EditGroup/styles.js +207 -0
  226. package/src/components/organisms/FullProductNameHeader/index.js +13 -1
  227. package/src/components/organisms/FullProductNamev2/FullProductNamev2.stories.js +28 -0
  228. package/src/components/organisms/FullProductNamev2/index.js +101 -0
  229. package/src/components/organisms/FullProductNamev2/styles.js +49 -0
  230. package/src/components/organisms/FullTabsMenuv2/FullTabsMenuv2.stories.js +22 -0
  231. package/src/components/organisms/FullTabsMenuv2/index.js +142 -0
  232. package/src/components/organisms/FullTabsMenuv2/styles.js +47 -0
  233. package/src/components/organisms/GridProducts/GridProducts.stories.js +682 -107
  234. package/src/components/organisms/ImageDataTablev2/ImageDataTablev2.stories.js +24 -0
  235. package/src/components/organisms/ImageDataTablev2/index.js +124 -0
  236. package/src/components/organisms/ImageDataTablev2/styles.js +18 -0
  237. package/src/components/organisms/ImagePreviewerv2/ImagePreviewerv2.stories.js +38 -0
  238. package/src/components/organisms/ImagePreviewerv2/index.js +22 -0
  239. package/src/components/organisms/ImagePreviewerv2/styles.js +7 -0
  240. package/src/components/organisms/ImageUploader/ImageUploader.stories.js +15 -0
  241. package/src/components/organisms/ImageUploader/index.js +62 -0
  242. package/src/components/organisms/ImageUploader/styles.js +29 -0
  243. package/src/components/organisms/ImageVisor/ImageVisor.stories.js +15 -0
  244. package/src/components/organisms/ImageVisor/index.js +143 -0
  245. package/src/components/organisms/ImageVisor/styles.js +106 -0
  246. package/src/components/organisms/InputGroup/index.js +292 -144
  247. package/src/components/organisms/InputGroup/styles.js +31 -0
  248. package/src/components/organisms/InputGroupv2/InputGroupv2.stories.js +31 -0
  249. package/src/components/organisms/InputGroupv2/index.js +296 -0
  250. package/src/components/organisms/InputGroupv2/styles.js +90 -0
  251. package/src/components/organisms/MandatoryBar/MandatoryBar.stories.js +18 -0
  252. package/src/components/organisms/MandatoryBar/index.js +31 -0
  253. package/src/components/organisms/MandatoryBar/styles.js +12 -0
  254. package/src/components/organisms/Modal/Modal.stories.js +2 -1
  255. package/src/components/organisms/Modal/index.js +9 -2
  256. package/src/components/organisms/Modal/styles.js +8 -1
  257. package/src/components/organisms/OrderDetail/utils/Table/utils.js +6 -16
  258. package/src/components/organisms/ProductImageModalv2/ProductImageModalv2.stories.js +90 -0
  259. package/src/components/organisms/ProductImageModalv2/index.js +105 -0
  260. package/src/components/organisms/ProductImageModalv2/styles.js +71 -0
  261. package/src/components/organisms/RenameImagesBar/RenameImagesBar.stories.js +18 -0
  262. package/src/components/organisms/RenameImagesBar/index.js +30 -0
  263. package/src/components/organisms/RenameImagesBar/styles.js +12 -0
  264. package/src/components/organisms/Table/Table.stories.js +609 -0
  265. package/src/components/organisms/Table/index.js +84 -0
  266. package/src/components/organisms/Table/styles.js +114 -0
  267. package/src/components/organisms/VersionSelectorv2/VersionSelectorv2.stories.js +15 -0
  268. package/src/components/organisms/VersionSelectorv2/index.js +105 -0
  269. package/src/components/organisms/VersionSelectorv2/styles.js +45 -0
  270. package/src/components/pages/Dashboard/Dashboard.stories.js +33 -38
  271. package/src/components/pages/Dashboard/index.js +36 -7
  272. package/src/components/pages/MultipleEdition/MultipleEdition.stories.js +17 -0
  273. package/src/components/pages/MultipleEdition/components/ImageUploader.js +62 -0
  274. package/src/components/pages/MultipleEdition/components/ImageUploaderStyles.js +29 -0
  275. package/src/components/pages/MultipleEdition/components/ImageVisor.js +143 -0
  276. package/src/components/pages/MultipleEdition/components/styles.js +106 -0
  277. package/src/components/pages/MultipleEdition/index.js +248 -0
  278. package/src/components/pages/MultipleEdition/saveData.js +92 -0
  279. package/src/components/pages/MultipleEdition/styles.js +201 -0
  280. package/src/components/pages/MultipleEdition/utils.js +1073 -0
  281. package/src/components/pages/ProductEditionv2/ProductEditionv2.stories.js +213 -0
  282. package/src/components/pages/ProductEditionv2/index.js +1758 -0
  283. package/src/components/pages/ProductEditionv2/styles.js +154 -0
  284. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +56 -60
  285. package/src/components/pages/ProviderProductEdition/index.js +148 -133
  286. package/src/components/pages/ProviderProductEdition/styles.js +5 -1
  287. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +4 -0
  288. package/src/components/pages/RetailerProductEdition/generateThumnail.js +21 -0
  289. package/src/components/pages/RetailerProductEdition/index.js +293 -300
  290. package/src/components/pages/RetailerProductEdition/styles.js +4 -0
  291. package/src/components/pages/RetailerProductEdition/utils.js +37 -0
  292. package/src/global-files/data.js +6 -10
  293. package/src/global-files/variables.js +6 -0
  294. package/src/index.js +12 -0
@@ -0,0 +1,143 @@
1
+ import { useState, useEffect } from "react";
2
+ import ReactImageFallback from "react-image-fallback";
3
+ import { ImageContainer, ImageView } from "./styles.js";
4
+ import ImageUploader from "./ImageUploader.js";
5
+ import { getImageURL } from "../../../../global-files/utils.js";
6
+ import defaultProductImage from "../../../../assets/images/defaultImages/defaultProductImage.png";
7
+ import fullscreen from "../../../../assets/images/Icons/fullscreen.svg";
8
+ import close from "../../../../assets/images/Icons/close.svg";
9
+ import uploadFile from "../../../../assets/images/Icons/upload-file.svg";
10
+ import deleteForever from "../../../../assets/images/Icons/delete-forever-white.svg";
11
+
12
+ export const ImageVisor = ({
13
+ value,
14
+ name,
15
+ setModalFromTable,
16
+ setDataServices,
17
+ setModal,
18
+ ...props
19
+ }) => {
20
+ const [smallSrc, setSmallSrc] = useState("");
21
+ function handleNewImage(imageFile) {
22
+ const payload = { ...props, ...imageFile };
23
+ setDataServices({ type: "updateImage", payload });
24
+ }
25
+
26
+ function handleUpdateImage(file) {
27
+ if (file) {
28
+ const reader = new FileReader();
29
+ reader.onload = () => {
30
+ getImageDimensions(reader.result);
31
+ };
32
+ reader.readAsDataURL(file);
33
+ }
34
+ }
35
+
36
+ const getImageDimensions = (dataURL) => {
37
+ const img = new Image();
38
+ img.onload = () => {
39
+ const image = {
40
+ src: dataURL,
41
+ ext: img.src.includes("image/jpeg") ? "jpg" : "png",
42
+ width: img.width,
43
+ height: img.height,
44
+ };
45
+ handleNewImage(image);
46
+ changeVisor();
47
+ };
48
+ img.src = dataURL;
49
+ };
50
+
51
+ function changeVisor(view) {
52
+ if (!view) {
53
+ setModalFromTable(null);
54
+ return;
55
+ }
56
+ const isSmall = view === "small";
57
+ let src = isSmall
58
+ ? smallSrc
59
+ : `${process.env.REACT_APP_IMAGES_ENDPOINT}/${value?.src}`;
60
+ setModalFromTable(
61
+ <ImageView visorView={view}>
62
+ <div className="header">
63
+ <p>{name}</p>
64
+ <div className="buttons">
65
+ {isSmall ? (
66
+ <>
67
+ {value?.src ? (
68
+ <img
69
+ src={fullscreen}
70
+ alt="Ver en pantalla completa"
71
+ onClick={() => changeVisor("fullscreen")}
72
+ />
73
+ ) : null}
74
+ <img src={close} alt="Cerrar" onClick={() => changeVisor()} />
75
+ </>
76
+ ) : (
77
+ <>
78
+ <label className="borderCircle" htmlFor="fileInput">
79
+ <img src={uploadFile} alt="Actualizar imagen" />
80
+ <input
81
+ type="file"
82
+ id="fileInput"
83
+ accept="image/png, image/jpeg"
84
+ style={{ display: "none" }}
85
+ onChange={(e) => handleUpdateImage(e.target.files[0])}
86
+ />
87
+ </label>
88
+ <img
89
+ className="borderCircle"
90
+ src={deleteForever}
91
+ alt="Eliminar imágen"
92
+ onClick={() => {
93
+ setModal({
94
+ type: "delete",
95
+ functions: { setModal, setDataServices },
96
+ payload: props,
97
+ });
98
+ changeVisor();
99
+ }}
100
+ />
101
+ <img
102
+ className="borderCircle"
103
+ src={close}
104
+ alt="Cerrar"
105
+ onClick={() => changeVisor("small")}
106
+ />
107
+ </>
108
+ )}
109
+ </div>
110
+ </div>
111
+ <div className="body">
112
+ <ReactImageFallback
113
+ className="imageLoaded"
114
+ src={src}
115
+ fallbackImage={<ImageUploader handleNewImage={handleNewImage} />}
116
+ alt={name ?? "Imagen del producto"}
117
+ />
118
+ </div>
119
+ </ImageView>
120
+ );
121
+ }
122
+
123
+ useEffect(() => {
124
+ let src = value?.src?.includes("image/")
125
+ ? value?.src
126
+ : getImageURL(process.env.REACT_APP_IMAGES_BUCKET, value?.src, 250, 250);
127
+ setSmallSrc(src);
128
+ }, [value]);
129
+
130
+ return (
131
+ <>
132
+ <ImageContainer onClick={() => changeVisor("small")}>
133
+ <ReactImageFallback
134
+ src={smallSrc}
135
+ fallbackImage={defaultProductImage}
136
+ alt={name ?? "Imagen del producto"}
137
+ />
138
+ </ImageContainer>
139
+ </>
140
+ );
141
+ };
142
+
143
+ export default ImageVisor;
@@ -0,0 +1,106 @@
1
+ import styled, { css } from "styled-components";
2
+ import uploadFile from "../../../../assets/images/Icons/upload-file.svg";
3
+
4
+ export const ImageContainer = styled.div`
5
+ align-items: center;
6
+ background: var(--white-main, #fff);
7
+ border-radius: 7px;
8
+ border: 1px solid var(--grey-medium, #cbcbcb);
9
+ cursor: pointer;
10
+ display: flex;
11
+ height: 52px;
12
+ justify-content: center;
13
+ width: 52px;
14
+ & > img {
15
+ border-radius: 7px;
16
+ height: 100%;
17
+ width: 100%;
18
+ object-fit: contain;
19
+ }
20
+ `;
21
+
22
+ export const ImageView = styled.div`
23
+ background: var(--white-main, #fff);
24
+ border-radius: 5px;
25
+ box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.25);
26
+ height: 280px;
27
+ left: calc(50% - 125px);
28
+ position: absolute;
29
+ top: calc(50% - 140px);
30
+ width: 250px;
31
+ z-index: 10;
32
+ .header {
33
+ align-items: center;
34
+ background: var(--grey-medium, #cbcbcb);
35
+ border-radius: 5px 5px 0px 0px;
36
+ color: var(--white-main, #fff);
37
+ display: flex;
38
+ font-family: Roboto;
39
+ font-size: 12px;
40
+ font-style: normal;
41
+ font-weight: 500;
42
+ height: 30px;
43
+ justify-content: space-between;
44
+ line-height: normal;
45
+ overflow: hidden;
46
+ padding: 0 9px 0 10px;
47
+ text-overflow: ellipsis;
48
+ width: 100%;
49
+ .buttons {
50
+ display: flex;
51
+ gap: 10px;
52
+ img {
53
+ cursor: pointer;
54
+ }
55
+ label {
56
+ display: flex;
57
+ align-items: center;
58
+ padding: 3px;
59
+ }
60
+ .borderCircle {
61
+ border-radius: 20px;
62
+ border: 1px solid var(--white-main, #fff);
63
+ }
64
+ }
65
+ }
66
+ .body {
67
+ width: 100%;
68
+ height: calc(100% - 30px);
69
+ .imageLoaded {
70
+ width: 100%;
71
+ height: 100%;
72
+ object-fit: contain;
73
+ }
74
+ }
75
+ ${({ visorView }) =>
76
+ visorView === "fullscreen" &&
77
+ css`
78
+ background: var(--black-main, #262626d9);
79
+ height: 100%;
80
+ left: 0;
81
+ top: 0;
82
+ width: 100%;
83
+ .header {
84
+ background: var(--black-main, #262626);
85
+ font-size: 14px;
86
+ height: 45px;
87
+ .buttons > img {
88
+ border-radius: 20px;
89
+ border: 1px solid var(--white-main, #fff);
90
+ padding: 3px;
91
+ }
92
+ }
93
+ > div {
94
+ align-items: center;
95
+ display: flex;
96
+ height: 100%;
97
+ justify-content: center;
98
+ width: 100%;
99
+ & > img {
100
+ border-radius: 5px;
101
+ height: 500px;
102
+ width: 500px;
103
+ }
104
+ }
105
+ `}
106
+ `;
@@ -0,0 +1,248 @@
1
+ import React, { useState, useEffect, useReducer } from "react";
2
+ import { Modal } from "../../organisms/Modal";
3
+ import { EditionTabs } from "../../molecules/EditionTabs";
4
+ import { Table } from "../../organisms/Table";
5
+ import beenhere from "../../../assets/images/Icons/beenhere.svg";
6
+ import closeMagenta from "../../../assets/images/Icons/close-magenta.svg";
7
+ import { Container } from "./styles";
8
+ import rejectIcon from "../../../assets/images/generalButton/rejectIcon.svg";
9
+ import succes from "../../../assets/images/genericModal/genericModalCheck.svg";
10
+
11
+ import { initData, setDataColumns, dataReducer, modalReducer } from "./utils";
12
+ import { ButtonV2 } from "../../atoms/ButtonV2";
13
+ import { TagAndInput } from "../../molecules/TagAndInput";
14
+ import { GenericModal } from "../../atoms/GenericModal";
15
+ import { ScreenHeader } from "../../atoms/ScreenHeader";
16
+
17
+ export const MultipleEdition = ({ articles, versions, onClose, token }) => {
18
+ const [section, setSection] = useState("description");
19
+ const [attributeSelected, setAttributeSelected] = useState({
20
+ articleId: "",
21
+ attributeId: "",
22
+ versionId: "",
23
+ });
24
+ const [attributesReviewed, setAttributesReviewed] = useState([]);
25
+ const [descriptionsReviewed, setDescriptionsReviewed] = useState([]);
26
+ const [imagesReviewed, setImagesReviewed] = useState([]);
27
+ const [showRejectModal, setShowRejectModal] = useState(false);
28
+ const [showValidationPanel, setShowValidationPanel] = useState(false);
29
+ const [message, setMessage] = useState("");
30
+
31
+ const closeValidationPanel = (e) => {
32
+ if (
33
+ !e.target.closest("#validation-panel") ||
34
+ (e.target.closest(".validation-option") && showValidationPanel)
35
+ ) {
36
+ document.removeEventListener("click", closeValidationPanel, false);
37
+ setShowValidationPanel(false);
38
+ }
39
+ };
40
+ const [currentData, setCurrentData] = useState({
41
+ columns: [],
42
+ data: [],
43
+ });
44
+ const [dataServices, setDataServices] = useReducer(dataReducer, {
45
+ description: {
46
+ data: [],
47
+ },
48
+ datasheet: {
49
+ data: [],
50
+ },
51
+ images: {
52
+ data: [],
53
+ },
54
+ });
55
+ const [modalFromTable, setModalFromTable] = useState();
56
+ const [modal, setModal] = useReducer(modalReducer, {
57
+ showModal: false,
58
+ });
59
+
60
+ function callbackToInitData() {
61
+ initData(setDataServices, articles, versions, token);
62
+ }
63
+
64
+ useEffect(() => {
65
+ callbackToInitData();
66
+ }, []);
67
+
68
+ useEffect(() => {
69
+ const [columns, data] = setDataColumns(
70
+ section,
71
+ dataServices[section],
72
+ token,
73
+ setModalFromTable,
74
+ setDataServices,
75
+ setModal,
76
+ setShowValidationPanel,
77
+ setAttributeSelected,
78
+ setShowRejectModal,
79
+ setAttributesReviewed,
80
+ setMessage,
81
+ showValidationPanel,
82
+ attributeSelected,
83
+ attributesReviewed,
84
+ descriptionsReviewed,
85
+ imagesReviewed
86
+ );
87
+ setCurrentData({
88
+ columns,
89
+ data,
90
+ });
91
+ }, [
92
+ section,
93
+ dataServices,
94
+ attributeSelected,
95
+ showValidationPanel,
96
+ attributesReviewed,
97
+ descriptionsReviewed,
98
+ imagesReviewed
99
+ ]);
100
+
101
+ return (
102
+ <Container>
103
+ <div className="tabs">
104
+ <div>
105
+ <EditionTabs getSection={setSection} />{" "}
106
+ </div>{" "}
107
+ <img src={beenhere} alt="beenhere" />
108
+ </div>{" "}
109
+
110
+ <div className="action_buttons">
111
+ <img
112
+ src={closeMagenta}
113
+ alt="Cerrar"
114
+ onClick={() => {
115
+ window.location.href = `/products`;
116
+ }}
117
+ //onClick={() => onClose && onClose()}
118
+ />{" "}
119
+ </div>{" "}
120
+ <div className="table">
121
+ <Table
122
+ withCheckbox
123
+ columns={currentData.columns}
124
+ data={currentData.data}
125
+ withTooltip={true}
126
+ />{" "}
127
+ </div>{" "}
128
+ {modalFromTable} <Modal {...modal} />{" "}
129
+ {showRejectModal && (
130
+ <Modal
131
+ title={"Agregar mensaje de rechazo"}
132
+ show={showRejectModal}
133
+ customComponent={
134
+ <TagAndInput
135
+ inputType={"textarea"}
136
+ inputId={"modal-message-box"}
137
+ index={0}
138
+ color={"white"}
139
+ />
140
+ }
141
+ buttons={[
142
+ <ButtonV2
143
+ key={"btn-Cancelar"}
144
+ type={"white"}
145
+ label={"Cancelar"}
146
+ size={12}
147
+ onClick={() => {
148
+ setShowRejectModal(false);
149
+ }}
150
+ />,
151
+ <ButtonV2
152
+ key={"btn-Aceptar"}
153
+ type={"pink"}
154
+ label={"Aceptar"}
155
+ size={12}
156
+ onClick={async () => {
157
+ const body = document.querySelector(
158
+ "#modal-message-box .ql-container .ql-editor > p"
159
+ ).innerHTML;
160
+ const comment = [
161
+ {
162
+ type: "comment",
163
+ value: body?.replace(/<.*?\/?>/gm, ""),
164
+ },
165
+ ];
166
+ if(section=="description"|| section=="datasheet"){
167
+
168
+ if(section=="datasheet"){
169
+ var index = attributesReviewed.findIndex(
170
+ (e) =>
171
+ e.articleId === attributeSelected.articleId &&
172
+ e.attributeId === attributeSelected.attributeId &&
173
+ e.versionId === attributeSelected.versionId
174
+ );
175
+ attributesReviewed[index].isApproved = false;
176
+ attributesReviewed[index].isReviewed = true;
177
+ attributesReviewed[index].comment = comment[0].value;
178
+ }
179
+ if(section=="description"){
180
+ var index = descriptionsReviewed.findIndex(
181
+ (e) =>
182
+ e.articleId === attributeSelected.articleId &&
183
+ e.attributeId === attributeSelected.attributeId &&
184
+ e.versionId === attributeSelected.versionId
185
+ );
186
+ descriptionsReviewed[index].isApproved = false;
187
+ descriptionsReviewed[index].isReviewed = true;
188
+ descriptionsReviewed[index].comment = comment[0].value;
189
+ console.log(descriptionsReviewed[index]);
190
+ }
191
+ document.getElementById(
192
+ "button_" +
193
+ attributeSelected.articleId +
194
+ "_" +
195
+ attributeSelected.attributeId +
196
+ "_" +
197
+ attributeSelected.versionId
198
+ ).src = rejectIcon;
199
+
200
+
201
+ }
202
+ if(section=="images"){
203
+ var index = imagesReviewed.findIndex(
204
+ (e) =>
205
+ e.articleId === attributeSelected.articleId &&
206
+ e.imageId === attributeSelected.attributeId &&
207
+ e.versionId === attributeSelected.versionId
208
+ );
209
+ imagesReviewed[index].isApproved = false;
210
+ imagesReviewed[index].isReviewed = true;
211
+ imagesReviewed[index].comment = comment[0].value;
212
+ console.log(imagesReviewed[index]);
213
+ }
214
+ document.getElementById(
215
+ "button_" +
216
+ attributeSelected.articleId +
217
+ "_" +
218
+ attributeSelected.attributeId +
219
+ "_" +
220
+ attributeSelected.versionId
221
+ ).src = rejectIcon;
222
+ setShowRejectModal(false);
223
+ }}
224
+ />,
225
+ ]}
226
+ />
227
+ )}{" "}
228
+ {message.length > 0 && (
229
+ <GenericModal
230
+ componentsArray={[
231
+ <img key="1" src={succes} alt="success icon" />,
232
+ <ScreenHeader
233
+ key="2"
234
+ headerType={"retailer-name-header"}
235
+ text={message}
236
+ color={"white"}
237
+ />,
238
+ ]}
239
+ onClick={() => {
240
+ setMessage("");
241
+ callbackToInitData();
242
+ }}
243
+ />
244
+ )}{" "}
245
+
246
+ </Container>
247
+ );
248
+ };
@@ -0,0 +1,92 @@
1
+ import AWS from "aws-sdk";
2
+ import { v4 as uuidv4 } from "uuid";
3
+ import axios from "axios";
4
+
5
+ const S3_BUCKET = process.env.REACT_APP_IMAGES_BUCKET;
6
+ const REGION = "us-east-1";
7
+
8
+ AWS.config.update({
9
+ accessKeyId: process.env.REACT_APP_KUTS3,
10
+ secretAccessKey: process.env.REACT_APP_AKUTS3,
11
+ });
12
+
13
+ const myBucket = new AWS.S3({
14
+ params: { Bucket: S3_BUCKET },
15
+ region: REGION,
16
+ });
17
+
18
+ export async function saveData(params) {
19
+ const { section, data, token } = params;
20
+ if (section === "images") {
21
+ if (await saveImagesData(data, token)) {
22
+ //callbackToInitData();
23
+ /**setModal({
24
+ type: "saved successfully",
25
+ functions: { setModal },
26
+ payload: { service: "imágenes" },
27
+ });**/
28
+ // aquí va modal de que todo salío bien y actualiza la data
29
+ }
30
+ }
31
+ return true;
32
+ }
33
+
34
+ async function saveImagesData(articles, token) {
35
+ const imagesToUpdate = [];
36
+ articles.data.forEach((article) => {
37
+ const { images, version } = article;
38
+ console.log(images);
39
+ const imagesToAdd = Object.values(images).filter(
40
+ (f) => f.value && !f.value.src.startsWith("id-")
41
+ );
42
+ if (imagesToAdd.length > 0) {
43
+ imagesToUpdate.push(
44
+ ...imagesToAdd.map((e) => ({
45
+ imageId: e.imageId,
46
+ ...e.value,
47
+ version,
48
+ uuid: uuidv4(),
49
+ }))
50
+ );
51
+ }
52
+ });
53
+ const promiseArray = imagesToUpdate.map((e) => {
54
+ const { src, articleId, imageId, uuid, ext, version } = e;
55
+ const file = Buffer.from(
56
+ src.replace(/^data:image\/\w+;base64,/, ""),
57
+ "base64"
58
+ );
59
+ const params = {
60
+ ACL: "public-read",
61
+ Body: file,
62
+ Bucket: S3_BUCKET,
63
+ Key: `id-${articleId}/${version}/${imageId}-${uuid}.${ext}`,
64
+ };
65
+ return myBucket.putObject(params).promise();
66
+ });
67
+ await Promise.all(promiseArray);
68
+ console.log("finish upload");
69
+
70
+ const res = await axios.put(
71
+ process.env.REACT_APP_BASE_UPDATE_IMAGES_ENDPOINT,
72
+ imagesToUpdate.map((e) => {
73
+ delete e.src;
74
+ return e;
75
+ }),
76
+ {
77
+ headers: {
78
+ Authorization: token,
79
+ },
80
+ }
81
+ );
82
+ if (res.data.statusCode !== 200) return false;
83
+ return true;
84
+ }
85
+
86
+ export async function deleteImage(data, version, token) {
87
+ await axios.put(
88
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
89
+ data,
90
+ { headers: { Authorization: token } }
91
+ );
92
+ }