@rabbitio/ui-kit 1.0.0-beta.70 → 1.0.0-beta.72

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 (329) hide show
  1. package/coverage/clover.xml +7803 -7729
  2. package/coverage/coverage-final.json +91 -95
  3. package/coverage/index.html +182 -272
  4. package/coverage/rabbit-ui-kit/index.html +1 -1
  5. package/coverage/rabbit-ui-kit/index.js.html +1 -1
  6. package/coverage/rabbit-ui-kit/src/{common → common-apis}/adapters/axiosAdapter.js.html +3 -3
  7. package/coverage/rabbit-ui-kit/src/{common → common-apis}/adapters/index.html +3 -3
  8. package/coverage/rabbit-ui-kit/src/{common → common-apis}/adapters/qrUtils.js.html +3 -3
  9. package/coverage/rabbit-ui-kit/src/{common → common-apis}/amountUtils.js.html +3 -3
  10. package/coverage/rabbit-ui-kit/src/{common → common-apis}/errorUtils.js.html +3 -3
  11. package/coverage/rabbit-ui-kit/src/{common → common-apis}/external-apis/apiGroups.js.html +3 -3
  12. package/coverage/rabbit-ui-kit/src/{common → common-apis}/external-apis/index.html +3 -3
  13. package/coverage/rabbit-ui-kit/src/{common → common-apis}/external-apis/ipAddressProviders.js.html +5 -5
  14. package/coverage/rabbit-ui-kit/src/{common → common-apis}/fiatCurrenciesService.js.html +3 -3
  15. package/coverage/rabbit-ui-kit/src/{constants → common-apis}/globalConstants.jsx.html +3 -3
  16. package/coverage/rabbit-ui-kit/src/{common → common-apis}/index.html +22 -7
  17. package/coverage/rabbit-ui-kit/src/{common → common-apis}/models/blockchain.js.html +3 -3
  18. package/coverage/rabbit-ui-kit/src/{common → common-apis}/models/coin.js.html +3 -3
  19. package/coverage/rabbit-ui-kit/src/{common → common-apis}/models/index.html +3 -3
  20. package/coverage/rabbit-ui-kit/src/{common → common-apis}/models/protocol.js.html +3 -3
  21. package/coverage/rabbit-ui-kit/src/{common → common-apis}/utils/cache.js.html +8 -8
  22. package/coverage/rabbit-ui-kit/src/{common → common-apis}/utils/emailAPI.js.html +3 -3
  23. package/coverage/rabbit-ui-kit/src/{common → common-apis}/utils/index.html +3 -3
  24. package/coverage/rabbit-ui-kit/src/{common → common-apis}/utils/logging/index.html +3 -3
  25. package/coverage/rabbit-ui-kit/src/{common → common-apis}/utils/logging/logger.js.html +6 -6
  26. package/coverage/rabbit-ui-kit/src/{common → common-apis}/utils/logging/logsStorage.js.html +5 -5
  27. package/coverage/rabbit-ui-kit/src/{common → common-apis}/utils/postponeExecution.js.html +3 -3
  28. package/coverage/rabbit-ui-kit/src/{common → common-apis}/utils/safeStringify.js.html +29 -29
  29. package/coverage/rabbit-ui-kit/src/index.html +5 -5
  30. package/coverage/rabbit-ui-kit/src/index.js.html +66 -78
  31. package/coverage/rabbit-ui-kit/src/{robustExteranlApiCallerService → robust-api-caller}/cacheAndConcurrentRequestsResolver.js.html +5 -5
  32. package/coverage/rabbit-ui-kit/src/{robustExteranlApiCallerService → robust-api-caller}/cachedRobustExternalApiCallerService.js.html +6 -6
  33. package/coverage/rabbit-ui-kit/src/{robustExteranlApiCallerService → robust-api-caller}/cancelProcessing.js.html +3 -3
  34. package/coverage/rabbit-ui-kit/src/{robustExteranlApiCallerService → robust-api-caller}/concurrentCalculationsMetadataHolder.js.html +4 -4
  35. package/coverage/rabbit-ui-kit/src/{robustExteranlApiCallerService → robust-api-caller}/externalApiProvider.js.html +3 -3
  36. package/coverage/rabbit-ui-kit/src/{robustExteranlApiCallerService → robust-api-caller}/externalServicesStatsCollector.js.html +5 -5
  37. package/coverage/rabbit-ui-kit/src/{robustExteranlApiCallerService → robust-api-caller}/index.html +3 -3
  38. package/coverage/rabbit-ui-kit/src/{robustExteranlApiCallerService → robust-api-caller}/robustExternalAPICallerService.js.html +8 -8
  39. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +24 -24
  40. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +9 -6
  41. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +190 -130
  42. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +14 -5
  43. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +1 -1
  44. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +1 -1
  45. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +7 -7
  46. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +5 -5
  47. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +14 -11
  48. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +1 -1
  49. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +7 -7
  50. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/arrowIcon.jsx.html +10 -10
  51. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/arrowTosca.jsx.html +10 -10
  52. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/arrowWhite.jsx.html +11 -11
  53. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/darkRectangle.jsx.html +10 -10
  54. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/determinedError.jsx.html +10 -10
  55. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/failedValidationIcon.jsx.html +10 -10
  56. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/index.html +10 -10
  57. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/infoIcon.jsx.html +10 -10
  58. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/noticeQuestionIcon.jsx.html +10 -10
  59. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/successfulValidationIcon.jsx.html +10 -10
  60. package/coverage/rabbit-ui-kit/src/{assets → ui-kit/assets}/wrappedImages/walletIcon.jsx.html +10 -10
  61. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/AssetIcon/AssetIcon.jsx.html +20 -17
  62. package/coverage/rabbit-ui-kit/src/{constants/organisms/dialog/DialogStep → ui-kit/components/atoms/AssetIcon}/index.html +8 -8
  63. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/AssetSelection/AssetSelection.jsx.html +23 -20
  64. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/index.html +116 -0
  65. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/BackgroundTitle/BackgroundTitle.jsx.html +10 -10
  66. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/index.html +116 -0
  67. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/InformationMessage/InformationMessage.jsx.html +21 -18
  68. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/index.html +116 -0
  69. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/Input/Input.jsx.html +38 -35
  70. package/coverage/rabbit-ui-kit/src/{components/atoms/buttons/Button → ui-kit/components/atoms/Input}/index.html +8 -8
  71. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/LoadingDots/LoadingDots.jsx.html +10 -10
  72. package/coverage/rabbit-ui-kit/src/{components/atoms/buttons/LinkButton → ui-kit/components/atoms/LoadingDots}/index.html +8 -8
  73. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/NoticeIcon/NoticeIcon.jsx.html +19 -22
  74. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/index.html +116 -0
  75. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/QrCode/QrCode.jsx.html +18 -15
  76. package/coverage/rabbit-ui-kit/src/{components/atoms/buttons/Close → ui-kit/components/atoms/QrCode}/index.html +8 -8
  77. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/RateSelector/RateSelector.jsx.html +16 -13
  78. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/index.html +116 -0
  79. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/SupportChat/SupportChat.jsx.html +16 -13
  80. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/index.html +116 -0
  81. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/Textarea/Textarea.jsx.html +36 -30
  82. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/index.html +116 -0
  83. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/TitleBox/TitleBox.jsx.html +29 -29
  84. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/index.html +116 -0
  85. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/Tooltip/Tooltip.jsx.html +48 -21
  86. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/index.html +116 -0
  87. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/TwoLinesOfText/LinesOfText.jsx.html +29 -23
  88. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/index.html +116 -0
  89. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/Validation/Validation.jsx.html +13 -13
  90. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/index.html +116 -0
  91. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/buttons/Button/Button.jsx.html +10 -10
  92. package/coverage/rabbit-ui-kit/src/{components/atoms/AssetSelection → ui-kit/components/atoms/buttons/Button}/index.html +15 -15
  93. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/buttons/Close/Close.jsx.html +30 -15
  94. package/coverage/rabbit-ui-kit/src/{components/atoms/InformationMessage → ui-kit/components/atoms/buttons/Close}/index.html +15 -15
  95. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/buttons/LinkButton/LinkButton.jsx.html +34 -16
  96. package/coverage/rabbit-ui-kit/src/{components/atoms/BackgroundTitle → ui-kit/components/atoms/buttons/LinkButton}/index.html +15 -15
  97. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +11 -11
  98. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +116 -0
  99. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/molecules/AmountInput/AmountInput.jsx.html +20 -17
  100. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/index.html +116 -0
  101. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/molecules/CoinPicker/CoinPicker.jsx.html +44 -38
  102. package/coverage/rabbit-ui-kit/src/{components/organisms/Dialog/DialogStep → ui-kit/components/molecules/CoinPicker}/index.html +8 -8
  103. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/molecules/LineWithIconLink/LineWithIconLink.jsx.html +10 -10
  104. package/coverage/rabbit-ui-kit/src/{components/organisms/Dialog/DialogButtons → ui-kit/components/molecules/LineWithIconLink}/index.html +8 -8
  105. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +25 -19
  106. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +116 -0
  107. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +20 -14
  108. package/coverage/rabbit-ui-kit/src/{components/atoms/buttons/RadioButtonWithText → ui-kit/components/organisms/CoinPickerDialogStep}/index.html +8 -8
  109. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/organisms/Dialog/Dialog.jsx.html +106 -19
  110. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +13 -13
  111. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +116 -0
  112. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/organisms/Dialog/DialogStep/DialogStep.jsx.html +66 -60
  113. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +116 -0
  114. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/index.html +116 -0
  115. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/organisms/SwapForm/SwapForm.jsx.html +361 -76
  116. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/index.html +116 -0
  117. package/coverage/rabbit-ui-kit/src/{components → ui-kit/components}/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +12 -12
  118. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +116 -0
  119. package/coverage/rabbit-ui-kit/src/{components → ui-kit}/hooks/index.html +22 -7
  120. package/coverage/rabbit-ui-kit/src/{components → ui-kit}/hooks/useCallHandlingErrors.js.html +4 -4
  121. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useIsHydrated.js.html +121 -0
  122. package/coverage/rabbit-ui-kit/src/{components → ui-kit}/hooks/useReferredState.js.html +3 -3
  123. package/coverage/rabbit-ui-kit/src/{components → ui-kit}/utils/index.html +3 -3
  124. package/coverage/rabbit-ui-kit/src/{components → ui-kit}/utils/inputValueProviders.js.html +3 -3
  125. package/coverage/rabbit-ui-kit/src/{components → ui-kit}/utils/textUtils.js.html +4 -4
  126. package/coverage/rabbit-ui-kit/src/{components → ui-kit}/utils/uiUtils.js.html +3 -3
  127. package/coverage/rabbit-ui-kit/src/{components → ui-kit}/utils/urlQueryUtils.js.html +3 -3
  128. package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +2 -2
  129. package/coverage/rabbit-ui-kit/stories/atoms/LinesOfText.stories.jsx.html +4 -4
  130. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +3 -3
  131. package/coverage/rabbit-ui-kit/stories/atoms/QrCode.stories.jsx.html +3 -3
  132. package/coverage/rabbit-ui-kit/stories/atoms/RateSelector.stories.jsx.html +2 -2
  133. package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +2 -2
  134. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +27 -90
  135. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +7 -10
  136. package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +13 -7
  137. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +9 -9
  138. package/coverage/rabbit-ui-kit/stories/atoms/index.html +1 -1
  139. package/coverage/rabbit-ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +3 -3
  140. package/coverage/rabbit-ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +2 -2
  141. package/coverage/rabbit-ui-kit/stories/molecules/index.html +1 -1
  142. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +13 -79
  143. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +3 -3
  144. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +1 -1
  145. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +4 -4
  146. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +1 -1
  147. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +5 -5
  148. package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +1 -1
  149. package/coverage/rabbit-ui-kit/stories/stubs/index.html +1 -1
  150. package/coverage/rabbit-ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +7 -10
  151. package/coverage/rabbit-ui-kit/stories/templates/index.html +5 -5
  152. package/dist/index.cjs +488 -301
  153. package/dist/index.cjs.map +1 -1
  154. package/dist/index.css +21029 -21029
  155. package/dist/index.modern.js +346 -219
  156. package/dist/index.modern.js.map +1 -1
  157. package/dist/index.module.js +487 -302
  158. package/dist/index.module.js.map +1 -1
  159. package/dist/index.umd.js +488 -301
  160. package/dist/index.umd.js.map +1 -1
  161. package/package.json +3 -3
  162. package/src/{common → common-apis}/external-apis/ipAddressProviders.js +2 -2
  163. package/src/index.js +62 -66
  164. package/src/{robustExteranlApiCallerService → robust-api-caller}/cacheAndConcurrentRequestsResolver.js +2 -2
  165. package/src/{robustExteranlApiCallerService → robust-api-caller}/cachedRobustExternalApiCallerService.js +3 -3
  166. package/src/{robustExteranlApiCallerService → robust-api-caller}/concurrentCalculationsMetadataHolder.js +1 -1
  167. package/src/{robustExteranlApiCallerService → robust-api-caller}/externalServicesStatsCollector.js +2 -2
  168. package/src/{robustExteranlApiCallerService → robust-api-caller}/robustExternalAPICallerService.js +5 -5
  169. package/src/{robustExteranlApiCallerService → robust-api-caller}/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/_performCallAttempt.test.js +2 -2
  170. package/src/{robustExteranlApiCallerService → robust-api-caller}/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/callExternalAPI.test.js +1 -1
  171. package/src/{robustExteranlApiCallerService → robust-api-caller}/tests/robustExternalAPICallerService/robustExternalAPICallerService/constructor.test.js +1 -1
  172. package/src/swaps-lib/external-apis/swapProvider.js +1 -0
  173. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +27 -7
  174. package/src/swaps-lib/models/baseSwapCreationInfo.js +4 -1
  175. package/src/swaps-lib/services/publicSwapService.js +8 -7
  176. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/_fetchSupportedCurrenciesIfNeeded.test.js +3 -3
  177. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/createSwap.test.js +3 -3
  178. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getAllSupportedCurrencies.test.js +1 -1
  179. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getDepositCurrencies.test.js +1 -1
  180. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +124 -4
  181. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getWithdrawalCurrencies.test.js +1 -1
  182. package/src/swaps-lib/test/utils/swapUtils/safeHandleRequestsLimitExceeding.test.js +2 -2
  183. package/src/swaps-lib/utils/swapUtils.js +6 -6
  184. package/{styles → src/ui-kit/assets/styles}/index.scss +1 -1
  185. package/src/{assets → ui-kit/assets}/wrappedImages/arrowWhite.jsx +1 -1
  186. package/src/{components → ui-kit/components}/atoms/AssetIcon/AssetIcon.jsx +5 -4
  187. package/src/{components → ui-kit/components}/atoms/AssetIcon/asset-icon.module.scss +1 -1
  188. package/src/{components → ui-kit/components}/atoms/AssetSelection/AssetSelection.jsx +8 -7
  189. package/src/{components → ui-kit/components}/atoms/AssetSelection/asset-selection.module.scss +1 -1
  190. package/src/{components → ui-kit/components}/atoms/BackgroundTitle/background-title.module.scss +1 -1
  191. package/src/{components → ui-kit/components}/atoms/InformationMessage/InformationMessage.jsx +6 -5
  192. package/src/{components → ui-kit/components}/atoms/InformationMessage/information-message.module.scss +1 -1
  193. package/src/{components → ui-kit/components}/atoms/Input/Input.jsx +23 -22
  194. package/src/{components → ui-kit/components}/atoms/Input/input.module.scss +1 -1
  195. package/src/{components → ui-kit/components}/atoms/LoadingDots/LoadingDots.module.scss +1 -1
  196. package/src/{components → ui-kit/components}/atoms/NoticeIcon/NoticeIcon.jsx +6 -7
  197. package/src/{components → ui-kit/components}/atoms/NoticeIcon/notice-icon.module.scss +1 -1
  198. package/src/{components → ui-kit/components}/atoms/QrCode/QrCode.jsx +3 -2
  199. package/src/{components → ui-kit/components}/atoms/QrCode/qr-code.module.scss +1 -1
  200. package/src/{components → ui-kit/components}/atoms/RateSelector/RateSelector.jsx +1 -0
  201. package/src/{components → ui-kit/components}/atoms/RateSelector/rate-selector.module.scss +1 -1
  202. package/src/{components → ui-kit/components}/atoms/SupportChat/SupportChat.jsx +1 -0
  203. package/src/{components → ui-kit/components}/atoms/Textarea/Textarea.jsx +19 -17
  204. package/src/{components → ui-kit/components}/atoms/Textarea/textarea.module.scss +1 -1
  205. package/src/{components → ui-kit/components}/atoms/TitleBox/TitleBox.jsx +19 -19
  206. package/src/{components → ui-kit/components}/atoms/TitleBox/title-box.module.scss +1 -1
  207. package/src/{components → ui-kit/components}/atoms/Tooltip/Tooltip.jsx +17 -8
  208. package/src/{components → ui-kit/components}/atoms/Tooltip/tooltip.module.scss +1 -1
  209. package/src/{components → ui-kit/components}/atoms/TwoLinesOfText/LinesOfText.jsx +11 -9
  210. package/src/{components → ui-kit/components}/atoms/TwoLinesOfText/lines-of-text.module.scss +1 -1
  211. package/src/{components → ui-kit/components}/atoms/Validation/Validation.jsx +2 -2
  212. package/src/{components → ui-kit/components}/atoms/Validation/validation.module.scss +1 -1
  213. package/src/{components → ui-kit/components}/atoms/buttons/Button/Button.module.scss +1 -1
  214. package/src/{components → ui-kit/components}/atoms/buttons/Close/Close.jsx +7 -2
  215. package/src/{components → ui-kit/components}/atoms/buttons/Close/close.module.scss +1 -1
  216. package/src/{components → ui-kit/components}/atoms/buttons/LinkButton/LinkButton.jsx +9 -3
  217. package/src/{components → ui-kit/components}/atoms/buttons/LinkButton/link-button.module.scss +1 -1
  218. package/src/{components → ui-kit/components}/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx +1 -1
  219. package/src/{components → ui-kit/components}/atoms/buttons/RadioButtonWithText/radio-button-with-text.module.scss +1 -1
  220. package/src/{components → ui-kit/components}/molecules/AmountInput/AmountInput.jsx +5 -4
  221. package/src/{components → ui-kit/components}/molecules/AmountInput/amount-input.module.scss +1 -1
  222. package/src/{components → ui-kit/components}/molecules/CoinPicker/CoinPicker.jsx +27 -25
  223. package/src/{components → ui-kit/components}/molecules/CoinPicker/coin-picker.module.scss +1 -1
  224. package/src/{components → ui-kit/components}/molecules/LineWithIconLink/line-with-icon-link.module.scss +1 -1
  225. package/src/{components → ui-kit/components}/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx +8 -6
  226. package/src/{components → ui-kit/components}/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx +3 -1
  227. package/src/{components → ui-kit/components}/organisms/Dialog/Dialog.jsx +35 -6
  228. package/src/{components → ui-kit/components}/organisms/Dialog/DialogButtons/DialogButtons.jsx +3 -3
  229. package/src/{components → ui-kit/components}/organisms/Dialog/DialogButtons/dialog-buttons.module.scss +1 -1
  230. package/src/{components → ui-kit/components}/organisms/Dialog/DialogStep/DialogStep.jsx +49 -47
  231. package/src/{components → ui-kit/components}/organisms/Dialog/DialogStep/dialog-step.module.scss +1 -1
  232. package/src/{components → ui-kit/components}/organisms/Dialog/dialog.module.scss +1 -1
  233. package/src/{components → ui-kit/components}/organisms/SwapForm/SwapForm.jsx +158 -63
  234. package/src/{components → ui-kit/components}/organisms/SwapForm/swap-form.module.scss +1 -1
  235. package/src/{components → ui-kit/components}/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx +2 -2
  236. package/src/{components → ui-kit}/hooks/useCallHandlingErrors.js +1 -1
  237. package/src/ui-kit/hooks/useIsHydrated.js +12 -0
  238. package/src/{components → ui-kit}/utils/textUtils.js +1 -1
  239. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/index.html +0 -116
  240. package/coverage/rabbit-ui-kit/src/components/atoms/Input/index.html +0 -116
  241. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/index.html +0 -116
  242. package/coverage/rabbit-ui-kit/src/components/atoms/NoticeIcon/index.html +0 -116
  243. package/coverage/rabbit-ui-kit/src/components/atoms/QrCode/index.html +0 -116
  244. package/coverage/rabbit-ui-kit/src/components/atoms/RateSelector/index.html +0 -116
  245. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/index.html +0 -116
  246. package/coverage/rabbit-ui-kit/src/components/atoms/Textarea/index.html +0 -116
  247. package/coverage/rabbit-ui-kit/src/components/atoms/TitleBox/index.html +0 -116
  248. package/coverage/rabbit-ui-kit/src/components/atoms/Tooltip/index.html +0 -116
  249. package/coverage/rabbit-ui-kit/src/components/atoms/TwoLinesOfText/index.html +0 -116
  250. package/coverage/rabbit-ui-kit/src/components/atoms/Validation/index.html +0 -116
  251. package/coverage/rabbit-ui-kit/src/components/molecules/AmountInput/index.html +0 -116
  252. package/coverage/rabbit-ui-kit/src/components/molecules/CoinPicker/index.html +0 -116
  253. package/coverage/rabbit-ui-kit/src/components/molecules/LineWithIconLink/index.html +0 -116
  254. package/coverage/rabbit-ui-kit/src/components/molecules/TitledLineWithIconLink/index.html +0 -116
  255. package/coverage/rabbit-ui-kit/src/components/organisms/CoinPickerDialogStep/index.html +0 -116
  256. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/index.html +0 -116
  257. package/coverage/rabbit-ui-kit/src/components/organisms/SwapForm/index.html +0 -116
  258. package/coverage/rabbit-ui-kit/src/components/templates/DeterminedErrorDialogStep/index.html +0 -116
  259. package/coverage/rabbit-ui-kit/src/constants/atoms/Close/close.jsx.html +0 -100
  260. package/coverage/rabbit-ui-kit/src/constants/atoms/Close/index.html +0 -116
  261. package/coverage/rabbit-ui-kit/src/constants/atoms/LinkButton/index.html +0 -116
  262. package/coverage/rabbit-ui-kit/src/constants/atoms/LinkButton/linkButton.jsx.html +0 -103
  263. package/coverage/rabbit-ui-kit/src/constants/atoms/Tooltip/index.html +0 -116
  264. package/coverage/rabbit-ui-kit/src/constants/atoms/Tooltip/tooltip.jsx.html +0 -109
  265. package/coverage/rabbit-ui-kit/src/constants/index.html +0 -116
  266. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/DialogStep/dialogStep.js.html +0 -88
  267. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/dialog.js.html +0 -172
  268. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/index.html +0 -116
  269. package/src/assets/image/icons/arrow-tosca.svg +0 -3
  270. package/src/constants/atoms/Close/close.jsx +0 -5
  271. package/src/constants/atoms/LinkButton/linkButton.jsx +0 -6
  272. package/src/constants/atoms/Tooltip/tooltip.jsx +0 -8
  273. package/src/constants/organisms/dialog/DialogStep/dialogStep.js +0 -1
  274. package/src/constants/organisms/dialog/dialog.js +0 -29
  275. /package/src/{common → common-apis}/adapters/axiosAdapter.js +0 -0
  276. /package/src/{common → common-apis}/adapters/qrUtils.js +0 -0
  277. /package/src/{common → common-apis}/amountUtils.js +0 -0
  278. /package/src/{common → common-apis}/errorUtils.js +0 -0
  279. /package/src/{common → common-apis}/external-apis/apiGroups.js +0 -0
  280. /package/src/{common → common-apis}/fiatCurrenciesService.js +0 -0
  281. /package/src/{constants → common-apis}/globalConstants.jsx +0 -0
  282. /package/src/{common → common-apis}/models/blockchain.js +0 -0
  283. /package/src/{common → common-apis}/models/coin.js +0 -0
  284. /package/src/{common → common-apis}/models/protocol.js +0 -0
  285. /package/src/{common → common-apis}/tests/amountUtils/composeRateText.test.js +0 -0
  286. /package/src/{common → common-apis}/tests/integration/external-apis/ipAddressProviders/getClientIpAddress.test.js +0 -0
  287. /package/src/{common → common-apis}/utils/cache.js +0 -0
  288. /package/src/{common → common-apis}/utils/emailAPI.js +0 -0
  289. /package/src/{common → common-apis}/utils/logging/logger.js +0 -0
  290. /package/src/{common → common-apis}/utils/logging/logsStorage.js +0 -0
  291. /package/src/{common → common-apis}/utils/postponeExecution.js +0 -0
  292. /package/src/{common → common-apis}/utils/safeStringify.js +0 -0
  293. /package/src/{robustExteranlApiCallerService → robust-api-caller}/cancelProcessing.js +0 -0
  294. /package/src/{robustExteranlApiCallerService → robust-api-caller}/externalApiProvider.js +0 -0
  295. /package/{styles → src/ui-kit/assets/styles}/_functions.scss +0 -0
  296. /package/{styles → src/ui-kit/assets/styles}/_global-classes.scss +0 -0
  297. /package/{styles → src/ui-kit/assets/styles}/_mixins.scss +0 -0
  298. /package/{styles → src/ui-kit/assets/styles}/_placeholder.scss +0 -0
  299. /package/{styles → src/ui-kit/assets/styles}/_variables.scss +0 -0
  300. /package/{styles → src/ui-kit/assets/styles}/colors/_light-colors.scss +0 -0
  301. /package/{styles → src/ui-kit/assets/styles}/colors/_solid-colors.scss +0 -0
  302. /package/{styles → src/ui-kit/assets/styles}/fonts/NunitoSans-Bold.ttf +0 -0
  303. /package/{styles → src/ui-kit/assets/styles}/fonts/NunitoSans-ExtraBold.ttf +0 -0
  304. /package/{styles → src/ui-kit/assets/styles}/fonts/NunitoSans-Light.ttf +0 -0
  305. /package/{styles → src/ui-kit/assets/styles}/fonts/NunitoSans-Regular.ttf +0 -0
  306. /package/{styles → src/ui-kit/assets/styles}/fonts/NunitoSans-SemiBold.ttf +0 -0
  307. /package/{styles → src/ui-kit/assets/styles}/global-styles-index.scss +0 -0
  308. /package/{styles → src/ui-kit/assets/styles}/size/_margin-size.scss +0 -0
  309. /package/{styles → src/ui-kit/assets/styles}/size/_padding-size.scss +0 -0
  310. /package/src/{assets → ui-kit/assets}/wrappedImages/arrowIcon.jsx +0 -0
  311. /package/src/{assets → ui-kit/assets}/wrappedImages/arrowTosca.jsx +0 -0
  312. /package/src/{assets → ui-kit/assets}/wrappedImages/darkRectangle.jsx +0 -0
  313. /package/src/{assets → ui-kit/assets}/wrappedImages/determinedError.jsx +0 -0
  314. /package/src/{assets → ui-kit/assets}/wrappedImages/failedValidationIcon.jsx +0 -0
  315. /package/src/{assets → ui-kit/assets}/wrappedImages/infoIcon.jsx +0 -0
  316. /package/src/{assets → ui-kit/assets}/wrappedImages/noticeQuestionIcon.jsx +0 -0
  317. /package/src/{assets → ui-kit/assets}/wrappedImages/successfulValidationIcon.jsx +0 -0
  318. /package/src/{assets → ui-kit/assets}/wrappedImages/walletIcon.jsx +0 -0
  319. /package/src/{components → ui-kit/components}/atoms/BackgroundTitle/BackgroundTitle.jsx +0 -0
  320. /package/src/{components → ui-kit/components}/atoms/LoadingDots/LoadingDots.jsx +0 -0
  321. /package/src/{components → ui-kit/components}/atoms/buttons/Button/Button.jsx +0 -0
  322. /package/src/{components → ui-kit/components}/molecules/LineWithIconLink/LineWithIconLink.jsx +0 -0
  323. /package/src/{components → ui-kit}/hooks/useReferredState.js +0 -0
  324. /package/src/{components → ui-kit}/tests/utils/inputValueProviders/provideFormatOfFloatValueByInputString.test.js +0 -0
  325. /package/src/{components → ui-kit}/tests/utils/urlQueryUtils/getQueryParameterValues.test.js +0 -0
  326. /package/src/{components → ui-kit}/tests/utils/urlQueryUtils/saveQueryParameterAndValues.test.js +0 -0
  327. /package/src/{components → ui-kit}/utils/inputValueProviders.js +0 -0
  328. /package/src/{components → ui-kit}/utils/uiUtils.js +0 -0
  329. /package/src/{components → ui-kit}/utils/urlQueryUtils.js +0 -0
@@ -4,17 +4,18 @@ import PropTypes from "prop-types";
4
4
 
5
5
  import s from "./swap-form.module.scss";
6
6
 
7
- import { useReferredState } from "../../hooks/useReferredState.js";
8
- import { useCallHandlingErrors } from "../../hooks/useCallHandlingErrors.js";
7
+ import { useReferredState } from "../../../hooks/useReferredState.js";
8
+ import { useCallHandlingErrors } from "../../../hooks/useCallHandlingErrors.js";
9
9
 
10
- import { AmountUtils } from "../../../common/amountUtils.js";
10
+ import { AmountUtils } from "../../../../common-apis/amountUtils.js";
11
11
  import { TitleBox } from "../../atoms/TitleBox/TitleBox.jsx";
12
12
  import { AmountInput } from "../../molecules/AmountInput/AmountInput.jsx";
13
13
  import { Validation } from "../../atoms/Validation/Validation.jsx";
14
14
  import { Button } from "../../atoms/buttons/Button/Button.jsx";
15
15
  import { Textarea } from "../../atoms/Textarea/Textarea.jsx";
16
- import { TOOLTIP_POSITIONS } from "../../../constants/atoms/Tooltip/tooltip.jsx";
17
16
  import { RateSelector } from "../../atoms/RateSelector/RateSelector.jsx";
17
+ import { TOOLTIP_POSITIONS } from "../../atoms/Tooltip/Tooltip.jsx";
18
+ import { useIsHydrated } from "../../../hooks/useIsHydrated.js";
18
19
 
19
20
  /**
20
21
  * This is the type definition of a function used inside SwapForm to compose the URL for the hero button.
@@ -79,17 +80,21 @@ import { RateSelector } from "../../atoms/RateSelector/RateSelector.jsx";
79
80
  */
80
81
 
81
82
  /**
82
- * Handler for the confirm button click. You should implement errors handling inside it.
83
+ * Handler for the confirm button click. You should implement error handling inside it.
83
84
  *
84
85
  * @function
85
86
  * @name handleConfirmButtonClick
86
- * @param {function} resetButtonLoader - callback resetting the confirm button loader
87
+ * @param {function} resetButtonLoader - Callback for resetting the confirm button loader.
87
88
  * @param {function} setValidationContent - Function to set the validation error message on the form.
88
89
  * @param {function} setBalanceValid - Function to set the balance validity, accepts a boolean.
89
90
  * @param {function} setMinimalAmountValid - Function to set the minimal amount validity, accepts a boolean.
90
91
  * @param {function} setMaximumAmountValid - Function to set the maximum amount validity, accepts a boolean.
91
92
  * @param {function} setIsPairSupported - Function to set the pair support status, accepts a boolean.
92
93
  * @param {function} setIsSameCoins - Function to set the status if the same coins are used, accepts a boolean.
94
+ * @param {string} recipientAddress - The address of the recipient.
95
+ * @param {string} recipientAddressExtraId - Additional identifier for the recipient address.
96
+ * @param {string} refundAddress - The address for refund.
97
+ * @param {string} refundAddressExtraId - Additional identifier for the refund address.
93
98
  * @return {void}
94
99
  */
95
100
 
@@ -136,6 +141,28 @@ import { RateSelector } from "../../atoms/RateSelector/RateSelector.jsx";
136
141
  * }>}
137
142
  */
138
143
 
144
+ /**
145
+ * Function returning extraId name for asset if present.
146
+ * You must pass it if you use the form with addresses inputs.
147
+ *
148
+ * @function
149
+ * @name getExtraIdNameByTicker
150
+ * @param {string} ticker - Ticker symbol of the asset.
151
+ * @return {string|null}
152
+ */
153
+
154
+ /**
155
+ * Function validating addresses.
156
+ * By default, will treat any addresses as valid.
157
+ * You must pass it if you use the form with addresses inputs and want to validate addresses.
158
+ *
159
+ * @function
160
+ * @name validateAddressByTicker
161
+ * @param {string} ticker - Ticker symbol of the asset.
162
+ * @param {string} address - Address to be validated
163
+ * @return {Promise<boolean>}
164
+ */
165
+
139
166
  /**
140
167
  * Swap form provides basic functionality for entering to/from amounts both in crypto and fiat, switching assets,
141
168
  * selecting assets, showing balance for assets. It gracefully handles unavailable fiat rates and can work
@@ -183,6 +210,8 @@ import { RateSelector } from "../../atoms/RateSelector/RateSelector.jsx";
183
210
  * @param {object} [props.translations] - Object containing translations, default English texts will be used if omitted.
184
211
  * @param {string} props.swapSeparatorIconSrc - Source URL for the swap separator icon.
185
212
  * @param {boolean} props.swapButtonAlwaysActive - Setting that allows the form state to proceed to the next step regardless of validity.
213
+ * @param {getExtraIdNameByTicker} props.getExtraIdNameByTicker - Function returning extraId name for asset
214
+ * @param {validateAddressByTicker} [props.validateAddressByTicker] - Function validating address
186
215
  * @return {JSX.Element} Rendered SwapForm component.
187
216
  * @constructor
188
217
  */
@@ -212,7 +241,11 @@ export const SwapForm = ({
212
241
  setMinimalAmountValid,
213
242
  setMaximumAmountValid,
214
243
  setIsPairSupported,
215
- setIsSameCoins
244
+ setIsSameCoins,
245
+ recipientAddress,
246
+ recipientAddressExtraId,
247
+ refundAddress,
248
+ refundAddressExtraId
216
249
  ) => {},
217
250
  composeConfirmButtonTo = (fromTicker, toTicker, fromAmount) => "",
218
251
  setSwapCreationEstimation = details => {},
@@ -241,6 +274,10 @@ export const SwapForm = ({
241
274
  formHasFiat = true,
242
275
  termsOfUseUrl = null,
243
276
  privacyPolicyUrl = null,
277
+ getExtraIdNameByTicker = ticker => null,
278
+ validateAddressByTicker = ticker => false,
279
+ swapSeparatorIconSrc,
280
+ swapButtonAlwaysActive = false,
244
281
  translations = {
245
282
  swapAllButtonTitles: {
246
283
  enable: "Swap all",
@@ -268,10 +305,12 @@ export const SwapForm = ({
268
305
  },
269
306
  addressFields: {
270
307
  addressTitle: "Recepient address",
271
- extraIdTitle: "Extra ID (optional)",
272
- extraIdPlaceholder: "Example: ABC123",
273
- extraIdNotice:
274
- "Please check if your recipient address requires a 'Memo' or 'Destination Tag' - sometimes called a tag, ID, label, or a note. Exchanges may require such ID for the deposit. Including this identifier is crucial when required, as omitting or misentering it can result in lost assets.",
308
+ refundAddressTitle: "Refund address",
309
+ extraIdPlaceholder: "(optional)",
310
+ refundAddressExtraIdNotice:
311
+ "Please check if your address requires additional identifier (sometimes called a Memo, Destination Tag, Tag, ID, Label or Note). Including this identifier is crucial when required, as omitting or misentering it can result in lost assets.",
312
+ receivingAddressExtraIdNotice:
313
+ "Please check if your address requires additional identifier (sometimes called a Memo, Destination Tag, Tag, ID, Label or Note). Including this identifier is crucial when required, as omitting or misentering it can result in lost assets.",
275
314
  },
276
315
  rateSelector: {
277
316
  floatingRate: "Floating rate",
@@ -279,16 +318,6 @@ export const SwapForm = ({
279
318
  },
280
319
  confirmButtonText: "Swap",
281
320
  },
282
- swapSeparatorIconSrc,
283
- swapButtonAlwaysActive = false,
284
- recepientAddress,
285
- recepientAddressExtraId,
286
- recepientAddressValid = true,
287
- recepientAddressExtraIdValid = true,
288
- setRecepientAddress,
289
- setRecepientAddressExtraId,
290
- recepientAddressExtraIdAvailable = false,
291
- displayRateSelector = false,
292
321
  }) => {
293
322
  const DETAIL_REFRESH_INTERVAL_MS = 1.5 * 60000;
294
323
  const IS_FIXED_BY_DEFAULT = false;
@@ -316,7 +345,6 @@ export const SwapForm = ({
316
345
  // write single useEffect setting sendAssetAmount to the=is passed value and simplify the logic below. task_id=6453251e49b04c5e88a3cc771479ffb5
317
346
  const [isAmountZero, setIsAmountZero] = useState(preservedAmount == null || String(preservedAmount) === "0");
318
347
  const [isLoading, setIsLoading] = useReferredState(false); // Whether the form is in the progress of loading some data (new rates, for example)
319
- const [isAddressFieldEnabled, setIsAddressFieldEnabled] = useState(false);
320
348
  const [isFixedRate, setIsFixedRate] = useReferredState(null);
321
349
 
322
350
  const [confirmButtonTo, setConfirmButtonTo] = useState(
@@ -331,10 +359,24 @@ export const SwapForm = ({
331
359
  const [dataUpdateTimeoutId, setDataUpdateTimeoutId] = useReferredState(null);
332
360
  const [idleDataUpdateTimeoutId, setIdleDataUpdateTimeoutId] = useReferredState(null);
333
361
 
362
+ const [recipientAddress, setRecipientAddress] = useReferredState("");
363
+ const [recipientAddressExtraId, setRecipientAddressExtraId] = useReferredState("");
364
+ const [isRecipientAddressValid, setIsRecipientAddressValid] = useReferredState(false);
365
+ const [isRefundAddressRequired, setIsRefundAddressRequired] = useState(false);
366
+ const [refundAddress, setRefundAddress] = useReferredState("");
367
+ const [refundAddressExtraId, setRefundAddressExtraId] = useReferredState("");
368
+ const [isRefundAddressValid, setIsRefundAddressValid] = useReferredState(false);
369
+
334
370
  const callHandlingErrors = useCallHandlingErrors();
371
+ const isHydrated = useIsHydrated();
335
372
 
336
373
  const recalculationDelayOnTyping = 1000;
337
374
 
375
+ const isAddressFieldEnabled = !formHasBalance;
376
+ const displayRateSelector = !formHasBalance;
377
+ const recipientAddressExtraIdName = getExtraIdNameByTicker(receivingAssetTicker);
378
+ const refundAddressExtraIdName = getExtraIdNameByTicker(sendingAssetTicker);
379
+
338
380
  const handleSendAssetAmountChange = amount => {
339
381
  if (amount != null && amount !== "") {
340
382
  setUpdateReceiveInputTo(AmountUtils.trim(BigNumber(amount).times(swapRate), receivingAssetDecimalCount));
@@ -491,6 +533,7 @@ export const SwapForm = ({
491
533
 
492
534
  setAmountLimitsAndRate(swapCreationInfo);
493
535
  setSwapCreationEstimation(swapCreationInfo);
536
+ setIsRefundAddressRequired(swapCreationInfo?.isRefundAddressRequired);
494
537
  processMinMaxAmounts(isSwapAll.current ? swapCreationInfo.fromAmountCoins : amount);
495
538
  setIsSwapCalculated(true);
496
539
  } else {
@@ -630,9 +673,9 @@ export const SwapForm = ({
630
673
  isSwapCalculated &&
631
674
  (!isSameCoins || !formHasBalance) &&
632
675
  isPairSupported &&
633
- (!isAddressFieldEnabled || recepientAddressValid))
676
+ (!isAddressFieldEnabled || isRecipientAddressValid.current) &&
677
+ (!isRefundAddressRequired || isRefundAddressValid.current))
634
678
  );
635
-
636
679
  // eslint-disable-next-line react-hooks/exhaustive-deps
637
680
  }, [
638
681
  balanceValid,
@@ -643,9 +686,49 @@ export const SwapForm = ({
643
686
  isSameCoins,
644
687
  isPairSupported,
645
688
  isAddressFieldEnabled,
646
- recepientAddressValid,
689
+ isRecipientAddressValid.current,
690
+ isRefundAddressRequired,
691
+ isRefundAddressValid.current,
647
692
  ]);
648
693
 
694
+ useEffect(() => {
695
+ setIsRecipientAddressValid(false);
696
+ setRecipientAddress("");
697
+ setRecipientAddressExtraId("");
698
+ // eslint-disable-next-line react-hooks/exhaustive-deps
699
+ }, [receivingAssetTicker]);
700
+
701
+ useEffect(() => {
702
+ setIsRefundAddressValid(false);
703
+ setRefundAddress("");
704
+ setRefundAddressExtraId("");
705
+ // eslint-disable-next-line react-hooks/exhaustive-deps
706
+ }, [sendingAssetTicker]);
707
+
708
+ useEffect(() => {
709
+ (async () => {
710
+ if (!receivingAssetTicker) return;
711
+ setIsRecipientAddressValid(
712
+ recipientAddress.current === ""
713
+ ? false
714
+ : await validateAddressByTicker(receivingAssetTicker, recipientAddress.current)
715
+ );
716
+ })();
717
+ // eslint-disable-next-line react-hooks/exhaustive-deps
718
+ }, [recipientAddress.current, recipientAddressExtraId.current, receivingAssetTicker]);
719
+
720
+ useEffect(() => {
721
+ (async () => {
722
+ if (!sendingAssetTicker || !isRefundAddressRequired) return;
723
+ setIsRefundAddressValid(
724
+ refundAddress.current === ""
725
+ ? false
726
+ : await validateAddressByTicker(sendingAssetTicker, refundAddress.current)
727
+ );
728
+ })();
729
+ // eslint-disable-next-line react-hooks/exhaustive-deps
730
+ }, [refundAddress.current, refundAddressExtraId.current, sendingAssetTicker, isRefundAddressRequired]);
731
+
649
732
  useEffect(() => {
650
733
  // Here we set up auto recalculations for the swap details if the form is ready to swap but is idle for some time
651
734
  let timeoutId = null;
@@ -714,27 +797,6 @@ export const SwapForm = ({
714
797
  // eslint-disable-next-line react-hooks/exhaustive-deps
715
798
  }, [sendAssetAmount.current]);
716
799
 
717
- // Checking if all necessary props for address input are passed properly.
718
- useEffect(() => {
719
- setIsAddressFieldEnabled(
720
- recepientAddress !== undefined &&
721
- recepientAddressExtraId !== undefined &&
722
- recepientAddressValid !== undefined &&
723
- setRecepientAddress !== undefined &&
724
- typeof setRecepientAddress === "function" &&
725
- setRecepientAddressExtraId !== undefined &&
726
- typeof setRecepientAddressExtraId === "function"
727
- );
728
- // eslint-disable-next-line react-hooks/exhaustive-deps
729
- }, [
730
- recepientAddress,
731
- recepientAddressExtraId,
732
- recepientAddressValid,
733
- recepientAddressExtraIdValid,
734
- setRecepientAddress,
735
- setRecepientAddressExtraId,
736
- ]);
737
-
738
800
  return (
739
801
  <div className={s["swap-form"]}>
740
802
  <TitleBox
@@ -882,6 +944,8 @@ export const SwapForm = ({
882
944
  ""
883
945
  )}
884
946
  </>
947
+ ) : !minimalAmount.current ? (
948
+ ""
885
949
  ) : (
886
950
  <>
887
951
  {translations.informationBlock.minimumAmount}
@@ -923,34 +987,57 @@ export const SwapForm = ({
923
987
  <TitleBox title={translations.addressFields.addressTitle}>
924
988
  <Textarea
925
989
  type={"text"}
926
- onChange={e => setRecepientAddress(e.target.value)}
927
- value={recepientAddress}
990
+ onChange={e => setRecipientAddress(e.target.value)}
991
+ value={recipientAddress.current}
928
992
  adaptiveHeight={true}
929
- errorEncountered={!recepientAddressValid && recepientAddress !== ""}
993
+ errorEncountered={recipientAddress.current !== "" && !isRecipientAddressValid.current}
930
994
  />
931
995
  </TitleBox>
932
- {recepientAddressExtraIdAvailable ? (
996
+ {isHydrated && recipientAddressExtraIdName ? (
933
997
  <TitleBox
934
- title={translations.addressFields.extraIdTitle}
935
- titleNoticeText={translations.addressFields.extraIdNotice}
998
+ title={recipientAddressExtraIdName}
999
+ titleNoticeText={translations.addressFields.receivingAddressExtraIdNotice}
936
1000
  titleNoticePosition={TOOLTIP_POSITIONS.TOP_LEFT}
937
1001
  >
938
1002
  <Textarea
939
1003
  type={"text"}
940
- onChange={e => setRecepientAddressExtraId(e.target.value)}
941
- value={recepientAddressExtraId}
1004
+ onChange={e => setRecipientAddressExtraId(e.target.value)}
1005
+ value={recipientAddressExtraId.current}
942
1006
  adaptiveHeight={true}
943
- errorEncountered={!recepientAddressExtraIdValid}
944
1007
  placeholder={translations.addressFields.extraIdPlaceholder}
945
1008
  />
946
1009
  </TitleBox>
947
- ) : (
948
- ""
949
- )}
1010
+ ) : null}
1011
+ {isHydrated && isRefundAddressRequired ? (
1012
+ <>
1013
+ <TitleBox title={translations.addressFields.refundAddressTitle}>
1014
+ <Textarea
1015
+ type={"text"}
1016
+ onChange={e => setRefundAddress(e.target.value)}
1017
+ value={refundAddress.current}
1018
+ adaptiveHeight={true}
1019
+ errorEncountered={refundAddress.current !== "" && !isRefundAddressValid.current}
1020
+ />
1021
+ </TitleBox>
1022
+ {refundAddressExtraIdName ? (
1023
+ <TitleBox
1024
+ title={refundAddressExtraIdName}
1025
+ titleNoticeText={translations.addressFields.refundAddressExtraIdNotice}
1026
+ titleNoticePosition={TOOLTIP_POSITIONS.TOP_LEFT}
1027
+ >
1028
+ <Textarea
1029
+ type={"text"}
1030
+ onChange={e => setRefundAddressExtraId(e.target.value)}
1031
+ value={refundAddressExtraId.current}
1032
+ adaptiveHeight={true}
1033
+ placeholder={translations.addressFields.extraIdPlaceholder}
1034
+ />
1035
+ </TitleBox>
1036
+ ) : null}
1037
+ </>
1038
+ ) : null}
950
1039
  </div>
951
- ) : (
952
- ""
953
- )}
1040
+ ) : null}
954
1041
 
955
1042
  {displayRateSelector ? (
956
1043
  <div className={s["swap-form-rate-selector"]}>
@@ -1005,7 +1092,11 @@ export const SwapForm = ({
1005
1092
  setMinimalAmountValid,
1006
1093
  setMaximumAmountValid,
1007
1094
  setIsPairSupported,
1008
- setIsSameCoins
1095
+ setIsSameCoins,
1096
+ recipientAddress.current,
1097
+ recipientAddressExtraId.current,
1098
+ refundAddress.current,
1099
+ refundAddressExtraId.current
1009
1100
  )
1010
1101
  }
1011
1102
  fullWidthOnMobiles
@@ -1075,7 +1166,11 @@ SwapForm.defaultProps = {
1075
1166
  setMinimalAmountValid,
1076
1167
  setMaximumAmountValid,
1077
1168
  setIsPairSupported,
1078
- setIsSameCoins
1169
+ setIsSameCoins,
1170
+ recipientAddress,
1171
+ recipientAddressExtraId,
1172
+ refundAddress,
1173
+ refundAddressExtraId
1079
1174
  ) => {},
1080
1175
  composeConfirmButtonTo: (fromTicker, toTicker, fromAmount) => "",
1081
1176
  setSwapCreationEstimation: details => {},
@@ -1,4 +1,4 @@
1
- @import "../../../../styles/index";
1
+ @import "../../../assets/styles/index";
2
2
 
3
3
  .swap-form {
4
4
  width: 100%;
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
2
  import PropTypes from "prop-types";
3
3
 
4
- import { DialogStep } from "../../organisms/Dialog/DialogStep/DialogStep";
4
+ import { DialogStep } from "../../organisms/Dialog/DialogStep/DialogStep.jsx";
5
5
 
6
- import determinedErrorImage from "../../../assets/wrappedImages/determinedError";
6
+ import determinedErrorImage from "../../../assets/wrappedImages/determinedError.jsx";
7
7
 
8
8
  /**
9
9
  * Template dialog step to display an error through the title and subtitle.
@@ -1,6 +1,6 @@
1
1
  import { useCallback, useState } from "react";
2
2
 
3
- import { Logger } from "../../common/utils/logging/logger.js";
3
+ import { Logger } from "../../common-apis/utils/logging/logger.js";
4
4
 
5
5
  export function useCallHandlingErrors() {
6
6
  const [, setState] = useState();
@@ -0,0 +1,12 @@
1
+ import { useState, useEffect } from "react";
2
+
3
+ // Custom hook to check if the component is hydrated
4
+ export function useIsHydrated() {
5
+ const [isHydrated, setIsHydrated] = useState(false);
6
+
7
+ useEffect(() => {
8
+ setIsHydrated(true);
9
+ }, []);
10
+
11
+ return isHydrated;
12
+ }
@@ -1,6 +1,6 @@
1
1
  import copy from "clipboard-copy";
2
2
 
3
- import { improveAndRethrow } from "../../common/errorUtils.js";
3
+ import { improveAndRethrow } from "../../common-apis/errorUtils.js";
4
4
 
5
5
  /**
6
6
  * Copies given text to clipboard inside browser.
@@ -1,116 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for rabbit-ui-kit/src/components/atoms/AssetIcon</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../../../index.html">All files</a> rabbit-ui-kit/src/components/atoms/AssetIcon</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/54</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/54</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <div class="pad1">
66
- <table class="coverage-summary">
67
- <thead>
68
- <tr>
69
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
70
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
71
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
72
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
73
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
74
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
75
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
76
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
77
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
78
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
79
- </tr>
80
- </thead>
81
- <tbody><tr>
82
- <td class="file low" data-value="AssetIcon.jsx"><a href="AssetIcon.jsx.html">AssetIcon.jsx</a></td>
83
- <td data-value="0" class="pic low">
84
- <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
85
- </td>
86
- <td data-value="0" class="pct low">0%</td>
87
- <td data-value="54" class="abs low">0/54</td>
88
- <td data-value="0" class="pct low">0%</td>
89
- <td data-value="1" class="abs low">0/1</td>
90
- <td data-value="0" class="pct low">0%</td>
91
- <td data-value="1" class="abs low">0/1</td>
92
- <td data-value="0" class="pct low">0%</td>
93
- <td data-value="54" class="abs low">0/54</td>
94
- </tr>
95
-
96
- </tbody>
97
- </table>
98
- </div>
99
- <div class='push'></div><!-- for sticky footer -->
100
- </div><!-- /wrapper -->
101
- <div class='footer quiet pad2 space-top1 center small'>
102
- Code coverage generated by
103
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-05-26T11:41:12.304Z
105
- </div>
106
- <script src="../../../../../prettify.js"></script>
107
- <script>
108
- window.onload = function () {
109
- prettyPrint();
110
- };
111
- </script>
112
- <script src="../../../../../sorter.js"></script>
113
- <script src="../../../../../block-navigation.js"></script>
114
- </body>
115
- </html>
116
-
@@ -1,116 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for rabbit-ui-kit/src/components/atoms/Input</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../../../index.html">All files</a> rabbit-ui-kit/src/components/atoms/Input</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/182</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/182</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <div class="pad1">
66
- <table class="coverage-summary">
67
- <thead>
68
- <tr>
69
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
70
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
71
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
72
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
73
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
74
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
75
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
76
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
77
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
78
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
79
- </tr>
80
- </thead>
81
- <tbody><tr>
82
- <td class="file low" data-value="Input.jsx"><a href="Input.jsx.html">Input.jsx</a></td>
83
- <td data-value="0" class="pic low">
84
- <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
85
- </td>
86
- <td data-value="0" class="pct low">0%</td>
87
- <td data-value="182" class="abs low">0/182</td>
88
- <td data-value="0" class="pct low">0%</td>
89
- <td data-value="1" class="abs low">0/1</td>
90
- <td data-value="0" class="pct low">0%</td>
91
- <td data-value="1" class="abs low">0/1</td>
92
- <td data-value="0" class="pct low">0%</td>
93
- <td data-value="182" class="abs low">0/182</td>
94
- </tr>
95
-
96
- </tbody>
97
- </table>
98
- </div>
99
- <div class='push'></div><!-- for sticky footer -->
100
- </div><!-- /wrapper -->
101
- <div class='footer quiet pad2 space-top1 center small'>
102
- Code coverage generated by
103
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-05-26T11:41:12.304Z
105
- </div>
106
- <script src="../../../../../prettify.js"></script>
107
- <script>
108
- window.onload = function () {
109
- prettyPrint();
110
- };
111
- </script>
112
- <script src="../../../../../sorter.js"></script>
113
- <script src="../../../../../block-navigation.js"></script>
114
- </body>
115
- </html>
116
-