@redneckz/wildless-cms-uni-blocks 0.3.91 → 0.3.92

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 (348) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +161 -30
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/cosmos-static/icons/PackA4.svg +1 -0
  5. package/dist/components/BlockContent.d.ts +4 -3
  6. package/dist/components/Blocks.d.ts +1 -0
  7. package/dist/components/Blocks.js +2 -0
  8. package/dist/components/Blocks.js.map +1 -1
  9. package/dist/components/Catalog/CatalogCard.js +17 -1
  10. package/dist/components/Catalog/CatalogCard.js.map +1 -1
  11. package/dist/components/Catalog/CatalogContent.d.ts +8 -2
  12. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +5 -2
  13. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  14. package/dist/components/Footer/Contacts.js +3 -3
  15. package/dist/components/Footer/Contacts.js.map +1 -1
  16. package/dist/components/Footer/Footer.js +1 -1
  17. package/dist/components/Footer/Footer.js.map +1 -1
  18. package/dist/components/Footer/Footer.mobile.js +1 -1
  19. package/dist/components/Footer/Footer.mobile.js.map +1 -1
  20. package/dist/components/Footer/HorizontalNavigation.js +1 -1
  21. package/dist/components/Footer/HorizontalNavigation.js.map +1 -1
  22. package/dist/components/Footer/HorizontalNavigation.mobile.js +1 -1
  23. package/dist/components/Footer/HorizontalNavigation.mobile.js.map +1 -1
  24. package/dist/components/Footer/HorizontalNavigationLink.js +1 -1
  25. package/dist/components/Footer/HorizontalNavigationLink.js.map +1 -1
  26. package/dist/components/Footer/MediaButton.js +1 -1
  27. package/dist/components/Footer/MediaButton.js.map +1 -1
  28. package/dist/components/Footer/Sitemap.js +3 -3
  29. package/dist/components/Footer/Sitemap.js.map +1 -1
  30. package/dist/components/Footer/SocialMedia.js +1 -1
  31. package/dist/components/Footer/SocialMedia.js.map +1 -1
  32. package/dist/components/Footer/TextInformation.js +1 -1
  33. package/dist/components/Footer/TextInformation.js.map +1 -1
  34. package/dist/components/Footer/TextInformation.mobile.js +1 -1
  35. package/dist/components/Footer/TextInformation.mobile.js.map +1 -1
  36. package/dist/components/Footer/TextInformationLink.js +1 -1
  37. package/dist/components/Footer/TextInformationLink.js.map +1 -1
  38. package/dist/components/Header/Header.js +3 -1
  39. package/dist/components/Header/Header.js.map +1 -1
  40. package/dist/components/Header/HeaderSecondaryMenu.js +1 -1
  41. package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  42. package/dist/components/Header/HeaderSubMenu.js +1 -1
  43. package/dist/components/LinkDocs/LinkDocs.js.map +1 -1
  44. package/dist/components/ProductBlock/ProductBlock.js +2 -3
  45. package/dist/components/ProductBlock/ProductBlock.js.map +1 -1
  46. package/dist/components/ProductBlock/renderBackwardButton.js +1 -1
  47. package/dist/components/ProductBlock/renderBackwardButton.js.map +1 -1
  48. package/dist/components/ProductTile/ProductTile.js +2 -2
  49. package/dist/components/ProductTile/ProductTile.js.map +1 -1
  50. package/dist/components/SafeDepositRental/SafeDepositRental.d.ts +5 -0
  51. package/dist/components/SafeDepositRental/SafeDepositRental.js +15 -0
  52. package/dist/components/SafeDepositRental/SafeDepositRental.js.map +1 -0
  53. package/dist/components/SafeDepositRental/SafeDepositRentalContent.d.ts +7 -0
  54. package/dist/components/SafeDepositRental/SafeDepositRentalContent.js +2 -0
  55. package/dist/components/SafeDepositRental/SafeDepositRentalContent.js.map +1 -0
  56. package/dist/components/SafeDepositRental/SafeDepositRentalForm.d.ts +12 -0
  57. package/dist/components/SafeDepositRental/SafeDepositRentalForm.js +72 -0
  58. package/dist/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -0
  59. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.d.ts +8 -0
  60. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js +28 -0
  61. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -0
  62. package/dist/hooks/useSafeDepositRental.d.ts +2 -0
  63. package/dist/hooks/useSafeDepositRental.js +19 -0
  64. package/dist/hooks/useSafeDepositRental.js.map +1 -0
  65. package/dist/icons/IconName.d.ts +4 -2
  66. package/dist/icons/IconName.js +2 -0
  67. package/dist/icons/IconName.js.map +1 -1
  68. package/dist/ui-kit/Radio/Radio.d.ts +2 -0
  69. package/dist/ui-kit/Radio/Radio.js +6 -0
  70. package/dist/ui-kit/Radio/Radio.js.map +1 -0
  71. package/dist/ui-kit/Radio/RadioProps.d.ts +9 -0
  72. package/dist/ui-kit/Radio/RadioProps.js +2 -0
  73. package/dist/ui-kit/Radio/RadioProps.js.map +1 -0
  74. package/dist/ui-kit/SearchBar/SearchBarInner.js +1 -1
  75. package/dist/ui-kit/Select/Select.js +4 -1
  76. package/dist/ui-kit/Select/Select.js.map +1 -1
  77. package/lib/common.css +1 -1
  78. package/lib/components/BlockContent.d.ts +4 -3
  79. package/lib/components/Blocks.d.ts +1 -0
  80. package/lib/components/Blocks.js +2 -0
  81. package/lib/components/Blocks.js.map +1 -1
  82. package/lib/components/Catalog/CatalogCard.js +17 -1
  83. package/lib/components/Catalog/CatalogCard.js.map +1 -1
  84. package/lib/components/Catalog/CatalogContent.d.ts +8 -2
  85. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +6 -3
  86. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  87. package/lib/components/Footer/Contacts.js +3 -3
  88. package/lib/components/Footer/Contacts.js.map +1 -1
  89. package/lib/components/Footer/Footer.js +1 -1
  90. package/lib/components/Footer/Footer.js.map +1 -1
  91. package/lib/components/Footer/Footer.mobile.js +1 -1
  92. package/lib/components/Footer/Footer.mobile.js.map +1 -1
  93. package/lib/components/Footer/HorizontalNavigation.js +1 -1
  94. package/lib/components/Footer/HorizontalNavigation.js.map +1 -1
  95. package/lib/components/Footer/HorizontalNavigation.mobile.js +1 -1
  96. package/lib/components/Footer/HorizontalNavigation.mobile.js.map +1 -1
  97. package/lib/components/Footer/HorizontalNavigationLink.js +1 -1
  98. package/lib/components/Footer/HorizontalNavigationLink.js.map +1 -1
  99. package/lib/components/Footer/MediaButton.js +1 -1
  100. package/lib/components/Footer/MediaButton.js.map +1 -1
  101. package/lib/components/Footer/Sitemap.js +3 -3
  102. package/lib/components/Footer/Sitemap.js.map +1 -1
  103. package/lib/components/Footer/SocialMedia.js +1 -1
  104. package/lib/components/Footer/SocialMedia.js.map +1 -1
  105. package/lib/components/Footer/TextInformation.js +1 -1
  106. package/lib/components/Footer/TextInformation.js.map +1 -1
  107. package/lib/components/Footer/TextInformation.mobile.js +1 -1
  108. package/lib/components/Footer/TextInformation.mobile.js.map +1 -1
  109. package/lib/components/Footer/TextInformationLink.js +1 -1
  110. package/lib/components/Footer/TextInformationLink.js.map +1 -1
  111. package/lib/components/Header/Header.js +3 -1
  112. package/lib/components/Header/Header.js.map +1 -1
  113. package/lib/components/Header/HeaderSecondaryMenu.js +1 -1
  114. package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  115. package/lib/components/Header/HeaderSubMenu.js +1 -1
  116. package/lib/components/LinkDocs/LinkDocs.js.map +1 -1
  117. package/lib/components/ProductBlock/ProductBlock.js +2 -3
  118. package/lib/components/ProductBlock/ProductBlock.js.map +1 -1
  119. package/lib/components/ProductBlock/renderBackwardButton.js +1 -1
  120. package/lib/components/ProductBlock/renderBackwardButton.js.map +1 -1
  121. package/lib/components/ProductTile/ProductTile.js +2 -2
  122. package/lib/components/ProductTile/ProductTile.js.map +1 -1
  123. package/lib/components/SafeDepositRental/SafeDepositRental.d.ts +5 -0
  124. package/lib/components/SafeDepositRental/SafeDepositRental.fixture.d.ts +5 -0
  125. package/lib/components/SafeDepositRental/SafeDepositRental.js +13 -0
  126. package/lib/components/SafeDepositRental/SafeDepositRental.js.map +1 -0
  127. package/lib/components/SafeDepositRental/SafeDepositRentalContent.d.ts +7 -0
  128. package/lib/components/SafeDepositRental/SafeDepositRentalContent.js +2 -0
  129. package/lib/components/SafeDepositRental/SafeDepositRentalContent.js.map +1 -0
  130. package/lib/components/SafeDepositRental/SafeDepositRentalForm.d.ts +12 -0
  131. package/lib/components/SafeDepositRental/SafeDepositRentalForm.js +68 -0
  132. package/lib/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -0
  133. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.d.ts +8 -0
  134. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js +25 -0
  135. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -0
  136. package/lib/hooks/useSafeDepositRental.d.ts +2 -0
  137. package/lib/hooks/useSafeDepositRental.js +16 -0
  138. package/lib/hooks/useSafeDepositRental.js.map +1 -0
  139. package/lib/icons/IconName.d.ts +4 -2
  140. package/lib/icons/IconName.js +2 -0
  141. package/lib/icons/IconName.js.map +1 -1
  142. package/lib/ui-kit/Radio/Radio.d.ts +2 -0
  143. package/lib/ui-kit/Radio/Radio.js +4 -0
  144. package/lib/ui-kit/Radio/Radio.js.map +1 -0
  145. package/lib/ui-kit/Radio/RadioProps.d.ts +9 -0
  146. package/lib/ui-kit/Radio/RadioProps.js +2 -0
  147. package/lib/ui-kit/Radio/RadioProps.js.map +1 -0
  148. package/lib/ui-kit/SearchBar/SearchBarInner.js +1 -1
  149. package/lib/ui-kit/Select/Select.js +4 -1
  150. package/lib/ui-kit/Select/Select.js.map +1 -1
  151. package/mobile/bundle/bundle.umd.js +25 -22
  152. package/mobile/bundle/bundle.umd.min.js +1 -1
  153. package/mobile/dist/components/BlockContent.d.ts +4 -3
  154. package/mobile/dist/components/Catalog/CatalogCard.js +17 -1
  155. package/mobile/dist/components/Catalog/CatalogCard.js.map +1 -1
  156. package/mobile/dist/components/Catalog/CatalogContent.d.ts +8 -2
  157. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +5 -2
  158. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  159. package/mobile/dist/components/Footer/Contacts.js +3 -3
  160. package/mobile/dist/components/Footer/Contacts.js.map +1 -1
  161. package/mobile/dist/components/Footer/Footer.js +1 -1
  162. package/mobile/dist/components/Footer/Footer.js.map +1 -1
  163. package/mobile/dist/components/Footer/HorizontalNavigation.js +1 -1
  164. package/mobile/dist/components/Footer/HorizontalNavigation.js.map +1 -1
  165. package/mobile/dist/components/Footer/HorizontalNavigationLink.js +1 -1
  166. package/mobile/dist/components/Footer/HorizontalNavigationLink.js.map +1 -1
  167. package/mobile/dist/components/Footer/MediaButton.js +1 -1
  168. package/mobile/dist/components/Footer/MediaButton.js.map +1 -1
  169. package/mobile/dist/components/Footer/Sitemap.js +3 -3
  170. package/mobile/dist/components/Footer/Sitemap.js.map +1 -1
  171. package/mobile/dist/components/Footer/TextInformation.js +1 -1
  172. package/mobile/dist/components/Footer/TextInformation.js.map +1 -1
  173. package/mobile/dist/components/Footer/TextInformationLink.js +1 -1
  174. package/mobile/dist/components/Footer/TextInformationLink.js.map +1 -1
  175. package/mobile/dist/components/Header/HeaderSecondaryMenu.js +1 -1
  176. package/mobile/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  177. package/mobile/dist/components/Header/HeaderSubMenu.js +1 -1
  178. package/mobile/dist/components/ProductBlock/renderBackwardButton.js +1 -1
  179. package/mobile/dist/components/ProductBlock/renderBackwardButton.js.map +1 -1
  180. package/mobile/dist/components/ProductTile/ProductTile.js +2 -2
  181. package/mobile/dist/components/ProductTile/ProductTile.js.map +1 -1
  182. package/mobile/dist/components/SafeDepositRental/SafeDepositRental.d.ts +5 -0
  183. package/mobile/dist/components/SafeDepositRental/SafeDepositRental.js +15 -0
  184. package/mobile/dist/components/SafeDepositRental/SafeDepositRental.js.map +1 -0
  185. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalContent.d.ts +7 -0
  186. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalContent.js +2 -0
  187. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalContent.js.map +1 -0
  188. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.d.ts +12 -0
  189. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.js +72 -0
  190. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -0
  191. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.d.ts +8 -0
  192. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js +28 -0
  193. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -0
  194. package/mobile/dist/hooks/useSafeDepositRental.d.ts +2 -0
  195. package/mobile/dist/hooks/useSafeDepositRental.js +19 -0
  196. package/mobile/dist/hooks/useSafeDepositRental.js.map +1 -0
  197. package/mobile/dist/icons/IconName.d.ts +4 -2
  198. package/mobile/dist/icons/IconName.js +2 -0
  199. package/mobile/dist/icons/IconName.js.map +1 -1
  200. package/mobile/dist/ui-kit/Radio/Radio.d.ts +2 -0
  201. package/mobile/dist/ui-kit/Radio/Radio.js +6 -0
  202. package/mobile/dist/ui-kit/Radio/Radio.js.map +1 -0
  203. package/mobile/dist/ui-kit/Radio/RadioProps.d.ts +9 -0
  204. package/mobile/dist/ui-kit/Radio/RadioProps.js +2 -0
  205. package/mobile/dist/ui-kit/Radio/RadioProps.js.map +1 -0
  206. package/mobile/dist/ui-kit/SearchBar/SearchBarInner.js +1 -1
  207. package/mobile/dist/ui-kit/Select/Select.js +4 -1
  208. package/mobile/dist/ui-kit/Select/Select.js.map +1 -1
  209. package/mobile/lib/components/BlockContent.d.ts +4 -3
  210. package/mobile/lib/components/Catalog/CatalogCard.js +17 -1
  211. package/mobile/lib/components/Catalog/CatalogCard.js.map +1 -1
  212. package/mobile/lib/components/Catalog/CatalogContent.d.ts +8 -2
  213. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +6 -3
  214. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  215. package/mobile/lib/components/Footer/Contacts.js +3 -3
  216. package/mobile/lib/components/Footer/Contacts.js.map +1 -1
  217. package/mobile/lib/components/Footer/Footer.js +1 -1
  218. package/mobile/lib/components/Footer/Footer.js.map +1 -1
  219. package/mobile/lib/components/Footer/HorizontalNavigation.js +1 -1
  220. package/mobile/lib/components/Footer/HorizontalNavigation.js.map +1 -1
  221. package/mobile/lib/components/Footer/HorizontalNavigationLink.js +1 -1
  222. package/mobile/lib/components/Footer/HorizontalNavigationLink.js.map +1 -1
  223. package/mobile/lib/components/Footer/MediaButton.js +1 -1
  224. package/mobile/lib/components/Footer/MediaButton.js.map +1 -1
  225. package/mobile/lib/components/Footer/Sitemap.js +3 -3
  226. package/mobile/lib/components/Footer/Sitemap.js.map +1 -1
  227. package/mobile/lib/components/Footer/TextInformation.js +1 -1
  228. package/mobile/lib/components/Footer/TextInformation.js.map +1 -1
  229. package/mobile/lib/components/Footer/TextInformationLink.js +1 -1
  230. package/mobile/lib/components/Footer/TextInformationLink.js.map +1 -1
  231. package/mobile/lib/components/Header/HeaderSecondaryMenu.js +1 -1
  232. package/mobile/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  233. package/mobile/lib/components/Header/HeaderSubMenu.js +1 -1
  234. package/mobile/lib/components/ProductBlock/renderBackwardButton.js +1 -1
  235. package/mobile/lib/components/ProductBlock/renderBackwardButton.js.map +1 -1
  236. package/mobile/lib/components/ProductTile/ProductTile.js +2 -2
  237. package/mobile/lib/components/ProductTile/ProductTile.js.map +1 -1
  238. package/mobile/lib/components/SafeDepositRental/SafeDepositRental.d.ts +5 -0
  239. package/mobile/lib/components/SafeDepositRental/SafeDepositRental.js +13 -0
  240. package/mobile/lib/components/SafeDepositRental/SafeDepositRental.js.map +1 -0
  241. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalContent.d.ts +7 -0
  242. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalContent.js +2 -0
  243. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalContent.js.map +1 -0
  244. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.d.ts +12 -0
  245. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.js +68 -0
  246. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -0
  247. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.d.ts +8 -0
  248. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js +25 -0
  249. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -0
  250. package/mobile/lib/hooks/useSafeDepositRental.d.ts +2 -0
  251. package/mobile/lib/hooks/useSafeDepositRental.js +16 -0
  252. package/mobile/lib/hooks/useSafeDepositRental.js.map +1 -0
  253. package/mobile/lib/icons/IconName.d.ts +4 -2
  254. package/mobile/lib/icons/IconName.js +2 -0
  255. package/mobile/lib/icons/IconName.js.map +1 -1
  256. package/mobile/lib/ui-kit/Radio/Radio.d.ts +2 -0
  257. package/mobile/lib/ui-kit/Radio/Radio.js +4 -0
  258. package/mobile/lib/ui-kit/Radio/Radio.js.map +1 -0
  259. package/mobile/lib/ui-kit/Radio/RadioProps.d.ts +9 -0
  260. package/mobile/lib/ui-kit/Radio/RadioProps.js +2 -0
  261. package/mobile/lib/ui-kit/Radio/RadioProps.js.map +1 -0
  262. package/mobile/lib/ui-kit/SearchBar/SearchBarInner.js +1 -1
  263. package/mobile/lib/ui-kit/Select/Select.js +4 -1
  264. package/mobile/lib/ui-kit/Select/Select.js.map +1 -1
  265. package/mobile/src/components/BlockContent.ts +5 -3
  266. package/mobile/src/components/Catalog/Catalog.example.json +3 -3
  267. package/mobile/src/components/Catalog/CatalogCard.tsx +28 -1
  268. package/mobile/src/components/Catalog/CatalogContent.ts +8 -2
  269. package/mobile/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +14 -3
  270. package/mobile/src/components/Footer/Contacts.tsx +3 -6
  271. package/mobile/src/components/Footer/Footer.tsx +1 -1
  272. package/mobile/src/components/Footer/HorizontalNavigation.tsx +1 -1
  273. package/mobile/src/components/Footer/HorizontalNavigationLink.tsx +1 -1
  274. package/mobile/src/components/Footer/MediaButton.tsx +1 -1
  275. package/mobile/src/components/Footer/Sitemap.tsx +4 -4
  276. package/mobile/src/components/Footer/TextInformation.tsx +1 -1
  277. package/mobile/src/components/Footer/TextInformationLink.tsx +1 -1
  278. package/mobile/src/components/Header/HeaderSecondaryMenu.tsx +7 -5
  279. package/mobile/src/components/Header/HeaderSubMenu.tsx +1 -1
  280. package/mobile/src/components/ProductBlock/renderBackwardButton.tsx +1 -2
  281. package/mobile/src/components/ProductTile/ProductTile.tsx +2 -2
  282. package/mobile/src/components/SafeDepositRental/SafeDepositRental.example.json +0 -0
  283. package/mobile/src/components/SafeDepositRental/SafeDepositRental.tsx +33 -0
  284. package/mobile/src/components/SafeDepositRental/SafeDepositRentalContent.ts +7 -0
  285. package/mobile/src/components/SafeDepositRental/SafeDepositRentalForm.tsx +164 -0
  286. package/mobile/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +57 -0
  287. package/mobile/src/components/__snapshots__/Blocks.spec.tsx.snap +98 -14
  288. package/mobile/src/hooks/useSafeDepositRental.ts +21 -0
  289. package/mobile/src/icons/IconName.ts +4 -4
  290. package/mobile/src/icons/PackA4.svg +14 -0
  291. package/mobile/src/ui-kit/Radio/Radio.tsx +18 -0
  292. package/mobile/src/ui-kit/Radio/RadioProps.ts +8 -0
  293. package/mobile/src/ui-kit/SearchBar/SearchBarInner.tsx +1 -1
  294. package/mobile/src/ui-kit/Select/Select.tsx +6 -1
  295. package/package.json +1 -1
  296. package/src/components/BlockContent.ts +5 -3
  297. package/src/components/Blocks.ts +2 -0
  298. package/src/components/Catalog/Catalog.example.json +3 -3
  299. package/src/components/Catalog/CatalogCard.tsx +28 -1
  300. package/src/components/Catalog/CatalogContent.ts +8 -2
  301. package/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +14 -3
  302. package/src/components/Footer/Contacts.tsx +3 -6
  303. package/src/components/Footer/Footer.mobile.tsx +1 -1
  304. package/src/components/Footer/Footer.tsx +1 -1
  305. package/src/components/Footer/HorizontalNavigation.mobile.tsx +1 -1
  306. package/src/components/Footer/HorizontalNavigation.tsx +1 -1
  307. package/src/components/Footer/HorizontalNavigationLink.tsx +1 -1
  308. package/src/components/Footer/MediaButton.tsx +1 -1
  309. package/src/components/Footer/Sitemap.tsx +4 -4
  310. package/src/components/Footer/SocialMedia.tsx +1 -1
  311. package/src/components/Footer/TextInformation.mobile.tsx +1 -1
  312. package/src/components/Footer/TextInformation.tsx +1 -1
  313. package/src/components/Footer/TextInformationLink.tsx +1 -1
  314. package/src/components/Header/Header.tsx +3 -2
  315. package/src/components/Header/HeaderSecondaryMenu.tsx +7 -5
  316. package/src/components/Header/HeaderSubMenu.tsx +1 -1
  317. package/src/components/LinkDocs/LinkDocs.tsx +1 -1
  318. package/src/components/ProductBlock/ProductBlock.tsx +2 -10
  319. package/src/components/ProductBlock/renderBackwardButton.tsx +1 -2
  320. package/src/components/ProductTile/ProductTile.tsx +2 -2
  321. package/src/components/SafeDepositRental/SafeDepositRental.example.json +0 -0
  322. package/src/components/SafeDepositRental/SafeDepositRental.fixture.tsx +9 -0
  323. package/src/components/SafeDepositRental/SafeDepositRental.tsx +33 -0
  324. package/src/components/SafeDepositRental/SafeDepositRentalContent.ts +7 -0
  325. package/src/components/SafeDepositRental/SafeDepositRentalForm.tsx +164 -0
  326. package/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +57 -0
  327. package/src/components/__snapshots__/Blocks.spec.tsx.snap +98 -14
  328. package/src/hooks/useSafeDepositRental.ts +21 -0
  329. package/src/icons/IconName.ts +5 -3
  330. package/src/icons/PackA4.svg +14 -0
  331. package/src/ui-kit/Radio/Radio.tsx +18 -0
  332. package/src/ui-kit/Radio/RadioProps.ts +8 -0
  333. package/src/ui-kit/SearchBar/SearchBarInner.tsx +1 -1
  334. package/src/ui-kit/Select/Select.tsx +6 -1
  335. package/dist/components/ExchangeRateTile/renderButton.d.ts +0 -2
  336. package/dist/components/ExchangeRateTile/renderButton.js +0 -9
  337. package/dist/components/ExchangeRateTile/renderButton.js.map +0 -1
  338. package/lib/components/ExchangeRateTile/renderButton.d.ts +0 -2
  339. package/lib/components/ExchangeRateTile/renderButton.js +0 -6
  340. package/lib/components/ExchangeRateTile/renderButton.js.map +0 -1
  341. package/mobile/dist/components/ExchangeRateTile/renderButton.d.ts +0 -2
  342. package/mobile/dist/components/ExchangeRateTile/renderButton.js +0 -9
  343. package/mobile/dist/components/ExchangeRateTile/renderButton.js.map +0 -1
  344. package/mobile/lib/components/ExchangeRateTile/renderButton.d.ts +0 -2
  345. package/mobile/lib/components/ExchangeRateTile/renderButton.js +0 -6
  346. package/mobile/lib/components/ExchangeRateTile/renderButton.js.map +0 -1
  347. package/mobile/src/components/ExchangeRateTile/renderButton.tsx +0 -9
  348. package/src/components/ExchangeRateTile/renderButton.tsx +0 -9
@@ -15,7 +15,7 @@
15
15
  "button": {
16
16
  "href": "",
17
17
  "text": "Подробнее",
18
- "target": "_blank",
18
+ "target": "_self",
19
19
  "version": "primary"
20
20
  }
21
21
  },
@@ -32,7 +32,7 @@
32
32
  "button": {
33
33
  "href": "",
34
34
  "text": "Подробнее",
35
- "target": "_blank",
35
+ "target": "_self",
36
36
  "version": "primary"
37
37
  }
38
38
  },
@@ -49,7 +49,7 @@
49
49
  "button": {
50
50
  "href": "",
51
51
  "text": "Подробнее",
52
- "target": "_blank",
52
+ "target": "_self",
53
53
  "version": "primary"
54
54
  }
55
55
  }
@@ -1,7 +1,9 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import type { BlockVersion } from '../../model/BlockVersion';
3
+ import { Picture } from '../../model/Picture';
3
4
  import type { UniBlockProps } from '../../types';
4
5
  import { Button } from '../../ui-kit/Button/Button';
6
+ import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
5
7
  import { Heading } from '../../ui-kit/Heading/Heading';
6
8
  import { Img } from '../../ui-kit/Img/Img';
7
9
  import type { CatalogCardType, CatalogProductColor } from './CatalogContent';
@@ -36,7 +38,7 @@ export const CatalogCard = JSX<CatalogCardProps>(
36
38
  </div>
37
39
  ) : null}
38
40
  {price ? <div className="text-h3 text-left">{price}&nbsp;₽</div> : null}
39
- {button?.text ? <Button className="mt-5 w-full" {...button} /> : null}
41
+ {button ? renderButton(button) : null}
40
42
  </section>
41
43
  );
42
44
  },
@@ -48,3 +50,28 @@ const renderColorOption = (color: CatalogProductColor, i: number) => (
48
50
  className={`w-6 h-6 ml-3 border border-solid border-main-divider rounded-full ${cardStyleMap[color]}`}
49
51
  />
50
52
  );
53
+
54
+ const renderButton = (button: ButtonWithIconProps) => {
55
+ const { icon, iconRight, text } = button;
56
+
57
+ if (!text) {
58
+ return null;
59
+ }
60
+
61
+ const leftIcon = renderButtonIcon(icon);
62
+ const rightIcon = renderButtonIcon(iconRight);
63
+
64
+ return (
65
+ <Button className="mt-5 w-full" appendLeft={leftIcon} appendRight={rightIcon} {...button} />
66
+ );
67
+ };
68
+
69
+ const renderButtonIcon = (buttonIcon?: Picture) => {
70
+ if (!buttonIcon || !buttonIcon.icon) {
71
+ return null;
72
+ }
73
+
74
+ const iconWidth = buttonIcon?.size?.width ? `${buttonIcon.size.width}` : '24';
75
+
76
+ return <Img image={buttonIcon} width={iconWidth} height="24" asSVG />;
77
+ };
@@ -1,6 +1,6 @@
1
+ import type { HeadlineCommonProps } from '../../model/HeadlineType';
1
2
  import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
2
3
  import type { ImageContent } from '../../ui-kit/Img/ImgProps';
3
- import type { HeadlineCommonProps } from '../../model/HeadlineType';
4
4
 
5
5
  /**
6
6
  * @enumNames ["Черный", "Белый"]
@@ -12,7 +12,13 @@ export interface CatalogCardType extends HeadlineCommonProps, ImageContent {
12
12
  price?: number;
13
13
  /** @title Доступные цвета */
14
14
  colors?: CatalogProductColor[];
15
- /** @title Кнопка */
15
+ /**
16
+ * @title Кнопка
17
+ * @default {
18
+ * "icon": { "format": "webp", "size": { "width": 24, "height": 24 } },
19
+ * "iconRight" : { "format": "webp", "size": { "width": 24, "height": 24 } }
20
+ * }
21
+ */
16
22
  button?: ButtonWithIconProps;
17
23
  }
18
24
 
@@ -1,12 +1,12 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { useLink } from '../../hooks/useLink';
2
3
  import type { UniBlockProps } from '../../types';
4
+ import { Button } from '../../ui-kit/Button/Button';
3
5
  import { ButtonProps } from '../../ui-kit/Button/ButtonProps';
4
6
  import { calculateResult, formatValue } from './calculateResult';
5
7
  import { callbackCurrencySelect } from './callbackCurrencySelect';
6
8
  import { Currency } from './CurrencyProps';
7
- import { renderButton } from './renderButton';
8
9
  import { renderInput } from './renderInput';
9
-
10
10
  export interface ExchangeCurrencyItem {
11
11
  code?: Currency;
12
12
  buy?: number;
@@ -27,6 +27,9 @@ export interface CalcState {
27
27
 
28
28
  export const ExchangeCurrencyCalculator = JSX<ExchangeCurrencyCalculatorProps>(
29
29
  ({ context, className = '', currencyRatesBuy, currencyRatesSell, button }) => {
30
+ const { useRouter, handlerDecorator } = context;
31
+ const router = useRouter();
32
+
30
33
  const [calcState, setCalcState] = context.useState<CalcState>({
31
34
  inputSell: '',
32
35
  inputBuy: '',
@@ -66,7 +69,15 @@ export const ExchangeCurrencyCalculator = JSX<ExchangeCurrencyCalculatorProps>(
66
69
  calcState.selectSell,
67
70
  ),
68
71
  })}
69
- {button?.text ? renderButton(button) : null}
72
+ {button?.text ? (
73
+ <Button
74
+ className="py-4 mr-1"
75
+ version={button?.version}
76
+ {...useLink({ router, handlerDecorator }, button)}
77
+ >
78
+ {button.text}
79
+ </Button>
80
+ ) : null}
70
81
  </div>
71
82
  );
72
83
  },
@@ -40,7 +40,7 @@ const renderContact = (item: ContactInfo, index: number) => {
40
40
  return (
41
41
  <div className="mb-4" key={String(index)}>
42
42
  <div>{renderText(type, text)}</div>
43
- <div className="mt-1 font-sans text-s-light text-secondary-text">{description}</div>
43
+ <div className="mt-1 text-s-light text-secondary-text">{description}</div>
44
44
  </div>
45
45
  );
46
46
  };
@@ -50,7 +50,7 @@ const renderText = (type: ContactInfo['type'], text = '') => {
50
50
  case 'tel':
51
51
  return (
52
52
  <a
53
- className="font-sans text-xl-light text-primary-text no-underline"
53
+ className="text-h6 text-primary-text hover:text-primary-main no-underline"
54
54
  href={`tel:${formatTel(text)}`}
55
55
  >
56
56
  {text}
@@ -58,10 +58,7 @@ const renderText = (type: ContactInfo['type'], text = '') => {
58
58
  );
59
59
  case 'email':
60
60
  return (
61
- <a
62
- className="font-sans text-xl-light text-primary-text no-underline"
63
- href={`mailto:${text}`}
64
- >
61
+ <a className="text-xl-light text-primary-text no-underline" href={`mailto:${text}`}>
65
62
  {text}
66
63
  </a>
67
64
  );
@@ -30,7 +30,7 @@ export const Footer = JSX<FooterProps>(
30
30
  const dispositions = sitemap?.dispositions;
31
31
 
32
32
  return (
33
- <footer className={`px-4 py-[26px] bg-white ${className}`}>
33
+ <footer className={`font-sans px-4 py-[26px] bg-white ${className}`}>
34
34
  <Contacts className="overflow-hidden" items={contacts} context={context} hasButton />
35
35
  <Accordion
36
36
  context={context}
@@ -30,7 +30,7 @@ export const Footer = JSX<FooterProps>(
30
30
  <BlockWrapper
31
31
  tag="footer"
32
32
  context={context}
33
- className={`p-9 bg-white ${className || ''}`}
33
+ className={`p-9 bg-white font-sans ${className || ''}`}
34
34
  {...rest}
35
35
  >
36
36
  <div className="flex items-stretch gap-[54px] pb-[30px] xl:gap-8">
@@ -15,7 +15,7 @@ export const HorizontalNavigation = JSX<HorizontalNavigationProps>(
15
15
 
16
16
  return (
17
17
  <div className={className}>
18
- <span className="text-primary-text font-sans font-medium text-sm">{title}</span>
18
+ <span className="text-primary-text font-medium text-sm">{title}</span>
19
19
  {links?.length ? (
20
20
  <div className="flex flex-col gap-2 pt-3">
21
21
  {links.map((_, i) => (
@@ -21,7 +21,7 @@ export const HorizontalNavigation = JSX<HorizontalNavigationProps>(
21
21
  <HorizontalNavigationLink
22
22
  key={String(i)}
23
23
  index={i}
24
- className="font-light max-w-[292px]"
24
+ className="font-l-light max-w-[292px]"
25
25
  {...useLink({ router, handlerDecorator }, _)}
26
26
  />
27
27
  ))}
@@ -10,7 +10,7 @@ interface HorizontalNavigationLinkProps extends LinkProps {
10
10
  export const HorizontalNavigationLink = JSX<Partial<HorizontalNavigationLinkProps>>(
11
11
  ({ className = '', index, text, href, target, onClick }) => (
12
12
  <a
13
- className={`font-sans text-secondary-text hover:text-primary-main inline-block no-underline ${className}`}
13
+ className={`text-secondary-text hover:text-primary-main inline-block no-underline ${className}`}
14
14
  href={href}
15
15
  target={target}
16
16
  onClick={onClick}
@@ -51,7 +51,7 @@ export const MediaButton = JSX<MediaButtonProps>(({ href, version = 'primary' })
51
51
  const classes =
52
52
  version === 'secondary'
53
53
  ? 'bg-secondary-light hover:bg-secondary-hover'
54
- : 'border-main-divider border-solid border-[1px] hover:bg-primary-main';
54
+ : 'border-solid border-[1px] border-main-divider hover:border-transparent hover:bg-primary-main';
55
55
 
56
56
  const isPrimary = version === 'primary';
57
57
 
@@ -19,7 +19,7 @@ export const Sitemap = JSX<SitemapProps>(({ className = '', items, context }) =>
19
19
  };
20
20
 
21
21
  return (
22
- <div className={`flex items-start justify-between gap-11 xl:gap-5 ${className}`}>
22
+ <div className={`flex items-start justify-between gap-[54px] xl:gap-5 ${className}`}>
23
23
  {mergedItems?.map((_, i) => renderColumn(_, i, linkParams))}
24
24
  </div>
25
25
  );
@@ -29,9 +29,9 @@ const renderColumn = (c: TopMenuItem, index: number, { router, handlerDecorator
29
29
  const { text, href, items, target } = c;
30
30
 
31
31
  return (
32
- <div key={String(index)} className="flex flex-col w-1/5 last:w-1/4 gap-[14px]">
32
+ <div key={String(index)} className="flex flex-col w-1/5 last:w-1/4 gap-3.5">
33
33
  <a
34
- className="block font-sans leading-5 text-l text-primary-text no-underline"
34
+ className="block leading-5 text-l text-primary-text hover:text-primary-main no-underline"
35
35
  href={href}
36
36
  target={target || '_self'}
37
37
  >
@@ -50,7 +50,7 @@ interface ColumnItemProps extends LinkProps {
50
50
 
51
51
  const ColumnItem = JSX<ColumnItemProps>(({ text, href, target, index }) => (
52
52
  <a
53
- className="block font-sans text-l-light text-secondary-text hover:text-primary-main no-underline"
53
+ className="block text-l-light text-secondary-text hover:text-primary-main no-underline"
54
54
  href={href}
55
55
  target={target || '_self'}
56
56
  >
@@ -16,7 +16,7 @@ export const SocialMedia = JSX<SocialMediaProps>(
16
16
  const { handlerDecorator } = context;
17
17
 
18
18
  return (
19
- <div>
19
+ <div className="font-sans">
20
20
  <div className={`flex gap-2.5 ${className}`}>
21
21
  {media?.map((_, index) => (
22
22
  <MediaButton
@@ -10,7 +10,7 @@ export const TextInformation = JSX<FooterLink>(({ className, links, context }) =
10
10
  return (
11
11
  <div className={`${className || ''}`}>
12
12
  <div className="py-6">
13
- <span className="font-sans font-normal text-xs text-secondary-text">
13
+ <span className="font-normal text-xs text-secondary-text">
14
14
  {`\u00a9\u00A02000-${new Date().getFullYear()}\u00A0АО \u00ABРоссельхозбанк\u00BB Генеральная лицензия Банка России \u2116\u00A03349 от\u00A012.08.2015\u00A0г.`}
15
15
  </span>
16
16
  </div>
@@ -10,7 +10,7 @@ export const TextInformation = JSX<FooterLink>(({ className, links, context }) =
10
10
  return (
11
11
  <div className={`${className || ''}`}>
12
12
  <div className="pt-5">
13
- <span className="font-sans font-light text-xs text-secondary-text">
13
+ <span className="font-light text-xs text-secondary-text">
14
14
  {`\u00a9\u00A02000-${new Date().getFullYear()}\u00A0АО \u00ABРоссельхозбанк\u00BB Генеральная лицензия Банка России \u2116\u00A03349 от\u00A012.08.2015\u00A0г.`}
15
15
  </span>
16
16
  </div>
@@ -10,7 +10,7 @@ interface TextInformationLinkProps extends LinkProps {
10
10
  export const TextInformationLink = JSX<Partial<TextInformationLinkProps>>(
11
11
  ({ className = '', index, text, href, target, onClick }) => (
12
12
  <a
13
- className={`font-sans text-xs text-secondary-text visited:text-secondary-text hover:text-primary-text inline-block no-underline max-w-[292px] ${className}`}
13
+ className={`text-xs text-secondary-text visited:text-secondary-text hover:text-primary-main inline-block no-underline max-w-[292px] ${className}`}
14
14
  href={href}
15
15
  target={target}
16
16
  onClick={onClick}
@@ -35,8 +35,9 @@ export const Header = JSX<HeaderProps>(
35
35
  const { handlerDecorator } = context;
36
36
 
37
37
  const mergedItems = mergeTopItems(sitemap.topItems, topItems);
38
- const activeTopItem = mergedItems.find(isTopItemActive(router));
39
-
38
+ const [firstPortal] = mergedItems;
39
+ // Если по слагу невозможно понять к какому подпорталу этот слаг относиться, то выбираем первый подпортал.
40
+ const activeTopItem = mergedItems.find(isTopItemActive(router)) || firstPortal;
40
41
  const topMenu = mergedItems.map((_, i) => (
41
42
  <TopItem
42
43
  key={String(i)}
@@ -1,6 +1,6 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import type { IconVersion } from '../../model/IconVersion';
3
2
  import type { BgColorVersion } from '../../model/BgColorVersion';
3
+ import type { IconVersion } from '../../model/IconVersion';
4
4
  import type { UniBlockProps } from '../../types';
5
5
  import { Img } from '../../ui-kit/Img/Img';
6
6
  import { TopItem } from '../../ui-kit/TopItem/TopItem';
@@ -50,22 +50,24 @@ export const HeaderSecondaryMenu = JSX<HeaderSecondaryMenuProps>(
50
50
  bgColor={bgColor}
51
51
  />
52
52
  <HeaderSecondaryMenuButton
53
- className={`mr-5 ${COLORS_MAP[bgColor]}`}
53
+ className={`mr-5 group ${COLORS_MAP[bgColor]}`}
54
54
  ariaLabel="Поиск по сайту"
55
55
  >
56
56
  <Img
57
57
  image={{ icon: 'LoupeIcon', iconVersion: LINKS_ICON_VERSION_MAP[bgColor] }}
58
- className="h-full"
58
+ className="h-full pointer-events-none"
59
+ imageClassName="group-hover:text-primary-main pointer-events-none"
59
60
  asSVG
60
61
  />
61
62
  </HeaderSecondaryMenuButton>
62
63
  <HeaderSecondaryMenuButton
63
- className={`${LINKS_COLORS_MAP[bgColor]} min-w-[32px] min-h-[32px]`}
64
+ className={`${LINKS_COLORS_MAP[bgColor]} group min-w-[32px] min-h-[32px]`}
64
65
  ariaLabel="Дополнительные ссылки"
65
66
  >
66
67
  <Img
67
68
  image={{ icon: 'GridIcon', iconVersion: LINKS_ICON_VERSION_MAP[bgColor] }}
68
- className="h-full bg-secondary-light rounded-full"
69
+ className="h-full bg-main-divider rounded-full pointer-events-none"
70
+ imageClassName="group-hover:text-primary-main"
69
71
  asSVG
70
72
  />
71
73
  </HeaderSecondaryMenuButton>
@@ -39,7 +39,7 @@ export const HeaderSubMenu = JSX<HeaderSubMenuProps>(({ context, subItems = [],
39
39
  };
40
40
 
41
41
  return (
42
- <nav className="relative mt-5">
42
+ <nav className="relative mt-6">
43
43
  <div className="overflow-hidden whitespace-nowrap mr-52 pb-3">
44
44
  {subItems.map((_, i) => (
45
45
  <IntersectionObserverTag
@@ -1,8 +1,8 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import type { UniBlockProps } from '../../types';
3
- import type { LinkColumnsMode, LinkDocsContent } from './LinkDocsContent';
4
3
  import { BlockWrapper } from '../../ui-kit/BlockWrapper';
5
4
  import { Headline } from '../Headline/Headline';
5
+ import type { LinkColumnsMode, LinkDocsContent } from './LinkDocsContent';
6
6
  import { LinkDocsList } from './LinkDocsList';
7
7
 
8
8
  const linkColumnsModeStyleMap: Record<LinkColumnsMode, string> = {
@@ -36,10 +36,7 @@ export const ProductBlock = JSX<ProductBlockProps>((props) => {
36
36
  return (
37
37
  <BlockWrapper
38
38
  context={context}
39
- className={`font-sans overflow-hidden pt-[50px] pl-[50px] pb-[50px] pr-[7.5rem] box-border
40
- ${backwardButton?.text ? 'min-h-[542px] max-h-[542]' : 'min-h-[454px] max-h-[454px]'} ${
41
- productBlockStyleMap[version]
42
- } ${className}`}
39
+ className={`font-sans overflow-hidden p-[50px] box-border min-h-[528px] ${productBlockStyleMap[version]} ${className}`}
43
40
  {...otherProps}
44
41
  >
45
42
  {backwardButton?.text
@@ -64,12 +61,7 @@ export const ProductBlock = JSX<ProductBlockProps>((props) => {
64
61
  )}
65
62
  </div>
66
63
  ) : null}
67
- <ProductBlockInner
68
- context={context}
69
- version={version}
70
- {...otherProps}
71
- className={backwardButton?.text ? 'pb-[88px]' : ''}
72
- />
64
+ <ProductBlockInner context={context} version={version} {...otherProps} />
73
65
  </BlockWrapper>
74
66
  );
75
67
  });
@@ -13,7 +13,7 @@ export function renderBackwardButton(
13
13
  const backwardIcon = button?.icon || { icon: 'ArrowLeftIcon' };
14
14
 
15
15
  return (
16
- <div className={`flex items-center ${className}`}>
16
+ <div className={`flex items-center cursor-pointer ${className}`} onClick={onClick}>
17
17
  <Button
18
18
  version={version}
19
19
  rounded
@@ -21,7 +21,6 @@ export function renderBackwardButton(
21
21
  ariaLabel={text}
22
22
  href={href}
23
23
  target={target}
24
- onClick={onClick}
25
24
  >
26
25
  <Img className="w-4 h-4" image={{ ...backwardIcon, iconVersion }} asSVG />
27
26
  </Button>
@@ -57,7 +57,7 @@ export const ProductTile = JSX<ProductTileProps>(
57
57
  <ButtonSection
58
58
  context={context}
59
59
  buttons={buttons}
60
- className="flex self-end mt-5 gap-4 z-[1]"
60
+ className="flex self-end mt-5 gap-4 z-[1] text-l"
61
61
  />
62
62
  ) : null}
63
63
  {image?.src ? <Img className="absolute right-0 bottom-0" image={image} /> : null}
@@ -96,7 +96,7 @@ function renderBenefitDescription(benefit: TextBenefit, i: number, version = 'pr
96
96
  };
97
97
 
98
98
  return (
99
- <div key={String(i)} className={`${i ? 'mt-4' : ''} ${labelStyleMap[version]}`}>
99
+ <div key={String(i)} className={`text-m ${i ? 'mt-4' : ''} ${labelStyleMap[version]}`}>
100
100
  {benefit.description}
101
101
  </div>
102
102
  );
@@ -0,0 +1,9 @@
1
+ import { context } from '../../react/setup-fixture';
2
+ import { SafeDepositRental } from './SafeDepositRental';
3
+ export default {
4
+ default: (
5
+ <div className="container grid grid-cols-12 mb-1">
6
+ <SafeDepositRental className="col-span-12" context={context} />
7
+ </div>
8
+ ),
9
+ };
@@ -0,0 +1,33 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useSafeDepositRental } from '../../hooks/useSafeDepositRental';
3
+ import type { UniBlockProps } from '../../types';
4
+ import { BlockWrapper } from '../../ui-kit/BlockWrapper';
5
+ import type { SafeDepositRentalContent } from './SafeDepositRentalContent';
6
+ import { SafeDepositRentalForm } from './SafeDepositRentalForm';
7
+ import { SafeDepositRentalTotal } from './SafeDepositRentalTotal';
8
+
9
+ export interface SafeDepositRentalProps extends SafeDepositRentalContent, UniBlockProps {}
10
+
11
+ const DEFAULT_DAYS = 26;
12
+
13
+ export const SafeDepositRental = JSX<SafeDepositRentalProps>(
14
+ ({ context, className = '', ...rest }) => {
15
+ const [days, setDays] = context.useState(DEFAULT_DAYS);
16
+ const data = useSafeDepositRental(context.useAsyncData);
17
+
18
+ return (
19
+ <BlockWrapper context={context} className={`bg-white px-8 py-12 ${className}`} {...rest}>
20
+ <div className="flex justify-between align-top mb-6">
21
+ {data?.cities?.length ? (
22
+ <SafeDepositRentalForm {...data} days={days} setDays={setDays} context={context} />
23
+ ) : null}
24
+ <SafeDepositRentalTotal days={days} />
25
+ </div>
26
+ <p className="text-button font-light text-secondary-text">
27
+ Аренда СЯ, в случае проведения процедуры купли-продажи, с использованием наличных денег
28
+ или процедуры ипотечной сделки
29
+ </p>
30
+ </BlockWrapper>
31
+ );
32
+ },
33
+ );
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @title Аренда сейфовых ячеек
3
+ */
4
+ export interface SafeDepositRentalContent {
5
+ /** @title Заголовок */
6
+ title?: string;
7
+ }
@@ -0,0 +1,164 @@
1
+ import { UniBlockProps } from '../../types';
2
+ import { Button } from '../../ui-kit/Button/Button';
3
+ import { InputRange } from '../../ui-kit/InputRange/InputRange';
4
+ import { Radio } from '../../ui-kit/Radio/Radio';
5
+ import { Select } from '../../ui-kit/Select/Select';
6
+ import { SelectOption } from '../../ui-kit/Select/SelectOption';
7
+
8
+ export type SafeDepositRentalFormProps = UniBlockProps;
9
+
10
+ export const SafeDepositRentalForm = ({
11
+ cities,
12
+ cellDimensions,
13
+ cellOptions,
14
+ days,
15
+ setDays,
16
+ context,
17
+ }) => {
18
+ return (
19
+ <div className="flex-1 mr-9">
20
+ {cities.length ? renderCitiesOffices(cities, context) : null}
21
+ {renderRentalPeriod(days, setDays)}
22
+ {cellDimensions.length && cellOptions.length
23
+ ? renderDimensionsOptions(cellDimensions, cellOptions, context)
24
+ : null}
25
+ <span className="text-secondary-text font-light">Тип договора</span>
26
+ <div className="flex justify-between items-center mt-5">
27
+ {renderRadioButtons(context)}
28
+ <Button text="Офисы на карте" version="primary" />
29
+ </div>
30
+ </div>
31
+ );
32
+ };
33
+
34
+ const renderCitiesOffices = (cities, context) => {
35
+ const [selectedCity, setSelectedCity] = context.useState(cities[0].city);
36
+
37
+ const setSelected = (_) => setSelectedCity(_);
38
+
39
+ const offices = cities.find((_) => _.city === selectedCity).offices;
40
+
41
+ return (
42
+ <div className="flex justify-between mb-6">
43
+ <div className="w-full mr-4">
44
+ {cities.length
45
+ ? renderSelect({
46
+ data: cities,
47
+ field: 'city',
48
+ selected: selectedCity,
49
+ setSelected,
50
+ label: 'Город',
51
+ })
52
+ : null}
53
+ </div>
54
+ <div className="w-full">
55
+ {offices.length
56
+ ? renderSelect({
57
+ data: offices,
58
+ field: 'office',
59
+ selected: offices[0],
60
+ setSelected,
61
+ label: 'Отделение',
62
+ })
63
+ : null}
64
+ </div>
65
+ </div>
66
+ );
67
+ };
68
+
69
+ const renderDimensionsOptions = (cellDimensions, cellOptions, context) => {
70
+ const [selectedDimension, setSelectedDimension] = context.useState(cellDimensions[0].dimension);
71
+ const [selectedOption, setSelectedOption] = context.useState(cellOptions[0].option);
72
+
73
+ return (
74
+ <div className="flex justify-between mb-6">
75
+ <div className="mr-4 w-full">
76
+ {cellDimensions.length
77
+ ? renderSelect({
78
+ data: cellDimensions,
79
+ field: 'dimension',
80
+ selected: selectedDimension,
81
+ setSelected: setSelectedDimension,
82
+ label: 'Размер ячейки',
83
+ })
84
+ : null}
85
+ </div>
86
+ <div className="w-full">
87
+ {cellOptions.length
88
+ ? renderSelect({
89
+ data: cellOptions,
90
+ field: 'option',
91
+ selected: selectedOption,
92
+ setSelected: setSelectedOption,
93
+ label: 'Параметры ячейки, мм (ВхШхД)',
94
+ })
95
+ : null}
96
+ </div>
97
+ </div>
98
+ );
99
+ };
100
+
101
+ interface SelectProps {
102
+ data: any[];
103
+ field: string;
104
+ selected: string;
105
+ setSelected: (value: string) => void;
106
+ label: string;
107
+ }
108
+
109
+ const renderSelect = (props: SelectProps) => {
110
+ const { data, field, selected, setSelected, label } = props;
111
+
112
+ return (
113
+ <div>
114
+ <span className="block font-light text-m mb-2">{label}</span>
115
+ <Select
116
+ className="h-14 border border-gray p-4 rounded-md text-m-sm w-full cursor-pointer"
117
+ value={selected}
118
+ onChange={(_) => setSelected(_)}
119
+ >
120
+ {data.map((_, i) => (
121
+ <SelectOption key={String(i)} value={_?.[field]}>
122
+ {_?.[field]}
123
+ </SelectOption>
124
+ ))}
125
+ </Select>
126
+ </div>
127
+ );
128
+ };
129
+
130
+ export const renderRentalPeriod = (days, setDays) => {
131
+ const items = ['От 1 дня', 'До 365 дней'];
132
+
133
+ return (
134
+ <div className="mb-6">
135
+ <span className="block font-light text-m mb-[3px]">Срок аренды</span>
136
+ <InputRange min={1} max={365} value={days} items={items} onChange={setDays} />
137
+ </div>
138
+ );
139
+ };
140
+
141
+ const renderRadioButtons = (context) => {
142
+ const [selected, setSelected] = context.useState('option1');
143
+ const onChange = (_: React.ChangeEvent<HTMLInputElement>) => setSelected(_.target.value);
144
+
145
+ return (
146
+ <div>
147
+ <Radio
148
+ className="mb-2"
149
+ name="contractType"
150
+ text="Простое хранение"
151
+ value="option1"
152
+ checked={selected === 'option1'}
153
+ onChange={onChange}
154
+ />
155
+ <Radio
156
+ name="contractType"
157
+ text="Сделка с недвижимостью"
158
+ value="option2"
159
+ checked={selected === 'option2'}
160
+ onChange={onChange}
161
+ />
162
+ </div>
163
+ );
164
+ };