contentoh-components-library 21.5.34 → 21.5.36

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 (989) hide show
  1. package/.storybook/main.js +10 -10
  2. package/.storybook/preview-head.html +4 -4
  3. package/.storybook/preview.js +9 -9
  4. package/CHANGELOG.md +115 -115
  5. package/README.md +70 -70
  6. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-Bold.otf +0 -0
  7. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-It.otf +0 -0
  8. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-Regular.otf +0 -0
  9. package/dist/assets/fonts/lato/Lato-Bold.ttf +0 -0
  10. package/dist/assets/fonts/lato/Lato-Italic.ttf +0 -0
  11. package/dist/assets/fonts/lato/Lato-Light.ttf +0 -0
  12. package/dist/assets/fonts/lato/Lato-Regular.ttf +0 -0
  13. package/dist/assets/fonts/lato/Lato-Thin.ttf +0 -0
  14. package/dist/assets/fonts/lato/OFL.txt +93 -0
  15. package/dist/assets/fonts/raleway/Raleway-Black.ttf +0 -0
  16. package/dist/assets/fonts/raleway/Raleway-Bold.ttf +0 -0
  17. package/dist/assets/fonts/raleway/Raleway-ExtraBold.ttf +0 -0
  18. package/dist/assets/fonts/raleway/Raleway-Italic.ttf +0 -0
  19. package/dist/assets/fonts/raleway/Raleway-Medium.ttf +0 -0
  20. package/dist/assets/fonts/raleway/Raleway-Regular.ttf +0 -0
  21. package/dist/assets/fonts/raleway/Raleway-SemiBold.ttf +0 -0
  22. package/dist/assets/fonts/roboto/Roboto-Black.ttf +0 -0
  23. package/dist/assets/fonts/roboto/Roboto-BlackItalic.ttf +0 -0
  24. package/dist/assets/fonts/roboto/Roboto-Bold.ttf +0 -0
  25. package/dist/assets/fonts/roboto/Roboto-BoldItalic.ttf +0 -0
  26. package/dist/assets/fonts/roboto/Roboto-Italic.ttf +0 -0
  27. package/dist/assets/fonts/roboto/Roboto-Light.ttf +0 -0
  28. package/dist/assets/fonts/roboto/Roboto-LightItalic.ttf +0 -0
  29. package/dist/assets/fonts/roboto/Roboto-Medium.ttf +0 -0
  30. package/dist/assets/fonts/roboto/Roboto-MediumItalic.ttf +0 -0
  31. package/dist/assets/fonts/roboto/Roboto-Regular.ttf +0 -0
  32. package/dist/assets/fonts/roboto/Roboto-Thin.ttf +0 -0
  33. package/dist/assets/fonts/roboto/Roboto-ThinItalic.ttf +0 -0
  34. package/dist/assets/images/Icons/DownloadIcon.svg +4 -0
  35. package/dist/assets/images/Icons/Spinner.gif +0 -0
  36. package/dist/assets/images/Icons/addv2.svg +8 -0
  37. package/dist/assets/images/Icons/beenhere.svg +9 -0
  38. package/dist/assets/images/Icons/checkv2.svg +8 -0
  39. package/dist/assets/images/Icons/close-magenta.svg +9 -0
  40. package/dist/assets/images/Icons/close.svg +8 -0
  41. package/dist/assets/images/Icons/closeCircle.svg +8 -0
  42. package/dist/assets/images/Icons/delete-forever-red.svg +9 -0
  43. package/dist/assets/images/Icons/delete-forever-white.svg +10 -0
  44. package/dist/assets/images/Icons/edit.svg +8 -0
  45. package/dist/assets/images/Icons/fullscreen.svg +3 -0
  46. package/dist/assets/images/Icons/info.svg +8 -0
  47. package/dist/assets/images/Icons/infoNR.svg +8 -0
  48. package/dist/assets/images/Icons/options.svg +3 -0
  49. package/dist/assets/images/Icons/save-white-gray.svg +9 -0
  50. package/dist/assets/images/Icons/save-white.svg +9 -0
  51. package/dist/assets/images/Icons/save.svg +8 -0
  52. package/dist/assets/images/Icons/search.svg +3 -0
  53. package/dist/assets/images/Icons/settings.svg +8 -0
  54. package/dist/assets/images/Icons/trash.svg +8 -0
  55. package/dist/assets/images/Icons/undo.svg +8 -0
  56. package/dist/assets/images/Icons/upload-file-white.svg +4 -0
  57. package/dist/assets/images/Icons/upload-file.svg +10 -0
  58. package/dist/assets/images/Icons/upload_file.svg +10 -0
  59. package/dist/assets/images/Icons/warningv2.svg +3 -0
  60. package/dist/assets/images/activedFilter/removeFilter.svg +3 -0
  61. package/dist/assets/images/arrow/arrowIcon.svg +3 -0
  62. package/dist/assets/images/arrow/polygon.svg +3 -0
  63. package/dist/assets/images/asignationOptions/availableIcon.svg +3 -0
  64. package/dist/assets/images/asignationOptions/removeAsigned.svg +4 -0
  65. package/dist/assets/images/asignationOptions/requestToProvider.svg +3 -0
  66. package/dist/assets/images/asignationOptions/requestToTeam.svg +3 -0
  67. package/dist/assets/images/card/masterCardIcon.svg +5 -0
  68. package/dist/assets/images/carouselImagesLogin/login2.svg +117 -0
  69. package/dist/assets/images/carouselImagesLogin/login3.svg +147 -0
  70. package/dist/assets/images/carouselImagesLogin/loginImage.svg +301 -0
  71. package/dist/assets/images/checkBox/checked.svg +3 -0
  72. package/dist/assets/images/checkBox/checkrosa.svg +3 -0
  73. package/dist/assets/images/checkBox/checkverde.svg +3 -0
  74. package/dist/assets/images/checkBox/unchecked.svg +3 -0
  75. package/dist/assets/images/componentAssigned/assignedImage1.svg +9 -0
  76. package/dist/assets/images/componentAssigned/assignedImage2.svg +9 -0
  77. package/dist/assets/images/componentAssigned/clock.svg +4 -0
  78. package/dist/assets/images/componentAssigned/flag.svg +3 -0
  79. package/dist/assets/images/customSelect/searchIcon.png +0 -0
  80. package/dist/assets/images/customSelect/starIcon.svg +14 -0
  81. package/dist/assets/images/defaultImages/Spinner.gif +0 -0
  82. package/dist/assets/images/defaultImages/check_circle.svg +10 -0
  83. package/dist/assets/images/defaultImages/defaultProductImage.png +0 -0
  84. package/dist/assets/images/defaultImages/defaultProfileImage.svg +13 -0
  85. package/dist/assets/images/defaultImages/defaultUpdate.png +0 -0
  86. package/dist/assets/images/defaultImages/notFound.svg +124 -0
  87. package/dist/assets/images/dropDownButton/dropDownArrowButton.svg +3 -0
  88. package/dist/assets/images/editField/editField.svg +3 -0
  89. package/dist/assets/images/editField/showPassword.png +0 -0
  90. package/dist/assets/images/flags/highPriority.svg +3 -0
  91. package/dist/assets/images/flags/lowPriority.svg +3 -0
  92. package/dist/assets/images/flags/mediumPriority.svg +3 -0
  93. package/dist/assets/images/flags/noPriority.svg +3 -0
  94. package/dist/assets/images/flagsv2/highPriority.svg +3 -0
  95. package/dist/assets/images/flagsv2/lowPriority.svg +3 -0
  96. package/dist/assets/images/flagsv2/mediumPriority.svg +3 -0
  97. package/dist/assets/images/flagsv2/noPriority.svg +3 -0
  98. package/dist/assets/images/generalButton/Icono AB.svg +14 -0
  99. package/dist/assets/images/generalButton/acceptIcon.svg +3 -0
  100. package/dist/assets/images/generalButton/closeIcon.svg +4 -0
  101. package/dist/assets/images/generalButton/closeIconWhite.svg +4 -0
  102. package/dist/assets/images/generalButton/closeIconv2.svg +4 -0
  103. package/dist/assets/images/generalButton/deleteIcon.svg +13 -0
  104. package/dist/assets/images/generalButton/deleteIconHover.svg +13 -0
  105. package/dist/assets/images/generalButton/downloadIcon.svg +3 -0
  106. package/dist/assets/images/generalButton/gridLayout.svg +3 -0
  107. package/dist/assets/images/generalButton/nullIcon.svg +3 -0
  108. package/dist/assets/images/generalButton/openModal.svg +3 -0
  109. package/dist/assets/images/generalButton/rejectIcon.svg +3 -0
  110. package/dist/assets/images/generalButton/rowLayout.svg +3 -0
  111. package/dist/assets/images/generalButton/saveIcon.svg +3 -0
  112. package/dist/assets/images/generalButton/saveIconHover.svg +3 -0
  113. package/dist/assets/images/generalButton/saveIconpink.svg +3 -0
  114. package/dist/assets/images/generalImage/assigned.svg +14 -0
  115. package/dist/assets/images/generalImage/bags.svg +25 -0
  116. package/dist/assets/images/generalImage/clock.svg +4 -0
  117. package/dist/assets/images/generalImage/flag.svg +3 -0
  118. package/dist/assets/images/genericModal/closeWhite.svg +3 -0
  119. package/dist/assets/images/genericModal/errorModal.svg +3 -0
  120. package/dist/assets/images/genericModal/genericModalCheck.svg +3 -0
  121. package/dist/assets/images/genericModal/genericModalClose.svg +3 -0
  122. package/dist/assets/images/genericModal/genericModalDown.svg +3 -0
  123. package/dist/assets/images/genericModal/genericModalUp.svg +3 -0
  124. package/dist/assets/images/genericModal/genericModalWarning.svg +12 -0
  125. package/dist/assets/images/genericModal/yellowAlert.svg +12 -0
  126. package/dist/assets/images/logo/logoLogin.svg +15 -0
  127. package/dist/assets/images/menuNotification/menuNotificationComment.svg +3 -0
  128. package/dist/assets/images/menuNotification/menuNotificationProduct.svg +3 -0
  129. package/dist/assets/images/menuProfile/logOut.svg +3 -0
  130. package/dist/assets/images/menuProfile/myAccount.svg +3 -0
  131. package/dist/assets/images/menuProfile/settings.svg +3 -0
  132. package/dist/assets/images/modalsSVGs/attributesSent.svg +208 -0
  133. package/dist/assets/images/modalsSVGs/descriptionSent.svg +237 -0
  134. package/dist/assets/images/modalsSVGs/providerSent.svg +445 -0
  135. package/dist/assets/images/modalsSVGs/uploadingImages.svg +148 -0
  136. package/dist/assets/images/productImage/openModal.svg +3 -0
  137. package/dist/assets/images/productNotification/productNotification.svg +3 -0
  138. package/dist/assets/images/profileHeader/profilePicture.svg +9 -0
  139. package/dist/assets/images/providerAndCadena/Cadena.svg +188 -0
  140. package/dist/assets/images/providerAndCadena/LoginContentoh.svg +15 -0
  141. package/dist/assets/images/providerAndCadena/Proveedor.svg +231 -0
  142. package/dist/assets/images/sideMenuButton/contenoh.svg +5 -0
  143. package/dist/assets/images/sideMenuButton/dashboard.svg +5 -0
  144. package/dist/assets/images/sideMenuButton/products.svg +10 -0
  145. package/dist/assets/images/sideMenuButton/providers.svg +10 -0
  146. package/dist/assets/images/sideMenuButton/tasks.svg +3 -0
  147. package/dist/assets/images/sliderToolTip/infoIcon.svg +4 -0
  148. package/dist/assets/images/sliderToolTip/slide1.svg +5 -0
  149. package/dist/assets/images/sliderToolTip/slide2.svg +9 -0
  150. package/dist/assets/images/sliderToolTip/slide21.svg +9 -0
  151. package/dist/assets/images/sliderToolTip/slide22.svg +9 -0
  152. package/dist/assets/images/sliderToolTip/slide23.svg +9 -0
  153. package/dist/assets/images/sliderToolTip/slide3.svg +9 -0
  154. package/dist/assets/images/sliderToolTip/slide4.svg +9 -0
  155. package/dist/assets/images/sliderToolTip/slide5.svg +40 -0
  156. package/dist/assets/images/versionSelector/acceptIcon.svg +3 -0
  157. package/dist/assets/images/versionSelector/addVersion.svg +5 -0
  158. package/dist/assets/images/versionSelector/closeVersionSelector.svg +4 -0
  159. package/dist/assets/images/versionSelector/createVersion.svg +3 -0
  160. package/dist/assets/images/versionSelector/nullIcon.svg +3 -0
  161. package/dist/assets/images/versionSelector/versionSelected.svg +3 -0
  162. package/dist/assets/images/verticalSideMenuMainPage/closeMenu.svg +4 -0
  163. package/dist/assets/images/verticalSideMenuMainPage/iconFAQS.svg +12 -0
  164. package/dist/assets/images/verticalSideMenuMainPage/iconGroup.svg +3 -0
  165. package/dist/assets/images/verticalSideMenuMainPage/iconLogo.svg +12 -0
  166. package/dist/assets/images/verticalSideMenuMainPage/iconLogoContentoh.svg +15 -0
  167. package/dist/assets/images/verticalSideMenuMainPage/iconProduct.svg +3 -0
  168. package/dist/assets/images/verticalSideMenuMainPage/iconSpeedometer.svg +12 -0
  169. package/dist/assets/images/verticalSideMenuMainPage/iconTask.svg +10 -0
  170. package/dist/assets/images/verticalSideMenuMainPage/openMenu.svg +4 -0
  171. package/dist/assets/sounds/newMessage.mp3 +0 -0
  172. package/dist/components/atoms/Image/index.js +5 -5
  173. package/dist/components/atoms/ImageLink/index.js +5 -5
  174. package/dist/components/molecules/Dropdown/index.js +1 -1
  175. package/dist/components/molecules/StripeCardForm/paymentForm.js +5 -5
  176. package/dist/components/molecules/VerificationCodeResetPasswordLogin/utils.js +19 -19
  177. package/dist/components/organisms/Chat/Chat.stories.js +8 -8
  178. package/dist/components/organisms/Chat/ContainerItems/index.js +18 -18
  179. package/dist/components/organisms/Chat/ContentChat/ContentChat.stories.js +6 -6
  180. package/dist/components/organisms/Chat/ContentChat/index.js +26 -26
  181. package/dist/components/organisms/Chatv2/Chatv2.stories.js +8 -8
  182. package/dist/components/organisms/Chatv2/ContainerItems/index.js +18 -18
  183. package/dist/components/organisms/Chatv2/ContentChat/ContentChat.stories.js +6 -6
  184. package/dist/components/organisms/Chatv2/ContentChat/index.js +26 -26
  185. package/dist/components/organisms/GlobalModal/index.js +9 -9
  186. package/dist/components/organisms/TableResizable/index.js +3 -3
  187. package/dist/components/pages/MultipleEdition/utils.js +14 -14
  188. package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +61 -63
  189. package/dist/components/pages/ProviderProductEdition/index.js +5 -5
  190. package/dist/components/pages/RetailerProductEdition/index.js +6 -2
  191. package/dist/components/pages/VerificationCodeResetPassword/utils.js +19 -19
  192. package/dist/global-files/data.js +6 -6
  193. package/dist/global-files/fonts.css +69 -0
  194. package/dist/global-files/global-styles.css +42 -0
  195. package/dist/global-files/handle_http.js +42 -42
  196. package/dist/global-files/utils.js +95 -95
  197. package/package.json +116 -116
  198. package/src/_utils/helper.js +23 -23
  199. package/src/assets/images/Icons/DownloadIcon.svg +4 -4
  200. package/src/assets/images/Icons/addv2.svg +8 -8
  201. package/src/assets/images/Icons/beenhere.svg +9 -9
  202. package/src/assets/images/Icons/checkv2.svg +8 -8
  203. package/src/assets/images/Icons/close-magenta.svg +9 -9
  204. package/src/assets/images/Icons/close.svg +8 -8
  205. package/src/assets/images/Icons/closeCircle.svg +7 -7
  206. package/src/assets/images/Icons/delete-forever-red.svg +9 -9
  207. package/src/assets/images/Icons/delete-forever-white.svg +10 -10
  208. package/src/assets/images/Icons/edit.svg +8 -8
  209. package/src/assets/images/Icons/fullscreen.svg +2 -2
  210. package/src/assets/images/Icons/info.svg +8 -8
  211. package/src/assets/images/Icons/infoNR.svg +8 -8
  212. package/src/assets/images/Icons/options.svg +3 -3
  213. package/src/assets/images/Icons/save-white-gray.svg +9 -9
  214. package/src/assets/images/Icons/save-white.svg +9 -9
  215. package/src/assets/images/Icons/save.svg +8 -8
  216. package/src/assets/images/Icons/search.svg +3 -3
  217. package/src/assets/images/Icons/settings.svg +8 -8
  218. package/src/assets/images/Icons/trash.svg +8 -8
  219. package/src/assets/images/Icons/undo.svg +8 -8
  220. package/src/assets/images/Icons/upload-file-white.svg +3 -3
  221. package/src/assets/images/Icons/upload-file.svg +10 -10
  222. package/src/assets/images/Icons/upload_file.svg +10 -10
  223. package/src/assets/images/Icons/warningv2.svg +3 -3
  224. package/src/assets/images/activedFilter/removeFilter.svg +3 -3
  225. package/src/assets/images/arrow/arrowIcon.svg +3 -3
  226. package/src/assets/images/arrow/polygon.svg +3 -3
  227. package/src/assets/images/asignationOptions/availableIcon.svg +3 -3
  228. package/src/assets/images/asignationOptions/removeAsigned.svg +4 -4
  229. package/src/assets/images/asignationOptions/requestToProvider.svg +3 -3
  230. package/src/assets/images/asignationOptions/requestToTeam.svg +3 -3
  231. package/src/assets/images/card/masterCardIcon.svg +5 -5
  232. package/src/assets/images/checkBox/checked.svg +3 -3
  233. package/src/assets/images/checkBox/checkrosa.svg +3 -3
  234. package/src/assets/images/checkBox/checkverde.svg +3 -3
  235. package/src/assets/images/checkBox/unchecked.svg +3 -3
  236. package/src/assets/images/componentAssigned/assignedImage1.svg +9 -9
  237. package/src/assets/images/componentAssigned/assignedImage2.svg +9 -9
  238. package/src/assets/images/componentAssigned/clock.svg +4 -4
  239. package/src/assets/images/componentAssigned/flag.svg +3 -3
  240. package/src/assets/images/customSelect/starIcon.svg +14 -14
  241. package/src/assets/images/defaultImages/check_circle.svg +10 -10
  242. package/src/assets/images/defaultImages/defaultProfileImage.svg +13 -13
  243. package/src/assets/images/dropDownButton/dropDownArrowButton.svg +3 -3
  244. package/src/assets/images/editField/editField.svg +3 -3
  245. package/src/assets/images/flags/highPriority.svg +3 -3
  246. package/src/assets/images/flags/lowPriority.svg +3 -3
  247. package/src/assets/images/flags/mediumPriority.svg +3 -3
  248. package/src/assets/images/flags/noPriority.svg +3 -3
  249. package/src/assets/images/flagsv2/highPriority.svg +2 -2
  250. package/src/assets/images/flagsv2/lowPriority.svg +3 -3
  251. package/src/assets/images/flagsv2/mediumPriority.svg +2 -2
  252. package/src/assets/images/flagsv2/noPriority.svg +3 -3
  253. package/src/assets/images/generalButton/Icono AB.svg +14 -14
  254. package/src/assets/images/generalButton/acceptIcon.svg +3 -3
  255. package/src/assets/images/generalButton/closeIcon.svg +4 -4
  256. package/src/assets/images/generalButton/closeIconWhite.svg +4 -4
  257. package/src/assets/images/generalButton/closeIconv2.svg +4 -4
  258. package/src/assets/images/generalButton/deleteIcon.svg +13 -13
  259. package/src/assets/images/generalButton/deleteIconHover.svg +13 -13
  260. package/src/assets/images/generalButton/downloadIcon.svg +3 -3
  261. package/src/assets/images/generalButton/gridLayout.svg +3 -3
  262. package/src/assets/images/generalButton/nullIcon.svg +3 -3
  263. package/src/assets/images/generalButton/openModal.svg +3 -3
  264. package/src/assets/images/generalButton/rejectIcon.svg +3 -3
  265. package/src/assets/images/generalButton/rowLayout.svg +3 -3
  266. package/src/assets/images/generalButton/saveIcon.svg +3 -3
  267. package/src/assets/images/generalButton/saveIconHover.svg +3 -3
  268. package/src/assets/images/generalButton/saveIconpink.svg +3 -3
  269. package/src/assets/images/generalImage/assigned.svg +14 -14
  270. package/src/assets/images/generalImage/bags.svg +25 -25
  271. package/src/assets/images/generalImage/clock.svg +4 -4
  272. package/src/assets/images/generalImage/flag.svg +3 -3
  273. package/src/assets/images/genericModal/errorModal.svg +3 -3
  274. package/src/assets/images/genericModal/genericModalCheck.svg +3 -3
  275. package/src/assets/images/genericModal/genericModalClose.svg +3 -3
  276. package/src/assets/images/genericModal/genericModalDown.svg +3 -3
  277. package/src/assets/images/genericModal/genericModalUp.svg +3 -3
  278. package/src/assets/images/genericModal/genericModalWarning.svg +12 -12
  279. package/src/assets/images/genericModal/yellowAlert.svg +12 -12
  280. package/src/assets/images/logo/logoLogin.svg +15 -15
  281. package/src/assets/images/menuNotification/menuNotificationComment.svg +3 -3
  282. package/src/assets/images/menuNotification/menuNotificationProduct.svg +3 -3
  283. package/src/assets/images/menuProfile/logOut.svg +3 -3
  284. package/src/assets/images/menuProfile/myAccount.svg +3 -3
  285. package/src/assets/images/menuProfile/settings.svg +3 -3
  286. package/src/assets/images/modalsSVGs/attributesSent.svg +208 -208
  287. package/src/assets/images/modalsSVGs/descriptionSent.svg +237 -237
  288. package/src/assets/images/modalsSVGs/providerSent.svg +445 -445
  289. package/src/assets/images/modalsSVGs/uploadingImages.svg +148 -148
  290. package/src/assets/images/productImage/openModal.svg +3 -3
  291. package/src/assets/images/productNotification/productNotification.svg +3 -3
  292. package/src/assets/images/profileHeader/profilePicture.svg +9 -9
  293. package/src/assets/images/providerAndCadena/Cadena.svg +188 -188
  294. package/src/assets/images/providerAndCadena/LoginContentoh.svg +15 -15
  295. package/src/assets/images/providerAndCadena/Proveedor.svg +231 -231
  296. package/src/assets/images/sideMenuButton/contenoh.svg +5 -5
  297. package/src/assets/images/sideMenuButton/dashboard.svg +5 -5
  298. package/src/assets/images/sideMenuButton/products.svg +10 -10
  299. package/src/assets/images/sideMenuButton/providers.svg +10 -10
  300. package/src/assets/images/sideMenuButton/tasks.svg +3 -3
  301. package/src/assets/images/sliderToolTip/infoIcon.svg +4 -4
  302. package/src/assets/images/sliderToolTip/slide1.svg +5 -5
  303. package/src/assets/images/sliderToolTip/slide2.svg +9 -9
  304. package/src/assets/images/sliderToolTip/slide21.svg +9 -9
  305. package/src/assets/images/sliderToolTip/slide22.svg +9 -9
  306. package/src/assets/images/sliderToolTip/slide23.svg +9 -9
  307. package/src/assets/images/sliderToolTip/slide3.svg +9 -9
  308. package/src/assets/images/sliderToolTip/slide4.svg +9 -9
  309. package/src/assets/images/sliderToolTip/slide5.svg +40 -40
  310. package/src/assets/images/versionSelector/acceptIcon.svg +3 -3
  311. package/src/assets/images/versionSelector/addVersion.svg +5 -5
  312. package/src/assets/images/versionSelector/closeVersionSelector.svg +4 -4
  313. package/src/assets/images/versionSelector/createVersion.svg +3 -3
  314. package/src/assets/images/versionSelector/nullIcon.svg +3 -3
  315. package/src/assets/images/versionSelector/versionSelected.svg +3 -3
  316. package/src/assets/images/verticalSideMenuMainPage/closeMenu.svg +4 -4
  317. package/src/assets/images/verticalSideMenuMainPage/iconFAQS.svg +12 -12
  318. package/src/assets/images/verticalSideMenuMainPage/iconGroup.svg +3 -3
  319. package/src/assets/images/verticalSideMenuMainPage/iconLogo.svg +12 -12
  320. package/src/assets/images/verticalSideMenuMainPage/iconLogoContentoh.svg +15 -15
  321. package/src/assets/images/verticalSideMenuMainPage/iconProduct.svg +3 -3
  322. package/src/assets/images/verticalSideMenuMainPage/iconSpeedometer.svg +12 -12
  323. package/src/assets/images/verticalSideMenuMainPage/iconTask.svg +10 -10
  324. package/src/assets/images/verticalSideMenuMainPage/openMenu.svg +4 -4
  325. package/src/components/atoms/ActivedFilter/ActivedFilter.stories.js +13 -13
  326. package/src/components/atoms/ActivedFilter/index.js +13 -13
  327. package/src/components/atoms/ActivedFilter/styles.js +36 -36
  328. package/src/components/atoms/AsignationOption/AsignationOptions.stories.js +20 -20
  329. package/src/components/atoms/AsignationOption/index.js +60 -60
  330. package/src/components/atoms/AsignationOption/styles.js +69 -69
  331. package/src/components/atoms/AtomList/AtomList.stories.js +15 -15
  332. package/src/components/atoms/AtomList/index.js +14 -14
  333. package/src/components/atoms/AtomList/styles.js +17 -17
  334. package/src/components/atoms/Avatar/AsignationImage.stories.js +27 -27
  335. package/src/components/atoms/Avatar/index.js +22 -22
  336. package/src/components/atoms/Avatar/styles.js +34 -34
  337. package/src/components/atoms/Button/index.js +16 -16
  338. package/src/components/atoms/Button/styles.js +38 -38
  339. package/src/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +47 -47
  340. package/src/components/atoms/ButtonFileChooser/index.js +68 -68
  341. package/src/components/atoms/ButtonFileChooser/styles.js +4 -4
  342. package/src/components/atoms/ButtonV2/ButtonV2.stories.js +54 -54
  343. package/src/components/atoms/ButtonV2/index.js +86 -86
  344. package/src/components/atoms/ButtonV2/styles.js +233 -233
  345. package/src/components/atoms/Card/Card.stories.js +12 -12
  346. package/src/components/atoms/Card/index.js +42 -42
  347. package/src/components/atoms/Card/styles.js +44 -44
  348. package/src/components/atoms/CharCounter/CharCounter.stories.js +11 -11
  349. package/src/components/atoms/CharCounter/index.js +13 -13
  350. package/src/components/atoms/CharCounter/styles.js +10 -10
  351. package/src/components/atoms/CharsMissing/Wysiwyg.stories.js +12 -12
  352. package/src/components/atoms/CharsMissing/index.js +60 -60
  353. package/src/components/atoms/CharsMissing/styles.js +44 -44
  354. package/src/components/atoms/CheckBox/CheckBox.stories.js +25 -25
  355. package/src/components/atoms/CheckBox/index.js +33 -33
  356. package/src/components/atoms/CheckBox/styles.js +57 -57
  357. package/src/components/atoms/Commentary/index.js +9 -9
  358. package/src/components/atoms/Commentary/styles.js +15 -15
  359. package/src/components/atoms/CustomChip/CustomChip.stories.js +15 -15
  360. package/src/components/atoms/CustomChip/index.js +34 -34
  361. package/src/components/atoms/CustomChip/styles.js +5 -5
  362. package/src/components/atoms/CustomIcon/CustomIcon.stories.js +36 -36
  363. package/src/components/atoms/CustomIcon/index.js +41 -41
  364. package/src/components/atoms/CustomIcon/styles.js +85 -85
  365. package/src/components/atoms/CustomSelectItem/CustomSelectItem.stories.js +410 -410
  366. package/src/components/atoms/CustomSelectItem/index.js +150 -150
  367. package/src/components/atoms/CustomSelectItem/styles.js +32 -32
  368. package/src/components/atoms/CustomerTypeImage/CustomerTypeImage.stories.js +10 -10
  369. package/src/components/atoms/CustomerTypeImage/index.js +14 -14
  370. package/src/components/atoms/CustomerTypeImage/styles.js +14 -14
  371. package/src/components/atoms/DropDownButton/DropDownButton.stories.js +20 -20
  372. package/src/components/atoms/DropDownButton/index.js +10 -10
  373. package/src/components/atoms/DropDownButton/styles.js +19 -19
  374. package/src/components/atoms/EditField/EditField.stories.js +13 -13
  375. package/src/components/atoms/EditField/index.js +15 -15
  376. package/src/components/atoms/EditField/styles.js +35 -35
  377. package/src/components/atoms/FeatureTag/FeatureTag.stories.js +16 -16
  378. package/src/components/atoms/FeatureTag/index.js +10 -10
  379. package/src/components/atoms/FeatureTag/styles.js +43 -43
  380. package/src/components/atoms/FeatureTagv2/FeatureTagv2.stories.js +16 -16
  381. package/src/components/atoms/FeatureTagv2/index.js +10 -10
  382. package/src/components/atoms/FeatureTagv2/styles.js +56 -56
  383. package/src/components/atoms/GeneralButton/GeneralButton.stories.js +76 -76
  384. package/src/components/atoms/GeneralButton/index.js +34 -34
  385. package/src/components/atoms/GeneralButton/styles.js +235 -235
  386. package/src/components/atoms/GeneralInput/GeneralInput.stories.js +33 -33
  387. package/src/components/atoms/GeneralInput/index.js +159 -159
  388. package/src/components/atoms/GeneralInput/styles.js +86 -86
  389. package/src/components/atoms/GeneralInputv2/GeneralInputv2.stories.js +33 -33
  390. package/src/components/atoms/GeneralInputv2/index.js +155 -155
  391. package/src/components/atoms/GeneralInputv2/styles.js +67 -67
  392. package/src/components/atoms/GeneralTextBox/GeneralTextBox.stories.js +13 -13
  393. package/src/components/atoms/GeneralTextBox/index.js +10 -10
  394. package/src/components/atoms/GeneralTextBox/styles.js +35 -35
  395. package/src/components/atoms/GenericModal/GenericModal.stories.js +140 -140
  396. package/src/components/atoms/GenericModal/index.js +12 -12
  397. package/src/components/atoms/GenericModal/styles.js +134 -134
  398. package/src/components/atoms/GradientPanel/GradientPanel.stories.js +134 -134
  399. package/src/components/atoms/GradientPanel/index.js +15 -15
  400. package/src/components/atoms/GradientPanel/styles.js +139 -139
  401. package/src/components/atoms/Graphic/Graphic.stories.js +29 -29
  402. package/src/components/atoms/Graphic/index.js +43 -43
  403. package/src/components/atoms/Graphic/styles.js +3 -3
  404. package/src/components/atoms/IconFile/IconFile.stories.js +35 -35
  405. package/src/components/atoms/IconFile/index.js +119 -119
  406. package/src/components/atoms/IconFile/styles.js +67 -67
  407. package/src/components/atoms/Image/Image.stories.js +51 -51
  408. package/src/components/atoms/Image/index.js +55 -55
  409. package/src/components/atoms/Image/styles.js +34 -34
  410. package/src/components/atoms/ImageCarousel/ImgeSlider.stories.js +76 -76
  411. package/src/components/atoms/ImageCarousel/index.js +103 -103
  412. package/src/components/atoms/ImageCarousel/styles.js +79 -79
  413. package/src/components/atoms/ImageLink/ImageLink.stories.js +43 -43
  414. package/src/components/atoms/ImageLink/index.js +57 -57
  415. package/src/components/atoms/ImageLink/styles.js +30 -30
  416. package/src/components/atoms/ImagePreview/ImagePreview.stories.js +52 -52
  417. package/src/components/atoms/ImagePreview/index.js +178 -178
  418. package/src/components/atoms/ImagePreview/styles.js +77 -77
  419. package/src/components/atoms/Input/index.js +15 -15
  420. package/src/components/atoms/Input/style.js +31 -31
  421. package/src/components/atoms/InputFormatter/Wysiwyg.stories.js +12 -12
  422. package/src/components/atoms/InputFormatter/index.js +152 -152
  423. package/src/components/atoms/InputFormatter/styles.js +46 -46
  424. package/src/components/atoms/InputFormatterv2/Wysiwyg.stories.js +12 -12
  425. package/src/components/atoms/InputFormatterv2/index.js +148 -148
  426. package/src/components/atoms/InputFormatterv2/styles.js +39 -39
  427. package/src/components/atoms/InputImages/InputImages.stories.js +19 -19
  428. package/src/components/atoms/InputImages/index.js +25 -25
  429. package/src/components/atoms/InputImages/styles.js +17 -17
  430. package/src/components/atoms/InputText/InputText.stories.js +39 -39
  431. package/src/components/atoms/InputText/index.js +61 -61
  432. package/src/components/atoms/InputText/styles.js +89 -89
  433. package/src/components/atoms/LabelToInput/index.js +26 -26
  434. package/src/components/atoms/LabelToInput/style.js +41 -41
  435. package/src/components/atoms/LoadImageMenu/LoadImageMenu.stories.js +17 -17
  436. package/src/components/atoms/LoadImageMenu/index.js +58 -58
  437. package/src/components/atoms/LoadImageMenu/styles.js +72 -72
  438. package/src/components/atoms/Loading/Loading.stories.js +9 -9
  439. package/src/components/atoms/Loading/index.js +13 -13
  440. package/src/components/atoms/Loading/styles.js +57 -57
  441. package/src/components/atoms/LogoImage/LogoImage.stories.js +9 -9
  442. package/src/components/atoms/LogoImage/index.js +10 -10
  443. package/src/components/atoms/LogoImage/styles.js +11 -11
  444. package/src/components/atoms/MenuNotification/MenuNotification.stories.js +17 -17
  445. package/src/components/atoms/MenuNotification/index.js +30 -30
  446. package/src/components/atoms/MenuNotification/styles.js +50 -50
  447. package/src/components/atoms/MenuProfile/MenuProfile.stories.js +13 -13
  448. package/src/components/atoms/MenuProfile/index.js +31 -31
  449. package/src/components/atoms/MenuProfile/styles.js +57 -57
  450. package/src/components/atoms/MetricCard/MetricCard.stories.js +14 -14
  451. package/src/components/atoms/MetricCard/index.js +10 -10
  452. package/src/components/atoms/MetricCard/styles.js +30 -30
  453. package/src/components/atoms/MetricSelect/MetricSelect.stories.js +37 -37
  454. package/src/components/atoms/MetricSelect/index.js +22 -22
  455. package/src/components/atoms/MetricSelect/styles.js +20 -20
  456. package/src/components/atoms/Multiselect/Multiselect.stories.js +364 -364
  457. package/src/components/atoms/Multiselect/index.js +351 -351
  458. package/src/components/atoms/Multiselect/styles.js +33 -33
  459. package/src/components/atoms/NotFound/NotFound.stories.js +19 -19
  460. package/src/components/atoms/NotFound/index.js +52 -52
  461. package/src/components/atoms/NotFound/styles.js +55 -55
  462. package/src/components/atoms/Notification/Notification.stories.js +16 -16
  463. package/src/components/atoms/Notification/index.js +20 -20
  464. package/src/components/atoms/Notification/styles.js +42 -42
  465. package/src/components/atoms/NumberMandatory/NumberMandatory.stories.js +19 -19
  466. package/src/components/atoms/NumberMandatory/index.js +16 -16
  467. package/src/components/atoms/NumberMandatory/styles.js +11 -11
  468. package/src/components/atoms/ObservationFlag/ObservationFlag.stories.js +20 -20
  469. package/src/components/atoms/ObservationFlag/index.js +167 -167
  470. package/src/components/atoms/ObservationFlag/styles.js +104 -104
  471. package/src/components/atoms/PercentTag/PercentTag.stories.js +7 -7
  472. package/src/components/atoms/PercentTag/index.js +9 -9
  473. package/src/components/atoms/PercentTag/styles.js +69 -69
  474. package/src/components/atoms/PriorityFlag/PriorityFlag.stories.js +20 -20
  475. package/src/components/atoms/PriorityFlag/index.js +20 -20
  476. package/src/components/atoms/PriorityFlag/styles.js +3 -3
  477. package/src/components/atoms/PriorityFlagv2/PriorityFlagv2.stories.js +20 -20
  478. package/src/components/atoms/PriorityFlagv2/index.js +20 -20
  479. package/src/components/atoms/PriorityFlagv2/styles.js +6 -6
  480. package/src/components/atoms/ProductImage/ProductImage.stories.js +28 -28
  481. package/src/components/atoms/ProductImage/index.js +29 -29
  482. package/src/components/atoms/ProductImage/styles.js +69 -69
  483. package/src/components/atoms/ProductImagev2/ProductImagev2.stories.js +28 -28
  484. package/src/components/atoms/ProductImagev2/index.js +16 -16
  485. package/src/components/atoms/ProductImagev2/styles.js +62 -62
  486. package/src/components/atoms/ProductPercentCard/Percent.stories.js +40 -40
  487. package/src/components/atoms/ProductPercentCard/index.js +23 -23
  488. package/src/components/atoms/ProductPercentCard/styles.js +83 -83
  489. package/src/components/atoms/Progress/Progress.stories.js +25 -25
  490. package/src/components/atoms/Progress/index.js +74 -74
  491. package/src/components/atoms/Progress/styles.js +98 -98
  492. package/src/components/atoms/ProgressBar/ProgressBar.stories.js +25 -25
  493. package/src/components/atoms/ProgressBar/index.js +53 -53
  494. package/src/components/atoms/ProgressBar/styles.js +94 -94
  495. package/src/components/atoms/RatingStars/RatingStars.stories.js +10 -10
  496. package/src/components/atoms/RatingStars/index.js +31 -31
  497. package/src/components/atoms/RatingStars/styles.js +28 -28
  498. package/src/components/atoms/RetailerCatalog/RetailerCatalog.stories.js +36 -36
  499. package/src/components/atoms/RetailerCatalog/index.js +49 -49
  500. package/src/components/atoms/RetailerCatalog/styles.js +30 -30
  501. package/src/components/atoms/RetailerOption/RetailerOption.stories.js +15 -15
  502. package/src/components/atoms/RetailerOption/index.js +53 -53
  503. package/src/components/atoms/RetailerOption/styles.js +41 -41
  504. package/src/components/atoms/RetailersList/RetailersList.stories.js +33 -33
  505. package/src/components/atoms/RetailersList/index.js +20 -20
  506. package/src/components/atoms/RetailersList/styles.js +19 -19
  507. package/src/components/atoms/ScreenHeader/ScreenHeader.stories.js +52 -52
  508. package/src/components/atoms/ScreenHeader/index.js +29 -29
  509. package/src/components/atoms/ScreenHeader/styles.js +90 -90
  510. package/src/components/atoms/ScreenHeaderv2/ScreenHeaderv2.stories.js +52 -52
  511. package/src/components/atoms/ScreenHeaderv2/index.js +134 -134
  512. package/src/components/atoms/ScreenHeaderv2/styles.js +103 -103
  513. package/src/components/atoms/Select/VersionSelect.js +27 -27
  514. package/src/components/atoms/Select/index.js +35 -35
  515. package/src/components/atoms/Select/style.js +95 -95
  516. package/src/components/atoms/SelectItemV2/SelectItemV2.stories.js +26 -26
  517. package/src/components/atoms/SelectItemV2/index.js +61 -61
  518. package/src/components/atoms/SelectItemV2/styles.js +90 -90
  519. package/src/components/atoms/Selectv2/VersionSelect.js +27 -27
  520. package/src/components/atoms/Selectv2/index.js +35 -35
  521. package/src/components/atoms/Selectv2/style.js +93 -93
  522. package/src/components/atoms/SideMenuButton/SideMenuButton.stories.js +16 -16
  523. package/src/components/atoms/SideMenuButton/index.js +10 -10
  524. package/src/components/atoms/SideMenuButton/styles.js +28 -28
  525. package/src/components/atoms/SliderToolTip/SliderToolTip.stories.js +89 -89
  526. package/src/components/atoms/SliderToolTip/index.js +110 -110
  527. package/src/components/atoms/SliderToolTip/styles.js +197 -197
  528. package/src/components/atoms/Status/Status.stories.js +14 -14
  529. package/src/components/atoms/Status/index.js +13 -13
  530. package/src/components/atoms/Status/styles.js +78 -78
  531. package/src/components/atoms/TabSection/TabSection.stories.js +25 -25
  532. package/src/components/atoms/TabSection/index.js +9 -9
  533. package/src/components/atoms/TabSection/styles.js +19 -19
  534. package/src/components/atoms/TabSectionv2/TabSection.stories.js +25 -25
  535. package/src/components/atoms/TabSectionv2/index.js +9 -9
  536. package/src/components/atoms/TabSectionv2/styles.js +20 -20
  537. package/src/components/atoms/Tooltip/Tooltip.stories.js +51 -51
  538. package/src/components/atoms/Tooltip/index.js +59 -59
  539. package/src/components/atoms/Tooltip/styles.js +42 -42
  540. package/src/components/atoms/TooltipLight/Tooltip.stories.js +20 -20
  541. package/src/components/atoms/TooltipLight/index.js +46 -46
  542. package/src/components/atoms/TooltipLight/styles.js +65 -65
  543. package/src/components/atoms/UserCatalog/UserCatalog.stories.js +67 -67
  544. package/src/components/atoms/UserCatalog/index.js +100 -100
  545. package/src/components/atoms/UserCatalog/styles.js +24 -24
  546. package/src/components/atoms/UserOption/UserOption.stories.js +25 -25
  547. package/src/components/atoms/UserOption/index.js +95 -95
  548. package/src/components/atoms/UserOption/styles.js +61 -61
  549. package/src/components/atoms/UserSelector/UserSelector.stories.js +25 -25
  550. package/src/components/atoms/UserSelector/index.js +92 -92
  551. package/src/components/atoms/UserSelector/styles.js +55 -55
  552. package/src/components/atoms/ValidationPanel/ValidationPanel.stories.js +10 -10
  553. package/src/components/atoms/ValidationPanel/index.js +59 -59
  554. package/src/components/atoms/ValidationPanel/styles.js +44 -44
  555. package/src/components/atoms/VerticalSideMenuMainPage/VerticalSideMenuMainPage.stories.js +39 -39
  556. package/src/components/atoms/VerticalSideMenuMainPage/index.js +59 -59
  557. package/src/components/atoms/VerticalSideMenuMainPage/styles.js +187 -187
  558. package/src/components/atoms/WordsMissing/Wysiwyg.stories.js +12 -12
  559. package/src/components/atoms/WordsMissing/index.js +60 -60
  560. package/src/components/atoms/WordsMissing/styles.js +10 -10
  561. package/src/components/molecules/AddGroup/AddGroup.stories.js +14 -14
  562. package/src/components/molecules/AddGroup/index.js +84 -84
  563. package/src/components/molecules/AddGroup/styles.js +141 -141
  564. package/src/components/molecules/AddProvidersAndProducts/AddProvidersAndProducts.stories.js +15 -15
  565. package/src/components/molecules/AddProvidersAndProducts/index.js +19 -19
  566. package/src/components/molecules/AddProvidersAndProducts/styles.js +22 -22
  567. package/src/components/molecules/AsignationInfo/AsignationInfo.stories.js +17 -17
  568. package/src/components/molecules/AsignationInfo/index.js +108 -108
  569. package/src/components/molecules/AsignationInfo/styles.js +86 -86
  570. package/src/components/molecules/AssignedWork/AssignedWork.stories.js +41 -41
  571. package/src/components/molecules/AssignedWork/index.js +40 -40
  572. package/src/components/molecules/AssignedWork/styles.js +110 -110
  573. package/src/components/molecules/AvatarAndValidation/AvatarAndValidation.stories.js +12 -12
  574. package/src/components/molecules/AvatarAndValidation/index.js +75 -75
  575. package/src/components/molecules/AvatarAndValidation/styles.js +15 -15
  576. package/src/components/molecules/BoxAttribute/BoxAttribute.stories.js +15 -15
  577. package/src/components/molecules/BoxAttribute/index.js +78 -78
  578. package/src/components/molecules/BoxAttribute/styles.js +38 -38
  579. package/src/components/molecules/BoxButtons/BoxButtons.stories.js +14 -14
  580. package/src/components/molecules/BoxButtons/index.js +29 -29
  581. package/src/components/molecules/BoxButtons/styles.js +43 -43
  582. package/src/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +54 -54
  583. package/src/components/molecules/ButtonDownloadFile/index.js +109 -109
  584. package/src/components/molecules/ButtonDownloadFile/styles.js +66 -66
  585. package/src/components/molecules/CarouselImagesLogin/CarouselImagesLogin.stories.js +17 -17
  586. package/src/components/molecules/CarouselImagesLogin/index.js +65 -65
  587. package/src/components/molecules/CarouselImagesLogin/styles.js +60 -60
  588. package/src/components/molecules/CustomSelect/CustomSelect.stories.js +35 -35
  589. package/src/components/molecules/CustomSelect/SelectItem.js +104 -104
  590. package/src/components/molecules/CustomSelect/index.js +194 -194
  591. package/src/components/molecules/CustomSelect/styles.js +126 -126
  592. package/src/components/molecules/Dropdown/Dropdown.stories.js +103 -103
  593. package/src/components/molecules/Dropdown/index.js +150 -150
  594. package/src/components/molecules/Dropdown/styles.js +75 -75
  595. package/src/components/molecules/EditionActiveImage/EditionActiveImage.stories.js +12 -12
  596. package/src/components/molecules/EditionActiveImage/index.js +15 -15
  597. package/src/components/molecules/EditionActiveImage/styles.js +7 -7
  598. package/src/components/molecules/EditionActiveImagev2/EditionActiveImagev2.stories.js +12 -12
  599. package/src/components/molecules/EditionActiveImagev2/index.js +15 -15
  600. package/src/components/molecules/EditionActiveImagev2/styles.js +7 -7
  601. package/src/components/molecules/EditionTabs/EditionTabs.stories.js +12 -12
  602. package/src/components/molecules/EditionTabs/index.js +33 -33
  603. package/src/components/molecules/EditionTabs/styles.js +23 -23
  604. package/src/components/molecules/EmailResetPasswordLogin/EmailResetPasswordLogin.stories.js +11 -11
  605. package/src/components/molecules/EmailResetPasswordLogin/index.js +85 -85
  606. package/src/components/molecules/EmailResetPasswordLogin/styles.js +23 -23
  607. package/src/components/molecules/FeaturesBar/FeaturesBar.stories.js +20 -20
  608. package/src/components/molecules/FeaturesBar/index.js +30 -30
  609. package/src/components/molecules/FeaturesBar/styles.js +16 -16
  610. package/src/components/molecules/FeaturesBarv2/FeaturesBarv2.stories.js +20 -20
  611. package/src/components/molecules/FeaturesBarv2/index.js +32 -32
  612. package/src/components/molecules/FeaturesBarv2/styles.js +17 -17
  613. package/src/components/molecules/GalleryElement/GalleryElement.stories.js +30 -30
  614. package/src/components/molecules/GalleryElement/index.js +225 -225
  615. package/src/components/molecules/GalleryElement/styles.js +125 -125
  616. package/src/components/molecules/GalleryElementv2/GalleryElementv2.stories.js +30 -30
  617. package/src/components/molecules/GalleryElementv2/index.js +142 -142
  618. package/src/components/molecules/GalleryElementv2/styles.js +119 -119
  619. package/src/components/molecules/GalleryHeader/GalleryHeader.stories.js +10 -10
  620. package/src/components/molecules/GalleryHeader/index.js +27 -27
  621. package/src/components/molecules/GalleryHeader/styles.js +49 -49
  622. package/src/components/molecules/GalleryHeaderv2/GalleryHeaderv2.stories.js +10 -10
  623. package/src/components/molecules/GalleryHeaderv2/index.js +25 -25
  624. package/src/components/molecules/GalleryHeaderv2/styles.js +47 -47
  625. package/src/components/molecules/GridItem/GridItem.stories.js +126 -126
  626. package/src/components/molecules/GridItem/index.js +128 -128
  627. package/src/components/molecules/GridItem/styles.js +129 -129
  628. package/src/components/molecules/GroupSelect/GroupSelect.stories.js +35 -35
  629. package/src/components/molecules/GroupSelect/SelectItem.js +105 -105
  630. package/src/components/molecules/GroupSelect/index.js +190 -190
  631. package/src/components/molecules/GroupSelect/styles.js +124 -124
  632. package/src/components/molecules/HeaderItem/ColumnItem.js +9 -9
  633. package/src/components/molecules/HeaderItem/HeaderItem.stories.js +24 -24
  634. package/src/components/molecules/HeaderItem/index.js +26 -26
  635. package/src/components/molecules/HeaderItem/styles.js +27 -27
  636. package/src/components/molecules/HeaderTop/HeaderTop.stories.js +10 -10
  637. package/src/components/molecules/HeaderTop/index.js +106 -106
  638. package/src/components/molecules/HeaderTop/styles.js +33 -33
  639. package/src/components/molecules/HeaderTopv2/HeaderTopv2.stories.js +10 -10
  640. package/src/components/molecules/HeaderTopv2/index.js +100 -100
  641. package/src/components/molecules/HeaderTopv2/styles.js +33 -33
  642. package/src/components/molecules/ImageSelector/ImageSelector.stories.js +46 -46
  643. package/src/components/molecules/ImageSelector/index.js +22 -22
  644. package/src/components/molecules/ImageSelector/styles.js +13 -13
  645. package/src/components/molecules/ImageSelectorv2/ImageSelectorv2.stories.js +46 -46
  646. package/src/components/molecules/ImageSelectorv2/index.js +22 -22
  647. package/src/components/molecules/ImageSelectorv2/styles.js +15 -15
  648. package/src/components/molecules/ImageTooltip/ImageTooltip.stories.js +68 -68
  649. package/src/components/molecules/ImageTooltip/index.js +53 -53
  650. package/src/components/molecules/ImageTooltip/styles.js +18 -18
  651. package/src/components/molecules/LoginPasswordStrength/LoginPasswordStrength.stories.js +8 -8
  652. package/src/components/molecules/LoginPasswordStrength/index.js +84 -84
  653. package/src/components/molecules/LoginPasswordStrength/styles.js +91 -91
  654. package/src/components/molecules/LogoLoading/Loading.stories.js +9 -9
  655. package/src/components/molecules/LogoLoading/index.js +12 -12
  656. package/src/components/molecules/LogoLoading/styles.js +16 -16
  657. package/src/components/molecules/ParentComponent/ParentComponent.stories.js +18 -18
  658. package/src/components/molecules/ParentComponent/index.js +66 -66
  659. package/src/components/molecules/ParentComponent/styles.js +7 -7
  660. package/src/components/molecules/PayMethod/PayMethod.stories.js +12 -12
  661. package/src/components/molecules/PayMethod/index.js +46 -46
  662. package/src/components/molecules/PayMethod/styles.js +31 -31
  663. package/src/components/molecules/Phase/Phase.stories.js +107 -107
  664. package/src/components/molecules/Phase/index.js +391 -391
  665. package/src/components/molecules/Phase/styles.js +97 -97
  666. package/src/components/molecules/PlanSelection/PlanSelection.stories.js +19 -19
  667. package/src/components/molecules/PlanSelection/index.js +25 -25
  668. package/src/components/molecules/PlanSelection/styles.js +14 -14
  669. package/src/components/molecules/ProductNameHeader/ProductNameHeader.stories.js +37 -37
  670. package/src/components/molecules/ProductNameHeader/index.js +45 -45
  671. package/src/components/molecules/ProductNameHeader/styles.js +10 -10
  672. package/src/components/molecules/ProductNameHeaderv2/ProductNameHeaderv2.stories.js +37 -37
  673. package/src/components/molecules/ProductNameHeaderv2/index.js +12 -12
  674. package/src/components/molecules/ProductNameHeaderv2/styles.js +10 -10
  675. package/src/components/molecules/ProductNotification/ProductNotification.stories.js +13 -13
  676. package/src/components/molecules/ProductNotification/index.js +53 -53
  677. package/src/components/molecules/ProductNotification/styles.js +37 -37
  678. package/src/components/molecules/ProductSkuStatus/ProductSkuStatus.stories.js +37 -37
  679. package/src/components/molecules/ProductSkuStatus/index.js +26 -26
  680. package/src/components/molecules/ProductSkuStatus/styles.js +7 -7
  681. package/src/components/molecules/ProfileHeader/ProfileHeader.stories.js +16 -16
  682. package/src/components/molecules/ProfileHeader/index.js +54 -54
  683. package/src/components/molecules/ProfileHeader/styles.js +30 -30
  684. package/src/components/molecules/RegistrationFirstStep/RegistrationFirstStep.stories.js +11 -11
  685. package/src/components/molecules/RegistrationFirstStep/index.js +227 -227
  686. package/src/components/molecules/RegistrationFirstStep/styles.js +87 -87
  687. package/src/components/molecules/RegistrationSecondStep/RegistrationSecondStep.stories.js +11 -11
  688. package/src/components/molecules/RegistrationSecondStep/index.js +135 -135
  689. package/src/components/molecules/RegistrationSecondStep/styles.js +64 -64
  690. package/src/components/molecules/RegistrationThirdStep/RegistrationThirdStep.stories.js +11 -11
  691. package/src/components/molecules/RegistrationThirdStep/index.js +130 -130
  692. package/src/components/molecules/RegistrationThirdStep/styles.js +44 -44
  693. package/src/components/molecules/RetailerSelector/RetailerSelector.stories.js +35 -35
  694. package/src/components/molecules/RetailerSelector/index.js +81 -81
  695. package/src/components/molecules/RetailerSelector/styles.js +21 -21
  696. package/src/components/molecules/RetailerSelectorv2/RetailerSelectorv2.stories.js +35 -35
  697. package/src/components/molecules/RetailerSelectorv2/index.js +80 -80
  698. package/src/components/molecules/RetailerSelectorv2/styles.js +21 -21
  699. package/src/components/molecules/RowItem/ColumnItem.js +9 -9
  700. package/src/components/molecules/RowItem/RowItem.stories.js +5660 -5660
  701. package/src/components/molecules/RowItem/index.js +45 -45
  702. package/src/components/molecules/RowItem/styles.js +41 -41
  703. package/src/components/molecules/SelectV2/SelectV2.stories.js +115 -115
  704. package/src/components/molecules/SelectV2/index.js +357 -357
  705. package/src/components/molecules/SelectV2/styles.js +105 -105
  706. package/src/components/molecules/SelectV2/test.js +60 -60
  707. package/src/components/molecules/SelectV2/test.stories.js +10 -10
  708. package/src/components/molecules/ServiceDataValidator/ServiceDataValidator.stories.js +89 -89
  709. package/src/components/molecules/ServiceDataValidator/index.js +49 -49
  710. package/src/components/molecules/ServiceDataValidator/styles.js +36 -36
  711. package/src/components/molecules/SidebarNotification/SidebarNotification.stories.js +101 -101
  712. package/src/components/molecules/SidebarNotification/index.js +95 -95
  713. package/src/components/molecules/SidebarNotification/styles.js +63 -63
  714. package/src/components/molecules/SignInLogin/SignInLogin.stories.js +11 -11
  715. package/src/components/molecules/SignInLogin/index.js +244 -244
  716. package/src/components/molecules/SignInLogin/styles.js +111 -111
  717. package/src/components/molecules/StatusAsignationInfo/FinancedCompanies.js +44 -44
  718. package/src/components/molecules/StatusAsignationInfo/StatusAsignationInfo.stories.js +17 -17
  719. package/src/components/molecules/StatusAsignationInfo/index.js +197 -197
  720. package/src/components/molecules/StatusAsignationInfo/styles.js +82 -82
  721. package/src/components/molecules/StatusRetailer/StatusAsignationInfo.stories.js +17 -17
  722. package/src/components/molecules/StatusRetailer/index.js +55 -55
  723. package/src/components/molecules/StatusRetailer/styles.js +85 -85
  724. package/src/components/molecules/StripeCardForm/StripeCardForm.stories.js +14 -14
  725. package/src/components/molecules/StripeCardForm/index.js +45 -45
  726. package/src/components/molecules/StripeCardForm/paymentForm.js +126 -126
  727. package/src/components/molecules/StripeCardForm/styles.js +84 -84
  728. package/src/components/molecules/StripeCardSelector/CardSelector.stories.js +12 -12
  729. package/src/components/molecules/StripeCardSelector/index.js +59 -59
  730. package/src/components/molecules/StripeCardSelector/styles.js +15 -15
  731. package/src/components/molecules/StripeCardSelector/utils.js +17 -17
  732. package/src/components/molecules/TableHeader/TableHeader.stories.js +20 -20
  733. package/src/components/molecules/TableHeader/index.js +36 -36
  734. package/src/components/molecules/TableHeader/styles.js +30 -30
  735. package/src/components/molecules/TableRow/TableRow.stories.js +18 -18
  736. package/src/components/molecules/TableRow/index.js +14 -14
  737. package/src/components/molecules/TableRow/styles.js +11 -11
  738. package/src/components/molecules/TabsMenu/TabsMenu.stories.js +19 -19
  739. package/src/components/molecules/TabsMenu/index.js +110 -110
  740. package/src/components/molecules/TabsMenu/styles.js +5 -5
  741. package/src/components/molecules/TabsMenuv2/TabsMenuv2.stories.js +19 -19
  742. package/src/components/molecules/TabsMenuv2/index.js +112 -112
  743. package/src/components/molecules/TabsMenuv2/styles.js +19 -19
  744. package/src/components/molecules/TagAndInput/TagAndInput.stories.js +24 -24
  745. package/src/components/molecules/TagAndInput/index.js +120 -120
  746. package/src/components/molecules/TagAndInput/styles.js +36 -36
  747. package/src/components/molecules/TagAndInputv2/TagAndInputv2.stories.js +24 -24
  748. package/src/components/molecules/TagAndInputv2/index.js +86 -86
  749. package/src/components/molecules/TagAndInputv2/styles.js +35 -35
  750. package/src/components/molecules/Validation/Validation.stories.js +12 -12
  751. package/src/components/molecules/Validation/index.js +77 -77
  752. package/src/components/molecules/Validation/styles.js +19 -19
  753. package/src/components/molecules/VerificationCodeResetPasswordLogin/VerificationCodeResetPasswordLogin.stories.js +11 -11
  754. package/src/components/molecules/VerificationCodeResetPasswordLogin/index.js +171 -171
  755. package/src/components/molecules/VerificationCodeResetPasswordLogin/styles.js +54 -54
  756. package/src/components/molecules/VerificationCodeResetPasswordLogin/utils.js +54 -54
  757. package/src/components/molecules/VersionItem/VersionItem.stories.js +14 -14
  758. package/src/components/molecules/VersionItem/index.js +55 -55
  759. package/src/components/molecules/VersionItem/styles.js +32 -32
  760. package/src/components/molecules/VersionItemv2/VersionItemv2.stories.js +14 -14
  761. package/src/components/molecules/VersionItemv2/index.js +59 -59
  762. package/src/components/molecules/VersionItemv2/styles.js +47 -47
  763. package/src/components/organisms/BarButtons/BarButtons.stories.js +12 -12
  764. package/src/components/organisms/BarButtons/index.js +150 -150
  765. package/src/components/organisms/BarButtons/styles.js +54 -54
  766. package/src/components/organisms/Box/Box.stories.js +16 -16
  767. package/src/components/organisms/Box/index.js +103 -103
  768. package/src/components/organisms/Box/styles.js +47 -47
  769. package/src/components/organisms/BoxOnboarding/BoxOnboarding.stories.js +16 -16
  770. package/src/components/organisms/BoxOnboarding/index.js +59 -59
  771. package/src/components/organisms/BoxOnboarding/styles.js +44 -44
  772. package/src/components/organisms/Calendar/Calendar.stories.js +10 -10
  773. package/src/components/organisms/Calendar/index.js +17 -17
  774. package/src/components/organisms/Calendar/styles.js +853 -853
  775. package/src/components/organisms/ChangePassword/ChangePassword.stories.js +11 -11
  776. package/src/components/organisms/ChangePassword/index.js +77 -77
  777. package/src/components/organisms/ChangePassword/styles.js +13 -13
  778. package/src/components/organisms/Chat/Chat.stories.js +184 -184
  779. package/src/components/organisms/Chat/ChatLists/ChatLists.stories.js +65 -65
  780. package/src/components/organisms/Chat/ChatLists/index.js +141 -141
  781. package/src/components/organisms/Chat/ChatLists/styles.js +162 -162
  782. package/src/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +142 -142
  783. package/src/components/organisms/Chat/ContainerItems/index.js +538 -538
  784. package/src/components/organisms/Chat/ContainerItems/styles.js +360 -360
  785. package/src/components/organisms/Chat/ContentChat/ContentChat.stories.js +102 -102
  786. package/src/components/organisms/Chat/ContentChat/index.js +1016 -1016
  787. package/src/components/organisms/Chat/ContentChat/styles.js +44 -44
  788. package/src/components/organisms/Chat/Footer/Footer.stories.js +22 -22
  789. package/src/components/organisms/Chat/Footer/index.js +668 -668
  790. package/src/components/organisms/Chat/Footer/styles.js +290 -290
  791. package/src/components/organisms/Chat/Header/Header.stories.js +66 -66
  792. package/src/components/organisms/Chat/Header/index.js +93 -93
  793. package/src/components/organisms/Chat/Header/styles.js +49 -49
  794. package/src/components/organisms/Chat/index.js +282 -282
  795. package/src/components/organisms/Chat/styles.js +50 -50
  796. package/src/components/organisms/Chatv2/ChatLists/ChatLists.stories.js +65 -65
  797. package/src/components/organisms/Chatv2/ChatLists/index.js +141 -141
  798. package/src/components/organisms/Chatv2/ChatLists/styles.js +162 -162
  799. package/src/components/organisms/Chatv2/Chatv2.stories.js +184 -184
  800. package/src/components/organisms/Chatv2/ContainerItems/ContainerItems.stories.js +142 -142
  801. package/src/components/organisms/Chatv2/ContainerItems/index.js +538 -538
  802. package/src/components/organisms/Chatv2/ContainerItems/styles.js +360 -360
  803. package/src/components/organisms/Chatv2/ContentChat/ContentChat.stories.js +102 -102
  804. package/src/components/organisms/Chatv2/ContentChat/index.js +1016 -1016
  805. package/src/components/organisms/Chatv2/ContentChat/styles.js +44 -44
  806. package/src/components/organisms/Chatv2/Footer/Footer.stories.js +22 -22
  807. package/src/components/organisms/Chatv2/Footer/index.js +668 -668
  808. package/src/components/organisms/Chatv2/Footer/styles.js +290 -290
  809. package/src/components/organisms/Chatv2/Header/Header.stories.js +66 -66
  810. package/src/components/organisms/Chatv2/Header/index.js +93 -93
  811. package/src/components/organisms/Chatv2/Header/styles.js +49 -49
  812. package/src/components/organisms/Chatv2/index.js +281 -281
  813. package/src/components/organisms/Chatv2/styles.js +85 -85
  814. package/src/components/organisms/CompleteServices/CompleteServices.stories.js +90 -90
  815. package/src/components/organisms/CompleteServices/index.js +82 -82
  816. package/src/components/organisms/CompleteServices/styles.js +35 -35
  817. package/src/components/organisms/CreateVersion/CreateVersion.stories.js +14 -14
  818. package/src/components/organisms/CreateVersion/RenderChilds.js +131 -131
  819. package/src/components/organisms/CreateVersion/index.js +68 -68
  820. package/src/components/organisms/CreateVersion/styles.js +79 -79
  821. package/src/components/organisms/DashboardMetric/DashboardMetric.stories.js +28 -28
  822. package/src/components/organisms/DashboardMetric/dashboardMetricUtils.js +130 -130
  823. package/src/components/organisms/DashboardMetric/index.js +120 -120
  824. package/src/components/organisms/DashboardMetric/styles.js +91 -91
  825. package/src/components/organisms/DragAndDropPhases/DragAndDropPhases.stories.js +12 -12
  826. package/src/components/organisms/DragAndDropPhases/index.js +336 -336
  827. package/src/components/organisms/DragAndDropPhases/styles.js +107 -107
  828. package/src/components/organisms/DragPrueba/DragPrueba.stories.js +11 -11
  829. package/src/components/organisms/DragPrueba/index.js +57 -57
  830. package/src/components/organisms/DragPrueba/styles.js +8 -8
  831. package/src/components/organisms/EditGroup/EditGroup.stories.js +19 -19
  832. package/src/components/organisms/EditGroup/index.js +321 -321
  833. package/src/components/organisms/EditGroup/styles.js +206 -206
  834. package/src/components/organisms/FullProductNameHeader/FullProductNameHeader.stories.js +28 -28
  835. package/src/components/organisms/FullProductNameHeader/index.js +102 -102
  836. package/src/components/organisms/FullProductNameHeader/styles.js +12 -12
  837. package/src/components/organisms/FullProductNamev2/FullProductNamev2.stories.js +28 -28
  838. package/src/components/organisms/FullProductNamev2/index.js +101 -101
  839. package/src/components/organisms/FullProductNamev2/styles.js +49 -49
  840. package/src/components/organisms/FullTabsMenu/FullTabsMenu.stories.js +22 -22
  841. package/src/components/organisms/FullTabsMenu/index.js +69 -69
  842. package/src/components/organisms/FullTabsMenu/styles.js +10 -10
  843. package/src/components/organisms/FullTabsMenuv2/FullTabsMenuv2.stories.js +22 -22
  844. package/src/components/organisms/FullTabsMenuv2/index.js +142 -142
  845. package/src/components/organisms/FullTabsMenuv2/styles.js +47 -47
  846. package/src/components/organisms/Fullplan/FullPlan.stories.js +21 -21
  847. package/src/components/organisms/Fullplan/index.js +34 -34
  848. package/src/components/organisms/Fullplan/styles.js +26 -26
  849. package/src/components/organisms/GlobalModal/index.js +68 -68
  850. package/src/components/organisms/GlobalModal/styles.js +123 -123
  851. package/src/components/organisms/GridProducts/GridProducts.stories.js +5853 -5853
  852. package/src/components/organisms/GridProducts/index.js +50 -50
  853. package/src/components/organisms/GridProducts/styles.js +15 -15
  854. package/src/components/organisms/GridProducts/utils.js +111 -111
  855. package/src/components/organisms/ImageDataTable/ImageDataTable.stories.js +24 -24
  856. package/src/components/organisms/ImageDataTable/index.js +124 -124
  857. package/src/components/organisms/ImageDataTable/styles.js +17 -17
  858. package/src/components/organisms/ImageDataTablev2/ImageDataTablev2.stories.js +24 -24
  859. package/src/components/organisms/ImageDataTablev2/index.js +124 -124
  860. package/src/components/organisms/ImageDataTablev2/styles.js +18 -18
  861. package/src/components/organisms/ImagePreviewer/ImagePreviewer.stories.js +38 -38
  862. package/src/components/organisms/ImagePreviewer/index.js +21 -21
  863. package/src/components/organisms/ImagePreviewer/styles.js +7 -7
  864. package/src/components/organisms/ImagePreviewerv2/ImagePreviewerv2.stories.js +38 -38
  865. package/src/components/organisms/ImagePreviewerv2/index.js +22 -22
  866. package/src/components/organisms/ImagePreviewerv2/styles.js +7 -7
  867. package/src/components/organisms/ImageUploader/ImageUploader.stories.js +15 -15
  868. package/src/components/organisms/ImageUploader/index.js +62 -62
  869. package/src/components/organisms/ImageUploader/styles.js +29 -29
  870. package/src/components/organisms/ImageVisor/ImageVisor.stories.js +15 -15
  871. package/src/components/organisms/ImageVisor/index.js +143 -143
  872. package/src/components/organisms/ImageVisor/styles.js +106 -106
  873. package/src/components/organisms/ImagesGroup/index.js +10 -10
  874. package/src/components/organisms/ImagesGroup/styles.js +3 -3
  875. package/src/components/organisms/InputGroup/InputGroup.stories.js +31 -31
  876. package/src/components/organisms/InputGroup/index.js +439 -439
  877. package/src/components/organisms/InputGroup/styles.js +87 -87
  878. package/src/components/organisms/InputGroupv2/InputGroupv2.stories.js +31 -31
  879. package/src/components/organisms/InputGroupv2/index.js +296 -296
  880. package/src/components/organisms/InputGroupv2/styles.js +90 -90
  881. package/src/components/organisms/MandatoryBar/MandatoryBar.stories.js +18 -18
  882. package/src/components/organisms/MandatoryBar/index.js +31 -31
  883. package/src/components/organisms/MandatoryBar/styles.js +12 -12
  884. package/src/components/organisms/Modal/Modal.stories.js +56 -56
  885. package/src/components/organisms/Modal/index.js +104 -104
  886. package/src/components/organisms/Modal/styles.js +110 -110
  887. package/src/components/organisms/OrderDetail/OrderDetail.stories.js +87 -87
  888. package/src/components/organisms/OrderDetail/index.js +216 -216
  889. package/src/components/organisms/OrderDetail/styles.js +122 -122
  890. package/src/components/organisms/OrderDetail/utils/ImageGroup/index.js +34 -34
  891. package/src/components/organisms/OrderDetail/utils/ImageGroup/styles.js +46 -46
  892. package/src/components/organisms/OrderDetail/utils/Table/index.js +133 -133
  893. package/src/components/organisms/OrderDetail/utils/Table/styles.js +74 -74
  894. package/src/components/organisms/OrderDetail/utils/Table/utils.js +32 -32
  895. package/src/components/organisms/PanelLayout/PanelLayout.stories.js +63 -63
  896. package/src/components/organisms/PanelLayout/index.js +11 -11
  897. package/src/components/organisms/PanelLayout/styles.js +39 -39
  898. package/src/components/organisms/ProductImageModal/ProductImageModal.stories.js +90 -90
  899. package/src/components/organisms/ProductImageModal/index.js +98 -98
  900. package/src/components/organisms/ProductImageModal/styles.js +60 -60
  901. package/src/components/organisms/ProductImageModalv2/ProductImageModalv2.stories.js +90 -90
  902. package/src/components/organisms/ProductImageModalv2/index.js +105 -105
  903. package/src/components/organisms/ProductImageModalv2/styles.js +71 -71
  904. package/src/components/organisms/RangeCalendar/RangeCalendar.stories.js +16 -16
  905. package/src/components/organisms/RangeCalendar/index.js +121 -121
  906. package/src/components/organisms/RangeCalendar/styles.js +883 -883
  907. package/src/components/organisms/RenameImagesBar/RenameImagesBar.stories.js +18 -18
  908. package/src/components/organisms/RenameImagesBar/index.js +30 -30
  909. package/src/components/organisms/RenameImagesBar/styles.js +12 -12
  910. package/src/components/organisms/SideModal/SideModal.stories.js +23 -23
  911. package/src/components/organisms/SideModal/index.js +50 -50
  912. package/src/components/organisms/SideModal/styles.js +30 -30
  913. package/src/components/organisms/Table/Table.stories.js +609 -609
  914. package/src/components/organisms/Table/index.js +84 -84
  915. package/src/components/organisms/Table/styles.js +119 -119
  916. package/src/components/organisms/TableResizable/TableResizable.stories.js +17 -17
  917. package/src/components/organisms/TableResizable/index.js +119 -119
  918. package/src/components/organisms/TableResizable/styles.js +133 -133
  919. package/src/components/organisms/TableResizable/utils.js +46 -46
  920. package/src/components/organisms/VersionSelector/VersionSelector.stories.js +15 -15
  921. package/src/components/organisms/VersionSelector/index.js +106 -106
  922. package/src/components/organisms/VersionSelector/styles.js +29 -29
  923. package/src/components/organisms/VersionSelectorv2/VersionSelectorv2.stories.js +15 -15
  924. package/src/components/organisms/VersionSelectorv2/index.js +105 -105
  925. package/src/components/organisms/VersionSelectorv2/styles.js +45 -45
  926. package/src/components/pages/ChangePasswordLogin/ChangePasswordLogin.stories.js +18 -18
  927. package/src/components/pages/ChangePasswordLogin/index.js +77 -77
  928. package/src/components/pages/ChangePasswordLogin/styles.js +20 -20
  929. package/src/components/pages/CustomerLogin/CustomerLogin.stories.js +78 -78
  930. package/src/components/pages/CustomerLogin/index.js +22 -22
  931. package/src/components/pages/CustomerLogin/styles.js +12 -12
  932. package/src/components/pages/CustomerPayMethod/CustomerPayMethod.stories.js +56 -56
  933. package/src/components/pages/CustomerPayMethod/index.js +23 -23
  934. package/src/components/pages/CustomerPayMethod/styles.js +21 -21
  935. package/src/components/pages/CustomerType/CustomerType.stories.js +33 -33
  936. package/src/components/pages/CustomerType/index.js +22 -22
  937. package/src/components/pages/CustomerType/styles.js +21 -21
  938. package/src/components/pages/Dashboard/Dashboard.stories.js +62 -62
  939. package/src/components/pages/Dashboard/dashboardUtils.js +74 -74
  940. package/src/components/pages/Dashboard/index.js +382 -382
  941. package/src/components/pages/Dashboard/styles.js +37 -37
  942. package/src/components/pages/EmailResetPassword/EmailResetPassword.stories.js +17 -17
  943. package/src/components/pages/EmailResetPassword/index.js +77 -77
  944. package/src/components/pages/EmailResetPassword/styles.js +27 -27
  945. package/src/components/pages/MultipleEdition/MultipleEdition.stories.js +16 -16
  946. package/src/components/pages/MultipleEdition/components/ImageUploader.js +62 -62
  947. package/src/components/pages/MultipleEdition/components/ImageUploaderStyles.js +29 -29
  948. package/src/components/pages/MultipleEdition/components/ImageVisor.js +143 -143
  949. package/src/components/pages/MultipleEdition/components/styles.js +106 -106
  950. package/src/components/pages/MultipleEdition/index.js +248 -248
  951. package/src/components/pages/MultipleEdition/saveData.js +92 -92
  952. package/src/components/pages/MultipleEdition/styles.js +197 -197
  953. package/src/components/pages/MultipleEdition/utils.js +1074 -1074
  954. package/src/components/pages/OnboardPlan/OnboardPlan.stories.js +51 -51
  955. package/src/components/pages/OnboardPlan/index.js +22 -22
  956. package/src/components/pages/OnboardPlan/styles.js +33 -33
  957. package/src/components/pages/ProductEditionv2/ProductEditionv2.stories.js +213 -213
  958. package/src/components/pages/ProductEditionv2/index.js +1758 -1758
  959. package/src/components/pages/ProductEditionv2/styles.js +154 -154
  960. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +139 -139
  961. package/src/components/pages/ProviderProductEdition/index.js +1779 -1779
  962. package/src/components/pages/ProviderProductEdition/styles.js +122 -122
  963. package/src/components/pages/RegistrationLoginSecondStep/RegistrationLoginSecondStep.stories.js +18 -18
  964. package/src/components/pages/RegistrationLoginSecondStep/index.js +111 -111
  965. package/src/components/pages/RegistrationLoginSecondStep/styles.js +64 -64
  966. package/src/components/pages/RegistrationLoginThirdStep/RegistrationLoginThirdStep.stories.js +17 -17
  967. package/src/components/pages/RegistrationLoginThirdStep/index.js +105 -105
  968. package/src/components/pages/RegistrationLoginThirdStep/styles.js +48 -48
  969. package/src/components/pages/RetailerPlan/RetailerPlan.stories.js +49 -49
  970. package/src/components/pages/RetailerPlan/index.js +24 -24
  971. package/src/components/pages/RetailerPlan/styles.js +26 -26
  972. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +119 -119
  973. package/src/components/pages/RetailerProductEdition/generateThumnail.js +20 -20
  974. package/src/components/pages/RetailerProductEdition/index.js +1838 -1838
  975. package/src/components/pages/RetailerProductEdition/styles.js +104 -104
  976. package/src/components/pages/RetailerProductEdition/utils.js +71 -71
  977. package/src/components/pages/VerificationCodeResetPassword/VerificationCodeResetPassword.stories.js +17 -17
  978. package/src/components/pages/VerificationCodeResetPassword/index.js +92 -92
  979. package/src/components/pages/VerificationCodeResetPassword/styles.js +54 -54
  980. package/src/components/pages/VerificationCodeResetPassword/utils.js +56 -56
  981. package/src/global-files/customHooks.js +24 -24
  982. package/src/global-files/data.js +186 -186
  983. package/src/global-files/fonts.css +69 -69
  984. package/src/global-files/global-styles.css +42 -42
  985. package/src/global-files/handle_http.js +224 -224
  986. package/src/global-files/handle_userTech.js +7 -7
  987. package/src/global-files/utils.js +330 -330
  988. package/src/global-files/variables.js +56 -56
  989. package/src/index.js +113 -113
@@ -1,1779 +1,1779 @@
1
- import { Container } from "./styles";
2
- import { HeaderTop } from "../../molecules/HeaderTop";
3
- import { ImagePreviewer } from "../../organisms/ImagePreviewer";
4
- import { ImageDataTable } from "../../organisms/ImageDataTable";
5
- import { FullProductNameHeader } from "../../organisms/FullProductNameHeader";
6
- import { FullTabsMenu } from "../../organisms/FullTabsMenu";
7
- import { InputGroup } from "../../organisms/InputGroup";
8
- import { useEffect, useReducer, useState, useCallback } from "react";
9
- import { GalleryElement } from "../../molecules/GalleryElement";
10
- import { saveAs } from "file-saver";
11
- import {
12
- getRetailerServices,
13
- getPercentage,
14
- fetchUsers,
15
- } from "../../../global-files/data";
16
- import { GalleryHeader } from "../../molecules/GalleryHeader";
17
- import { ProductImageModal } from "../../organisms/ProductImageModal";
18
- import { useDropzone } from "react-dropzone";
19
- import axios from "axios";
20
- import { v4 as uuidv4 } from "uuid";
21
- import AWS from "aws-sdk";
22
- import { TagAndInput } from "../../molecules/TagAndInput/index";
23
- import { Button } from "../../atoms/GeneralButton";
24
- import { Commentary } from "../../atoms/Commentary";
25
- import { GenericModal } from "../../atoms/GenericModal";
26
- import { ScreenHeader } from "../../atoms/ScreenHeader";
27
- import { Loading } from "../../atoms/Loading";
28
- import succes from "../../../assets/images/genericModal/genericModalCheck.svg";
29
- import { Link } from "react-router-dom";
30
- import face from "../../../assets/images/defaultImages/defaultProfileImage.svg";
31
- import errorModal from "../../../assets/images/genericModal/errorModal.svg";
32
- import { GlobalModal } from "../../organisms/GlobalModal/index";
33
- import { SliderToolTip } from "../../atoms/SliderToolTip";
34
- import InfoIcon from "../../../assets/images/sliderToolTip/infoIcon.svg";
35
- import Slide1_1 from "../../../assets/images/sliderToolTip/slide1.svg";
36
- import Slide1_2 from "../../../assets/images/sliderToolTip/slide2.svg";
37
- import Slide1_3 from "../../../assets/images/sliderToolTip/slide3.svg";
38
- import Slide1_4 from "../../../assets/images/sliderToolTip/slide4.svg";
39
- import Slide1_5 from "../../../assets/images/sliderToolTip/slide5.svg";
40
- import { VersionSelector } from "../../organisms/VersionSelector";
41
- import { useCloseModal } from "../../../global-files/customHooks";
42
- import { createMessage, sendMessage } from "../RetailerProductEdition/utils";
43
- import { Modal } from "../../organisms/Modal";
44
- import { ButtonV2 } from "../../atoms/ButtonV2";
45
- import { Box } from "../../organisms/Box";
46
-
47
- const reducerImages = (state, action) => {
48
- let { values, attrForImgs, inputsByRetailer } = state;
49
- switch (action.action) {
50
- case "init":
51
- const newInputsByRetailer = {};
52
- action?.init?.inputsByRetailer?.forEach((inputs) => {
53
- inputs?.forEach((input) => {
54
- if (!newInputsByRetailer[`${input.id_retailer}`])
55
- newInputsByRetailer[`${input.id_retailer}`] = [];
56
- newInputsByRetailer[`${input.id_retailer}`].push(input);
57
- });
58
- });
59
- inputsByRetailer = newInputsByRetailer;
60
- return {
61
- ...action.init,
62
- inputsByRetailer,
63
- valuesInitial: action.init.values,
64
- inputsInitial: action.init.inputs,
65
- };
66
- case "addImg":
67
- values = [...values, action.img];
68
- return { ...state, values };
69
- case "changeImageInfo":
70
- values[action.index][action.attribute] = action.value;
71
- return { ...state, values };
72
- case "changeAttrValue":
73
- const index = attrForImgs.general.findIndex((f) => (f.id = action.id));
74
- if (index !== -1) {
75
- attrForImgs.general[index].value = action.value;
76
- }
77
-
78
- return { ...state, attrForImgs, values };
79
- case "deleteImage":
80
- values = values.filter(
81
- (value) => action.selectedImages.indexOf(value) === -1
82
- );
83
- return { ...state, values };
84
- case "orderImages": {
85
- let {
86
- inputsByRetailer = {},
87
- valuesInitial,
88
- inputsInitial,
89
- inputs,
90
- } = state;
91
- try {
92
- const orderedImages = [];
93
- const imageIdArray = [];
94
- if (action?.retailerId && !inputsByRetailer[action.retailerId]) {
95
- inputsByRetailer[action.retailerId] = [];
96
- }
97
- if (action.retailerId) {
98
- inputsByRetailer[action.retailerId]?.filter((input) => {
99
- imageIdArray.push(input.id_image);
100
- valuesInitial.forEach((value) => {
101
- if (value.image_id === input.id_image) orderedImages.push(value);
102
- });
103
- });
104
- }
105
-
106
- inputs = inputsInitial?.filter((input) =>
107
- imageIdArray.includes(input.id)
108
- );
109
-
110
- values = orderedImages.length > 0 ? orderedImages : [];
111
- } catch (error) {
112
- console.log(action.action, error);
113
- }
114
- return { ...state, values, inputs };
115
- }
116
- default:
117
- return state;
118
- }
119
- };
120
- const S3_BUCKET = process.env.REACT_APP_IMAGES_BUCKET;
121
- const REGION = "us-east-1";
122
-
123
- AWS.config.update({
124
- accessKeyId: process.env.REACT_APP_KUTS3,
125
- secretAccessKey: process.env.REACT_APP_AKUTS3,
126
- });
127
-
128
- const myBucket = new AWS.S3({
129
- params: { Bucket: S3_BUCKET },
130
- region: REGION,
131
- });
132
-
133
- export const ProviderProductEdition = ({
134
- tabsSections,
135
- productSelected = {},
136
- productToEdit,
137
- user = {},
138
- location = {},
139
- token,
140
- revision = false,
141
- setShowContentohRequestModal,
142
- showSurvey,
143
- company,
144
- addToCart,
145
- }) => {
146
- const [activeTab, setActiveTab] = useState("Descripción");
147
- const [activeImage, setActiveImage] = useState();
148
- const [imageLayout, setImageLayout] = useState(false);
149
- const [headerTop, setHeaderTop] = useState(0);
150
- const [descriptions, setDescriptions] = useState([]);
151
- const [datasheets, setDatasheets] = useState([]);
152
- const [images, setImages] = useReducer(reducerImages, {});
153
- const [showModal, setShowModal] = useState(false);
154
- const [boxData, setBoxData] = useState({});
155
- const { getRootProps, getInputProps } = useDropzone({
156
- accept: "image/*",
157
- noKeyboard: true,
158
- multiple: true,
159
- noClick: true,
160
- onDrop: (acceptedFiles) => {
161
- const newImages = [];
162
- acceptedFiles.map((file) => {
163
- const reader = new FileReader();
164
- reader.fileName = file.name;
165
- reader.onload = async function (e) {
166
- const ext = e.srcElement.fileName.split(".");
167
- const img = new Image();
168
- img.src = e.target.result;
169
- setTimeout(() => {
170
- const width = img.width;
171
- const height = img.height;
172
- const newImg = {
173
- action: "addImg",
174
- img: {
175
- src: e.target.result,
176
- name: e.target.fileName,
177
- ext: ext[ext.length - 1],
178
- width: width,
179
- height: height,
180
- isApproved: true, //VALIDAR QUE SOLO SEA PARA RADIOSHACK
181
- },
182
- };
183
- setImages(newImg);
184
- }, 500);
185
- };
186
- reader.onerror = function (error) {
187
- console.log("dropzoneError: ", error);
188
- };
189
- reader.readAsDataURL(file);
190
- return file;
191
- });
192
- },
193
- });
194
- const [updatedDatasheets, setUpdatedDatasheets] = useState([]);
195
- const [updatedDescriptions, setUpdatedDescriptions] = useState([]);
196
- const [imagesUploaded, setImagesUploaded] = useState(false);
197
- const [dataImages, setDataImages] = useState();
198
- const [percentages, setPercentages] = useState(
199
- product?.retailers
200
- ? new Array(product?.retailers?.length).fill({ percentage: 0 })
201
- : new Array(product?.retailersAvailable?.length).fill({ percentage: 0 })
202
- );
203
- const [activePercentage, setActivePercentage] = useState(0);
204
- const [activeRetailer, setActiveRetailer] = useState({});
205
- const [services, setServices] = useState([]);
206
- const [servicesData, setServicesData] = useState([]);
207
- const [message, setMessage] = useState("");
208
- const [product, setProduct] = useState(
209
- JSON.parse(sessionStorage.getItem("productSelected"))
210
- ? JSON.parse(sessionStorage.getItem("productSelected"))
211
- : productSelected
212
- );
213
- const [productEdit, setProductEdit] = useState(
214
- JSON.parse(sessionStorage.getItem("productEdit"))
215
- ? JSON.parse(sessionStorage.getItem("productEdit"))
216
- : productToEdit
217
- );
218
- const [version, setVersion] = useState(product?.version);
219
- const [comments] = useState({});
220
- const [comment, setComment] = useState("");
221
- const [crossComment, setCrossComment] = useState(false);
222
- const [userGroups, setUserGroups] = useState([]);
223
- const [assig, setAssig] = useState({});
224
- const [selectedImages, setSelectedImages] = useState([]);
225
- const [componentsArray, setComponentsArray] = useState([]);
226
- const [checkAll, setCheckAll] = useState(false);
227
- const isRetailer = user?.is_retailer;
228
- const [loading, setLoading] = useState(true);
229
- const [validatedAll, setValidatedAll] = useState(false);
230
- const [showRejectModal, setShowRejectModal] = useState(false);
231
- const [approvedInputs, setApprovedInputs] = useState({});
232
- const [approvedInputsImages, setApprovedInputsImages] = useState({});
233
-
234
- const updateApprovedInputs = (inputId) => {
235
- setApprovedInputs((prevInputs) => ({
236
- ...prevInputs,
237
- [inputId]: true,
238
- }));
239
- };
240
- const updateApprovedInputsImages = (inputId) => {
241
- setApprovedInputsImages((prevInputs) => ({
242
- ...prevInputs,
243
- [inputId]: true,
244
- }));
245
- };
246
-
247
- const [origin, setOrigin] = useState({
248
- "Ficha técnica": null,
249
- Descripción: null,
250
- Imágenes: null,
251
- });
252
-
253
- const [inCart, setInCart] = useState(false);
254
- const [dataGenericModal, setDataGenericModal] = useState({
255
- message: "¿Estás seguro de continuar?",
256
- detail: ` ${
257
- user.is_retailer
258
- ? "Asegurate de haber revisado las tres secciones"
259
- : "Envíar el producto a la cadena"
260
- }`,
261
- button1: {
262
- name: "Cerrar",
263
- action: closeGlobalModal,
264
- },
265
- button2: {
266
- name: "Continuar",
267
- action: () => evaluationToRetailer(false),
268
- },
269
- img: face,
270
- });
271
- const [socketType, setSocketType] = useState(null);
272
- const [saving, setSaving] = useState(loading);
273
- const [retailerStatus, setRetailerStatus] = useState(
274
- product.statusByRetailer
275
- );
276
- const [showVersionSelector, setShowVersionSelector] =
277
- useCloseModal("version-selector");
278
- const [globalModal, setGlobalModal] = useState();
279
-
280
- const updateAuditStatus = async (status) => {
281
- const productTemp = product;
282
- productTemp.article_status = status;
283
- productTemp.datasheet_status = status;
284
- productTemp.description_status = status;
285
- productTemp.images_status = status;
286
-
287
- const retailerStatusCopy = { ...retailerStatus };
288
- const conceptArray = ["description", "datasheet", "images"];
289
- Object.keys(retailerStatusCopy).forEach((key) => {
290
- conceptArray.forEach((concept) => {
291
- if (retailerStatusCopy[key][concept]) {
292
- retailerStatusCopy[key][concept] = status;
293
- }
294
- });
295
- });
296
- setRetailerStatus(retailerStatusCopy);
297
- productTemp.statusByRetailer = retailerStatusCopy;
298
- setProduct(productTemp);
299
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
300
- setProductEdit({
301
- ArticleId: productTemp.id_article,
302
- idCategory: productTemp.article.id_category,
303
- product: productTemp,
304
- });
305
- sessionStorage.setItem(
306
- "productEdit",
307
- JSON.stringify({
308
- ArticleId: productTemp.id_article,
309
- idCategory: productTemp.article.id_category,
310
- product: productTemp,
311
- })
312
- );
313
- await loadData();
314
- };
315
-
316
- const addCart = async (retailers) => {
317
- const { article, version } = product;
318
- const articleToOrder = [
319
- {
320
- articleId: article.id_article,
321
- version,
322
- userId: user.id_user,
323
- discount: 0,
324
- subtotal: 0,
325
- companyId: user.id_company,
326
- datasheet: retailers,
327
- description: retailers,
328
- image: retailers,
329
- attributeTranslations: false,
330
- descriptionTranslations: false,
331
- build: "[]",
332
- manual: "[]",
333
- userCreated: user.id_user,
334
- },
335
- ];
336
- let modatlType = "addedToCartError";
337
- if (addToCart) {
338
- const resCart = await addToCart({ data: articleToOrder });
339
- if (resCart.data.statusCode === 200) {
340
- modatlType = "addedToCart";
341
- }
342
- }
343
- showGlobalModal(modatlType);
344
- };
345
-
346
- const closeGlobalModal = () => setGlobalModal();
347
-
348
- const seenByProvider = async () => {
349
- const productTemp = product;
350
- const articleId = productTemp.id_article;
351
- const orderId = productTemp.id_order ?? productTemp.orderId;
352
- const promises = [];
353
- const conceptArray = ["description", "datasheet", "images"];
354
- conceptArray.forEach((concept) => {
355
- const sectionStatusKey = `${concept}_status`;
356
- const evalStatus = product[sectionStatusKey] || product?.version_status;
357
- const data = { articleId, orderId, concept, evalStatus };
358
- promises.push(
359
- axios.put(`${process.env.REACT_APP_SEND_EVAL}`, data, {
360
- headers: {
361
- Authorization: token,
362
- },
363
- })
364
- );
365
- });
366
- await Promise.all(promises);
367
- closeGlobalModal();
368
- await updateAuditStatus("FAP");
369
- };
370
-
371
- const showGlobalModal = useCallback(
372
- (type) => {
373
- const formatter = new Intl.ListFormat("es", { type: "conjunction" });
374
- switch (type) {
375
- case "generic":
376
- setGlobalModal(dataGenericModal);
377
- break;
378
- case "commentsSent":
379
- setGlobalModal({
380
- message: "Gracias, tus comentarios fueron entregados.",
381
- detail: "Trabajaremos en conjunto para resolverlo.",
382
- button1: {
383
- name: "Cerrar",
384
- action: closeGlobalModal,
385
- },
386
- img: face,
387
- textArea: false,
388
- });
389
- break;
390
- case "RAC":
391
- const servicesRejected = [];
392
- const translateServices = {
393
- datasheet: "ficha técnica",
394
- description: "descripción",
395
- images: "imágenes",
396
- };
397
- Object.keys(translateServices).forEach((service) => {
398
- if (product[`${service}_status`] === "RAC") {
399
- servicesRejected.push(translateServices[service]);
400
- }
401
- });
402
- const plural = ["Los servicios", "cumplen"];
403
- const singular = ["El servicio", "cumple"];
404
- const grammar = servicesRejected.length > 1 ? plural : singular;
405
- const formatted = formatter.format(servicesRejected);
406
- const text1 = `${grammar[0]} de ${formatted} no ${grammar[1]} con lo que la cadena necesita.`;
407
- const text2 = `¡Solicita el servicio de Content-oh! para completarlo!`;
408
- const retailers = product.retailersWithService.map((retailer) =>
409
- Number(retailer)
410
- );
411
- setGlobalModal({
412
- message:
413
- "Tu producto no cumple con los requerimientos de la cadena",
414
- customComponent: (
415
- <>
416
- <p className="generic-text">
417
- {text1}
418
- <br />
419
- <br />
420
- {text2}
421
- </p>
422
- </>
423
- ),
424
- button1: {
425
- name: "Continuar",
426
- action: async () => await seenByProvider(),
427
- },
428
- button2: {
429
- name: "Solicitar a Content-oh!",
430
- action: async () => {
431
- await addCart(retailers);
432
- await seenByProvider();
433
- },
434
- },
435
- img: errorModal,
436
- });
437
- break;
438
- case "AAC":
439
- setGlobalModal({
440
- message: "Felicidades",
441
- detail: "Tu producto cumple con los requerimientos de la cadena.",
442
- button1: {
443
- name: "Continuar",
444
- action: async () => await seenByProvider(),
445
- },
446
- img: face,
447
- });
448
- break;
449
- case "addedToCartError":
450
- setGlobalModal({
451
- detail:
452
- "Parece que algo salió mal al intentar añadir tu producto a tu carrito.",
453
- button1: {
454
- name: "Continuar",
455
- action: closeGlobalModal,
456
- },
457
- });
458
- break;
459
- case "addedToCart":
460
- setGlobalModal({
461
- message: "Producto añadido",
462
- detail: "Tu producto se añadió al carrito de compras.",
463
- button1: {
464
- name: "Continuar",
465
- action: closeGlobalModal,
466
- },
467
- img: face,
468
- });
469
- break;
470
- default:
471
- closeGlobalModal();
472
- break;
473
- }
474
- },
475
- [activeTab, dataGenericModal, product]
476
- );
477
-
478
- useEffect(() => {
479
- checkAll && setSelectedImages(images.values);
480
- }, [checkAll]);
481
-
482
- useEffect(() => {
483
- if (showModal) {
484
- setActiveTab("Imágenes");
485
- }
486
- }, [showModal]);
487
-
488
- useEffect(() => {
489
- setOrigin({
490
- "Ficha técnica": location?.state?.origin,
491
- Descripción: location?.state?.origin,
492
- Imágenes: location?.state?.origin,
493
- });
494
- }, [location?.state?.origin]);
495
-
496
- const loadData = async () => {
497
- const services = await getRetailerServices(
498
- product?.id_article || product?.article?.id_article,
499
- product?.article?.company_name || product?.categoryName,
500
- parseInt(product?.article?.id_category || product?.id_category),
501
- version,
502
- token
503
- );
504
-
505
- //Converts the data inside the datasheets object to array
506
- setServices(services);
507
- await getServices();
508
-
509
- setImages({ action: "init", init: services[2] });
510
- if (services[2]?.values?.length > 0) setActiveImage(0);
511
- const data = [
512
- {
513
- id_article: product.id_article,
514
- id_category: product.id_category,
515
- version: product.version,
516
- id_retailer_array: (
517
- product.retailersAvailable ?? product.retailers
518
- ).map(({ id }) => id),
519
- },
520
- ];
521
- const headers = { Authorization: token };
522
- getPercentage({ data, headers }).then((res) => {
523
- setPercentages(res[0]);
524
- });
525
- setLoading(false);
526
- };
527
-
528
- const getServices = async () => {
529
- const productInOrder = product.id_order || product.orderId;
530
- const idArticle = product?.id_article || product?.article?.id_article;
531
- let retailers = product.retailers || product.retailersAvailable;
532
- let active = null;
533
- if (isRevision() || productInOrder) {
534
- const servicesResponse = await axios.get(
535
- `${
536
- process.env.REACT_APP_SERVICES_ENDPOINT
537
- }?articleId=${idArticle}&orderId=${
538
- product?.id_order ?? product.orderId
539
- }&end=true`
540
- );
541
- const parsedResponse = JSON.parse(servicesResponse?.data?.body).data;
542
- const retailerResponse = parsedResponse?.map((srv) => srv.id_retailer);
543
- active = retailers?.find((retailer) =>
544
- retailerResponse.includes(retailer.id)
545
- );
546
- setServicesData(parsedResponse);
547
- }
548
- retailers &&
549
- !activeRetailer.id &&
550
- setActiveRetailer(active ? active : retailers[0]);
551
- };
552
-
553
- const isRevision = () => {
554
- if (productEdit) {
555
- const concept = getConcept(activeTab);
556
- const isRetailer = user.is_retailer === 1;
557
- const currentService = productEdit?.product[`${concept}_status`];
558
- const orgn = origin[activeTab];
559
- const revision = [
560
- "RequestWithContentoh",
561
- "RequestWithoutContentoh",
562
- "Contentoh",
563
- ].includes(orgn);
564
- if (isRetailer) {
565
- if (revision && currentService === "AP") return true;
566
- } else {
567
- const { product } = productEdit;
568
- const isRequestWithoutContentoh =
569
- orgn === "RequestWithoutContentoh" &&
570
- (["R", "CA"].includes(currentService) ||
571
- (currentService === "RCA" &&
572
- (!product.id_order || !product.orderId)));
573
- const isRequestWithContentoh =
574
- orgn === "RequestWithContentoh" && currentService === "AA";
575
- const isContentoh = orgn === "Contentoh" && currentService === "AA";
576
- if (isContentoh || isRequestWithoutContentoh || isRequestWithContentoh)
577
- return true;
578
- }
579
- }
580
- return false;
581
- };
582
-
583
- const getCart = async () => {
584
- const res = await axios.get(`${process.env.REACT_APP_CART}/general/`, {
585
- headers: {
586
- Authorization: token,
587
- },
588
- });
589
- const arr = Object.values(JSON.parse(res.data.body).data)
590
- ?.map((e) => e.article_id)
591
- .filter(Boolean);
592
- setInCart(arr.some((e) => e.articleId === product.id_article));
593
- };
594
-
595
- useEffect(() => {
596
- sessionStorage.setItem("user", JSON.stringify(user));
597
- loadData();
598
- getCart();
599
- fetchUsers(token).then((res) => setUserGroups(res));
600
- setImages({ action: "orderImages", retailerId: activeRetailer.id });
601
- if (["RAC", "AAC"].includes(product.article_status))
602
- showGlobalModal(product.article_status);
603
- }, [product, version]);
604
-
605
- useEffect(() => {
606
- setImages({ action: "orderImages", retailerId: activeRetailer.id });
607
- }, [activeRetailer]);
608
-
609
- const loadAssignations = (currentProduct) => {
610
- setAssig(product?.asignations);
611
- };
612
-
613
- useEffect(() => {
614
- loadAssignations(product);
615
- }, [userGroups]);
616
-
617
- useEffect(() => {
618
- const productTemp = product;
619
- const retailers = productTemp?.retailersAvailable || productTemp?.retailers;
620
- if (Object.keys(percentages[productTemp.id_article] ?? {})?.length > 0) {
621
- retailers?.forEach((retailer, index) => {
622
- retailer["percentage"] = Number(
623
- percentages[productTemp.id_article][retailer.id]?.percentageRequired
624
- );
625
- });
626
- }
627
- setProduct(productTemp);
628
- retailers && setActivePercentage(retailers[0]?.percentage);
629
- }, [percentages]);
630
-
631
- const loadInputs = () => {
632
- if (services.length > 0) {
633
- if (services[0][activeRetailer.id]?.data)
634
- services[0][activeRetailer.id].data = Object.values(
635
- services[0][activeRetailer.id].data
636
- );
637
- setActivePercentage(Math.round(activeRetailer?.percentage, 0));
638
-
639
- const datagroups = services[0][activeRetailer.id];
640
- const inputs = services[0]?.inputs;
641
- const descriptions = services[1]?.filter(
642
- (service) => service?.id === activeRetailer?.id
643
- );
644
- setDatasheets([datagroups, inputs]);
645
- setDescriptions(descriptions);
646
- }
647
- };
648
-
649
- useEffect(() => {
650
- loadInputs();
651
- activeRetailer.id &&
652
- setImages({ action: "orderImages", retailerId: activeRetailer.id });
653
- }, [servicesData, activeRetailer, services]);
654
-
655
- const thumbs = () => {
656
- const imageInputs = socketType?.slice();
657
- const imageType = images?.imageType?.map((e) => ({
658
- value: e?.id,
659
- name: e?.name,
660
- }));
661
- const imagePackagingType = images?.imagePackagingType?.map((e) => ({
662
- value: e?.id,
663
- name: e?.name,
664
- }));
665
- return images?.values?.map((image, index) => (
666
- <GalleryElement
667
- setCheckAll={setCheckAll}
668
- key={index}
669
- image={image}
670
- gridLayout={imageLayout}
671
- id={"gallery-element-" + index}
672
- index={index + "-" + image.name}
673
- number={index}
674
- imageType={imageType}
675
- imagePackagingType={imagePackagingType}
676
- imageInputs={imageInputs}
677
- changeImage={setImages}
678
- selectedImages={selectedImages}
679
- setSelectedImages={setSelectedImages}
680
- updateApprovedInputsImages={updateApprovedInputsImages}
681
- />
682
- ));
683
- };
684
-
685
- useEffect(() => {
686
- const imageInputs = images?.inputs?.map((e) => ({
687
- value: e?.id,
688
- name: e?.name,
689
- required: e?.required,
690
- active: images?.values?.some((value) => value?.image_id === e?.id),
691
- }));
692
- setSocketType(imageInputs);
693
- }, [images]);
694
-
695
- const saveDescriptions = async () => {
696
- //GUARDAS DESCRIPCIONES
697
- setLoading(true);
698
- const dataObject = {
699
- articleId: product?.id_article,
700
- articleData: updatedDescriptions,
701
- };
702
- dataObject.articleData = dataObject.articleData.map((item) => {
703
- const attributeId = item.attributeId;
704
- //if (approvedInputs.hasOwnProperty(attributeId)) {
705
- item.isApproved = true;
706
- //}
707
- return item;
708
- });
709
-
710
- if (product?.orderId) dataObject["orderId"] = product?.orderId;
711
- console.log("dataObject", dataObject);
712
- try {
713
- const res = await axios.put(
714
- `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?description=true&version=${version}`,
715
- dataObject,
716
- {
717
- headers: {
718
- Authorization: token,
719
- },
720
- }
721
- );
722
- if (res.data.statusCode === 200) {
723
- setUpdatedDescriptions([]);
724
- setMessage("Descripciones guardadas con éxito");
725
- await loadData();
726
- }
727
- } catch (error) {
728
- console.log(error);
729
- }
730
- };
731
-
732
- const saveDatasheets = async () => {
733
- const parseBoxData = [];
734
- Object.entries(boxData).forEach(([, box], index) => {
735
- const { value } = box;
736
- const attributesIds = Object.keys(value);
737
- attributesIds.forEach((attributeId) => {
738
- const boxId = index + 1;
739
- const valueOfAtribute = value[attributeId];
740
- parseBoxData.push({
741
- attributeId,
742
- value: valueOfAtribute,
743
- boxId,
744
- });
745
- });
746
- });
747
-
748
- const dataObject = {
749
- articleId: product?.id_article,
750
- articleData: updatedDatasheets,
751
- ...(parseBoxData.length > 0 && { boxData: parseBoxData }),
752
- };
753
- dataObject.articleData = dataObject.articleData.map((item) => {
754
- const attributeId = item.attributeId;
755
- if (approvedInputs.hasOwnProperty(attributeId)) {
756
- item.isApproved = true;
757
- }
758
- return item;
759
- });
760
-
761
- if (product?.orderId) dataObject["orderId"] = product?.orderId;
762
- try {
763
- const res = await axios.put(
764
- `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?datasheet=true&version=${version}`,
765
- dataObject,
766
- {
767
- headers: {
768
- Authorization: token,
769
- },
770
- }
771
- );
772
- if (res.data.statusCode === 200) {
773
- setUpdatedDatasheets([]);
774
- setMessage("Fichas técnicas guardadas");
775
- await loadData();
776
- }
777
- } catch (error) {
778
- console.log(error);
779
- }
780
- };
781
-
782
- const updateImages = useCallback(async () => {
783
- const imagesList = images?.values?.slice();
784
- const imagesListTemp = imagesList?.reduce((acc, image) => {
785
- acc[image?.image_id] = ++acc[image?.image_id] || 0;
786
- return acc;
787
- }, {});
788
-
789
- const duplicated = imagesList?.filter((image) => {
790
- return imagesListTemp[image?.image_id];
791
- });
792
-
793
- const attrForImgs = Object.values(images?.attrForImgs);
794
- attrForImgs.pop();
795
- const data = {
796
- articleId: product?.id_article,
797
- attrReqImgs: attrForImgs?.map((e) => ({
798
- attrId: e[0]?.id,
799
- value: e[0]?.value,
800
- })),
801
- articleData: imagesList?.filter((e) => !e.id),
802
- updateImages: imagesList?.filter((e) => e.id),
803
- };
804
- if (product?.orderId) data["orderId"] = product?.orderId;
805
- let valid =
806
- data?.articleData?.length === 0
807
- ? true
808
- : data?.articleData?.every((e, i) => {
809
- if (e?.image_id && e?.packing_type && e?.image_type) {
810
- return true;
811
- }
812
- return false;
813
- });
814
- if (valid && data?.updateImages?.length > 0 && duplicated?.length === 0) {
815
- valid = data?.updateImages?.every((e, i) => {
816
- if (e?.image_id && e?.packing_type && e?.image_type) {
817
- return true;
818
- }
819
- return false;
820
- });
821
- }
822
- console.log("DATA NEW", data);
823
-
824
- if (valid && duplicated?.length === 0) {
825
- setLoading(true);
826
- try {
827
- data?.articleData?.forEach((e) => {
828
- e.uuid = uuidv4();
829
- });
830
- data.updateImages = data.updateImages.map((image) => {
831
- return {
832
- ...image,
833
- isApproved: true,
834
- };
835
- /**if (approvedInputsImages[image.image_id] !== undefined) {
836
- return {
837
- ...image,
838
- isApproved: approvedInputsImages[image.image_id],
839
- };
840
- }**/
841
- return image;
842
- });
843
- setDataImages(data);
844
- if (data?.articleData?.length > 0) {
845
- setImagesUploaded(false);
846
- const promiseArray = [];
847
- data?.articleData?.forEach((e) => {
848
- const file = Buffer.from(
849
- e.src.replace(/^data:image\/\w+;base64,/, ""),
850
- "base64"
851
- );
852
- const params = {
853
- ACL: "public-read",
854
- Body: file,
855
- Bucket: S3_BUCKET,
856
- Key: `id-${data.articleId}/${version}/${e?.image_id}-${e?.uuid}.${e?.ext}`,
857
- };
858
- promiseArray.push(myBucket.putObject(params).promise());
859
- });
860
- await Promise.all(promiseArray);
861
- setImagesUploaded(true);
862
- } else {
863
- setImagesUploaded(true);
864
- }
865
- } catch (err) {
866
- console.log(err);
867
- // setMainLoading(false);
868
- }
869
- } else {
870
- // setMainLoading(false);
871
- setMessage(
872
- "Completa los campos que solicita cada una de la imágenes o hay imágenes con el mismo tipo de toma.\nRecuerda hay campos obligatorios y no podras avanzar si no estan completos."
873
- );
874
- }
875
- // eslint-disable-next-line react-hooks/exhaustive-deps
876
- }, [approvedInputsImages, images, imagesUploaded]);
877
-
878
- useEffect(async () => {
879
- if (imagesUploaded) {
880
- dataImages.articleData = dataImages?.articleData.map((e) => {
881
- delete e.src;
882
- e.imageID = e.image_id;
883
- e.packingType = e.packing_type;
884
- e.imageType = e.image_type;
885
- if (product?.orderId) e["orderId"] = product?.orderId;
886
- return e;
887
- });
888
- try {
889
- const res = await axios.put(
890
- `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
891
- dataImages,
892
- {
893
- headers: {
894
- Authorization: token,
895
- },
896
- }
897
- );
898
- if (res.data.statusCode === 200) {
899
- setImages({});
900
- setMessage("Imágenes guardadas con éxito");
901
- sessionStorage.removeItem("imagesList");
902
- await loadData();
903
- }
904
- } catch (error) {
905
- console.log(error);
906
- }
907
- }
908
- }, [dataImages, imagesUploaded]);
909
-
910
- const getConcept = (tab) => {
911
- switch (tab) {
912
- case "Descripción":
913
- return "description";
914
- case "Ficha técnica":
915
- return "datasheet";
916
- case "Imágenes":
917
- return "images";
918
- }
919
- };
920
-
921
- const createComment = async (body) => {
922
- let concept = "";
923
- switch (activeTab) {
924
- case "Ficha técnica":
925
- concept = "datasheet";
926
- break;
927
- case "Imágenes":
928
- concept = "images";
929
- break;
930
-
931
- default:
932
- concept = "description";
933
- break;
934
- }
935
- const data = {
936
- articleId: product?.id_article,
937
- orderId: product?.orderId,
938
- message: body,
939
- concept: concept,
940
- version: version,
941
- };
942
- await axios.post(`${process.env.REACT_APP_COMMENTS_ENDPOINT}`, data, {
943
- headers: {
944
- Authorization: token,
945
- },
946
- });
947
- };
948
-
949
- useEffect(() => {
950
- setComment(comments[activeTab]);
951
- }, [activeTab]);
952
-
953
- const commentRevised = async () => {
954
- const data = {
955
- commentId: comment.id,
956
- };
957
- await axios.put(`${process.env.REACT_APP_COMMENTS_ENDPOINT}`, data, {
958
- headers: {
959
- Authorization: token,
960
- },
961
- });
962
- setCrossComment(false);
963
- };
964
-
965
- const setAssignation = async (assignationType, assignationId) => {
966
- let concept = "";
967
- switch (activeTab) {
968
- case "Ficha técnica":
969
- concept = "datasheet";
970
- break;
971
- case "Imágenes":
972
- concept = "images";
973
- break;
974
-
975
- default:
976
- concept = "description";
977
- break;
978
- }
979
- const productTemp = product;
980
- productTemp.article[`id_${concept}_${assignationType}`] = assignationId;
981
- const data = {
982
- articleList: [
983
- {
984
- orderId: product.orderId,
985
- articleId: product?.id_article,
986
- },
987
- ],
988
- concept: concept,
989
- userId: assignationId,
990
- };
991
- await axios({
992
- method: "post",
993
- url: process.env.REACT_APP_ASSIGNATIONS_ENDPOINT,
994
- data,
995
- headers: {
996
- Authorization: token,
997
- },
998
- });
999
- loadAssignations(productTemp);
1000
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1001
- };
1002
-
1003
- const downloadImages = () => {
1004
- selectedImages.length > 0
1005
- ? selectedImages.forEach((e) => {
1006
- if (e.id) {
1007
- saveAs(
1008
- `https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${e.srcDB}`,
1009
- `${product.upc || product.article.upc}_${e.name}.${e.ext}`
1010
- );
1011
- }
1012
- })
1013
- : images?.values?.forEach((e) => {
1014
- if (e.id) {
1015
- saveAs(
1016
- `https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${e.srcDB}`,
1017
- `${product.upc || product.article.upc}_${e.name}.${e.ext}`
1018
- );
1019
- }
1020
- });
1021
- };
1022
-
1023
- const deleteImages = () => {
1024
- setLoading(true);
1025
- const { values } = images;
1026
- const imgsInBack = [];
1027
-
1028
- selectedImages.forEach((selectedImg) => {
1029
- if (selectedImg.id) imgsInBack.push(selectedImg);
1030
- });
1031
-
1032
- const imgsLeft = values.filter(
1033
- (value) => selectedImages.indexOf(value) === -1
1034
- );
1035
-
1036
- if (imgsInBack.length > 0) {
1037
- const data = {
1038
- articleId: product?.id_article || product?.article?.id_article,
1039
- deleteImages: imgsInBack,
1040
- };
1041
- try {
1042
- axios.put(
1043
- `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
1044
- data,
1045
- {
1046
- headers: { Authorization: token },
1047
- }
1048
- );
1049
- } catch (err) {
1050
- console.log(err);
1051
- }
1052
- }
1053
-
1054
- setImages({
1055
- action: "deleteImage",
1056
- selectedImages,
1057
- });
1058
-
1059
- setTimeout(() => {
1060
- setLoading(false);
1061
- }, 500);
1062
-
1063
- setMessage("");
1064
- setComponentsArray([]);
1065
- };
1066
-
1067
- const askToDeleteImages = () => {
1068
- if (selectedImages.length > 0) {
1069
- setMessage("¿Está seguro de eliminar las imágenes seleccionadas?");
1070
- setComponentsArray([
1071
- <ScreenHeader
1072
- key={"1"}
1073
- text={"¿Está seguro de eliminar las imágenes seleccionadas?"}
1074
- headerType="retailer-name-header"
1075
- color={"white"}
1076
- />,
1077
- <Button
1078
- key={"2"}
1079
- buttonType="general-white-button"
1080
- label={"Cancelar"}
1081
- onClick={() => setMessage("")}
1082
- />,
1083
- <Button
1084
- key={"3"}
1085
- buttonType="general-button-default"
1086
- label={"Aceptar"}
1087
- onClick={() => {
1088
- setMessage("");
1089
- deleteImages();
1090
- }}
1091
- />,
1092
- ]);
1093
- }
1094
- };
1095
-
1096
- const sendEvaluation = async (result) => {
1097
- setLoading(true);
1098
- const concept = getConcept(activeTab);
1099
- const productTemp = product;
1100
- const articleId = productTemp.id_article;
1101
- const orderId = productTemp.id_order ?? productTemp.orderId;
1102
- const sectionStatusKey = `${getConcept(activeTab)}_status`;
1103
- const evalStatus = product[sectionStatusKey] || product?.version_status;
1104
- let data = { articleId, orderId, concept, evalStatus };
1105
- const retailerId = activeRetailer?.id;
1106
- let res;
1107
- try {
1108
- if (result) {
1109
- data.result = result;
1110
- data.retailerId = retailerId;
1111
- res = await axios.put(
1112
- `${process.env.REACT_APP_EVALUATION_ENDPOINT}`,
1113
- data,
1114
- {
1115
- headers: {
1116
- Authorization: token,
1117
- },
1118
- }
1119
- );
1120
- const newStatuses = JSON.parse(res.data.body);
1121
- const orderStatus = newStatuses.newOrderStatus;
1122
- const serviceStatus =
1123
- newStatuses.newServiceStatus[articleId][
1124
- `${getConcept(activeTab)}Status`
1125
- ];
1126
-
1127
- const newProductEdit = productEdit;
1128
- newProductEdit.product[sectionStatusKey] = serviceStatus;
1129
- setProductEdit(newProductEdit);
1130
- const showSurveyByProvider =
1131
- !user.is_retailer && orderStatus[orderId] === "AP";
1132
- const showSurveyByRetailer =
1133
- user.is_retailer && orderStatus[orderId] === "ACA";
1134
- showSurvey && showSurvey(showSurveyByProvider || showSurveyByRetailer);
1135
- } else {
1136
- res = await axios.put(`${process.env.REACT_APP_SEND_EVAL}`, data, {
1137
- headers: {
1138
- Authorization: token,
1139
- },
1140
- });
1141
- }
1142
- if (res.data.statusCode === 200) {
1143
- const { newArticleStatus, newServiceStatus, newStatus } = JSON.parse(
1144
- res.data.body
1145
- );
1146
- if (newArticleStatus) productTemp.status = newArticleStatus[articleId];
1147
- const retailerStatusCopy = { ...retailerStatus };
1148
- retailerStatusCopy[activeRetailer.id][concept] = newStatus;
1149
- setRetailerStatus(retailerStatusCopy);
1150
- productTemp.statusByRetailer = retailerStatusCopy;
1151
- let status;
1152
- if (newServiceStatus) {
1153
- status = newServiceStatus[articleId][`${concept}Status`];
1154
- productTemp[`${concept}_status`] = status;
1155
- }
1156
- setProduct(productTemp);
1157
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1158
- setOrigin((prev) => ({ ...prev, [concept]: status }));
1159
- }
1160
- } catch (err) {
1161
- console.log(err);
1162
- }
1163
- loadData();
1164
- };
1165
-
1166
- const validateAll = async (result) => {
1167
- try {
1168
- setLoading(true);
1169
- const evaluationArray = [];
1170
- const conceptArray = ["description", "datasheet", "images"];
1171
- const dataGeneral = {
1172
- articleId: product.id_article,
1173
- orderId: product.id_order ?? product.orderId,
1174
- result,
1175
- isAproved: result === "A",
1176
- };
1177
- servicesData?.forEach((ret) => {
1178
- const { service, id_retailer } = ret;
1179
- let data = {};
1180
- data = {
1181
- ...dataGeneral,
1182
- concept: service,
1183
- retailerId: id_retailer,
1184
- evalStatus: retailerStatus[id_retailer][service],
1185
- };
1186
- evaluationArray.push(
1187
- axios.put(`${process.env.REACT_APP_EVALUATION_ENDPOINT}`, data, {
1188
- headers: {
1189
- Authorization: token,
1190
- },
1191
- })
1192
- );
1193
- });
1194
- await Promise.all(evaluationArray);
1195
- const userType = user.is_retailer === 1 ? "CA" : "P";
1196
-
1197
- const productTemp = product;
1198
- const status = `${result}${userType}`;
1199
- productTemp.article_status = status;
1200
- productTemp.datasheet_status =
1201
- productTemp.datasheet_status === "NA" ? "NA" : status;
1202
- productTemp.description_status =
1203
- productTemp.description_status === "NA" ? "NA" : status;
1204
- productTemp.images_status =
1205
- productTemp.images_status === "NA" ? "NA" : status;
1206
-
1207
- const retailerStatusCopy = { ...retailerStatus };
1208
- Object.keys(retailerStatusCopy).forEach((key) => {
1209
- conceptArray.forEach((concept) => {
1210
- if (retailerStatusCopy[key][concept]) {
1211
- retailerStatusCopy[key][concept] = status;
1212
- }
1213
- });
1214
- });
1215
- setRetailerStatus(retailerStatusCopy);
1216
- productTemp.statusByRetailer = retailerStatusCopy;
1217
- setProduct(productTemp);
1218
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1219
- setProductEdit({
1220
- ArticleId: productTemp.id_article,
1221
- idCategory: productTemp.article.id_category,
1222
- product: productTemp,
1223
- });
1224
- sessionStorage.setItem(
1225
- "productEdit",
1226
- JSON.stringify({
1227
- ArticleId: productTemp.id_article,
1228
- idCategory: productTemp.article.id_category,
1229
- product: productTemp,
1230
- })
1231
- );
1232
-
1233
- await loadData();
1234
- } catch (error) {
1235
- console.log(error);
1236
- }
1237
- };
1238
-
1239
- const evaluationToRetailer = async (result) => {
1240
- const data = {
1241
- articleId: product.id_article,
1242
- companyId: user.is_retailer
1243
- ? product.provider_company_id
1244
- : product.retailer_company_id,
1245
- versionId: product.version,
1246
- status: result,
1247
- };
1248
- await axios.put(`${process.env.REACT_APP_RETAILER_REQUEST}`, data, {
1249
- headers: {
1250
- Authorization: token,
1251
- },
1252
- });
1253
- const prod = productEdit;
1254
- const statusComplete = user.is_retailer ? `${result}CA` : `${result}P`;
1255
- prod.product.datasheet_status = statusComplete;
1256
- prod.product.description_status = statusComplete;
1257
- prod.product.images_status = statusComplete;
1258
- prod.product.article_status = statusComplete;
1259
- prod.product.services_status = `["${statusComplete}","${statusComplete}","${statusComplete}"]`;
1260
- sessionStorage.setItem("productEdit", JSON.stringify(prod));
1261
- setProduct(prod);
1262
- showGlobalModal("generic");
1263
- await loadData();
1264
- };
1265
-
1266
- const getSectionStatus = () => {
1267
- const concept = getConcept(activeTab);
1268
- return ["AA", "AP", "R", "CA", "RCA"].includes(
1269
- productEdit.product[`${concept}_status`]
1270
- );
1271
- };
1272
-
1273
- const enableActions = (versionStatus) => {
1274
- try {
1275
- if (versionStatus) {
1276
- return ["AP", "ACA", "RCA", null].includes(versionStatus);
1277
- }
1278
- return true;
1279
- } catch (err) {
1280
- console.log(err, "Unable de check if user is retailer");
1281
- return false;
1282
- }
1283
- };
1284
-
1285
- useEffect(() => {
1286
- setSaving(loading);
1287
- }, [loading]);
1288
-
1289
- const slidefront = [
1290
- {
1291
- slide: Slide1_1,
1292
- description:
1293
- "Creamos tu contenido, y todo lo que haga falta para tu producto, cada sección puedes socilitar contenido enriquecido, y nosotros lo haremos por ti.",
1294
- },
1295
- {
1296
- slide: Slide1_2,
1297
- description:
1298
- "Puedes agregar solicitudes de contenido enriquecido a tu carrito de compra las veces que sean necesarias. Una vez completada tu lista con los servicios necesitados sigue el proceso de compra en checkout.",
1299
- },
1300
- {
1301
- slide: Slide1_3,
1302
- description:
1303
- "Revisa el contenido que deseas solicilitar, valida y tambien puedes agregar contenido extra, traducciones, o simplemente completar el checkout.",
1304
- },
1305
- {
1306
- slide: Slide1_4,
1307
- description:
1308
- "Elige el tipo de entrega de tu producto, puedes ser recolección en el lugar o por el contrario puedes dejarlo en nuestras oficinas.",
1309
- },
1310
- {
1311
- slide: Slide1_5,
1312
- title: "Bienvenido al modo Content-oh!",
1313
- description:
1314
- "Finalmente elige la forma de pago que más te guste, procede con el pago y listo.",
1315
- },
1316
- ];
1317
- const sendToEvaluation = (result) => {
1318
- if (result === "A") {
1319
- if (
1320
- origin[activeTab] === "RequestWithoutContentoh" &&
1321
- !user.is_retailer &&
1322
- (!product.id_order || !product.orderId)
1323
- ) {
1324
- setDataGenericModal((prev) => ({
1325
- ...prev,
1326
- button2: {
1327
- name: "Continuar",
1328
- action: () => evaluationToRetailer("A"),
1329
- },
1330
- }));
1331
- showGlobalModal("generic");
1332
- } else if (user.is_retailer) {
1333
- if (product.id_order || product.orderId) {
1334
- sendEvaluation("A");
1335
- } else {
1336
- setDataGenericModal((prev) => ({
1337
- ...prev,
1338
- button2: {
1339
- name: "Continuar",
1340
- action: () => evaluationToRetailer("A"),
1341
- },
1342
- }));
1343
- showGlobalModal("generic");
1344
- }
1345
- } else {
1346
- sendEvaluation("A");
1347
- }
1348
- } else {
1349
- if (
1350
- origin === "RequestWithoutContentoh" &&
1351
- !user.is_retailer &&
1352
- (!product.id_order || !product.orderId)
1353
- ) {
1354
- return;
1355
- } else if (user.is_retailer) {
1356
- if (product.id_order || product.orderId) {
1357
- sendEvaluation("R");
1358
- } else {
1359
- setDataGenericModal((prev) => ({
1360
- ...prev,
1361
- button2: {
1362
- name: "Continuar",
1363
- action: () => evaluationToRetailer("R"),
1364
- },
1365
- }));
1366
- showGlobalModal("generic");
1367
- }
1368
- } else {
1369
- sendEvaluation("R");
1370
- }
1371
- }
1372
- };
1373
-
1374
- return (
1375
- <Container headerTop={headerTop}>
1376
- <HeaderTop
1377
- setHeaderTop={setHeaderTop}
1378
- withChat={location?.state?.withChat}
1379
- chatType={location?.state?.chatType}
1380
- productSelected={productSelected}
1381
- token={token}
1382
- activeRetailer={activeRetailer}
1383
- />
1384
- <div className="data-container">
1385
- <div className="image-data-panel">
1386
- <ImagePreviewer
1387
- activeImage={images?.values ? images?.values[activeImage] : {}}
1388
- imagesArray={images}
1389
- setActiveImage={setActiveImage}
1390
- setShowModal={setShowModal}
1391
- />
1392
- <ImageDataTable
1393
- lists={images}
1394
- activeImage={images?.values ? images?.values[activeImage] : {}}
1395
- retailerSelected={activeRetailer?.id}
1396
- setImages={setImages}
1397
- assignationsImages={assig}
1398
- imagesStatus={product?.images_status}
1399
- setAssignation={setAssignation}
1400
- isRetailer={isRetailer}
1401
- onClickSave={() =>
1402
- product?.services?.images === 1 && updateImages()
1403
- }
1404
- setShowVersionSelector={setShowVersionSelector}
1405
- version={version}
1406
- />
1407
- </div>
1408
- <div className="product-information">
1409
- <FullProductNameHeader
1410
- headerData={product}
1411
- percent={activePercentage}
1412
- activeRetailer={activeRetailer}
1413
- setActiveRetailer={setActiveRetailer}
1414
- showValidationButtons={isRevision() && getSectionStatus()}
1415
- servicesData={servicesData ? servicesData : null}
1416
- showApproveRejectAll={isRevision() && getSectionStatus()}
1417
- approveAll={() => {
1418
- if (
1419
- origin === "RequestWithoutContentoh" &&
1420
- !user.is_retailer &&
1421
- (!product.id_order || !product.orderId)
1422
- ) {
1423
- setDataGenericModal((prev) => ({
1424
- ...prev,
1425
- button2: {
1426
- name: "Continuar",
1427
- action: () => evaluationToRetailer("A"),
1428
- },
1429
- }));
1430
- showGlobalModal("generic");
1431
- } else if (user.is_retailer) {
1432
- if (product.id_order || product.orderId) {
1433
- validateAll("A");
1434
- } else {
1435
- setDataGenericModal((prev) => ({
1436
- ...prev,
1437
- button2: {
1438
- name: "Continuar",
1439
- action: () => evaluationToRetailer("A"),
1440
- },
1441
- }));
1442
- showGlobalModal("generic");
1443
- }
1444
- } else {
1445
- validateAll("A");
1446
- }
1447
- }}
1448
- rejectAll={() => {
1449
- if (
1450
- origin === "RequestWithoutContentoh" &&
1451
- !user.is_retailer &&
1452
- (!product.id_order || !product.orderId)
1453
- ) {
1454
- return;
1455
- } else if (user.is_retailer) {
1456
- if (product.id_order || product.orderId) {
1457
- setValidatedAll(true);
1458
- setShowRejectModal(true);
1459
- } else {
1460
- setDataGenericModal((prev) => ({
1461
- ...prev,
1462
- button2: {
1463
- name: "Continuar",
1464
- action: () => evaluationToRetailer("R"),
1465
- },
1466
- }));
1467
- showGlobalModal("generic");
1468
- }
1469
- } else {
1470
- setShowRejectModal(true);
1471
- setValidatedAll(true);
1472
- }
1473
- }}
1474
- approve={() => sendToEvaluation("A")}
1475
- reject={() => {
1476
- setShowRejectModal(true);
1477
- }}
1478
- />
1479
- <FullTabsMenu
1480
- tabsSections={tabsSections}
1481
- status={
1482
- activeRetailer?.id &&
1483
- retailerStatus &&
1484
- retailerStatus[activeRetailer.id]
1485
- ? retailerStatus[activeRetailer?.id][getConcept(activeTab)] ||
1486
- "NS"
1487
- : "-"
1488
- }
1489
- activeTab={activeTab}
1490
- setActiveTab={setActiveTab}
1491
- setImageLayout={setImageLayout}
1492
- downloadImages={downloadImages}
1493
- askToDeleteImages={askToDeleteImages}
1494
- assig={assig}
1495
- setAssignation={setAssignation}
1496
- isRetailer={isRetailer}
1497
- showSaveButton={enableActions(product.version_status)}
1498
- version={version}
1499
- updatedDescriptions={updatedDescriptions}
1500
- setUpdatedDescriptions={setUpdatedDescriptions}
1501
- updatedDatasheets={updatedDatasheets}
1502
- setUpdatedDatasheets={setUpdatedDatasheets}
1503
- images={images}
1504
- setImages={setImages}
1505
- selectedImages={selectedImages}
1506
- setSelectedImages={setSelectedImages}
1507
- setShowVersionSelector={setShowVersionSelector}
1508
- user={user}
1509
- onClickSave={() => {
1510
- switch (activeTab) {
1511
- case "Descripción":
1512
- !saving && saveDescriptions();
1513
- break;
1514
- case "Ficha técnica":
1515
- !saving && saveDatasheets();
1516
- break;
1517
- case "Imágenes":
1518
- !saving && updateImages();
1519
- break;
1520
- default:
1521
- break;
1522
- }
1523
- }}
1524
- />
1525
- <div
1526
- className={
1527
- "services-information-container " +
1528
- (imageLayout && activeTab === "Imágenes" ? "image-services" : "")
1529
- }
1530
- >
1531
- {loading ? (
1532
- <Loading />
1533
- ) : (
1534
- <>
1535
- {!imageLayout && activeTab === "Imágenes" && (
1536
- <GalleryHeader
1537
- setSelectedImages={setSelectedImages}
1538
- checkAll={checkAll}
1539
- setCheckAll={setCheckAll}
1540
- />
1541
- )}
1542
- {activeTab === "Ficha técnica" &&
1543
- (product?.datasheet_status !== "NS" ? (
1544
- <div>
1545
- {datasheets[0]?.data?.map((dataGroup, index) => (
1546
- <InputGroup
1547
- key={index + "-" + activeRetailer.name}
1548
- articleId={product.id_article}
1549
- version={version}
1550
- activeSection={activeTab}
1551
- inputGroup={dataGroup}
1552
- dataInputs={datasheets[1]}
1553
- updatedDatasheets={updatedDatasheets}
1554
- setUpdatedDatasheets={setUpdatedDatasheets}
1555
- isShowbox={true}
1556
- activeRetailer={services[0][activeRetailer.id]}
1557
- groupData={services[0][activeRetailer.id].data}
1558
- setUpdatedBoxData={(e) => {
1559
- setBoxData(e);
1560
- }}
1561
- index={index}
1562
- //enableActions={enableActions(product.version_status)} ADD THIS VALIDATION
1563
- updateApprovedInputs={updateApprovedInputs}
1564
- ></InputGroup>
1565
- ))}
1566
- </div>
1567
- ) : (
1568
- <ScreenHeader
1569
- text={"No cuentas con este servicio"}
1570
- headerType={"input-name-header"}
1571
- />
1572
- ))}
1573
- {activeTab === "Descripción" &&
1574
- (product?.description_status !== "NS" ? (
1575
- <InputGroup
1576
- activeSection={activeTab}
1577
- inputGroup={descriptions[0]}
1578
- updatedDescriptions={updatedDescriptions}
1579
- setUpdatedDescriptions={setUpdatedDescriptions}
1580
- articleId={product?.id_article}
1581
- version={version}
1582
- isShowbox={false}
1583
- dinamicHeight={true}
1584
- updateApprovedInputs={updateApprovedInputs}
1585
- />
1586
- ) : (
1587
- <ScreenHeader
1588
- text={"No cuentas con este servicio"}
1589
- headerType={"input-name-header"}
1590
- />
1591
- ))}
1592
-
1593
- {activeTab === "Imágenes" &&
1594
- (product?.images_status !== "NS" ? (
1595
- <section className="container">
1596
- <div {...getRootProps({ className: "dropzone" })}>
1597
- <input {...getInputProps()} />
1598
- <aside>{thumbs()}</aside>
1599
- </div>
1600
- </section>
1601
- ) : (
1602
- <ScreenHeader
1603
- text={"No cuentas con este servicio"}
1604
- headerType={"input-name-header"}
1605
- />
1606
- ))}
1607
- </>
1608
- )}
1609
- </div>
1610
- {isRevision() && getSectionStatus() ? (
1611
- <div className="commentary-box">
1612
- {/* Este lo comento porque la funcionalidad se tiene en el modal al momento de rechazar el producto */}
1613
- {/* {!comment ? (
1614
- <div className="commentary">
1615
- <TagAndInput
1616
- label={"Caja de Comentario"}
1617
- inputType={"textarea"}
1618
- inputCols={80}
1619
- inputRows={4}
1620
- inputId={"commentary-box"}
1621
- index={0}
1622
- />
1623
- <div className="buttons-box">
1624
- <Button
1625
- buttonType={"general-transparent-button"}
1626
- label={"Enviar comentario"}
1627
- onClick={(e) =>{
1628
- createComment(
1629
- e,
1630
- document.querySelector(
1631
- "#commentary-box .ql-container .ql-editor > p"
1632
- ).innerHTML,
1633
- activeTab
1634
- )
1635
- }
1636
- }
1637
- />
1638
- </div>
1639
- </div>
1640
- ) : (
1641
- <div className="feedback-box">
1642
- <Commentary
1643
- comment={comment.message}
1644
- reviewed={crossComment}
1645
- />
1646
- <Button
1647
- buttonType={"circular-button accept-button"}
1648
- onClick={async () => {
1649
- setCrossComment(true);
1650
- commentRevised();
1651
- }}
1652
- />
1653
- </div>
1654
- )} */}
1655
- </div>
1656
- ) : (
1657
- !revision && (
1658
- <div className="required-inputs-message">
1659
- <div>
1660
- <p>
1661
- Los atributos son requeridos por las plataformas de las
1662
- cadenas, es muy importante completar los campos requeridos
1663
- ya que pueden rechazar el producto por falta de información.
1664
- </p>
1665
- </div>
1666
- {inCart ? (
1667
- <button type="button">
1668
- <Link to="/checkout">
1669
- <p>Articulo en carrito</p>
1670
- <p>Ir a checkout</p>
1671
- </Link>
1672
- </button>
1673
- ) : (
1674
- <>
1675
- <SliderToolTip
1676
- infoIcon={InfoIcon}
1677
- slidefront={slidefront}
1678
- iconSize={"big-image"}
1679
- slidePosition={"top-slide"}
1680
- />
1681
- <Button
1682
- onClick={() => {
1683
- setShowContentohRequestModal &&
1684
- setShowContentohRequestModal(true);
1685
- }}
1686
- buttonType="general-default-button"
1687
- label="Enviar a Content-oh!"
1688
- />
1689
- </>
1690
- )}
1691
- </div>
1692
- )
1693
- )}
1694
- </div>
1695
- </div>
1696
- {showModal && (
1697
- <ProductImageModal
1698
- images={images}
1699
- setShowModal={setShowModal}
1700
- approveRejectButtons={isRevision() && getSectionStatus()}
1701
- sendToFacilitator={sendToEvaluation}
1702
- />
1703
- )}
1704
- {message.length > 0 && !showSurvey && (
1705
- <GenericModal
1706
- buttonType={componentsArray.length > 0 && "delete-product"}
1707
- componentsArray={
1708
- componentsArray.length > 0
1709
- ? componentsArray
1710
- : [
1711
- <img key="1" src={succes} alt="success icon" />,
1712
- <ScreenHeader
1713
- key="2"
1714
- headerType={"retailer-name-header"}
1715
- text={message}
1716
- color={"white"}
1717
- />,
1718
- ]
1719
- }
1720
- onClick={() => setMessage("")}
1721
- />
1722
- )}
1723
- {globalModal && <GlobalModal close={closeGlobalModal} {...globalModal} />}
1724
- {showVersionSelector && (
1725
- <VersionSelector
1726
- modalId={"version-selector"}
1727
- articleId={product.id_article}
1728
- setVersion={setVersion}
1729
- companyName={company.company_name}
1730
- currentVersion={version}
1731
- setShowVersionSelector={setShowVersionSelector}
1732
- jwt={token}
1733
- />
1734
- )}
1735
- {showRejectModal && (
1736
- <Modal
1737
- title={"Agregar mensaje de rechazo"}
1738
- show={showRejectModal}
1739
- customComponent={
1740
- <TagAndInput
1741
- inputType={"textarea"}
1742
- inputId={"modal-message-box"}
1743
- index={0}
1744
- color={"white"}
1745
- />
1746
- }
1747
- buttons={[
1748
- <ButtonV2
1749
- key={"btn-Cancelar"}
1750
- type={"white"}
1751
- label={"Cancelar"}
1752
- size={12}
1753
- onClick={() => {
1754
- setShowRejectModal(false);
1755
- }}
1756
- />,
1757
- <ButtonV2
1758
- key={"btn-Aceptar"}
1759
- type={"pink"}
1760
- label={"Aceptar"}
1761
- size={12}
1762
- onClick={async () => {
1763
- const body = document.querySelector(
1764
- "#modal-message-box .ql-container .ql-editor > p"
1765
- ).innerHTML;
1766
- const messages = [
1767
- { type: "message", value: body?.replace(/<.*?\/?>/gm, "") },
1768
- ];
1769
- await createComment(messages[0].value);
1770
- validatedAll ? validateAll("R") : sendToEvaluation("R");
1771
- setShowRejectModal(false);
1772
- }}
1773
- />,
1774
- ]}
1775
- />
1776
- )}
1777
- </Container>
1778
- );
1779
- };
1
+ import { Container } from "./styles";
2
+ import { HeaderTop } from "../../molecules/HeaderTop";
3
+ import { ImagePreviewer } from "../../organisms/ImagePreviewer";
4
+ import { ImageDataTable } from "../../organisms/ImageDataTable";
5
+ import { FullProductNameHeader } from "../../organisms/FullProductNameHeader";
6
+ import { FullTabsMenu } from "../../organisms/FullTabsMenu";
7
+ import { InputGroup } from "../../organisms/InputGroup";
8
+ import { useEffect, useReducer, useState, useCallback } from "react";
9
+ import { GalleryElement } from "../../molecules/GalleryElement";
10
+ import { saveAs } from "file-saver";
11
+ import {
12
+ getRetailerServices,
13
+ getPercentage,
14
+ fetchUsers,
15
+ } from "../../../global-files/data";
16
+ import { GalleryHeader } from "../../molecules/GalleryHeader";
17
+ import { ProductImageModal } from "../../organisms/ProductImageModal";
18
+ import { useDropzone } from "react-dropzone";
19
+ import axios from "axios";
20
+ import { v4 as uuidv4 } from "uuid";
21
+ import AWS from "aws-sdk";
22
+ import { TagAndInput } from "../../molecules/TagAndInput/index";
23
+ import { Button } from "../../atoms/GeneralButton";
24
+ import { Commentary } from "../../atoms/Commentary";
25
+ import { GenericModal } from "../../atoms/GenericModal";
26
+ import { ScreenHeader } from "../../atoms/ScreenHeader";
27
+ import { Loading } from "../../atoms/Loading";
28
+ import succes from "../../../assets/images/genericModal/genericModalCheck.svg";
29
+ import { Link } from "react-router-dom";
30
+ import face from "../../../assets/images/defaultImages/defaultProfileImage.svg";
31
+ import errorModal from "../../../assets/images/genericModal/errorModal.svg";
32
+ import { GlobalModal } from "../../organisms/GlobalModal/index";
33
+ import { SliderToolTip } from "../../atoms/SliderToolTip";
34
+ import InfoIcon from "../../../assets/images/sliderToolTip/infoIcon.svg";
35
+ import Slide1_1 from "../../../assets/images/sliderToolTip/slide1.svg";
36
+ import Slide1_2 from "../../../assets/images/sliderToolTip/slide2.svg";
37
+ import Slide1_3 from "../../../assets/images/sliderToolTip/slide3.svg";
38
+ import Slide1_4 from "../../../assets/images/sliderToolTip/slide4.svg";
39
+ import Slide1_5 from "../../../assets/images/sliderToolTip/slide5.svg";
40
+ import { VersionSelector } from "../../organisms/VersionSelector";
41
+ import { useCloseModal } from "../../../global-files/customHooks";
42
+ import { createMessage, sendMessage } from "../RetailerProductEdition/utils";
43
+ import { Modal } from "../../organisms/Modal";
44
+ import { ButtonV2 } from "../../atoms/ButtonV2";
45
+ import { Box } from "../../organisms/Box";
46
+
47
+ const reducerImages = (state, action) => {
48
+ let { values, attrForImgs, inputsByRetailer } = state;
49
+ switch (action.action) {
50
+ case "init":
51
+ const newInputsByRetailer = {};
52
+ action?.init?.inputsByRetailer?.forEach((inputs) => {
53
+ inputs?.forEach((input) => {
54
+ if (!newInputsByRetailer[`${input.id_retailer}`])
55
+ newInputsByRetailer[`${input.id_retailer}`] = [];
56
+ newInputsByRetailer[`${input.id_retailer}`].push(input);
57
+ });
58
+ });
59
+ inputsByRetailer = newInputsByRetailer;
60
+ return {
61
+ ...action.init,
62
+ inputsByRetailer,
63
+ valuesInitial: action.init.values,
64
+ inputsInitial: action.init.inputs,
65
+ };
66
+ case "addImg":
67
+ values = [...values, action.img];
68
+ return { ...state, values };
69
+ case "changeImageInfo":
70
+ values[action.index][action.attribute] = action.value;
71
+ return { ...state, values };
72
+ case "changeAttrValue":
73
+ const index = attrForImgs.general.findIndex((f) => (f.id = action.id));
74
+ if (index !== -1) {
75
+ attrForImgs.general[index].value = action.value;
76
+ }
77
+
78
+ return { ...state, attrForImgs, values };
79
+ case "deleteImage":
80
+ values = values.filter(
81
+ (value) => action.selectedImages.indexOf(value) === -1
82
+ );
83
+ return { ...state, values };
84
+ case "orderImages": {
85
+ let {
86
+ inputsByRetailer = {},
87
+ valuesInitial,
88
+ inputsInitial,
89
+ inputs,
90
+ } = state;
91
+ try {
92
+ const orderedImages = [];
93
+ const imageIdArray = [];
94
+ if (action?.retailerId && !inputsByRetailer[action.retailerId]) {
95
+ inputsByRetailer[action.retailerId] = [];
96
+ }
97
+ if (action.retailerId) {
98
+ inputsByRetailer[action.retailerId]?.filter((input) => {
99
+ imageIdArray.push(input.id_image);
100
+ valuesInitial.forEach((value) => {
101
+ if (value.image_id === input.id_image) orderedImages.push(value);
102
+ });
103
+ });
104
+ }
105
+
106
+ inputs = inputsInitial?.filter((input) =>
107
+ imageIdArray.includes(input.id)
108
+ );
109
+
110
+ values = orderedImages.length > 0 ? orderedImages : [];
111
+ } catch (error) {
112
+ console.log(action.action, error);
113
+ }
114
+ return { ...state, values, inputs };
115
+ }
116
+ default:
117
+ return state;
118
+ }
119
+ };
120
+ const S3_BUCKET = process.env.REACT_APP_IMAGES_BUCKET;
121
+ const REGION = "us-east-1";
122
+
123
+ AWS.config.update({
124
+ accessKeyId: process.env.REACT_APP_KUTS3,
125
+ secretAccessKey: process.env.REACT_APP_AKUTS3,
126
+ });
127
+
128
+ const myBucket = new AWS.S3({
129
+ params: { Bucket: S3_BUCKET },
130
+ region: REGION,
131
+ });
132
+
133
+ export const ProviderProductEdition = ({
134
+ tabsSections,
135
+ productSelected = {},
136
+ productToEdit,
137
+ user = {},
138
+ location = {},
139
+ token,
140
+ revision = false,
141
+ setShowContentohRequestModal,
142
+ showSurvey,
143
+ company,
144
+ addToCart,
145
+ }) => {
146
+ const [activeTab, setActiveTab] = useState("Descripción");
147
+ const [activeImage, setActiveImage] = useState();
148
+ const [imageLayout, setImageLayout] = useState(false);
149
+ const [headerTop, setHeaderTop] = useState(0);
150
+ const [descriptions, setDescriptions] = useState([]);
151
+ const [datasheets, setDatasheets] = useState([]);
152
+ const [images, setImages] = useReducer(reducerImages, {});
153
+ const [showModal, setShowModal] = useState(false);
154
+ const [boxData, setBoxData] = useState({});
155
+ const { getRootProps, getInputProps } = useDropzone({
156
+ accept: "image/*",
157
+ noKeyboard: true,
158
+ multiple: true,
159
+ noClick: true,
160
+ onDrop: (acceptedFiles) => {
161
+ const newImages = [];
162
+ acceptedFiles.map((file) => {
163
+ const reader = new FileReader();
164
+ reader.fileName = file.name;
165
+ reader.onload = async function (e) {
166
+ const ext = e.srcElement.fileName.split(".");
167
+ const img = new Image();
168
+ img.src = e.target.result;
169
+ setTimeout(() => {
170
+ const width = img.width;
171
+ const height = img.height;
172
+ const newImg = {
173
+ action: "addImg",
174
+ img: {
175
+ src: e.target.result,
176
+ name: e.target.fileName,
177
+ ext: ext[ext.length - 1],
178
+ width: width,
179
+ height: height,
180
+ isApproved: true, //VALIDAR QUE SOLO SEA PARA RADIOSHACK
181
+ },
182
+ };
183
+ setImages(newImg);
184
+ }, 500);
185
+ };
186
+ reader.onerror = function (error) {
187
+ console.log("dropzoneError: ", error);
188
+ };
189
+ reader.readAsDataURL(file);
190
+ return file;
191
+ });
192
+ },
193
+ });
194
+ const [updatedDatasheets, setUpdatedDatasheets] = useState([]);
195
+ const [updatedDescriptions, setUpdatedDescriptions] = useState([]);
196
+ const [imagesUploaded, setImagesUploaded] = useState(false);
197
+ const [dataImages, setDataImages] = useState();
198
+ const [percentages, setPercentages] = useState(
199
+ product?.retailers
200
+ ? new Array(product?.retailers?.length).fill({ percentage: 0 })
201
+ : new Array(product?.retailersAvailable?.length).fill({ percentage: 0 })
202
+ );
203
+ const [activePercentage, setActivePercentage] = useState(0);
204
+ const [activeRetailer, setActiveRetailer] = useState({});
205
+ const [services, setServices] = useState([]);
206
+ const [servicesData, setServicesData] = useState([]);
207
+ const [message, setMessage] = useState("");
208
+ const [product, setProduct] = useState(
209
+ JSON.parse(sessionStorage.getItem("productSelected"))
210
+ ? JSON.parse(sessionStorage.getItem("productSelected"))
211
+ : productSelected
212
+ );
213
+ const [productEdit, setProductEdit] = useState(
214
+ JSON.parse(sessionStorage.getItem("productEdit"))
215
+ ? JSON.parse(sessionStorage.getItem("productEdit"))
216
+ : productToEdit
217
+ );
218
+ const [version, setVersion] = useState(product?.version);
219
+ const [comments] = useState({});
220
+ const [comment, setComment] = useState("");
221
+ const [crossComment, setCrossComment] = useState(false);
222
+ const [userGroups, setUserGroups] = useState([]);
223
+ const [assig, setAssig] = useState({});
224
+ const [selectedImages, setSelectedImages] = useState([]);
225
+ const [componentsArray, setComponentsArray] = useState([]);
226
+ const [checkAll, setCheckAll] = useState(false);
227
+ const isRetailer = user?.is_retailer;
228
+ const [loading, setLoading] = useState(true);
229
+ const [validatedAll, setValidatedAll] = useState(false);
230
+ const [showRejectModal, setShowRejectModal] = useState(false);
231
+ const [approvedInputs, setApprovedInputs] = useState({});
232
+ const [approvedInputsImages, setApprovedInputsImages] = useState({});
233
+
234
+ const updateApprovedInputs = (inputId) => {
235
+ setApprovedInputs((prevInputs) => ({
236
+ ...prevInputs,
237
+ [inputId]: true,
238
+ }));
239
+ };
240
+ const updateApprovedInputsImages = (inputId) => {
241
+ setApprovedInputsImages((prevInputs) => ({
242
+ ...prevInputs,
243
+ [inputId]: true,
244
+ }));
245
+ };
246
+
247
+ const [origin, setOrigin] = useState({
248
+ "Ficha técnica": null,
249
+ Descripción: null,
250
+ Imágenes: null,
251
+ });
252
+
253
+ const [inCart, setInCart] = useState(false);
254
+ const [dataGenericModal, setDataGenericModal] = useState({
255
+ message: "¿Estás seguro de continuar?",
256
+ detail: ` ${
257
+ user.is_retailer
258
+ ? "Asegurate de haber revisado las tres secciones"
259
+ : "Envíar el producto a la cadena"
260
+ }`,
261
+ button1: {
262
+ name: "Cerrar",
263
+ action: closeGlobalModal,
264
+ },
265
+ button2: {
266
+ name: "Continuar",
267
+ action: () => evaluationToRetailer(false),
268
+ },
269
+ img: face,
270
+ });
271
+ const [socketType, setSocketType] = useState(null);
272
+ const [saving, setSaving] = useState(loading);
273
+ const [retailerStatus, setRetailerStatus] = useState(
274
+ product.statusByRetailer
275
+ );
276
+ const [showVersionSelector, setShowVersionSelector] =
277
+ useCloseModal("version-selector");
278
+ const [globalModal, setGlobalModal] = useState();
279
+
280
+ const updateAuditStatus = async (status) => {
281
+ const productTemp = product;
282
+ productTemp.article_status = status;
283
+ productTemp.datasheet_status = status;
284
+ productTemp.description_status = status;
285
+ productTemp.images_status = status;
286
+
287
+ const retailerStatusCopy = { ...retailerStatus };
288
+ const conceptArray = ["description", "datasheet", "images"];
289
+ Object.keys(retailerStatusCopy).forEach((key) => {
290
+ conceptArray.forEach((concept) => {
291
+ if (retailerStatusCopy[key][concept]) {
292
+ retailerStatusCopy[key][concept] = status;
293
+ }
294
+ });
295
+ });
296
+ setRetailerStatus(retailerStatusCopy);
297
+ productTemp.statusByRetailer = retailerStatusCopy;
298
+ setProduct(productTemp);
299
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
300
+ setProductEdit({
301
+ ArticleId: productTemp.id_article,
302
+ idCategory: productTemp.article.id_category,
303
+ product: productTemp,
304
+ });
305
+ sessionStorage.setItem(
306
+ "productEdit",
307
+ JSON.stringify({
308
+ ArticleId: productTemp.id_article,
309
+ idCategory: productTemp.article.id_category,
310
+ product: productTemp,
311
+ })
312
+ );
313
+ await loadData();
314
+ };
315
+
316
+ const addCart = async (retailers) => {
317
+ const { article, version } = product;
318
+ const articleToOrder = [
319
+ {
320
+ articleId: article.id_article,
321
+ version,
322
+ userId: user.id_user,
323
+ discount: 0,
324
+ subtotal: 0,
325
+ companyId: user.id_company,
326
+ datasheet: retailers,
327
+ description: retailers,
328
+ image: retailers,
329
+ attributeTranslations: false,
330
+ descriptionTranslations: false,
331
+ build: "[]",
332
+ manual: "[]",
333
+ userCreated: user.id_user,
334
+ },
335
+ ];
336
+ let modatlType = "addedToCartError";
337
+ if (addToCart) {
338
+ const resCart = await addToCart({ data: articleToOrder });
339
+ if (resCart.data.statusCode === 200) {
340
+ modatlType = "addedToCart";
341
+ }
342
+ }
343
+ showGlobalModal(modatlType);
344
+ };
345
+
346
+ const closeGlobalModal = () => setGlobalModal();
347
+
348
+ const seenByProvider = async () => {
349
+ const productTemp = product;
350
+ const articleId = productTemp.id_article;
351
+ const orderId = productTemp.id_order ?? productTemp.orderId;
352
+ const promises = [];
353
+ const conceptArray = ["description", "datasheet", "images"];
354
+ conceptArray.forEach((concept) => {
355
+ const sectionStatusKey = `${concept}_status`;
356
+ const evalStatus = product[sectionStatusKey] || product?.version_status;
357
+ const data = { articleId, orderId, concept, evalStatus };
358
+ promises.push(
359
+ axios.put(`${process.env.REACT_APP_SEND_EVAL}`, data, {
360
+ headers: {
361
+ Authorization: token,
362
+ },
363
+ })
364
+ );
365
+ });
366
+ await Promise.all(promises);
367
+ closeGlobalModal();
368
+ await updateAuditStatus("FAP");
369
+ };
370
+
371
+ const showGlobalModal = useCallback(
372
+ (type) => {
373
+ const formatter = new Intl.ListFormat("es", { type: "conjunction" });
374
+ switch (type) {
375
+ case "generic":
376
+ setGlobalModal(dataGenericModal);
377
+ break;
378
+ case "commentsSent":
379
+ setGlobalModal({
380
+ message: "Gracias, tus comentarios fueron entregados.",
381
+ detail: "Trabajaremos en conjunto para resolverlo.",
382
+ button1: {
383
+ name: "Cerrar",
384
+ action: closeGlobalModal,
385
+ },
386
+ img: face,
387
+ textArea: false,
388
+ });
389
+ break;
390
+ case "RAC":
391
+ const servicesRejected = [];
392
+ const translateServices = {
393
+ datasheet: "ficha técnica",
394
+ description: "descripción",
395
+ images: "imágenes",
396
+ };
397
+ Object.keys(translateServices).forEach((service) => {
398
+ if (product[`${service}_status`] === "RAC") {
399
+ servicesRejected.push(translateServices[service]);
400
+ }
401
+ });
402
+ const plural = ["Los servicios", "cumplen"];
403
+ const singular = ["El servicio", "cumple"];
404
+ const grammar = servicesRejected.length > 1 ? plural : singular;
405
+ const formatted = formatter.format(servicesRejected);
406
+ const text1 = `${grammar[0]} de ${formatted} no ${grammar[1]} con lo que la cadena necesita.`;
407
+ const text2 = `¡Solicita el servicio de Content-oh! para completarlo!`;
408
+ const retailers = product.retailersWithService.map((retailer) =>
409
+ Number(retailer)
410
+ );
411
+ setGlobalModal({
412
+ message:
413
+ "Tu producto no cumple con los requerimientos de la cadena",
414
+ customComponent: (
415
+ <>
416
+ <p className="generic-text">
417
+ {text1}
418
+ <br />
419
+ <br />
420
+ {text2}
421
+ </p>
422
+ </>
423
+ ),
424
+ button1: {
425
+ name: "Continuar",
426
+ action: async () => await seenByProvider(),
427
+ },
428
+ button2: {
429
+ name: "Solicitar a Content-oh!",
430
+ action: async () => {
431
+ await addCart(retailers);
432
+ await seenByProvider();
433
+ },
434
+ },
435
+ img: errorModal,
436
+ });
437
+ break;
438
+ case "AAC":
439
+ setGlobalModal({
440
+ message: "Felicidades",
441
+ detail: "Tu producto cumple con los requerimientos de la cadena.",
442
+ button1: {
443
+ name: "Continuar",
444
+ action: async () => await seenByProvider(),
445
+ },
446
+ img: face,
447
+ });
448
+ break;
449
+ case "addedToCartError":
450
+ setGlobalModal({
451
+ detail:
452
+ "Parece que algo salió mal al intentar añadir tu producto a tu carrito.",
453
+ button1: {
454
+ name: "Continuar",
455
+ action: closeGlobalModal,
456
+ },
457
+ });
458
+ break;
459
+ case "addedToCart":
460
+ setGlobalModal({
461
+ message: "Producto añadido",
462
+ detail: "Tu producto se añadió al carrito de compras.",
463
+ button1: {
464
+ name: "Continuar",
465
+ action: closeGlobalModal,
466
+ },
467
+ img: face,
468
+ });
469
+ break;
470
+ default:
471
+ closeGlobalModal();
472
+ break;
473
+ }
474
+ },
475
+ [activeTab, dataGenericModal, product]
476
+ );
477
+
478
+ useEffect(() => {
479
+ checkAll && setSelectedImages(images.values);
480
+ }, [checkAll]);
481
+
482
+ useEffect(() => {
483
+ if (showModal) {
484
+ setActiveTab("Imágenes");
485
+ }
486
+ }, [showModal]);
487
+
488
+ useEffect(() => {
489
+ setOrigin({
490
+ "Ficha técnica": location?.state?.origin,
491
+ Descripción: location?.state?.origin,
492
+ Imágenes: location?.state?.origin,
493
+ });
494
+ }, [location?.state?.origin]);
495
+
496
+ const loadData = async () => {
497
+ const services = await getRetailerServices(
498
+ product?.id_article || product?.article?.id_article,
499
+ product?.article?.company_name || product?.categoryName,
500
+ parseInt(product?.article?.id_category || product?.id_category),
501
+ version,
502
+ token
503
+ );
504
+
505
+ //Converts the data inside the datasheets object to array
506
+ setServices(services);
507
+ await getServices();
508
+
509
+ setImages({ action: "init", init: services[2] });
510
+ if (services[2]?.values?.length > 0) setActiveImage(0);
511
+ const data = [
512
+ {
513
+ id_article: product.id_article,
514
+ id_category: product.id_category,
515
+ version: product.version,
516
+ id_retailer_array: (
517
+ product.retailersAvailable ?? product.retailers
518
+ ).map(({ id }) => id),
519
+ },
520
+ ];
521
+ const headers = { Authorization: token };
522
+ getPercentage({ data, headers }).then((res) => {
523
+ setPercentages(res[0]);
524
+ });
525
+ setLoading(false);
526
+ };
527
+
528
+ const getServices = async () => {
529
+ const productInOrder = product.id_order || product.orderId;
530
+ const idArticle = product?.id_article || product?.article?.id_article;
531
+ let retailers = product.retailers || product.retailersAvailable;
532
+ let active = null;
533
+ if (isRevision() || productInOrder) {
534
+ const servicesResponse = await axios.get(
535
+ `${
536
+ process.env.REACT_APP_SERVICES_ENDPOINT
537
+ }?articleId=${idArticle}&orderId=${
538
+ product?.id_order ?? product.orderId
539
+ }&end=true`
540
+ );
541
+ const parsedResponse = JSON.parse(servicesResponse?.data?.body).data;
542
+ const retailerResponse = parsedResponse?.map((srv) => srv.id_retailer);
543
+ active = retailers?.find((retailer) =>
544
+ retailerResponse.includes(retailer.id)
545
+ );
546
+ setServicesData(parsedResponse);
547
+ }
548
+ retailers &&
549
+ !activeRetailer.id &&
550
+ setActiveRetailer(active ? active : retailers[0]);
551
+ };
552
+
553
+ const isRevision = () => {
554
+ if (productEdit) {
555
+ const concept = getConcept(activeTab);
556
+ const isRetailer = user.is_retailer === 1;
557
+ const currentService = productEdit?.product[`${concept}_status`];
558
+ const orgn = origin[activeTab];
559
+ const revision = [
560
+ "RequestWithContentoh",
561
+ "RequestWithoutContentoh",
562
+ "Contentoh",
563
+ ].includes(orgn);
564
+ if (isRetailer) {
565
+ if (revision && currentService === "AP") return true;
566
+ } else {
567
+ const { product } = productEdit;
568
+ const isRequestWithoutContentoh =
569
+ orgn === "RequestWithoutContentoh" &&
570
+ (["R", "CA"].includes(currentService) ||
571
+ (currentService === "RCA" &&
572
+ (!product.id_order || !product.orderId)));
573
+ const isRequestWithContentoh =
574
+ orgn === "RequestWithContentoh" && currentService === "AA";
575
+ const isContentoh = orgn === "Contentoh" && currentService === "AA";
576
+ if (isContentoh || isRequestWithoutContentoh || isRequestWithContentoh)
577
+ return true;
578
+ }
579
+ }
580
+ return false;
581
+ };
582
+
583
+ const getCart = async () => {
584
+ const res = await axios.get(`${process.env.REACT_APP_CART}/general/`, {
585
+ headers: {
586
+ Authorization: token,
587
+ },
588
+ });
589
+ const arr = Object.values(JSON.parse(res.data.body).data)
590
+ ?.map((e) => e.article_id)
591
+ .filter(Boolean);
592
+ setInCart(arr.some((e) => e.articleId === product.id_article));
593
+ };
594
+
595
+ useEffect(() => {
596
+ sessionStorage.setItem("user", JSON.stringify(user));
597
+ loadData();
598
+ getCart();
599
+ fetchUsers(token).then((res) => setUserGroups(res));
600
+ setImages({ action: "orderImages", retailerId: activeRetailer.id });
601
+ if (["RAC", "AAC"].includes(product.article_status))
602
+ showGlobalModal(product.article_status);
603
+ }, [product, version]);
604
+
605
+ useEffect(() => {
606
+ setImages({ action: "orderImages", retailerId: activeRetailer.id });
607
+ }, [activeRetailer]);
608
+
609
+ const loadAssignations = (currentProduct) => {
610
+ setAssig(product?.asignations);
611
+ };
612
+
613
+ useEffect(() => {
614
+ loadAssignations(product);
615
+ }, [userGroups]);
616
+
617
+ useEffect(() => {
618
+ const productTemp = product;
619
+ const retailers = productTemp?.retailersAvailable || productTemp?.retailers;
620
+ if (Object.keys(percentages[productTemp.id_article] ?? {})?.length > 0) {
621
+ retailers?.forEach((retailer, index) => {
622
+ retailer["percentage"] = Number(
623
+ percentages[productTemp.id_article][retailer.id]?.percentageRequired
624
+ );
625
+ });
626
+ }
627
+ setProduct(productTemp);
628
+ retailers && setActivePercentage(retailers[0]?.percentage);
629
+ }, [percentages]);
630
+
631
+ const loadInputs = () => {
632
+ if (services.length > 0) {
633
+ if (services[0][activeRetailer.id]?.data)
634
+ services[0][activeRetailer.id].data = Object.values(
635
+ services[0][activeRetailer.id].data
636
+ );
637
+ setActivePercentage(Math.round(activeRetailer?.percentage, 0));
638
+
639
+ const datagroups = services[0][activeRetailer.id];
640
+ const inputs = services[0]?.inputs;
641
+ const descriptions = services[1]?.filter(
642
+ (service) => service?.id === activeRetailer?.id
643
+ );
644
+ setDatasheets([datagroups, inputs]);
645
+ setDescriptions(descriptions);
646
+ }
647
+ };
648
+
649
+ useEffect(() => {
650
+ loadInputs();
651
+ activeRetailer.id &&
652
+ setImages({ action: "orderImages", retailerId: activeRetailer.id });
653
+ }, [servicesData, activeRetailer, services]);
654
+
655
+ const thumbs = () => {
656
+ const imageInputs = socketType?.slice();
657
+ const imageType = images?.imageType?.map((e) => ({
658
+ value: e?.id,
659
+ name: e?.name,
660
+ }));
661
+ const imagePackagingType = images?.imagePackagingType?.map((e) => ({
662
+ value: e?.id,
663
+ name: e?.name,
664
+ }));
665
+ return images?.values?.map((image, index) => (
666
+ <GalleryElement
667
+ setCheckAll={setCheckAll}
668
+ key={index}
669
+ image={image}
670
+ gridLayout={imageLayout}
671
+ id={"gallery-element-" + index}
672
+ index={index + "-" + image.name}
673
+ number={index}
674
+ imageType={imageType}
675
+ imagePackagingType={imagePackagingType}
676
+ imageInputs={imageInputs}
677
+ changeImage={setImages}
678
+ selectedImages={selectedImages}
679
+ setSelectedImages={setSelectedImages}
680
+ updateApprovedInputsImages={updateApprovedInputsImages}
681
+ />
682
+ ));
683
+ };
684
+
685
+ useEffect(() => {
686
+ const imageInputs = images?.inputs?.map((e) => ({
687
+ value: e?.id,
688
+ name: e?.name,
689
+ required: e?.required,
690
+ active: images?.values?.some((value) => value?.image_id === e?.id),
691
+ }));
692
+ setSocketType(imageInputs);
693
+ }, [images]);
694
+
695
+ const saveDescriptions = async () => {
696
+ //GUARDAS DESCRIPCIONES
697
+ setLoading(true);
698
+ const dataObject = {
699
+ articleId: product?.id_article,
700
+ articleData: updatedDescriptions,
701
+ };
702
+ dataObject.articleData = dataObject.articleData.map((item) => {
703
+ const attributeId = item.attributeId;
704
+ //if (approvedInputs.hasOwnProperty(attributeId)) {
705
+ item.isApproved = true;
706
+ //}
707
+ return item;
708
+ });
709
+
710
+ if (product?.orderId) dataObject["orderId"] = product?.orderId;
711
+ console.log("dataObject", dataObject);
712
+ try {
713
+ const res = await axios.put(
714
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?description=true&version=${version}`,
715
+ dataObject,
716
+ {
717
+ headers: {
718
+ Authorization: token,
719
+ },
720
+ }
721
+ );
722
+ if (res.data.statusCode === 200) {
723
+ setUpdatedDescriptions([]);
724
+ setMessage("Descripciones guardadas con éxito");
725
+ await loadData();
726
+ }
727
+ } catch (error) {
728
+ console.log(error);
729
+ }
730
+ };
731
+
732
+ const saveDatasheets = async () => {
733
+ const parseBoxData = [];
734
+ Object.entries(boxData).forEach(([, box], index) => {
735
+ const { value } = box;
736
+ const attributesIds = Object.keys(value);
737
+ attributesIds.forEach((attributeId) => {
738
+ const boxId = index + 1;
739
+ const valueOfAtribute = value[attributeId];
740
+ parseBoxData.push({
741
+ attributeId,
742
+ value: valueOfAtribute,
743
+ boxId,
744
+ });
745
+ });
746
+ });
747
+
748
+ const dataObject = {
749
+ articleId: product?.id_article,
750
+ articleData: updatedDatasheets,
751
+ ...(parseBoxData.length > 0 && { boxData: parseBoxData }),
752
+ };
753
+ dataObject.articleData = dataObject.articleData.map((item) => {
754
+ const attributeId = item.attributeId;
755
+ if (approvedInputs.hasOwnProperty(attributeId)) {
756
+ item.isApproved = true;
757
+ }
758
+ return item;
759
+ });
760
+
761
+ if (product?.orderId) dataObject["orderId"] = product?.orderId;
762
+ try {
763
+ const res = await axios.put(
764
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?datasheet=true&version=${version}`,
765
+ dataObject,
766
+ {
767
+ headers: {
768
+ Authorization: token,
769
+ },
770
+ }
771
+ );
772
+ if (res.data.statusCode === 200) {
773
+ setUpdatedDatasheets([]);
774
+ setMessage("Fichas técnicas guardadas");
775
+ await loadData();
776
+ }
777
+ } catch (error) {
778
+ console.log(error);
779
+ }
780
+ };
781
+
782
+ const updateImages = useCallback(async () => {
783
+ const imagesList = images?.values?.slice();
784
+ const imagesListTemp = imagesList?.reduce((acc, image) => {
785
+ acc[image?.image_id] = ++acc[image?.image_id] || 0;
786
+ return acc;
787
+ }, {});
788
+
789
+ const duplicated = imagesList?.filter((image) => {
790
+ return imagesListTemp[image?.image_id];
791
+ });
792
+
793
+ const attrForImgs = Object.values(images?.attrForImgs);
794
+ attrForImgs.pop();
795
+ const data = {
796
+ articleId: product?.id_article,
797
+ attrReqImgs: attrForImgs?.map((e) => ({
798
+ attrId: e[0]?.id,
799
+ value: e[0]?.value,
800
+ })),
801
+ articleData: imagesList?.filter((e) => !e.id),
802
+ updateImages: imagesList?.filter((e) => e.id),
803
+ };
804
+ if (product?.orderId) data["orderId"] = product?.orderId;
805
+ let valid =
806
+ data?.articleData?.length === 0
807
+ ? true
808
+ : data?.articleData?.every((e, i) => {
809
+ if (e?.image_id && e?.packing_type && e?.image_type) {
810
+ return true;
811
+ }
812
+ return false;
813
+ });
814
+ if (valid && data?.updateImages?.length > 0 && duplicated?.length === 0) {
815
+ valid = data?.updateImages?.every((e, i) => {
816
+ if (e?.image_id && e?.packing_type && e?.image_type) {
817
+ return true;
818
+ }
819
+ return false;
820
+ });
821
+ }
822
+ console.log("DATA NEW", data);
823
+
824
+ if (valid && duplicated?.length === 0) {
825
+ setLoading(true);
826
+ try {
827
+ data?.articleData?.forEach((e) => {
828
+ e.uuid = uuidv4();
829
+ });
830
+ data.updateImages = data.updateImages.map((image) => {
831
+ return {
832
+ ...image,
833
+ isApproved: true,
834
+ };
835
+ /**if (approvedInputsImages[image.image_id] !== undefined) {
836
+ return {
837
+ ...image,
838
+ isApproved: approvedInputsImages[image.image_id],
839
+ };
840
+ }**/
841
+ return image;
842
+ });
843
+ setDataImages(data);
844
+ if (data?.articleData?.length > 0) {
845
+ setImagesUploaded(false);
846
+ const promiseArray = [];
847
+ data?.articleData?.forEach((e) => {
848
+ const file = Buffer.from(
849
+ e.src.replace(/^data:image\/\w+;base64,/, ""),
850
+ "base64"
851
+ );
852
+ const params = {
853
+ ACL: "public-read",
854
+ Body: file,
855
+ Bucket: S3_BUCKET,
856
+ Key: `id-${data.articleId}/${version}/${e?.image_id}-${e?.uuid}.${e?.ext}`,
857
+ };
858
+ promiseArray.push(myBucket.putObject(params).promise());
859
+ });
860
+ await Promise.all(promiseArray);
861
+ setImagesUploaded(true);
862
+ } else {
863
+ setImagesUploaded(true);
864
+ }
865
+ } catch (err) {
866
+ console.log(err);
867
+ // setMainLoading(false);
868
+ }
869
+ } else {
870
+ // setMainLoading(false);
871
+ setMessage(
872
+ "Completa los campos que solicita cada una de la imágenes o hay imágenes con el mismo tipo de toma.\nRecuerda hay campos obligatorios y no podras avanzar si no estan completos."
873
+ );
874
+ }
875
+ // eslint-disable-next-line react-hooks/exhaustive-deps
876
+ }, [approvedInputsImages, images, imagesUploaded]);
877
+
878
+ useEffect(async () => {
879
+ if (imagesUploaded) {
880
+ dataImages.articleData = dataImages?.articleData.map((e) => {
881
+ delete e.src;
882
+ e.imageID = e.image_id;
883
+ e.packingType = e.packing_type;
884
+ e.imageType = e.image_type;
885
+ if (product?.orderId) e["orderId"] = product?.orderId;
886
+ return e;
887
+ });
888
+ try {
889
+ const res = await axios.put(
890
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
891
+ dataImages,
892
+ {
893
+ headers: {
894
+ Authorization: token,
895
+ },
896
+ }
897
+ );
898
+ if (res.data.statusCode === 200) {
899
+ setImages({});
900
+ setMessage("Imágenes guardadas con éxito");
901
+ sessionStorage.removeItem("imagesList");
902
+ await loadData();
903
+ }
904
+ } catch (error) {
905
+ console.log(error);
906
+ }
907
+ }
908
+ }, [dataImages, imagesUploaded]);
909
+
910
+ const getConcept = (tab) => {
911
+ switch (tab) {
912
+ case "Descripción":
913
+ return "description";
914
+ case "Ficha técnica":
915
+ return "datasheet";
916
+ case "Imágenes":
917
+ return "images";
918
+ }
919
+ };
920
+
921
+ const createComment = async (body) => {
922
+ let concept = "";
923
+ switch (activeTab) {
924
+ case "Ficha técnica":
925
+ concept = "datasheet";
926
+ break;
927
+ case "Imágenes":
928
+ concept = "images";
929
+ break;
930
+
931
+ default:
932
+ concept = "description";
933
+ break;
934
+ }
935
+ const data = {
936
+ articleId: product?.id_article,
937
+ orderId: product?.orderId,
938
+ message: body,
939
+ concept: concept,
940
+ version: version,
941
+ };
942
+ await axios.post(`${process.env.REACT_APP_COMMENTS_ENDPOINT}`, data, {
943
+ headers: {
944
+ Authorization: token,
945
+ },
946
+ });
947
+ };
948
+
949
+ useEffect(() => {
950
+ setComment(comments[activeTab]);
951
+ }, [activeTab]);
952
+
953
+ const commentRevised = async () => {
954
+ const data = {
955
+ commentId: comment.id,
956
+ };
957
+ await axios.put(`${process.env.REACT_APP_COMMENTS_ENDPOINT}`, data, {
958
+ headers: {
959
+ Authorization: token,
960
+ },
961
+ });
962
+ setCrossComment(false);
963
+ };
964
+
965
+ const setAssignation = async (assignationType, assignationId) => {
966
+ let concept = "";
967
+ switch (activeTab) {
968
+ case "Ficha técnica":
969
+ concept = "datasheet";
970
+ break;
971
+ case "Imágenes":
972
+ concept = "images";
973
+ break;
974
+
975
+ default:
976
+ concept = "description";
977
+ break;
978
+ }
979
+ const productTemp = product;
980
+ productTemp.article[`id_${concept}_${assignationType}`] = assignationId;
981
+ const data = {
982
+ articleList: [
983
+ {
984
+ orderId: product.orderId,
985
+ articleId: product?.id_article,
986
+ },
987
+ ],
988
+ concept: concept,
989
+ userId: assignationId,
990
+ };
991
+ await axios({
992
+ method: "post",
993
+ url: process.env.REACT_APP_ASSIGNATIONS_ENDPOINT,
994
+ data,
995
+ headers: {
996
+ Authorization: token,
997
+ },
998
+ });
999
+ loadAssignations(productTemp);
1000
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1001
+ };
1002
+
1003
+ const downloadImages = () => {
1004
+ selectedImages.length > 0
1005
+ ? selectedImages.forEach((e) => {
1006
+ if (e.id) {
1007
+ saveAs(
1008
+ `https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${e.srcDB}`,
1009
+ `${product.upc || product.article.upc}_${e.name}.${e.ext}`
1010
+ );
1011
+ }
1012
+ })
1013
+ : images?.values?.forEach((e) => {
1014
+ if (e.id) {
1015
+ saveAs(
1016
+ `https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${e.srcDB}`,
1017
+ `${product.upc || product.article.upc}_${e.name}.${e.ext}`
1018
+ );
1019
+ }
1020
+ });
1021
+ };
1022
+
1023
+ const deleteImages = () => {
1024
+ setLoading(true);
1025
+ const { values } = images;
1026
+ const imgsInBack = [];
1027
+
1028
+ selectedImages.forEach((selectedImg) => {
1029
+ if (selectedImg.id) imgsInBack.push(selectedImg);
1030
+ });
1031
+
1032
+ const imgsLeft = values.filter(
1033
+ (value) => selectedImages.indexOf(value) === -1
1034
+ );
1035
+
1036
+ if (imgsInBack.length > 0) {
1037
+ const data = {
1038
+ articleId: product?.id_article || product?.article?.id_article,
1039
+ deleteImages: imgsInBack,
1040
+ };
1041
+ try {
1042
+ axios.put(
1043
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
1044
+ data,
1045
+ {
1046
+ headers: { Authorization: token },
1047
+ }
1048
+ );
1049
+ } catch (err) {
1050
+ console.log(err);
1051
+ }
1052
+ }
1053
+
1054
+ setImages({
1055
+ action: "deleteImage",
1056
+ selectedImages,
1057
+ });
1058
+
1059
+ setTimeout(() => {
1060
+ setLoading(false);
1061
+ }, 500);
1062
+
1063
+ setMessage("");
1064
+ setComponentsArray([]);
1065
+ };
1066
+
1067
+ const askToDeleteImages = () => {
1068
+ if (selectedImages.length > 0) {
1069
+ setMessage("¿Está seguro de eliminar las imágenes seleccionadas?");
1070
+ setComponentsArray([
1071
+ <ScreenHeader
1072
+ key={"1"}
1073
+ text={"¿Está seguro de eliminar las imágenes seleccionadas?"}
1074
+ headerType="retailer-name-header"
1075
+ color={"white"}
1076
+ />,
1077
+ <Button
1078
+ key={"2"}
1079
+ buttonType="general-white-button"
1080
+ label={"Cancelar"}
1081
+ onClick={() => setMessage("")}
1082
+ />,
1083
+ <Button
1084
+ key={"3"}
1085
+ buttonType="general-button-default"
1086
+ label={"Aceptar"}
1087
+ onClick={() => {
1088
+ setMessage("");
1089
+ deleteImages();
1090
+ }}
1091
+ />,
1092
+ ]);
1093
+ }
1094
+ };
1095
+
1096
+ const sendEvaluation = async (result) => {
1097
+ setLoading(true);
1098
+ const concept = getConcept(activeTab);
1099
+ const productTemp = product;
1100
+ const articleId = productTemp.id_article;
1101
+ const orderId = productTemp.id_order ?? productTemp.orderId;
1102
+ const sectionStatusKey = `${getConcept(activeTab)}_status`;
1103
+ const evalStatus = product[sectionStatusKey] || product?.version_status;
1104
+ let data = { articleId, orderId, concept, evalStatus };
1105
+ const retailerId = activeRetailer?.id;
1106
+ let res;
1107
+ try {
1108
+ if (result) {
1109
+ data.result = result;
1110
+ data.retailerId = retailerId;
1111
+ res = await axios.put(
1112
+ `${process.env.REACT_APP_EVALUATION_ENDPOINT}`,
1113
+ data,
1114
+ {
1115
+ headers: {
1116
+ Authorization: token,
1117
+ },
1118
+ }
1119
+ );
1120
+ const newStatuses = JSON.parse(res.data.body);
1121
+ const orderStatus = newStatuses.newOrderStatus;
1122
+ const serviceStatus =
1123
+ newStatuses.newServiceStatus[articleId][
1124
+ `${getConcept(activeTab)}Status`
1125
+ ];
1126
+
1127
+ const newProductEdit = productEdit;
1128
+ newProductEdit.product[sectionStatusKey] = serviceStatus;
1129
+ setProductEdit(newProductEdit);
1130
+ const showSurveyByProvider =
1131
+ !user.is_retailer && orderStatus[orderId] === "AP";
1132
+ const showSurveyByRetailer =
1133
+ user.is_retailer && orderStatus[orderId] === "ACA";
1134
+ showSurvey && showSurvey(showSurveyByProvider || showSurveyByRetailer);
1135
+ } else {
1136
+ res = await axios.put(`${process.env.REACT_APP_SEND_EVAL}`, data, {
1137
+ headers: {
1138
+ Authorization: token,
1139
+ },
1140
+ });
1141
+ }
1142
+ if (res.data.statusCode === 200) {
1143
+ const { newArticleStatus, newServiceStatus, newStatus } = JSON.parse(
1144
+ res.data.body
1145
+ );
1146
+ if (newArticleStatus) productTemp.status = newArticleStatus[articleId];
1147
+ const retailerStatusCopy = { ...retailerStatus };
1148
+ retailerStatusCopy[activeRetailer.id][concept] = newStatus;
1149
+ setRetailerStatus(retailerStatusCopy);
1150
+ productTemp.statusByRetailer = retailerStatusCopy;
1151
+ let status;
1152
+ if (newServiceStatus) {
1153
+ status = newServiceStatus[articleId][`${concept}Status`];
1154
+ productTemp[`${concept}_status`] = status;
1155
+ }
1156
+ setProduct(productTemp);
1157
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1158
+ setOrigin((prev) => ({ ...prev, [concept]: status }));
1159
+ }
1160
+ } catch (err) {
1161
+ console.log(err);
1162
+ }
1163
+ loadData();
1164
+ };
1165
+
1166
+ const validateAll = async (result) => {
1167
+ try {
1168
+ setLoading(true);
1169
+ const evaluationArray = [];
1170
+ const conceptArray = ["description", "datasheet", "images"];
1171
+ const dataGeneral = {
1172
+ articleId: product.id_article,
1173
+ orderId: product.id_order ?? product.orderId,
1174
+ result,
1175
+ isAproved: result === "A",
1176
+ };
1177
+ servicesData?.forEach((ret) => {
1178
+ const { service, id_retailer } = ret;
1179
+ let data = {};
1180
+ data = {
1181
+ ...dataGeneral,
1182
+ concept: service,
1183
+ retailerId: id_retailer,
1184
+ evalStatus: retailerStatus[id_retailer][service],
1185
+ };
1186
+ evaluationArray.push(
1187
+ axios.put(`${process.env.REACT_APP_EVALUATION_ENDPOINT}`, data, {
1188
+ headers: {
1189
+ Authorization: token,
1190
+ },
1191
+ })
1192
+ );
1193
+ });
1194
+ await Promise.all(evaluationArray);
1195
+ const userType = user.is_retailer === 1 ? "CA" : "P";
1196
+
1197
+ const productTemp = product;
1198
+ const status = `${result}${userType}`;
1199
+ productTemp.article_status = status;
1200
+ productTemp.datasheet_status =
1201
+ productTemp.datasheet_status === "NA" ? "NA" : status;
1202
+ productTemp.description_status =
1203
+ productTemp.description_status === "NA" ? "NA" : status;
1204
+ productTemp.images_status =
1205
+ productTemp.images_status === "NA" ? "NA" : status;
1206
+
1207
+ const retailerStatusCopy = { ...retailerStatus };
1208
+ Object.keys(retailerStatusCopy).forEach((key) => {
1209
+ conceptArray.forEach((concept) => {
1210
+ if (retailerStatusCopy[key][concept]) {
1211
+ retailerStatusCopy[key][concept] = status;
1212
+ }
1213
+ });
1214
+ });
1215
+ setRetailerStatus(retailerStatusCopy);
1216
+ productTemp.statusByRetailer = retailerStatusCopy;
1217
+ setProduct(productTemp);
1218
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1219
+ setProductEdit({
1220
+ ArticleId: productTemp.id_article,
1221
+ idCategory: productTemp.article.id_category,
1222
+ product: productTemp,
1223
+ });
1224
+ sessionStorage.setItem(
1225
+ "productEdit",
1226
+ JSON.stringify({
1227
+ ArticleId: productTemp.id_article,
1228
+ idCategory: productTemp.article.id_category,
1229
+ product: productTemp,
1230
+ })
1231
+ );
1232
+
1233
+ await loadData();
1234
+ } catch (error) {
1235
+ console.log(error);
1236
+ }
1237
+ };
1238
+
1239
+ const evaluationToRetailer = async (result) => {
1240
+ const data = {
1241
+ articleId: product.id_article,
1242
+ companyId: user.is_retailer
1243
+ ? product.provider_company_id
1244
+ : product.retailer_company_id,
1245
+ versionId: product.version,
1246
+ status: result,
1247
+ };
1248
+ await axios.put(`${process.env.REACT_APP_RETAILER_REQUEST}`, data, {
1249
+ headers: {
1250
+ Authorization: token,
1251
+ },
1252
+ });
1253
+ const prod = productEdit;
1254
+ const statusComplete = user.is_retailer ? `${result}CA` : `${result}P`;
1255
+ prod.product.datasheet_status = statusComplete;
1256
+ prod.product.description_status = statusComplete;
1257
+ prod.product.images_status = statusComplete;
1258
+ prod.product.article_status = statusComplete;
1259
+ prod.product.services_status = `["${statusComplete}","${statusComplete}","${statusComplete}"]`;
1260
+ sessionStorage.setItem("productEdit", JSON.stringify(prod));
1261
+ setProduct(prod);
1262
+ showGlobalModal("generic");
1263
+ await loadData();
1264
+ };
1265
+
1266
+ const getSectionStatus = () => {
1267
+ const concept = getConcept(activeTab);
1268
+ return ["AA", "AP", "R", "CA", "RCA"].includes(
1269
+ productEdit.product[`${concept}_status`]
1270
+ );
1271
+ };
1272
+
1273
+ const enableActions = (versionStatus) => {
1274
+ try {
1275
+ if (versionStatus) {
1276
+ return ["AP", "ACA", "RCA", null].includes(versionStatus);
1277
+ }
1278
+ return true;
1279
+ } catch (err) {
1280
+ console.log(err, "Unable de check if user is retailer");
1281
+ return false;
1282
+ }
1283
+ };
1284
+
1285
+ useEffect(() => {
1286
+ setSaving(loading);
1287
+ }, [loading]);
1288
+
1289
+ const slidefront = [
1290
+ {
1291
+ slide: Slide1_1,
1292
+ description:
1293
+ "Creamos tu contenido, y todo lo que haga falta para tu producto, cada sección puedes socilitar contenido enriquecido, y nosotros lo haremos por ti.",
1294
+ },
1295
+ {
1296
+ slide: Slide1_2,
1297
+ description:
1298
+ "Puedes agregar solicitudes de contenido enriquecido a tu carrito de compra las veces que sean necesarias. Una vez completada tu lista con los servicios necesitados sigue el proceso de compra en checkout.",
1299
+ },
1300
+ {
1301
+ slide: Slide1_3,
1302
+ description:
1303
+ "Revisa el contenido que deseas solicilitar, valida y tambien puedes agregar contenido extra, traducciones, o simplemente completar el checkout.",
1304
+ },
1305
+ {
1306
+ slide: Slide1_4,
1307
+ description:
1308
+ "Elige el tipo de entrega de tu producto, puedes ser recolección en el lugar o por el contrario puedes dejarlo en nuestras oficinas.",
1309
+ },
1310
+ {
1311
+ slide: Slide1_5,
1312
+ title: "Bienvenido al modo Content-oh!",
1313
+ description:
1314
+ "Finalmente elige la forma de pago que más te guste, procede con el pago y listo.",
1315
+ },
1316
+ ];
1317
+ const sendToEvaluation = (result) => {
1318
+ if (result === "A") {
1319
+ if (
1320
+ origin[activeTab] === "RequestWithoutContentoh" &&
1321
+ !user.is_retailer &&
1322
+ (!product.id_order || !product.orderId)
1323
+ ) {
1324
+ setDataGenericModal((prev) => ({
1325
+ ...prev,
1326
+ button2: {
1327
+ name: "Continuar",
1328
+ action: () => evaluationToRetailer("A"),
1329
+ },
1330
+ }));
1331
+ showGlobalModal("generic");
1332
+ } else if (user.is_retailer) {
1333
+ if (product.id_order || product.orderId) {
1334
+ sendEvaluation("A");
1335
+ } else {
1336
+ setDataGenericModal((prev) => ({
1337
+ ...prev,
1338
+ button2: {
1339
+ name: "Continuar",
1340
+ action: () => evaluationToRetailer("A"),
1341
+ },
1342
+ }));
1343
+ showGlobalModal("generic");
1344
+ }
1345
+ } else {
1346
+ sendEvaluation("A");
1347
+ }
1348
+ } else {
1349
+ if (
1350
+ origin === "RequestWithoutContentoh" &&
1351
+ !user.is_retailer &&
1352
+ (!product.id_order || !product.orderId)
1353
+ ) {
1354
+ return;
1355
+ } else if (user.is_retailer) {
1356
+ if (product.id_order || product.orderId) {
1357
+ sendEvaluation("R");
1358
+ } else {
1359
+ setDataGenericModal((prev) => ({
1360
+ ...prev,
1361
+ button2: {
1362
+ name: "Continuar",
1363
+ action: () => evaluationToRetailer("R"),
1364
+ },
1365
+ }));
1366
+ showGlobalModal("generic");
1367
+ }
1368
+ } else {
1369
+ sendEvaluation("R");
1370
+ }
1371
+ }
1372
+ };
1373
+
1374
+ return (
1375
+ <Container headerTop={headerTop}>
1376
+ <HeaderTop
1377
+ setHeaderTop={setHeaderTop}
1378
+ withChat={location?.state?.withChat}
1379
+ chatType={location?.state?.chatType}
1380
+ productSelected={productSelected}
1381
+ token={token}
1382
+ activeRetailer={activeRetailer}
1383
+ />
1384
+ <div className="data-container">
1385
+ <div className="image-data-panel">
1386
+ <ImagePreviewer
1387
+ activeImage={images?.values ? images?.values[activeImage] : {}}
1388
+ imagesArray={images}
1389
+ setActiveImage={setActiveImage}
1390
+ setShowModal={setShowModal}
1391
+ />
1392
+ <ImageDataTable
1393
+ lists={images}
1394
+ activeImage={images?.values ? images?.values[activeImage] : {}}
1395
+ retailerSelected={activeRetailer?.id}
1396
+ setImages={setImages}
1397
+ assignationsImages={assig}
1398
+ imagesStatus={product?.images_status}
1399
+ setAssignation={setAssignation}
1400
+ isRetailer={isRetailer}
1401
+ onClickSave={() =>
1402
+ product?.services?.images === 1 && updateImages()
1403
+ }
1404
+ setShowVersionSelector={setShowVersionSelector}
1405
+ version={version}
1406
+ />
1407
+ </div>
1408
+ <div className="product-information">
1409
+ <FullProductNameHeader
1410
+ headerData={product}
1411
+ percent={activePercentage}
1412
+ activeRetailer={activeRetailer}
1413
+ setActiveRetailer={setActiveRetailer}
1414
+ showValidationButtons={isRevision() && getSectionStatus()}
1415
+ servicesData={servicesData ? servicesData : null}
1416
+ showApproveRejectAll={isRevision() && getSectionStatus()}
1417
+ approveAll={() => {
1418
+ if (
1419
+ origin === "RequestWithoutContentoh" &&
1420
+ !user.is_retailer &&
1421
+ (!product.id_order || !product.orderId)
1422
+ ) {
1423
+ setDataGenericModal((prev) => ({
1424
+ ...prev,
1425
+ button2: {
1426
+ name: "Continuar",
1427
+ action: () => evaluationToRetailer("A"),
1428
+ },
1429
+ }));
1430
+ showGlobalModal("generic");
1431
+ } else if (user.is_retailer) {
1432
+ if (product.id_order || product.orderId) {
1433
+ validateAll("A");
1434
+ } else {
1435
+ setDataGenericModal((prev) => ({
1436
+ ...prev,
1437
+ button2: {
1438
+ name: "Continuar",
1439
+ action: () => evaluationToRetailer("A"),
1440
+ },
1441
+ }));
1442
+ showGlobalModal("generic");
1443
+ }
1444
+ } else {
1445
+ validateAll("A");
1446
+ }
1447
+ }}
1448
+ rejectAll={() => {
1449
+ if (
1450
+ origin === "RequestWithoutContentoh" &&
1451
+ !user.is_retailer &&
1452
+ (!product.id_order || !product.orderId)
1453
+ ) {
1454
+ return;
1455
+ } else if (user.is_retailer) {
1456
+ if (product.id_order || product.orderId) {
1457
+ setValidatedAll(true);
1458
+ setShowRejectModal(true);
1459
+ } else {
1460
+ setDataGenericModal((prev) => ({
1461
+ ...prev,
1462
+ button2: {
1463
+ name: "Continuar",
1464
+ action: () => evaluationToRetailer("R"),
1465
+ },
1466
+ }));
1467
+ showGlobalModal("generic");
1468
+ }
1469
+ } else {
1470
+ setShowRejectModal(true);
1471
+ setValidatedAll(true);
1472
+ }
1473
+ }}
1474
+ approve={() => sendToEvaluation("A")}
1475
+ reject={() => {
1476
+ setShowRejectModal(true);
1477
+ }}
1478
+ />
1479
+ <FullTabsMenu
1480
+ tabsSections={tabsSections}
1481
+ status={
1482
+ activeRetailer?.id &&
1483
+ retailerStatus &&
1484
+ retailerStatus[activeRetailer.id]
1485
+ ? retailerStatus[activeRetailer?.id][getConcept(activeTab)] ||
1486
+ "NS"
1487
+ : "-"
1488
+ }
1489
+ activeTab={activeTab}
1490
+ setActiveTab={setActiveTab}
1491
+ setImageLayout={setImageLayout}
1492
+ downloadImages={downloadImages}
1493
+ askToDeleteImages={askToDeleteImages}
1494
+ assig={assig}
1495
+ setAssignation={setAssignation}
1496
+ isRetailer={isRetailer}
1497
+ showSaveButton={enableActions(product.version_status)}
1498
+ version={version}
1499
+ updatedDescriptions={updatedDescriptions}
1500
+ setUpdatedDescriptions={setUpdatedDescriptions}
1501
+ updatedDatasheets={updatedDatasheets}
1502
+ setUpdatedDatasheets={setUpdatedDatasheets}
1503
+ images={images}
1504
+ setImages={setImages}
1505
+ selectedImages={selectedImages}
1506
+ setSelectedImages={setSelectedImages}
1507
+ setShowVersionSelector={setShowVersionSelector}
1508
+ user={user}
1509
+ onClickSave={() => {
1510
+ switch (activeTab) {
1511
+ case "Descripción":
1512
+ !saving && saveDescriptions();
1513
+ break;
1514
+ case "Ficha técnica":
1515
+ !saving && saveDatasheets();
1516
+ break;
1517
+ case "Imágenes":
1518
+ !saving && updateImages();
1519
+ break;
1520
+ default:
1521
+ break;
1522
+ }
1523
+ }}
1524
+ />
1525
+ <div
1526
+ className={
1527
+ "services-information-container " +
1528
+ (imageLayout && activeTab === "Imágenes" ? "image-services" : "")
1529
+ }
1530
+ >
1531
+ {loading ? (
1532
+ <Loading />
1533
+ ) : (
1534
+ <>
1535
+ {!imageLayout && activeTab === "Imágenes" && (
1536
+ <GalleryHeader
1537
+ setSelectedImages={setSelectedImages}
1538
+ checkAll={checkAll}
1539
+ setCheckAll={setCheckAll}
1540
+ />
1541
+ )}
1542
+ {activeTab === "Ficha técnica" &&
1543
+ (product?.datasheet_status !== "NS" ? (
1544
+ <div>
1545
+ {datasheets[0]?.data?.map((dataGroup, index) => (
1546
+ <InputGroup
1547
+ key={index + "-" + activeRetailer.name}
1548
+ articleId={product.id_article}
1549
+ version={version}
1550
+ activeSection={activeTab}
1551
+ inputGroup={dataGroup}
1552
+ dataInputs={datasheets[1]}
1553
+ updatedDatasheets={updatedDatasheets}
1554
+ setUpdatedDatasheets={setUpdatedDatasheets}
1555
+ isShowbox={true}
1556
+ activeRetailer={services[0][activeRetailer.id]}
1557
+ groupData={services[0][activeRetailer.id].data}
1558
+ setUpdatedBoxData={(e) => {
1559
+ setBoxData(e);
1560
+ }}
1561
+ index={index}
1562
+ //enableActions={enableActions(product.version_status)} ADD THIS VALIDATION
1563
+ updateApprovedInputs={updateApprovedInputs}
1564
+ ></InputGroup>
1565
+ ))}
1566
+ </div>
1567
+ ) : (
1568
+ <ScreenHeader
1569
+ text={"No cuentas con este servicio"}
1570
+ headerType={"input-name-header"}
1571
+ />
1572
+ ))}
1573
+ {activeTab === "Descripción" &&
1574
+ (product?.description_status !== "NS" ? (
1575
+ <InputGroup
1576
+ activeSection={activeTab}
1577
+ inputGroup={descriptions[0]}
1578
+ updatedDescriptions={updatedDescriptions}
1579
+ setUpdatedDescriptions={setUpdatedDescriptions}
1580
+ articleId={product?.id_article}
1581
+ version={version}
1582
+ isShowbox={false}
1583
+ dinamicHeight={true}
1584
+ updateApprovedInputs={updateApprovedInputs}
1585
+ />
1586
+ ) : (
1587
+ <ScreenHeader
1588
+ text={"No cuentas con este servicio"}
1589
+ headerType={"input-name-header"}
1590
+ />
1591
+ ))}
1592
+
1593
+ {activeTab === "Imágenes" &&
1594
+ (product?.images_status !== "NS" ? (
1595
+ <section className="container">
1596
+ <div {...getRootProps({ className: "dropzone" })}>
1597
+ <input {...getInputProps()} />
1598
+ <aside>{thumbs()}</aside>
1599
+ </div>
1600
+ </section>
1601
+ ) : (
1602
+ <ScreenHeader
1603
+ text={"No cuentas con este servicio"}
1604
+ headerType={"input-name-header"}
1605
+ />
1606
+ ))}
1607
+ </>
1608
+ )}
1609
+ </div>
1610
+ {isRevision() && getSectionStatus() ? (
1611
+ <div className="commentary-box">
1612
+ {/* Este lo comento porque la funcionalidad se tiene en el modal al momento de rechazar el producto */}
1613
+ {/* {!comment ? (
1614
+ <div className="commentary">
1615
+ <TagAndInput
1616
+ label={"Caja de Comentario"}
1617
+ inputType={"textarea"}
1618
+ inputCols={80}
1619
+ inputRows={4}
1620
+ inputId={"commentary-box"}
1621
+ index={0}
1622
+ />
1623
+ <div className="buttons-box">
1624
+ <Button
1625
+ buttonType={"general-transparent-button"}
1626
+ label={"Enviar comentario"}
1627
+ onClick={(e) =>{
1628
+ createComment(
1629
+ e,
1630
+ document.querySelector(
1631
+ "#commentary-box .ql-container .ql-editor > p"
1632
+ ).innerHTML,
1633
+ activeTab
1634
+ )
1635
+ }
1636
+ }
1637
+ />
1638
+ </div>
1639
+ </div>
1640
+ ) : (
1641
+ <div className="feedback-box">
1642
+ <Commentary
1643
+ comment={comment.message}
1644
+ reviewed={crossComment}
1645
+ />
1646
+ <Button
1647
+ buttonType={"circular-button accept-button"}
1648
+ onClick={async () => {
1649
+ setCrossComment(true);
1650
+ commentRevised();
1651
+ }}
1652
+ />
1653
+ </div>
1654
+ )} */}
1655
+ </div>
1656
+ ) : (
1657
+ !revision && (
1658
+ <div className="required-inputs-message">
1659
+ <div>
1660
+ <p>
1661
+ Los atributos son requeridos por las plataformas de las
1662
+ cadenas, es muy importante completar los campos requeridos
1663
+ ya que pueden rechazar el producto por falta de información.
1664
+ </p>
1665
+ </div>
1666
+ {inCart ? (
1667
+ <button type="button">
1668
+ <Link to="/checkout">
1669
+ <p>Articulo en carrito</p>
1670
+ <p>Ir a checkout</p>
1671
+ </Link>
1672
+ </button>
1673
+ ) : (
1674
+ <>
1675
+ <SliderToolTip
1676
+ infoIcon={InfoIcon}
1677
+ slidefront={slidefront}
1678
+ iconSize={"big-image"}
1679
+ slidePosition={"top-slide"}
1680
+ />
1681
+ <Button
1682
+ onClick={() => {
1683
+ setShowContentohRequestModal &&
1684
+ setShowContentohRequestModal(true);
1685
+ }}
1686
+ buttonType="general-default-button"
1687
+ label="Enviar a Content-oh!"
1688
+ />
1689
+ </>
1690
+ )}
1691
+ </div>
1692
+ )
1693
+ )}
1694
+ </div>
1695
+ </div>
1696
+ {showModal && (
1697
+ <ProductImageModal
1698
+ images={images}
1699
+ setShowModal={setShowModal}
1700
+ approveRejectButtons={isRevision() && getSectionStatus()}
1701
+ sendToFacilitator={sendToEvaluation}
1702
+ />
1703
+ )}
1704
+ {message.length > 0 && !showSurvey && (
1705
+ <GenericModal
1706
+ buttonType={componentsArray.length > 0 && "delete-product"}
1707
+ componentsArray={
1708
+ componentsArray.length > 0
1709
+ ? componentsArray
1710
+ : [
1711
+ <img key="1" src={succes} alt="success icon" />,
1712
+ <ScreenHeader
1713
+ key="2"
1714
+ headerType={"retailer-name-header"}
1715
+ text={message}
1716
+ color={"white"}
1717
+ />,
1718
+ ]
1719
+ }
1720
+ onClick={() => setMessage("")}
1721
+ />
1722
+ )}
1723
+ {globalModal && <GlobalModal close={closeGlobalModal} {...globalModal} />}
1724
+ {showVersionSelector && (
1725
+ <VersionSelector
1726
+ modalId={"version-selector"}
1727
+ articleId={product.id_article}
1728
+ setVersion={setVersion}
1729
+ companyName={company.company_name}
1730
+ currentVersion={version}
1731
+ setShowVersionSelector={setShowVersionSelector}
1732
+ jwt={token}
1733
+ />
1734
+ )}
1735
+ {showRejectModal && (
1736
+ <Modal
1737
+ title={"Agregar mensaje de rechazo"}
1738
+ show={showRejectModal}
1739
+ customComponent={
1740
+ <TagAndInput
1741
+ inputType={"textarea"}
1742
+ inputId={"modal-message-box"}
1743
+ index={0}
1744
+ color={"white"}
1745
+ />
1746
+ }
1747
+ buttons={[
1748
+ <ButtonV2
1749
+ key={"btn-Cancelar"}
1750
+ type={"white"}
1751
+ label={"Cancelar"}
1752
+ size={12}
1753
+ onClick={() => {
1754
+ setShowRejectModal(false);
1755
+ }}
1756
+ />,
1757
+ <ButtonV2
1758
+ key={"btn-Aceptar"}
1759
+ type={"pink"}
1760
+ label={"Aceptar"}
1761
+ size={12}
1762
+ onClick={async () => {
1763
+ const body = document.querySelector(
1764
+ "#modal-message-box .ql-container .ql-editor > p"
1765
+ ).innerHTML;
1766
+ const messages = [
1767
+ { type: "message", value: body?.replace(/<.*?\/?>/gm, "") },
1768
+ ];
1769
+ await createComment(messages[0].value);
1770
+ validatedAll ? validateAll("R") : sendToEvaluation("R");
1771
+ setShowRejectModal(false);
1772
+ }}
1773
+ />,
1774
+ ]}
1775
+ />
1776
+ )}
1777
+ </Container>
1778
+ );
1779
+ };