@redneckz/wildless-cms-uni-blocks 0.5.10 → 0.5.11

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 (440) hide show
  1. package/bin/migration-scripts/0.4.5.js +1 -1
  2. package/bin/migration-scripts/0.5.10.js +36 -0
  3. package/bin/utils.js +0 -2
  4. package/bundle/blocks.schema.json +1 -1
  5. package/bundle/bundle.umd.js +164 -98
  6. package/bundle/bundle.umd.min.js +1 -1
  7. package/dist/EventBus/EventMap.d.ts +2 -1
  8. package/dist/components/Bonus/Bonus.js +11 -2
  9. package/dist/components/Bonus/Bonus.js.map +1 -1
  10. package/dist/components/Bonus/BonusContent.d.ts +30 -2
  11. package/dist/components/CardTransfer/CardTransfer.js +10 -11
  12. package/dist/components/CardTransfer/CardTransfer.js.map +1 -1
  13. package/dist/components/CardTransfer/CardTransferContent.d.ts +2 -2
  14. package/dist/components/ComparisonTable/TableColumn.js +7 -2
  15. package/dist/components/ComparisonTable/TableColumn.js.map +1 -1
  16. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +2 -2
  17. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
  18. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  19. package/dist/components/ExchangeRateTile/renderInput.js +2 -2
  20. package/dist/components/ExchangeRateTile/renderInput.js.map +1 -1
  21. package/dist/components/GracePeriod/GracePeriod.js +3 -3
  22. package/dist/components/GracePeriod/GracePeriod.js.map +1 -1
  23. package/dist/components/GracePeriod/GracePeriodContent.d.ts +1 -1
  24. package/dist/components/MobileAppTile/MobileAppTile.js +2 -2
  25. package/dist/components/MobileAppTile/MobileAppTile.js.map +1 -1
  26. package/dist/components/SafeDepositRental/RegionsAndBranches.js +1 -1
  27. package/dist/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
  28. package/dist/components/SafeDepositRental/SafeDepositRental.js +1 -1
  29. package/dist/components/SafeDepositRental/SafeDepositRental.js.map +1 -1
  30. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js +1 -1
  31. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  32. package/dist/components/SafeDepositRental/WrapperSelect.js +6 -3
  33. package/dist/components/SafeDepositRental/WrapperSelect.js.map +1 -1
  34. package/dist/components/Tabs/Tabs.d.ts +4 -0
  35. package/dist/components/Tabs/Tabs.js +13 -3
  36. package/dist/components/Tabs/Tabs.js.map +1 -1
  37. package/dist/components/Tabs/TabsContent.d.ts +2 -0
  38. package/dist/components/Tabs/renderLinkTab.d.ts +3 -2
  39. package/dist/components/Tabs/renderLinkTab.js +4 -1
  40. package/dist/components/Tabs/renderLinkTab.js.map +1 -1
  41. package/dist/components/Tabs/renderTab.js +12 -2
  42. package/dist/components/Tabs/renderTab.js.map +1 -1
  43. package/dist/react/IntersectionObserverTag.js +7 -3
  44. package/dist/react/IntersectionObserverTag.js.map +1 -1
  45. package/dist/ui-kit/BlockWrapper.js +34 -12
  46. package/dist/ui-kit/BlockWrapper.js.map +1 -1
  47. package/dist/ui-kit/CurrencyInput/CurrencyInput.js +11 -6
  48. package/dist/ui-kit/CurrencyInput/CurrencyInput.js.map +1 -1
  49. package/dist/ui-kit/CurrencyInput/CurrencyInputProps.d.ts +2 -7
  50. package/dist/ui-kit/CurrencyInput/adjustValue .d.ts +1 -0
  51. package/dist/ui-kit/CurrencyInput/adjustValue .js +15 -0
  52. package/dist/ui-kit/CurrencyInput/adjustValue .js.map +1 -0
  53. package/dist/ui-kit/Input/Input.d.ts +1 -1
  54. package/dist/ui-kit/Input/Input.js +7 -4
  55. package/dist/ui-kit/Input/Input.js.map +1 -1
  56. package/dist/ui-kit/Input/InputProps.d.ts +6 -3
  57. package/dist/ui-kit/Select/Select.d.ts +10 -4
  58. package/dist/ui-kit/Select/Select.js +23 -5
  59. package/dist/ui-kit/Select/Select.js.map +1 -1
  60. package/dist/utils/changeHashOnObserve.d.ts +9 -1
  61. package/dist/utils/changeHashOnObserve.js +12 -4
  62. package/dist/utils/changeHashOnObserve.js.map +1 -1
  63. package/lib/EventBus/EventMap.d.ts +2 -1
  64. package/lib/common.css +1 -1
  65. package/lib/components/Bonus/Bonus.js +11 -2
  66. package/lib/components/Bonus/Bonus.js.map +1 -1
  67. package/lib/components/Bonus/BonusContent.d.ts +30 -2
  68. package/lib/components/CardTransfer/CardTransfer.js +10 -11
  69. package/lib/components/CardTransfer/CardTransfer.js.map +1 -1
  70. package/lib/components/CardTransfer/CardTransferContent.d.ts +2 -2
  71. package/lib/components/ComparisonTable/TableColumn.js +7 -2
  72. package/lib/components/ComparisonTable/TableColumn.js.map +1 -1
  73. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +2 -2
  74. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
  75. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  76. package/lib/components/ExchangeRateTile/renderInput.js +2 -2
  77. package/lib/components/ExchangeRateTile/renderInput.js.map +1 -1
  78. package/lib/components/GracePeriod/GracePeriod.js +3 -3
  79. package/lib/components/GracePeriod/GracePeriod.js.map +1 -1
  80. package/lib/components/GracePeriod/GracePeriodContent.d.ts +1 -1
  81. package/lib/components/MobileAppTile/MobileAppTile.js +2 -2
  82. package/lib/components/MobileAppTile/MobileAppTile.js.map +1 -1
  83. package/lib/components/SafeDepositRental/RegionsAndBranches.js +1 -1
  84. package/lib/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
  85. package/lib/components/SafeDepositRental/SafeDepositRental.js +1 -1
  86. package/lib/components/SafeDepositRental/SafeDepositRental.js.map +1 -1
  87. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js +1 -1
  88. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  89. package/lib/components/SafeDepositRental/WrapperSelect.js +7 -4
  90. package/lib/components/SafeDepositRental/WrapperSelect.js.map +1 -1
  91. package/lib/components/Tabs/Tabs.d.ts +4 -0
  92. package/lib/components/Tabs/Tabs.js +13 -3
  93. package/lib/components/Tabs/Tabs.js.map +1 -1
  94. package/lib/components/Tabs/TabsContent.d.ts +2 -0
  95. package/lib/components/Tabs/renderLinkTab.d.ts +3 -2
  96. package/lib/components/Tabs/renderLinkTab.js +5 -2
  97. package/lib/components/Tabs/renderLinkTab.js.map +1 -1
  98. package/lib/components/Tabs/renderTab.js +12 -2
  99. package/lib/components/Tabs/renderTab.js.map +1 -1
  100. package/lib/react/IntersectionObserverTag.js +7 -3
  101. package/lib/react/IntersectionObserverTag.js.map +1 -1
  102. package/lib/ui-kit/BlockWrapper.js +35 -13
  103. package/lib/ui-kit/BlockWrapper.js.map +1 -1
  104. package/lib/ui-kit/CurrencyInput/CurrencyInput.js +12 -7
  105. package/lib/ui-kit/CurrencyInput/CurrencyInput.js.map +1 -1
  106. package/lib/ui-kit/CurrencyInput/CurrencyInputProps.d.ts +2 -7
  107. package/lib/ui-kit/CurrencyInput/adjustValue .d.ts +1 -0
  108. package/lib/ui-kit/CurrencyInput/adjustValue .js +12 -0
  109. package/lib/ui-kit/CurrencyInput/adjustValue .js.map +1 -0
  110. package/lib/ui-kit/Input/Input.d.ts +1 -1
  111. package/lib/ui-kit/Input/Input.js +8 -5
  112. package/lib/ui-kit/Input/Input.js.map +1 -1
  113. package/lib/ui-kit/Input/InputProps.d.ts +6 -3
  114. package/lib/ui-kit/Select/Select.d.ts +10 -4
  115. package/lib/ui-kit/{SelectCustom/SelectCustom.fixture.d.ts → Select/Select.fixture.d.ts} +0 -0
  116. package/lib/ui-kit/Select/Select.js +24 -6
  117. package/lib/ui-kit/Select/Select.js.map +1 -1
  118. package/lib/utils/changeHashOnObserve.d.ts +9 -1
  119. package/lib/utils/changeHashOnObserve.js +12 -4
  120. package/lib/utils/changeHashOnObserve.js.map +1 -1
  121. package/mobile/bundle/bundle.umd.js +90 -52
  122. package/mobile/bundle/bundle.umd.min.js +1 -1
  123. package/mobile/dist/EventBus/EventMap.d.ts +2 -1
  124. package/mobile/dist/components/Bonus/Bonus.js +11 -2
  125. package/mobile/dist/components/Bonus/Bonus.js.map +1 -1
  126. package/mobile/dist/components/Bonus/BonusContent.d.ts +30 -2
  127. package/mobile/dist/components/CardTransfer/CardTransfer.js +10 -11
  128. package/mobile/dist/components/CardTransfer/CardTransfer.js.map +1 -1
  129. package/mobile/dist/components/CardTransfer/CardTransferContent.d.ts +2 -2
  130. package/mobile/dist/components/ComparisonTable/TableColumn.js +7 -2
  131. package/mobile/dist/components/ComparisonTable/TableColumn.js.map +1 -1
  132. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +2 -2
  133. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
  134. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  135. package/mobile/dist/components/ExchangeRateTile/renderInput.js +2 -2
  136. package/mobile/dist/components/ExchangeRateTile/renderInput.js.map +1 -1
  137. package/mobile/dist/components/GracePeriod/GracePeriod.js +3 -3
  138. package/mobile/dist/components/GracePeriod/GracePeriod.js.map +1 -1
  139. package/mobile/dist/components/GracePeriod/GracePeriodContent.d.ts +1 -1
  140. package/mobile/dist/components/SafeDepositRental/RegionsAndBranches.js +1 -1
  141. package/mobile/dist/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
  142. package/mobile/dist/components/SafeDepositRental/SafeDepositRental.js +1 -1
  143. package/mobile/dist/components/SafeDepositRental/SafeDepositRental.js.map +1 -1
  144. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js +1 -1
  145. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  146. package/mobile/dist/components/SafeDepositRental/WrapperSelect.js +6 -3
  147. package/mobile/dist/components/SafeDepositRental/WrapperSelect.js.map +1 -1
  148. package/mobile/dist/components/Tabs/Tabs.d.ts +4 -0
  149. package/mobile/dist/components/Tabs/Tabs.js +13 -3
  150. package/mobile/dist/components/Tabs/Tabs.js.map +1 -1
  151. package/mobile/dist/components/Tabs/TabsContent.d.ts +2 -0
  152. package/mobile/dist/components/Tabs/renderLinkTab.d.ts +3 -2
  153. package/mobile/dist/components/Tabs/renderLinkTab.js +4 -1
  154. package/mobile/dist/components/Tabs/renderLinkTab.js.map +1 -1
  155. package/mobile/dist/components/Tabs/renderTab.js +12 -2
  156. package/mobile/dist/components/Tabs/renderTab.js.map +1 -1
  157. package/mobile/dist/react/IntersectionObserverTag.js +7 -3
  158. package/mobile/dist/react/IntersectionObserverTag.js.map +1 -1
  159. package/mobile/dist/ui-kit/BlockWrapper.js +34 -12
  160. package/mobile/dist/ui-kit/BlockWrapper.js.map +1 -1
  161. package/mobile/dist/ui-kit/CurrencyInput/CurrencyInput.js +11 -6
  162. package/mobile/dist/ui-kit/CurrencyInput/CurrencyInput.js.map +1 -1
  163. package/mobile/dist/ui-kit/CurrencyInput/CurrencyInputProps.d.ts +2 -7
  164. package/mobile/dist/ui-kit/CurrencyInput/adjustValue .d.ts +1 -0
  165. package/mobile/dist/ui-kit/CurrencyInput/adjustValue .js +15 -0
  166. package/mobile/dist/ui-kit/CurrencyInput/adjustValue .js.map +1 -0
  167. package/mobile/dist/ui-kit/Input/Input.d.ts +1 -1
  168. package/mobile/dist/ui-kit/Input/Input.js +7 -4
  169. package/mobile/dist/ui-kit/Input/Input.js.map +1 -1
  170. package/mobile/dist/ui-kit/Input/InputProps.d.ts +6 -3
  171. package/mobile/dist/ui-kit/Select/Select.d.ts +10 -4
  172. package/mobile/dist/ui-kit/Select/Select.js +23 -5
  173. package/mobile/dist/ui-kit/Select/Select.js.map +1 -1
  174. package/mobile/dist/utils/changeHashOnObserve.d.ts +9 -1
  175. package/mobile/dist/utils/changeHashOnObserve.js +12 -4
  176. package/mobile/dist/utils/changeHashOnObserve.js.map +1 -1
  177. package/mobile/lib/EventBus/EventMap.d.ts +2 -1
  178. package/mobile/lib/components/Bonus/Bonus.js +11 -2
  179. package/mobile/lib/components/Bonus/Bonus.js.map +1 -1
  180. package/mobile/lib/components/Bonus/BonusContent.d.ts +30 -2
  181. package/mobile/lib/components/CardTransfer/CardTransfer.js +10 -11
  182. package/mobile/lib/components/CardTransfer/CardTransfer.js.map +1 -1
  183. package/mobile/lib/components/CardTransfer/CardTransferContent.d.ts +2 -2
  184. package/mobile/lib/components/ComparisonTable/TableColumn.js +7 -2
  185. package/mobile/lib/components/ComparisonTable/TableColumn.js.map +1 -1
  186. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +2 -2
  187. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
  188. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  189. package/mobile/lib/components/ExchangeRateTile/renderInput.js +2 -2
  190. package/mobile/lib/components/ExchangeRateTile/renderInput.js.map +1 -1
  191. package/mobile/lib/components/GracePeriod/GracePeriod.js +3 -3
  192. package/mobile/lib/components/GracePeriod/GracePeriod.js.map +1 -1
  193. package/mobile/lib/components/GracePeriod/GracePeriodContent.d.ts +1 -1
  194. package/mobile/lib/components/SafeDepositRental/RegionsAndBranches.js +1 -1
  195. package/mobile/lib/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
  196. package/mobile/lib/components/SafeDepositRental/SafeDepositRental.js +1 -1
  197. package/mobile/lib/components/SafeDepositRental/SafeDepositRental.js.map +1 -1
  198. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js +1 -1
  199. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  200. package/mobile/lib/components/SafeDepositRental/WrapperSelect.js +7 -4
  201. package/mobile/lib/components/SafeDepositRental/WrapperSelect.js.map +1 -1
  202. package/mobile/lib/components/Tabs/Tabs.d.ts +4 -0
  203. package/mobile/lib/components/Tabs/Tabs.js +13 -3
  204. package/mobile/lib/components/Tabs/Tabs.js.map +1 -1
  205. package/mobile/lib/components/Tabs/TabsContent.d.ts +2 -0
  206. package/mobile/lib/components/Tabs/renderLinkTab.d.ts +3 -2
  207. package/mobile/lib/components/Tabs/renderLinkTab.js +5 -2
  208. package/mobile/lib/components/Tabs/renderLinkTab.js.map +1 -1
  209. package/mobile/lib/components/Tabs/renderTab.js +12 -2
  210. package/mobile/lib/components/Tabs/renderTab.js.map +1 -1
  211. package/mobile/lib/react/IntersectionObserverTag.js +7 -3
  212. package/mobile/lib/react/IntersectionObserverTag.js.map +1 -1
  213. package/mobile/lib/ui-kit/BlockWrapper.js +35 -13
  214. package/mobile/lib/ui-kit/BlockWrapper.js.map +1 -1
  215. package/mobile/lib/ui-kit/CurrencyInput/CurrencyInput.js +12 -7
  216. package/mobile/lib/ui-kit/CurrencyInput/CurrencyInput.js.map +1 -1
  217. package/mobile/lib/ui-kit/CurrencyInput/CurrencyInputProps.d.ts +2 -7
  218. package/mobile/lib/ui-kit/CurrencyInput/adjustValue .d.ts +1 -0
  219. package/mobile/lib/ui-kit/CurrencyInput/adjustValue .js +12 -0
  220. package/mobile/lib/ui-kit/CurrencyInput/adjustValue .js.map +1 -0
  221. package/mobile/lib/ui-kit/Input/Input.d.ts +1 -1
  222. package/mobile/lib/ui-kit/Input/Input.js +8 -5
  223. package/mobile/lib/ui-kit/Input/Input.js.map +1 -1
  224. package/mobile/lib/ui-kit/Input/InputProps.d.ts +6 -3
  225. package/mobile/lib/ui-kit/Select/Select.d.ts +10 -4
  226. package/mobile/lib/ui-kit/Select/Select.js +24 -6
  227. package/mobile/lib/ui-kit/Select/Select.js.map +1 -1
  228. package/mobile/lib/utils/changeHashOnObserve.d.ts +9 -1
  229. package/mobile/lib/utils/changeHashOnObserve.js +12 -4
  230. package/mobile/lib/utils/changeHashOnObserve.js.map +1 -1
  231. package/mobile/src/EventBus/EventMap.ts +3 -1
  232. package/mobile/src/components/Accordion/Accordion.ui.json +79 -0
  233. package/mobile/src/components/BenefitsBlock/BenefitsBlock.ui.json +16 -0
  234. package/mobile/src/components/Bonus/Bonus.example.json +5 -2
  235. package/mobile/src/components/Bonus/Bonus.tsx +44 -16
  236. package/mobile/src/components/Bonus/Bonus.ui.json +16 -0
  237. package/mobile/src/components/Bonus/BonusContent.ts +33 -2
  238. package/mobile/src/components/BonusBenefitsBlock/BonusBenefitsBlock.example.json +1 -1
  239. package/mobile/src/components/BonusBenefitsBlock/BonusBenefitsBlock.ui.json +11 -0
  240. package/mobile/src/components/Calculator/Calculator.example.json +2 -1
  241. package/mobile/src/components/Calculator/Calculator.ui.json +31 -0
  242. package/mobile/src/components/CardTransfer/CardTransfer.example.json +7 -2
  243. package/mobile/src/components/CardTransfer/CardTransfer.tsx +22 -23
  244. package/mobile/src/components/CardTransfer/CardTransfer.ui.json +1 -0
  245. package/mobile/src/components/CardTransfer/CardTransferContent.ts +2 -2
  246. package/mobile/src/components/Catalog/Catalog.ui.json +1 -0
  247. package/mobile/src/components/ComparisonTable/ComparisonTable.ui.json +1 -0
  248. package/mobile/src/components/ComparisonTable/TableColumn.tsx +17 -11
  249. package/mobile/src/components/ContentPage/ContentPage.page.json +15 -1
  250. package/mobile/src/components/ErrorBlock/ErrorBlock.ui.json +12 -0
  251. package/mobile/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +4 -3
  252. package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.ui.json +1 -0
  253. package/mobile/src/components/ExchangeRateTile/renderInput.tsx +3 -3
  254. package/mobile/src/components/Footer/Footer.ui.json +11 -0
  255. package/mobile/src/components/Gallery/Gallery.ui.json +1 -0
  256. package/mobile/src/components/GracePeriod/GracePeriod.tsx +5 -4
  257. package/mobile/src/components/GracePeriod/GracePeriod.ui.json +15 -0
  258. package/mobile/src/components/GracePeriod/GracePeriodContent.ts +1 -1
  259. package/mobile/src/components/Header/Header.ui.json +11 -0
  260. package/mobile/src/components/Headline/Headline.ui.json +1 -0
  261. package/mobile/src/components/InsuranceAmountBlock/InsuranceAmountBlock.ui.json +15 -0
  262. package/mobile/src/components/LinkDocs/LinkDocs.ui.json +1 -0
  263. package/mobile/src/components/LinkList/LinkList.ui.json +1 -0
  264. package/mobile/src/components/MiniGallery/MiniGallery.ui.json +1 -0
  265. package/mobile/src/components/MobileAppTile/MobileAppTile.ui.json +7 -0
  266. package/mobile/src/components/OfficeServicesBlock/OfficeServicesBlock.ui.json +11 -0
  267. package/mobile/src/components/OtherProducts/OtherProducts.ui.json +76 -0
  268. package/mobile/src/components/PictureText/PictureText.ui.json +1 -0
  269. package/mobile/src/components/Placeholder/Placeholder.ui.json +1 -0
  270. package/mobile/src/components/ProductBlock/ProductBlock.ui.json +12 -0
  271. package/mobile/src/components/ProductGallery/ProductGallery.ui.json +30 -0
  272. package/mobile/src/components/ProductTile/ProductTile.ui.json +1 -0
  273. package/mobile/src/components/PromoTile/PromoTile.ui.json +1 -0
  274. package/mobile/src/components/Recommendation/Recommendation.ui.json +11 -0
  275. package/mobile/src/components/SafeDepositRental/RegionsAndBranches.tsx +4 -4
  276. package/mobile/src/components/SafeDepositRental/SafeDepositRental.tsx +1 -1
  277. package/mobile/src/components/SafeDepositRental/SafeDepositRental.ui.json +1 -0
  278. package/mobile/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +2 -2
  279. package/mobile/src/components/SafeDepositRental/WrapperSelect.tsx +15 -20
  280. package/mobile/src/components/StepsBlock/StepsBlock.ui.json +11 -0
  281. package/mobile/src/components/Tabs/Tabs.tsx +25 -3
  282. package/mobile/src/components/Tabs/Tabs.ui.json +1 -0
  283. package/mobile/src/components/Tabs/TabsContent.ts +2 -0
  284. package/mobile/src/components/Tabs/renderLinkTab.tsx +28 -12
  285. package/mobile/src/components/Tabs/renderTab.tsx +13 -2
  286. package/mobile/src/components/TariffsTable/TariffsTable.ui.json +33 -0
  287. package/mobile/src/components/TextBlock/TextBlock.ui.json +1 -0
  288. package/mobile/src/components/Tile/Tile.ui.json +1 -0
  289. package/mobile/src/react/IntersectionObserverTag.tsx +10 -3
  290. package/mobile/src/ui-kit/BlockWrapper.tsx +45 -18
  291. package/mobile/src/ui-kit/CurrencyInput/CurrencyInput.tsx +21 -36
  292. package/mobile/src/ui-kit/CurrencyInput/CurrencyInputProps.ts +3 -7
  293. package/mobile/src/ui-kit/CurrencyInput/adjustValue .ts +17 -0
  294. package/mobile/src/ui-kit/Input/Input.tsx +37 -16
  295. package/mobile/src/ui-kit/Input/InputProps.ts +6 -3
  296. package/mobile/src/ui-kit/Select/Select.tsx +86 -20
  297. package/mobile/src/utils/changeHashOnObserve.ts +30 -10
  298. package/package.json +6 -3
  299. package/src/EventBus/EventMap.ts +3 -1
  300. package/src/components/Accordion/Accordion.ui.json +79 -0
  301. package/src/components/BenefitsBlock/BenefitsBlock.ui.json +16 -0
  302. package/src/components/Bonus/Bonus.example.json +5 -2
  303. package/src/components/Bonus/Bonus.fixture.tsx +37 -6
  304. package/src/components/Bonus/Bonus.tsx +44 -16
  305. package/src/components/Bonus/Bonus.ui.json +16 -0
  306. package/src/components/Bonus/BonusContent.ts +33 -2
  307. package/src/components/BonusBenefitsBlock/BonusBenefitsBlock.example.json +1 -1
  308. package/src/components/BonusBenefitsBlock/BonusBenefitsBlock.ui.json +11 -0
  309. package/src/components/Calculator/Calculator.example.json +2 -1
  310. package/src/components/Calculator/Calculator.ui.json +31 -0
  311. package/src/components/CardTransfer/CardTransfer.example.json +7 -2
  312. package/src/components/CardTransfer/CardTransfer.fixture.tsx +9 -1
  313. package/src/components/CardTransfer/CardTransfer.tsx +22 -23
  314. package/src/components/CardTransfer/CardTransfer.ui.json +1 -0
  315. package/src/components/CardTransfer/CardTransferContent.ts +2 -2
  316. package/src/components/Catalog/Catalog.ui.json +1 -0
  317. package/src/components/ComparisonTable/ComparisonTable.ui.json +1 -0
  318. package/src/components/ComparisonTable/TableColumn.tsx +17 -11
  319. package/src/components/ContentPage/ContentPage.page.json +15 -1
  320. package/src/components/ErrorBlock/ErrorBlock.ui.json +12 -0
  321. package/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +4 -3
  322. package/src/components/ExchangeRateTile/ExchangeRateTile.ui.json +1 -0
  323. package/src/components/ExchangeRateTile/renderInput.tsx +3 -3
  324. package/src/components/Footer/Footer.ui.json +11 -0
  325. package/src/components/Gallery/Gallery.ui.json +1 -0
  326. package/src/components/GracePeriod/GracePeriod.fixture.tsx +5 -5
  327. package/src/components/GracePeriod/GracePeriod.tsx +5 -4
  328. package/src/components/GracePeriod/GracePeriod.ui.json +15 -0
  329. package/src/components/GracePeriod/GracePeriodContent.ts +1 -1
  330. package/src/components/Header/Header.ui.json +11 -0
  331. package/src/components/Headline/Headline.ui.json +1 -0
  332. package/src/components/InsuranceAmountBlock/InsuranceAmountBlock.ui.json +15 -0
  333. package/src/components/LinkDocs/LinkDocs.ui.json +1 -0
  334. package/src/components/LinkList/LinkList.ui.json +1 -0
  335. package/src/components/MiniGallery/MiniGallery.ui.json +1 -0
  336. package/src/components/MobileAppTile/MobileAppTile.tsx +2 -2
  337. package/src/components/MobileAppTile/MobileAppTile.ui.json +7 -0
  338. package/src/components/OfficeServicesBlock/OfficeServicesBlock.ui.json +11 -0
  339. package/src/components/OtherProducts/OtherProducts.ui.json +76 -0
  340. package/src/components/PictureText/PictureText.ui.json +1 -0
  341. package/src/components/Placeholder/Placeholder.ui.json +1 -0
  342. package/src/components/ProductBlock/ProductBlock.ui.json +12 -0
  343. package/src/components/ProductGallery/ProductGallery.ui.json +30 -0
  344. package/src/components/ProductTile/ProductTile.ui.json +1 -0
  345. package/src/components/PromoTile/PromoTile.ui.json +1 -0
  346. package/src/components/Recommendation/Recommendation.ui.json +11 -0
  347. package/src/components/SafeDepositRental/RegionsAndBranches.tsx +4 -4
  348. package/src/components/SafeDepositRental/SafeDepositRental.tsx +1 -1
  349. package/src/components/SafeDepositRental/SafeDepositRental.ui.json +1 -0
  350. package/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +2 -2
  351. package/src/components/SafeDepositRental/WrapperSelect.tsx +15 -20
  352. package/src/components/StepsBlock/StepsBlock.ui.json +11 -0
  353. package/src/components/Tabs/Tabs.tsx +25 -3
  354. package/src/components/Tabs/Tabs.ui.json +1 -0
  355. package/src/components/Tabs/TabsContent.ts +2 -0
  356. package/src/components/Tabs/renderLinkTab.tsx +28 -12
  357. package/src/components/Tabs/renderTab.tsx +13 -2
  358. package/src/components/TariffsTable/TariffsTable.ui.json +33 -0
  359. package/src/components/TextBlock/TextBlock.ui.json +1 -0
  360. package/src/components/Tile/Tile.ui.json +1 -0
  361. package/src/react/IntersectionObserverTag.tsx +10 -3
  362. package/src/ui-kit/BlockWrapper.tsx +45 -18
  363. package/src/ui-kit/CurrencyInput/CurrencyInput.tsx +21 -36
  364. package/src/ui-kit/CurrencyInput/CurrencyInputProps.ts +3 -7
  365. package/src/ui-kit/CurrencyInput/adjustValue .ts +17 -0
  366. package/src/ui-kit/Input/Input.tsx +37 -16
  367. package/src/ui-kit/Input/InputProps.ts +6 -3
  368. package/src/ui-kit/{SelectCustom/SelectCustom.fixture.tsx → Select/Select.fixture.tsx} +2 -2
  369. package/src/ui-kit/Select/Select.tsx +86 -20
  370. package/src/utils/changeHashOnObserve.ts +30 -10
  371. package/bin/migration-scripts/0.4.5.spec.ts +0 -352
  372. package/dist/components/ExchangeRateTile/renderButton.d.ts +0 -3
  373. package/dist/components/ExchangeRateTile/renderButton.js +0 -9
  374. package/dist/components/ExchangeRateTile/renderButton.js.map +0 -1
  375. package/dist/ui-kit/Select/SelectOption.d.ts +0 -7
  376. package/dist/ui-kit/Select/SelectOption.js +0 -8
  377. package/dist/ui-kit/Select/SelectOption.js.map +0 -1
  378. package/dist/ui-kit/SelectCustom/SelectCustom.d.ts +0 -13
  379. package/dist/ui-kit/SelectCustom/SelectCustom.js +0 -30
  380. package/dist/ui-kit/SelectCustom/SelectCustom.js.map +0 -1
  381. package/lib/components/ExchangeRateTile/renderButton.d.ts +0 -3
  382. package/lib/components/ExchangeRateTile/renderButton.js +0 -6
  383. package/lib/components/ExchangeRateTile/renderButton.js.map +0 -1
  384. package/lib/ui-kit/Select/SelectOption.d.ts +0 -7
  385. package/lib/ui-kit/Select/SelectOption.js +0 -6
  386. package/lib/ui-kit/Select/SelectOption.js.map +0 -1
  387. package/lib/ui-kit/SelectCustom/SelectCustom.d.ts +0 -13
  388. package/lib/ui-kit/SelectCustom/SelectCustom.js +0 -28
  389. package/lib/ui-kit/SelectCustom/SelectCustom.js.map +0 -1
  390. package/mobile/dist/components/ExchangeRateTile/renderButton.d.ts +0 -3
  391. package/mobile/dist/components/ExchangeRateTile/renderButton.js +0 -9
  392. package/mobile/dist/components/ExchangeRateTile/renderButton.js.map +0 -1
  393. package/mobile/dist/ui-kit/Select/SelectOption.d.ts +0 -7
  394. package/mobile/dist/ui-kit/Select/SelectOption.js +0 -8
  395. package/mobile/dist/ui-kit/Select/SelectOption.js.map +0 -1
  396. package/mobile/dist/ui-kit/SelectCustom/SelectCustom.d.ts +0 -13
  397. package/mobile/dist/ui-kit/SelectCustom/SelectCustom.js +0 -30
  398. package/mobile/dist/ui-kit/SelectCustom/SelectCustom.js.map +0 -1
  399. package/mobile/lib/components/ExchangeRateTile/renderButton.d.ts +0 -3
  400. package/mobile/lib/components/ExchangeRateTile/renderButton.js +0 -6
  401. package/mobile/lib/components/ExchangeRateTile/renderButton.js.map +0 -1
  402. package/mobile/lib/ui-kit/Select/SelectOption.d.ts +0 -7
  403. package/mobile/lib/ui-kit/Select/SelectOption.js +0 -6
  404. package/mobile/lib/ui-kit/Select/SelectOption.js.map +0 -1
  405. package/mobile/lib/ui-kit/SelectCustom/SelectCustom.d.ts +0 -13
  406. package/mobile/lib/ui-kit/SelectCustom/SelectCustom.js +0 -28
  407. package/mobile/lib/ui-kit/SelectCustom/SelectCustom.js.map +0 -1
  408. package/mobile/src/components/Blocks.spec.tsx +0 -66
  409. package/mobile/src/components/ContentPage/computeAPIFallback.spec.ts +0 -63
  410. package/mobile/src/components/ContentPage/normalizeBlock.spec.ts +0 -50
  411. package/mobile/src/components/ExchangeRateTile/renderButton.tsx +0 -10
  412. package/mobile/src/components/__snapshots__/Blocks.spec.tsx.snap +0 -1206
  413. package/mobile/src/content-page-repository/mapJSON.spec.ts +0 -28
  414. package/mobile/src/services/sitemap/checkIsHrefSameOrigin.spec.ts +0 -20
  415. package/mobile/src/services/sitemap/isTopItemActive.spec.ts +0 -60
  416. package/mobile/src/services/sitemap/mergeTopItems.spec.ts +0 -20
  417. package/mobile/src/ui-kit/Select/SelectOption.tsx +0 -18
  418. package/mobile/src/ui-kit/SelectCustom/SelectCustom.tsx +0 -91
  419. package/mobile/src/ui-kit/SwipeListControl/utils/getIndexParts.spec.ts +0 -19
  420. package/mobile/src/ui-kit/SwipeListControl/utils/getScrollPoints.spec.ts +0 -42
  421. package/mobile/src/utils/adjustHref.spec.ts +0 -25
  422. package/mobile/src/utils/maxBy.spec.ts +0 -11
  423. package/mobile/src/utils/url.spec.ts +0 -17
  424. package/src/components/Blocks.spec.tsx +0 -66
  425. package/src/components/ContentPage/computeAPIFallback.spec.ts +0 -63
  426. package/src/components/ContentPage/normalizeBlock.mobile.spec.ts +0 -71
  427. package/src/components/ContentPage/normalizeBlock.spec.ts +0 -50
  428. package/src/components/ExchangeRateTile/renderButton.tsx +0 -10
  429. package/src/components/__snapshots__/Blocks.spec.tsx.snap +0 -1206
  430. package/src/content-page-repository/mapJSON.spec.ts +0 -28
  431. package/src/services/sitemap/checkIsHrefSameOrigin.spec.ts +0 -20
  432. package/src/services/sitemap/isTopItemActive.spec.ts +0 -60
  433. package/src/services/sitemap/mergeTopItems.spec.ts +0 -20
  434. package/src/ui-kit/Select/SelectOption.tsx +0 -18
  435. package/src/ui-kit/SelectCustom/SelectCustom.tsx +0 -91
  436. package/src/ui-kit/SwipeListControl/utils/getIndexParts.spec.ts +0 -19
  437. package/src/ui-kit/SwipeListControl/utils/getScrollPoints.spec.ts +0 -42
  438. package/src/utils/adjustHref.spec.ts +0 -25
  439. package/src/utils/maxBy.spec.ts +0 -11
  440. package/src/utils/url.spec.ts +0 -17
@@ -1,27 +1,49 @@
1
1
  import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
- import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { useEffect, useMemo, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
4
4
  import { EventBus } from '../EventBus/EventBus.js';
5
5
  import { changeHashOnObserve } from '../utils/changeHashOnObserve.js';
6
+ const THRESHOLD_ACCURACY = 100; // Decimals number (100 is for two decimals number, 0.**)
7
+ const THRESHOLD_ARRAY_LENGTH = 18;
8
+ const THRESHOLD_ARRAY_START_VALUE = (THRESHOLD_ACCURACY - THRESHOLD_ARRAY_LENGTH) / THRESHOLD_ACCURACY;
6
9
  export const BlockWrapper = JSX(({ anchor, className, context, children, tag = 'section', labels }) => {
7
10
  const Tag = tag;
8
11
  const { IntersectionObserverTag } = context;
9
12
  const [shouldRenderBlock, setShouldRenderBlock] = useState(true);
10
- useEffect(() => EventBus.inst.subscribe('tab', (event) => {
11
- if (event.type === 'group') {
12
- setShouldRenderBlock(!labels?.length || !event.label || labels.includes(event.label));
13
- }
14
- else {
15
- setShouldRenderBlock(true);
16
- scrollToBlock(event.label);
17
- }
18
- }), [labels]);
13
+ const anchorClickRef = useRef({});
14
+ const observerCallback = useMemo(() => changeHashOnObserve({ anchor, anchorClickRef }), [anchor, anchorClickRef]);
15
+ useEffect(() => {
16
+ const anchorClickCleanup = EventBus.inst.subscribe('anchorClick', (e) => {
17
+ anchorClickRef.current = e;
18
+ });
19
+ const tabCleanup = EventBus.inst.subscribe('tab', (event) => {
20
+ if (event.type === 'group') {
21
+ setShouldRenderBlock(!labels?.length || !event.label || labels.includes(event.label));
22
+ }
23
+ else {
24
+ changeHash(event.label);
25
+ setShouldRenderBlock(true);
26
+ }
27
+ });
28
+ return () => {
29
+ anchorClickCleanup();
30
+ tabCleanup();
31
+ };
32
+ }, [anchorClickRef]);
19
33
  if (!shouldRenderBlock) {
20
34
  return null;
21
35
  }
22
- return anchor ? (_jsx(IntersectionObserverTag, { tag: tag, className: className, observerCallback: changeHashOnObserve, observerOptions: { threshold: 1 }, anchor: anchor, children: children })) : (_jsx(Tag, { className: className, children: children }));
36
+ return anchor ? (_jsx(IntersectionObserverTag, { tag: tag, className: className, observerCallback: observerCallback, observerOptions: {
37
+ threshold: new Array(THRESHOLD_ARRAY_LENGTH).fill(0).map(getIntersectionThreshold),
38
+ }, anchor: anchor, children: children })) : (_jsx(Tag, { className: className, children: children }));
23
39
  });
24
- function scrollToBlock(label) {
25
- setTimeout(() => globalThis.document.getElementById(`#${label}`)?.scrollIntoView({ behavior: 'smooth' }));
40
+ function getIntersectionThreshold(_, i) {
41
+ const value = (i + 1) / THRESHOLD_ACCURACY + THRESHOLD_ARRAY_START_VALUE;
42
+ return Math.round(value * THRESHOLD_ACCURACY) / THRESHOLD_ACCURACY;
43
+ }
44
+ function changeHash(label) {
45
+ if (label) {
46
+ globalThis.document.location.hash = label;
47
+ }
26
48
  }
27
49
  //# sourceMappingURL=BlockWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockWrapper.js","sourceRoot":"","sources":["../../src/ui-kit/BlockWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AASnE,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAC7B,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IACpE,MAAM,GAAG,GAAQ,GAAG,CAAC;IAErB,MAAM,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjE,SAAS,CACP,GAAG,EAAE,CACH,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,oBAAoB,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SACvF;aAAM;YACL,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC3B,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC,EACJ,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,CACd,KAAC,uBAAuB,IACtB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,mBAAmB,EACrC,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EACjC,MAAM,EAAE,MAAM,YAEb,QAAQ,GACe,CAC3B,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,IAAC,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAO,CAC5C,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,SAAS,aAAa,CAAC,KAAc;IACnC,UAAU,CAAC,GAAG,EAAE,CACd,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CACxF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"BlockWrapper.js","sourceRoot":"","sources":["../../src/ui-kit/BlockWrapper.tsx"],"names":[],"mappings":"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"}
@@ -1,14 +1,19 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
1
+ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
3
  import { clamp } from '../../utils/clamp.js';
4
- export const CurrencyInput = JSX(({ className = '', label, onChange, value = '', minValue = 0, maxValue = 300000, ...inputProps }) => {
5
- const handleChange = (e) => {
4
+ import { adjustValue } from './adjustValue .js';
5
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
6
+ import { Input } from '../Input/Input.js';
7
+ export const CurrencyInput = JSX(({ className = '', onChange, minValue = 0, maxValue = 300000, ...inputProps }) => {
8
+ const handleChange = useCallback((inputValue) => {
6
9
  if (!onChange) {
7
10
  return;
8
11
  }
9
- const newValue = e.target.value === '' ? '' : String(clamp(e.target.value, minValue, maxValue));
10
- onChange(newValue);
11
- };
12
- return (_jsxs("div", { className: className, children: [label ? _jsx("label", { className: "block text-m-light mb-2", children: label }) : null, _jsxs("div", { className: "h-[56px] relative flex items-center", children: [_jsx("input", { type: "number", className: 'text-l pl-4 pr-8 w-full h-full rounded-md border border-solid border-main-stroke hover:border-primary-hover active:border-primary-text focus:border-primary-text', onChange: handleChange, value: value, min: minValue, max: maxValue, ...inputProps }), _jsx("span", { className: "text-xl-light absolute right-4", children: "\u20BD" })] })] }));
12
+ const adjustedVal = adjustValue(inputValue);
13
+ const clampVal = getClampValue(adjustedVal, clamp(Number(adjustedVal), minValue, maxValue));
14
+ onChange(String(clampVal));
15
+ }, [onChange]);
16
+ return (_jsx(Input, { className: className, inputClassName: "w-full", onChange: handleChange, ...inputProps, children: _jsx("span", { className: "text-xl-light absolute right-4 bottom-4", children: "\u20BD" }) }));
13
17
  });
18
+ const getClampValue = (val, clampVal) => Number(val) === clampVal ? val : String(clampVal);
14
19
  //# sourceMappingURL=CurrencyInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CurrencyInput.js","sourceRoot":"","sources":["../../../src/ui-kit/CurrencyInput/CurrencyInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAC9B,CAAC,EACC,SAAS,GAAG,EAAE,EACd,KAAK,EACL,QAAQ,EACR,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,CAAC,EACZ,QAAQ,GAAG,MAAM,EACjB,GAAG,UAAU,EACd,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,CAAC,CAAM,EAAE,EAAE;QAC9B,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAED,MAAM,QAAQ,GACZ,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE3F,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,aACtB,KAAK,CAAC,CAAC,CAAC,gBAAO,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAS,CAAC,CAAC,CAAC,IAAI,EAC1E,eAAK,SAAS,EAAC,qCAAqC,aAClD,gBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EACP,kKAAkK,EAEpK,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,QAAQ,KACT,UAAU,GACd,EACF,eAAM,SAAS,EAAC,gCAAgC,uBAAS,IACrD,IACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"CurrencyInput.js","sourceRoot":"","sources":["../../../src/ui-kit/CurrencyInput/CurrencyInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAC9B,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IAC/E,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,UAAkB,EAAE,EAAE;QACrB,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5F,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,CACL,KAAC,KAAK,IAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAC,QAAQ,EAAC,QAAQ,EAAE,YAAY,KAAM,UAAU,YACzF,eAAM,SAAS,EAAC,yCAAyC,uBAAS,GAC5D,CACT,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,QAAQ,EAAE,EAAE,CAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC"}
@@ -1,10 +1,5 @@
1
- export declare type CurrencyInputProps = {
2
- className?: string;
3
- label?: string;
4
- onChange?: (value: string) => void;
5
- name?: string;
6
- value?: string;
7
- placeholder?: string;
1
+ import type { InputProps } from '../Input/InputProps';
2
+ export declare type CurrencyInputProps = InputProps & {
8
3
  minValue?: number;
9
4
  maxValue?: number;
10
5
  };
@@ -0,0 +1 @@
1
+ export declare const adjustValue: (val: string) => string;
@@ -0,0 +1,12 @@
1
+ export const adjustValue = (val) => onlyOneDot(setZeroStart(replaceCommaToDot(val)));
2
+ const onlyOneDot = (val) => {
3
+ const matches = val.match(/\./g) || [];
4
+ return matches.length > 1 ? val.slice(0, val.lastIndexOf('.')) : val;
5
+ };
6
+ const setZeroStart = (val) => {
7
+ const isZeroStart = val.indexOf('0') === 0 && val.length === 2;
8
+ const newVal = isZeroStart ? val.replace('0', '0.') : val;
9
+ return newVal.startsWith('.') ? newVal.replace('.', '0.') : newVal;
10
+ };
11
+ const replaceCommaToDot = (val) => String(val.replace(',', '.').replace(/[^.\d]/g, ''));
12
+ //# sourceMappingURL=adjustValue%20.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjustValue .js","sourceRoot":"","sources":["../../../src/ui-kit/CurrencyInput/adjustValue .ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE7F,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAEvC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE1D,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAU,EAAE,CAChD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- import { InputProps } from './InputProps';
1
+ import type { InputProps } from './InputProps';
2
2
  export declare const Input: import("@redneckz/uni-jsx").UNIComponent<InputProps, any, any>;
@@ -1,10 +1,13 @@
1
- import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
- export const Input = JSX(({ className = '', id, name, type = 'text', placeholder, pattern, value, onChange }) => {
4
- const handleChange = (e) => {
3
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
4
+ export const Input = JSX(({ className = '', inputClassName = '', id, name, type = 'text', label, value = '', children, onChange, ...inputProps }) => {
5
+ const handleChange = useCallback((e) => {
5
6
  const validInputValue = e.target.validity.valid ? e.target.value : value;
6
7
  onChange(validInputValue);
7
- };
8
- return (_jsx("input", { className: `border rounded-md border-main-stroke hover:border-primary-hover active:border-primary-text focus:border-primary-text text-primary-text outline-none ${className}`, id: id, name: name || id, type: type, pattern: pattern, placeholder: placeholder, value: value, onChange: handleChange }));
8
+ }, [onChange]);
9
+ const paddingStyle = children ? 'pr-8' : '';
10
+ return (_jsxs("div", { className: `relative ${className}`, children: [label ? _jsx("label", { className: "block text-m-light mb-2", children: label }) : null, _jsx("input", { className: `w-full border rounded-md border-main-stroke hover:border-primary-hover active:border-primary-text
11
+ focus:border-primary-text text-primary-text outline-none p-4 ${paddingStyle} ${inputClassName}`, id: id, name: name || id, type: type, value: value, onChange: handleChange, ...inputProps }), children] }));
9
12
  });
10
13
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/ui-kit/Input/Input.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CACtB,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrF,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC,CAAC,KAAK,CAAC;QACrF,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAO,CACL,gBACE,SAAS,EAAE,uJAAuJ,SAAS,EAAE,EAC7K,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,IAAI,EAAE,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,GACtB,CACH,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/ui-kit/Input/Input.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CACtB,CAAC,EACC,SAAS,GAAG,EAAE,EACd,cAAc,GAAG,EAAE,EACnB,EAAE,EACF,IAAI,EACJ,IAAI,GAAG,MAAM,EACb,KAAK,EACL,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,QAAQ,EACR,GAAG,UAAU,EACd,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,CAAC,EAAE,EAAE;QACJ,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC,CAAC,KAAK,CAAC;QACrF,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5C,OAAO,CACL,eAAK,SAAS,EAAE,YAAY,SAAS,EAAE,aACpC,KAAK,CAAC,CAAC,CAAC,gBAAO,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAS,CAAC,CAAC,CAAC,IAAI,EAC1E,gBACE,SAAS,EAAE;yEACoD,YAAY,IAAI,cAAc,EAAE,EAC/F,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,IAAI,EAAE,EAChB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,KAClB,UAAU,GACd,EACD,QAAQ,IACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -1,11 +1,14 @@
1
1
  import type { InputTypes } from '../../model/InputTypes';
2
- export interface InputProps {
2
+ import type { LabelProps } from '../../model/HeadlineType';
3
+ export declare type InputProps = LabelProps & {
3
4
  className?: string;
5
+ label?: string;
6
+ inputClassName?: string;
4
7
  id?: string;
5
8
  name?: string;
6
9
  type?: InputTypes;
7
10
  placeholder?: string;
8
11
  pattern?: string;
9
- value: string;
12
+ value?: string;
10
13
  onChange: (value: string) => void;
11
- }
14
+ };
@@ -1,8 +1,14 @@
1
+ export interface OptionProps {
2
+ key: string;
3
+ text: string;
4
+ }
1
5
  export interface SelectProps {
2
6
  className?: string;
3
- id?: string;
4
- name?: string;
5
- value: string;
6
- onChange: (value: string) => void;
7
+ label?: string;
8
+ value?: OptionProps;
9
+ onChange: (value: OptionProps) => void;
10
+ options: OptionProps[];
11
+ isBorder?: boolean;
12
+ placeholder?: string;
7
13
  }
8
14
  export declare const Select: import("@redneckz/uni-jsx").UNIComponent<SelectProps, any, any>;
@@ -1,9 +1,27 @@
1
- import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
- const selectStyle = {
4
- background: `url('/icons/ArrowDownIcon.svg') right 16px top 50% / 21px no-repeat`,
5
- };
6
- export const Select = JSX(({ className = '', id, name, children, value, onChange }) => {
7
- return (_jsx("select", { className: `appearance-none pl-0.5 ${className}`, style: selectStyle, id: id, name: name || id, value: value, onChange: (e) => onChange(e.target.value), placeholder: "", children: children }));
3
+ import { Icon } from '../Icon/Icon.js';
4
+ import { useState, useEffect } from '@redneckz/uni-jsx/lib/hooks';
5
+ export const Select = JSX(({ className = '', isBorder = true, label, options = [], value, onChange, placeholder = '' }) => {
6
+ const [selectedItem, setSelectedItem] = useState(options[0] || { key: '', text: '' });
7
+ const [isOpen, setIsOpen] = useState(false);
8
+ const choiceOption = (option) => {
9
+ setSelectedItem(option);
10
+ setIsOpen(false);
11
+ onChange(option);
12
+ };
13
+ const isSelected = (option) => Boolean(option.key === selectedItem.key);
14
+ useEffect(() => {
15
+ setSelectedItem(value || { key: '', text: '' });
16
+ }, [value]);
17
+ return (_jsxs("div", { className: `${className}`, children: [label ? _jsx("span", { className: "mb-2 flex", children: label }) : null, _jsxs("div", { className: `relative ${isOpen ? 'z-20' : 'z-10'}`, children: [_jsxs("div", { className: `text-m-light flex justify-between items-center mb-0.5 text-primary-text cursor-pointer
18
+ ${getBorderStyle(isBorder)}`, onClick: () => setIsOpen(!isOpen), children: [_jsx("p", { className: "p-4 pr-8 h-[56px] overflow-hidden text-ellipsis whitespace-nowrap", children: selectedItem?.text || placeholder }), _jsx(Icon, { name: "ArrowUpIcon", width: "16", height: "16", className: `absolute right-3 ${isOpen ? '' : 'rotate-180'}` })] }), options?.length ? (_jsx("div", { className: `h-0 ${renderOptionsStyle(isOpen)}`, children: _jsx("div", { className: `bg-white text-l max-h-[256px] overflow-y-auto overflow-x-hidden rounded-md shadow-[0_4px_25px_rgba(0,0,0,0.07)]`, children: options.map(renderOption(choiceOption, isOpen, isSelected)) }) })) : null] })] }));
8
19
  });
20
+ const renderOptionsStyle = (isOpen) => (isOpen ? '' : 'overflow-hidden');
21
+ const renderOption = (choiceOption, isOpen, isSelected) => (option, i) => {
22
+ return (_jsxs("div", { onClick: () => {
23
+ choiceOption(option);
24
+ }, className: "flex px-4 py-3 cursor-pointer hover:bg-main-divider pr-11 relative", children: [_jsx("span", { className: "min-h-6", children: option.text }), _jsx(Icon, { name: "DoneSimpleIcon", width: "16", height: "16", className: ['absolute right-4 pt-0.5', isSelected(option) && isOpen ? '' : 'hidden'].join(' ') })] }, String(i)));
25
+ };
26
+ const getBorderStyle = (isBorder) => isBorder ? 'border border-main-stroke rounded-md hover:border-primary-hover' : '';
9
27
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/ui-kit/Select/Select.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAUxC,MAAM,WAAW,GAAG;IAClB,UAAU,EAAE,qEAAqE;CAClF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CACvB,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1D,OAAO,CACL,iBACE,SAAS,EAAE,0BAA0B,SAAS,EAAE,EAChD,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,IAAI,EAAE,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAe,CAAC,EACnD,WAAW,EAAC,EAAE,YAEb,QAAQ,GACF,CACV,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/ui-kit/Select/Select.tsx"],"names":[],"mappings":"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"}
@@ -1 +1,9 @@
1
- export declare const changeHashOnObserve: (entries: IntersectionObserverEntry[]) => void;
1
+ import { AnchorClickScrollingEvent } from '../components/Tabs/Tabs';
2
+ interface ChangeHashOnObserveProps {
3
+ anchor?: string;
4
+ anchorClickRef?: {
5
+ current: AnchorClickScrollingEvent | null;
6
+ };
7
+ }
8
+ export declare const changeHashOnObserve: ({ anchor, anchorClickRef }: ChangeHashOnObserveProps) => (entries: IntersectionObserverEntry[]) => void;
9
+ export {};
@@ -1,10 +1,18 @@
1
- export const changeHashOnObserve = (entries) => {
2
- if (!entries.length) {
1
+ import { EventBus } from '../EventBus/EventBus.js';
2
+ export const changeHashOnObserve = ({ anchor, anchorClickRef }) => (entries) => {
3
+ if (!entries?.length) {
3
4
  return;
4
5
  }
5
6
  const [entry] = entries;
6
- if (entry.isIntersecting) {
7
- // Here must be logic for block intersection event
7
+ if (!entry.isIntersecting || entry.boundingClientRect.top > 150) {
8
+ return;
9
+ }
10
+ if (anchorClickRef?.current?.isScrolling && anchorClickRef.current.label === `#${anchor}`) {
11
+ EventBus.inst.fire('anchorClick', { isScrolling: false, label: undefined });
12
+ EventBus.inst.fire('tab', { type: 'link', label: anchor });
13
+ }
14
+ else if (!anchorClickRef?.current?.isScrolling) {
15
+ EventBus.inst.fire('tab', { type: 'link', label: anchor });
8
16
  }
9
17
  };
10
18
  //# sourceMappingURL=changeHashOnObserve.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"changeHashOnObserve.js","sourceRoot":"","sources":["../../src/utils/changeHashOnObserve.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAoC,EAAE,EAAE;IAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,OAAO;KACR;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAExB,IAAI,KAAK,CAAC,cAAc,EAAE;QACxB,kDAAkD;KACnD;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"changeHashOnObserve.js","sourceRoot":"","sources":["../../src/utils/changeHashOnObserve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAShD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,CAAC,EAAE,MAAM,EAAE,cAAc,EAA4B,EAAE,EAAE,CACzD,CAAC,OAAoC,EAAE,EAAE;IACvC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;QACpB,OAAO;KACR;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAExB,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,kBAAkB,CAAC,GAAG,GAAG,GAAG,EAAE;QAC/D,OAAO;KACR;IAED,IAAI,cAAc,EAAE,OAAO,EAAE,WAAW,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,MAAM,EAAE,EAAE;QACzF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5E,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5D;SAAM,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE;QAChD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5D;AACH,CAAC,CAAC"}
@@ -13,6 +13,7 @@
13
13
  const useEffect = lazyHook('useEffect');
14
14
  const useCallback = lazyHook('useCallback');
15
15
  const useMemo = lazyHook('useMemo');
16
+ const useRef = lazyHook('useRef');
16
17
 
17
18
  const setup = (_jsx, _jsxs) => {
18
19
  globalThis._uni = {
@@ -1017,34 +1018,65 @@
1017
1018
  }
1018
1019
  }
1019
1020
 
1020
- const changeHashOnObserve = (entries) => {
1021
- if (!entries.length) {
1021
+ const changeHashOnObserve = ({ anchor, anchorClickRef }) => (entries) => {
1022
+ if (!entries?.length) {
1022
1023
  return;
1023
1024
  }
1024
1025
  const [entry] = entries;
1025
- if (entry.isIntersecting) ;
1026
+ if (!entry.isIntersecting || entry.boundingClientRect.top > 150) {
1027
+ return;
1028
+ }
1029
+ if (anchorClickRef?.current?.isScrolling && anchorClickRef.current.label === `#${anchor}`) {
1030
+ EventBus.inst.fire('anchorClick', { isScrolling: false, label: undefined });
1031
+ EventBus.inst.fire('tab', { type: 'link', label: anchor });
1032
+ }
1033
+ else if (!anchorClickRef?.current?.isScrolling) {
1034
+ EventBus.inst.fire('tab', { type: 'link', label: anchor });
1035
+ }
1026
1036
  };
1027
1037
 
1038
+ const THRESHOLD_ACCURACY = 100; // Decimals number (100 is for two decimals number, 0.**)
1039
+ const THRESHOLD_ARRAY_LENGTH = 18;
1040
+ const THRESHOLD_ARRAY_START_VALUE = (THRESHOLD_ACCURACY - THRESHOLD_ARRAY_LENGTH) / THRESHOLD_ACCURACY;
1028
1041
  const BlockWrapper = JSX(({ anchor, className, context, children, tag = 'section', labels }) => {
1029
1042
  const Tag = tag;
1030
1043
  const { IntersectionObserverTag } = context;
1031
1044
  const [shouldRenderBlock, setShouldRenderBlock] = useState(true);
1032
- useEffect(() => EventBus.inst.subscribe('tab', (event) => {
1033
- if (event.type === 'group') {
1034
- setShouldRenderBlock(!labels?.length || !event.label || labels.includes(event.label));
1035
- }
1036
- else {
1037
- setShouldRenderBlock(true);
1038
- scrollToBlock(event.label);
1039
- }
1040
- }), [labels]);
1045
+ const anchorClickRef = useRef({});
1046
+ const observerCallback = useMemo(() => changeHashOnObserve({ anchor, anchorClickRef }), [anchor, anchorClickRef]);
1047
+ useEffect(() => {
1048
+ const anchorClickCleanup = EventBus.inst.subscribe('anchorClick', (e) => {
1049
+ anchorClickRef.current = e;
1050
+ });
1051
+ const tabCleanup = EventBus.inst.subscribe('tab', (event) => {
1052
+ if (event.type === 'group') {
1053
+ setShouldRenderBlock(!labels?.length || !event.label || labels.includes(event.label));
1054
+ }
1055
+ else {
1056
+ changeHash(event.label);
1057
+ setShouldRenderBlock(true);
1058
+ }
1059
+ });
1060
+ return () => {
1061
+ anchorClickCleanup();
1062
+ tabCleanup();
1063
+ };
1064
+ }, [anchorClickRef]);
1041
1065
  if (!shouldRenderBlock) {
1042
1066
  return null;
1043
1067
  }
1044
- return anchor ? (jsx(IntersectionObserverTag, { tag: tag, className: className, observerCallback: changeHashOnObserve, observerOptions: { threshold: 1 }, anchor: anchor, children: children })) : (jsx(Tag, { className: className, children: children }));
1068
+ return anchor ? (jsx(IntersectionObserverTag, { tag: tag, className: className, observerCallback: observerCallback, observerOptions: {
1069
+ threshold: new Array(THRESHOLD_ARRAY_LENGTH).fill(0).map(getIntersectionThreshold),
1070
+ }, anchor: anchor, children: children })) : (jsx(Tag, { className: className, children: children }));
1045
1071
  });
1046
- function scrollToBlock(label) {
1047
- setTimeout(() => globalThis.document.getElementById(`#${label}`)?.scrollIntoView({ behavior: 'smooth' }));
1072
+ function getIntersectionThreshold(_, i) {
1073
+ const value = (i + 1) / THRESHOLD_ACCURACY + THRESHOLD_ARRAY_START_VALUE;
1074
+ return Math.round(value * THRESHOLD_ACCURACY) / THRESHOLD_ACCURACY;
1075
+ }
1076
+ function changeHash(label) {
1077
+ if (label) {
1078
+ globalThis.document.location.hash = label;
1079
+ }
1048
1080
  }
1049
1081
 
1050
1082
  const LinkList = JSX(({ className = '', documents, ...rest }) => {
@@ -1136,9 +1168,14 @@
1136
1168
  const buttonVersion = isFillGradient ? 'secondary' : 'primary';
1137
1169
  return (jsxs("div", { className: `border border-main-stroke rounded-md p-4 mb-3.5 ${gradientClassName}`, role: "row", children: [jsx(HeaderCell, { ...header, isFillGradient: isFillGradient }), columnDataView?.length
1138
1170
  ? columnDataView.map(({ rowHeader, cell }, i) => (jsx(TableCell, { cell: cell, rowHeader: rowHeader, isFillGradient: isFillGradient }, String(i))))
1139
- : null, showRow && renderButton({ header, buttonVersion }), renderToggleButton({ onToggleColumn, isFillGradient, showRow })] }));
1171
+ : null, showRow ? renderButton({ header, buttonVersion }) : null, renderToggleButton({ onToggleColumn, isFillGradient, showRow })] }));
1140
1172
  });
1141
- const renderButton = ({ header, buttonVersion }) => (jsx(Button, { href: header.link.href, target: header.link.target, version: buttonVersion, className: "text-s font-medium mt-4 py-[11px]", children: header.link.text }));
1173
+ const renderButton = ({ header, buttonVersion }) => {
1174
+ if (!header.link) {
1175
+ return null;
1176
+ }
1177
+ return (jsx(Button, { href: header.link.href, target: header.link.target, version: buttonVersion, className: "text-s font-medium mt-4 py-[11px]", children: header.link.text }));
1178
+ };
1142
1179
  const renderToggleButton = ({ onToggleColumn, isFillGradient, showRow }) => (jsx("div", { className: "mt-5", role: "cell", children: jsx("a", { role: "link", onClick: onToggleColumn, className: `text-s font-medium cursor-pointer ${isFillGradient ? 'text-white/80' : 'text-primary-main'}`, children: !showRow ? 'Показать описание' : 'Скрыть' }) }));
1143
1180
 
1144
1181
  const ComparisonTable = JSX(({ className, context, title, rowHeaders, columns, visibleRowLength = 0, isColoredFirstColumn = false, orientation = 'vertical', }) => {
@@ -1359,38 +1396,17 @@
1359
1396
 
1360
1397
  const CurrentLocation = JSX(({ className = '', address, distance }) => (jsxs("div", { className: `flex ${className}`, children: [jsx(Img, { image: { icon: 'GpsIcon' }, width: "24", height: "24", asSVG: true }), jsxs("div", { className: "ml-3", children: [address ? jsx("p", { className: "text-primary-main m-0 mb-1 text-l", children: address }) : null, distance ? (jsxs("p", { className: "text-secondary-text m-0 text-m-light", children: ["\u041A\u0443\u0440\u0441 \u0443\u043A\u0430\u0437\u0430\u043D \u0434\u043B\u044F \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043E \u043E\u0444\u0438\u0441\u0430 - ", distance] })) : null] })] })));
1361
1398
 
1362
- const calculateResult = (value, rate, precision) => {
1363
- const result = Number(formatValue(value)) * Math.pow(rate, precision ? -1 : 1);
1364
- return Number.isInteger(result) ? result : roundTo(result);
1365
- };
1366
- const formatValue = (value) => value.replace(/[^\d.,]/g, '').replace(',', '.');
1367
-
1368
- const tableFunc = (table) => (input) => {
1369
- const [, output] = table.find(([predicate]) => predicate(input)) || [];
1370
- return output;
1371
- };
1372
-
1373
- const callbackCurrencySelect = (props) => tableFunc([
1374
- [
1375
- (_) => _.value !== Currency.RUB && _.oppositeValue !== Currency.RUB,
1376
- () => props.handleConvert(props.value, Currency.RUB),
1377
- ],
1378
- [
1379
- (_) => _.value === Currency.RUB && _.oppositeValue === Currency.RUB,
1380
- () => props.handleConvert(props.value, Currency.USD),
1381
- ],
1382
- [() => true, () => props.handleConvert(props.value)],
1383
- ])(props)?.();
1384
-
1385
- const Input = JSX(({ className = '', id, name, type = 'text', placeholder, pattern, value, onChange }) => {
1386
- const handleChange = (e) => {
1399
+ const Input = JSX(({ className = '', inputClassName = '', id, name, type = 'text', label, value = '', children, onChange, ...inputProps }) => {
1400
+ const handleChange = useCallback((e) => {
1387
1401
  const validInputValue = e.target.validity.valid ? e.target.value : value;
1388
1402
  onChange(validInputValue);
1389
- };
1390
- return (jsx("input", { className: `border rounded-md border-main-stroke hover:border-primary-hover active:border-primary-text focus:border-primary-text text-primary-text outline-none ${className}`, id: id, name: name || id, type: type, pattern: pattern, placeholder: placeholder, value: value, onChange: handleChange }));
1403
+ }, [onChange]);
1404
+ const paddingStyle = children ? 'pr-8' : '';
1405
+ return (jsxs("div", { className: `relative ${className}`, children: [label ? jsx("label", { className: "block text-m-light mb-2", children: label }) : null, jsx("input", { className: `w-full border rounded-md border-main-stroke hover:border-primary-hover active:border-primary-text
1406
+ focus:border-primary-text text-primary-text outline-none p-4 ${paddingStyle} ${inputClassName}`, id: id, name: name || id, type: type, value: value, onChange: handleChange, ...inputProps }), children] }));
1391
1407
  });
1392
1408
 
1393
- const SelectCustom = JSX(({ className = '', isBorder = true, label, options = [], value, onChange }) => {
1409
+ const Select = JSX(({ className = '', isBorder = true, label, options = [], value, onChange, placeholder = '' }) => {
1394
1410
  const [selectedItem, setSelectedItem] = useState(options[0] || { key: '', text: '' });
1395
1411
  const [isOpen, setIsOpen] = useState(false);
1396
1412
  const choiceOption = (option) => {
@@ -1402,25 +1418,47 @@
1402
1418
  useEffect(() => {
1403
1419
  setSelectedItem(value || { key: '', text: '' });
1404
1420
  }, [value]);
1405
- return (jsxs("div", { className: `${isOpen ? 'z-10' : ''} ${className}`, children: [label ? jsx("span", { className: "mb-2", children: label }) : null, jsxs("div", { className: `relative w-fit`, children: [jsxs("div", { className: `text-m-light flex justify-between items-center min-h-[56px] mb-0.5 p-4 pr-8 text-primary-text cursor-pointer
1406
- ${getBorderStyle(isBorder)}`, onClick: () => setIsOpen(!isOpen), children: [selectedItem.text, jsx(Icon, { name: "ArrowUpIcon", width: "16", height: "16", className: `absolute right-3 ${isOpen ? '' : 'rotate-180'}` })] }), options.length > 0 ? (jsx("div", { className: `h-0 ${isOpen ? '' : 'overflow-hidden'}`, children: jsx("div", { className: `bg-white text-l rounded-md`, children: options.map(renderOption(choiceOption, isOpen, isSelected)) }) })) : null] })] }));
1421
+ return (jsxs("div", { className: `${className}`, children: [label ? jsx("span", { className: "mb-2 flex", children: label }) : null, jsxs("div", { className: `relative ${isOpen ? 'z-20' : 'z-10'}`, children: [jsxs("div", { className: `text-m-light flex justify-between items-center mb-0.5 text-primary-text cursor-pointer
1422
+ ${getBorderStyle(isBorder)}`, onClick: () => setIsOpen(!isOpen), children: [jsx("p", { className: "p-4 pr-8 h-[56px] overflow-hidden text-ellipsis whitespace-nowrap", children: selectedItem?.text || placeholder }), jsx(Icon, { name: "ArrowUpIcon", width: "16", height: "16", className: `absolute right-3 ${isOpen ? '' : 'rotate-180'}` })] }), options?.length ? (jsx("div", { className: `h-0 ${renderOptionsStyle(isOpen)}`, children: jsx("div", { className: `bg-white text-l max-h-[256px] overflow-y-auto overflow-x-hidden rounded-md shadow-[0_4px_25px_rgba(0,0,0,0.07)]`, children: options.map(renderOption(choiceOption, isOpen, isSelected)) }) })) : null] })] }));
1407
1423
  });
1424
+ const renderOptionsStyle = (isOpen) => (isOpen ? '' : 'overflow-hidden');
1408
1425
  const renderOption = (choiceOption, isOpen, isSelected) => (option, i) => {
1409
1426
  return (jsxs("div", { onClick: () => {
1410
1427
  choiceOption(option);
1411
- }, className: "flex px-4 py-3 cursor-pointer hover:bg-main-divider pr-11", children: [jsx("span", { children: option.text }), jsx(Icon, { name: "DoneSimpleIcon", width: "16", height: "16", className: ['absolute right-4 pt-0.5', isSelected(option) && isOpen ? '' : 'hidden'].join(' ') })] }, String(i)));
1428
+ }, className: "flex px-4 py-3 cursor-pointer hover:bg-main-divider pr-11 relative", children: [jsx("span", { className: "min-h-6", children: option.text }), jsx(Icon, { name: "DoneSimpleIcon", width: "16", height: "16", className: ['absolute right-4 pt-0.5', isSelected(option) && isOpen ? '' : 'hidden'].join(' ') })] }, String(i)));
1412
1429
  };
1413
- function getBorderStyle(isBorder) {
1414
- return isBorder ? 'border border-main-stroke rounded-md hover:border-primary-hover' : '';
1415
- }
1430
+ const getBorderStyle = (isBorder) => isBorder ? 'border border-main-stroke rounded-md hover:border-primary-hover' : '';
1416
1431
 
1417
1432
  function renderInput(props) {
1418
1433
  const { placeholder, rates, selected, value, setValue, setSelected } = props;
1419
1434
  const ratesOptions = rates.map((_) => ({ key: _.code ?? '', text: _.code ?? '' }));
1420
1435
  const selectedValue = { key: selected, text: selected };
1421
- return (jsxs("div", { className: "relative flex", children: [jsx(Input, { className: "shrink-0 h-14 pl-4 pt-4 pb-4 text-l w-full appearance-none mr-[-90px]", placeholder: placeholder, type: "text", value: value, onChange: setValue }), ratesOptions.length ? (jsx(SelectCustom, { isBorder: false, onChange: (_) => setSelected(_.key), options: ratesOptions, value: selectedValue })) : null] }));
1436
+ return (jsxs("div", { className: "relative flex", children: [jsx(Input, { className: "shrink-0 h-14 pl-4 pt-4 pb-4 text-l w-full appearance-none mr-[-90px]", placeholder: placeholder, type: "text", value: value, onChange: setValue }), ratesOptions.length ? (jsx(Select, { isBorder: false, onChange: (_) => setSelected(_.key), options: ratesOptions, value: selectedValue })) : null] }));
1422
1437
  }
1423
1438
 
1439
+ const calculateResult = (value, rate, precision) => {
1440
+ const result = Number(formatValue(value)) * Math.pow(rate, precision ? -1 : 1);
1441
+ return Number.isInteger(result) ? result : roundTo(result);
1442
+ };
1443
+ const formatValue = (value) => value.replace(/[^\d.,]/g, '').replace(',', '.');
1444
+
1445
+ const tableFunc = (table) => (input) => {
1446
+ const [, output] = table.find(([predicate]) => predicate(input)) || [];
1447
+ return output;
1448
+ };
1449
+
1450
+ const callbackCurrencySelect = (props) => tableFunc([
1451
+ [
1452
+ (_) => _.value !== Currency.RUB && _.oppositeValue !== Currency.RUB,
1453
+ () => props.handleConvert(props.value, Currency.RUB),
1454
+ ],
1455
+ [
1456
+ (_) => _.value === Currency.RUB && _.oppositeValue === Currency.RUB,
1457
+ () => props.handleConvert(props.value, Currency.USD),
1458
+ ],
1459
+ [() => true, () => props.handleConvert(props.value)],
1460
+ ])(props)?.();
1461
+
1424
1462
  const ExchangeCurrencyCalculator = JSX(({ context, className = '', currencyRatesBuy, currencyRatesSell, button }) => {
1425
1463
  const { useRouter, handlerDecorator } = context;
1426
1464
  const router = useRouter();