@redneckz/wildless-cms-uni-blocks 0.14.899 → 0.14.900

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 (220) hide show
  1. package/bin/migration-scripts/0.14.900.js +18 -0
  2. package/bundle/blocks.schema.json +1 -1
  3. package/bundle/bundle.umd.js +212 -20
  4. package/bundle/bundle.umd.min.js +1 -1
  5. package/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +2 -1
  6. package/bundle/components/ExchangeRateTile/CurrencyProps.d.ts +6 -0
  7. package/bundle/components/ExchangeRateTile/CurrencyTable.d.ts +7 -0
  8. package/bundle/components/ExchangeRateTile/CurrentLocation.d.ts +6 -0
  9. package/bundle/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +24 -0
  10. package/bundle/components/ExchangeRateTile/ExchangeRateTile.d.ts +5 -0
  11. package/bundle/components/ExchangeRateTile/ExchangeRateTileContent.d.ts +9 -0
  12. package/bundle/components/ExchangeRateTile/calculateResult.d.ts +2 -0
  13. package/bundle/components/ExchangeRateTile/callbackCurrencySelect.d.ts +8 -0
  14. package/bundle/components/ExchangeRateTile/formatCurrency.d.ts +1 -0
  15. package/bundle/components/ExchangeRateTile/renderInput.d.ts +11 -0
  16. package/bundle/components/ExchangeRateTile/useFetchExchangeRateData.d.ts +9 -0
  17. package/dist/components/ApplicationForm/ApplicationFormContent.d.ts +2 -1
  18. package/dist/components/Blocks.js +2 -0
  19. package/dist/components/Blocks.js.map +1 -1
  20. package/dist/components/Blocks.mobile.js +2 -0
  21. package/dist/components/Blocks.mobile.js.map +1 -1
  22. package/dist/components/ExchangeRateTile/CurrencyProps.d.ts +6 -0
  23. package/dist/components/ExchangeRateTile/CurrencyProps.js +10 -0
  24. package/dist/components/ExchangeRateTile/CurrencyProps.js.map +1 -0
  25. package/dist/components/ExchangeRateTile/CurrencyTable.d.ts +7 -0
  26. package/dist/components/ExchangeRateTile/CurrencyTable.js +23 -0
  27. package/dist/components/ExchangeRateTile/CurrencyTable.js.map +1 -0
  28. package/dist/components/ExchangeRateTile/CurrentLocation.d.ts +6 -0
  29. package/dist/components/ExchangeRateTile/CurrentLocation.js +10 -0
  30. package/dist/components/ExchangeRateTile/CurrentLocation.js.map +1 -0
  31. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +24 -0
  32. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +73 -0
  33. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -0
  34. package/dist/components/ExchangeRateTile/ExchangeRateTile.d.ts +5 -0
  35. package/dist/components/ExchangeRateTile/ExchangeRateTile.js +26 -0
  36. package/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -0
  37. package/dist/components/ExchangeRateTile/ExchangeRateTileContent.d.ts +9 -0
  38. package/dist/components/ExchangeRateTile/ExchangeRateTileContent.js +2 -0
  39. package/dist/components/ExchangeRateTile/ExchangeRateTileContent.js.map +1 -0
  40. package/dist/components/ExchangeRateTile/calculateResult.d.ts +2 -0
  41. package/dist/components/ExchangeRateTile/calculateResult.js +11 -0
  42. package/dist/components/ExchangeRateTile/calculateResult.js.map +1 -0
  43. package/dist/components/ExchangeRateTile/callbackCurrencySelect.d.ts +8 -0
  44. package/dist/components/ExchangeRateTile/callbackCurrencySelect.js +21 -0
  45. package/dist/components/ExchangeRateTile/callbackCurrencySelect.js.map +1 -0
  46. package/dist/components/ExchangeRateTile/formatCurrency.d.ts +1 -0
  47. package/dist/components/ExchangeRateTile/formatCurrency.js +10 -0
  48. package/dist/components/ExchangeRateTile/formatCurrency.js.map +1 -0
  49. package/dist/components/ExchangeRateTile/renderInput.d.ts +11 -0
  50. package/dist/components/ExchangeRateTile/renderInput.js +16 -0
  51. package/dist/components/ExchangeRateTile/renderInput.js.map +1 -0
  52. package/dist/components/ExchangeRateTile/useFetchExchangeRateData.d.ts +9 -0
  53. package/dist/components/ExchangeRateTile/useFetchExchangeRateData.js +13 -0
  54. package/dist/components/ExchangeRateTile/useFetchExchangeRateData.js.map +1 -0
  55. package/lib/common.css +1 -1
  56. package/lib/components/ApplicationForm/ApplicationFormContent.d.ts +2 -1
  57. package/lib/components/Blocks.js +2 -0
  58. package/lib/components/Blocks.js.map +1 -1
  59. package/lib/components/Blocks.mobile.js +2 -0
  60. package/lib/components/Blocks.mobile.js.map +1 -1
  61. package/lib/components/ExchangeRateTile/CurrencyProps.d.ts +6 -0
  62. package/lib/components/ExchangeRateTile/CurrencyProps.js +8 -0
  63. package/lib/components/ExchangeRateTile/CurrencyProps.js.map +1 -0
  64. package/lib/components/ExchangeRateTile/CurrencyTable.d.ts +7 -0
  65. package/lib/components/ExchangeRateTile/CurrencyTable.js +21 -0
  66. package/lib/components/ExchangeRateTile/CurrencyTable.js.map +1 -0
  67. package/lib/components/ExchangeRateTile/CurrentLocation.d.ts +6 -0
  68. package/lib/components/ExchangeRateTile/CurrentLocation.js +8 -0
  69. package/lib/components/ExchangeRateTile/CurrentLocation.js.map +1 -0
  70. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +24 -0
  71. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +71 -0
  72. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -0
  73. package/lib/components/ExchangeRateTile/ExchangeRateTile.d.ts +5 -0
  74. package/lib/components/ExchangeRateTile/ExchangeRateTile.fixture.d.ts +5 -0
  75. package/lib/components/ExchangeRateTile/ExchangeRateTile.fixture.mobile.d.ts +5 -0
  76. package/lib/components/ExchangeRateTile/ExchangeRateTile.js +24 -0
  77. package/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -0
  78. package/lib/components/ExchangeRateTile/ExchangeRateTileContent.d.ts +9 -0
  79. package/lib/components/ExchangeRateTile/ExchangeRateTileContent.js +2 -0
  80. package/lib/components/ExchangeRateTile/ExchangeRateTileContent.js.map +1 -0
  81. package/lib/components/ExchangeRateTile/calculateResult.d.ts +2 -0
  82. package/lib/components/ExchangeRateTile/calculateResult.js +7 -0
  83. package/lib/components/ExchangeRateTile/calculateResult.js.map +1 -0
  84. package/lib/components/ExchangeRateTile/callbackCurrencySelect.d.ts +8 -0
  85. package/lib/components/ExchangeRateTile/callbackCurrencySelect.js +18 -0
  86. package/lib/components/ExchangeRateTile/callbackCurrencySelect.js.map +1 -0
  87. package/lib/components/ExchangeRateTile/formatCurrency.d.ts +1 -0
  88. package/lib/components/ExchangeRateTile/formatCurrency.js +7 -0
  89. package/lib/components/ExchangeRateTile/formatCurrency.js.map +1 -0
  90. package/lib/components/ExchangeRateTile/renderInput.d.ts +11 -0
  91. package/lib/components/ExchangeRateTile/renderInput.js +13 -0
  92. package/lib/components/ExchangeRateTile/renderInput.js.map +1 -0
  93. package/lib/components/ExchangeRateTile/useFetchExchangeRateData.d.ts +9 -0
  94. package/lib/components/ExchangeRateTile/useFetchExchangeRateData.js +10 -0
  95. package/lib/components/ExchangeRateTile/useFetchExchangeRateData.js.map +1 -0
  96. package/mobile/bundle/bundle.umd.js +212 -20
  97. package/mobile/bundle/bundle.umd.min.js +1 -1
  98. package/mobile/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +2 -1
  99. package/mobile/bundle/components/ExchangeRateTile/CurrencyProps.d.ts +6 -0
  100. package/mobile/bundle/components/ExchangeRateTile/CurrencyTable.d.ts +7 -0
  101. package/mobile/bundle/components/ExchangeRateTile/CurrentLocation.d.ts +6 -0
  102. package/mobile/bundle/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +24 -0
  103. package/mobile/bundle/components/ExchangeRateTile/ExchangeRateTile.d.ts +5 -0
  104. package/mobile/bundle/components/ExchangeRateTile/ExchangeRateTileContent.d.ts +9 -0
  105. package/mobile/bundle/components/ExchangeRateTile/calculateResult.d.ts +2 -0
  106. package/mobile/bundle/components/ExchangeRateTile/callbackCurrencySelect.d.ts +8 -0
  107. package/mobile/bundle/components/ExchangeRateTile/formatCurrency.d.ts +1 -0
  108. package/mobile/bundle/components/ExchangeRateTile/renderInput.d.ts +11 -0
  109. package/mobile/bundle/components/ExchangeRateTile/useFetchExchangeRateData.d.ts +9 -0
  110. package/mobile/dist/components/ApplicationForm/ApplicationFormContent.d.ts +2 -1
  111. package/mobile/dist/components/Blocks.js +2 -0
  112. package/mobile/dist/components/Blocks.js.map +1 -1
  113. package/mobile/dist/components/ExchangeRateTile/CurrencyProps.d.ts +6 -0
  114. package/mobile/dist/components/ExchangeRateTile/CurrencyProps.js +10 -0
  115. package/mobile/dist/components/ExchangeRateTile/CurrencyProps.js.map +1 -0
  116. package/mobile/dist/components/ExchangeRateTile/CurrencyTable.d.ts +7 -0
  117. package/mobile/dist/components/ExchangeRateTile/CurrencyTable.js +23 -0
  118. package/mobile/dist/components/ExchangeRateTile/CurrencyTable.js.map +1 -0
  119. package/mobile/dist/components/ExchangeRateTile/CurrentLocation.d.ts +6 -0
  120. package/mobile/dist/components/ExchangeRateTile/CurrentLocation.js +10 -0
  121. package/mobile/dist/components/ExchangeRateTile/CurrentLocation.js.map +1 -0
  122. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +24 -0
  123. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +73 -0
  124. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -0
  125. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.d.ts +5 -0
  126. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js +26 -0
  127. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -0
  128. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTileContent.d.ts +9 -0
  129. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTileContent.js +2 -0
  130. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTileContent.js.map +1 -0
  131. package/mobile/dist/components/ExchangeRateTile/calculateResult.d.ts +2 -0
  132. package/mobile/dist/components/ExchangeRateTile/calculateResult.js +11 -0
  133. package/mobile/dist/components/ExchangeRateTile/calculateResult.js.map +1 -0
  134. package/mobile/dist/components/ExchangeRateTile/callbackCurrencySelect.d.ts +8 -0
  135. package/mobile/dist/components/ExchangeRateTile/callbackCurrencySelect.js +21 -0
  136. package/mobile/dist/components/ExchangeRateTile/callbackCurrencySelect.js.map +1 -0
  137. package/mobile/dist/components/ExchangeRateTile/formatCurrency.d.ts +1 -0
  138. package/mobile/dist/components/ExchangeRateTile/formatCurrency.js +10 -0
  139. package/mobile/dist/components/ExchangeRateTile/formatCurrency.js.map +1 -0
  140. package/mobile/dist/components/ExchangeRateTile/renderInput.d.ts +11 -0
  141. package/mobile/dist/components/ExchangeRateTile/renderInput.js +16 -0
  142. package/mobile/dist/components/ExchangeRateTile/renderInput.js.map +1 -0
  143. package/mobile/dist/components/ExchangeRateTile/useFetchExchangeRateData.d.ts +9 -0
  144. package/mobile/dist/components/ExchangeRateTile/useFetchExchangeRateData.js +13 -0
  145. package/mobile/dist/components/ExchangeRateTile/useFetchExchangeRateData.js.map +1 -0
  146. package/mobile/lib/common.css +1 -1
  147. package/mobile/lib/components/ApplicationForm/ApplicationFormContent.d.ts +2 -1
  148. package/mobile/lib/components/Blocks.js +2 -0
  149. package/mobile/lib/components/Blocks.js.map +1 -1
  150. package/mobile/lib/components/ExchangeRateTile/CurrencyProps.d.ts +6 -0
  151. package/mobile/lib/components/ExchangeRateTile/CurrencyProps.js +8 -0
  152. package/mobile/lib/components/ExchangeRateTile/CurrencyProps.js.map +1 -0
  153. package/mobile/lib/components/ExchangeRateTile/CurrencyTable.d.ts +7 -0
  154. package/mobile/lib/components/ExchangeRateTile/CurrencyTable.js +21 -0
  155. package/mobile/lib/components/ExchangeRateTile/CurrencyTable.js.map +1 -0
  156. package/mobile/lib/components/ExchangeRateTile/CurrentLocation.d.ts +6 -0
  157. package/mobile/lib/components/ExchangeRateTile/CurrentLocation.js +8 -0
  158. package/mobile/lib/components/ExchangeRateTile/CurrentLocation.js.map +1 -0
  159. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.d.ts +24 -0
  160. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +71 -0
  161. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -0
  162. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.d.ts +5 -0
  163. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js +24 -0
  164. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -0
  165. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTileContent.d.ts +9 -0
  166. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTileContent.js +2 -0
  167. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTileContent.js.map +1 -0
  168. package/mobile/lib/components/ExchangeRateTile/calculateResult.d.ts +2 -0
  169. package/mobile/lib/components/ExchangeRateTile/calculateResult.js +7 -0
  170. package/mobile/lib/components/ExchangeRateTile/calculateResult.js.map +1 -0
  171. package/mobile/lib/components/ExchangeRateTile/callbackCurrencySelect.d.ts +8 -0
  172. package/mobile/lib/components/ExchangeRateTile/callbackCurrencySelect.js +18 -0
  173. package/mobile/lib/components/ExchangeRateTile/callbackCurrencySelect.js.map +1 -0
  174. package/mobile/lib/components/ExchangeRateTile/formatCurrency.d.ts +1 -0
  175. package/mobile/lib/components/ExchangeRateTile/formatCurrency.js +7 -0
  176. package/mobile/lib/components/ExchangeRateTile/formatCurrency.js.map +1 -0
  177. package/mobile/lib/components/ExchangeRateTile/renderInput.d.ts +11 -0
  178. package/mobile/lib/components/ExchangeRateTile/renderInput.js +13 -0
  179. package/mobile/lib/components/ExchangeRateTile/renderInput.js.map +1 -0
  180. package/mobile/lib/components/ExchangeRateTile/useFetchExchangeRateData.d.ts +9 -0
  181. package/mobile/lib/components/ExchangeRateTile/useFetchExchangeRateData.js +10 -0
  182. package/mobile/lib/components/ExchangeRateTile/useFetchExchangeRateData.js.map +1 -0
  183. package/mobile/src/components/ApplicationForm/ApplicationForm.example.json +92 -29
  184. package/mobile/src/components/ApplicationForm/ApplicationFormContent.ts +2 -1
  185. package/mobile/src/components/Blocks.ts +2 -0
  186. package/mobile/src/components/ExchangeRateTile/CurrencyProps.ts +6 -0
  187. package/mobile/src/components/ExchangeRateTile/CurrencyTable.tsx +64 -0
  188. package/mobile/src/components/ExchangeRateTile/CurrentLocation.tsx +28 -0
  189. package/mobile/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +155 -0
  190. package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.example.json +12 -0
  191. package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.tsx +60 -0
  192. package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.ui.json +8 -0
  193. package/mobile/src/components/ExchangeRateTile/ExchangeRateTileContent.ts +11 -0
  194. package/mobile/src/components/ExchangeRateTile/calculateResult.ts +9 -0
  195. package/mobile/src/components/ExchangeRateTile/callbackCurrencySelect.ts +25 -0
  196. package/mobile/src/components/ExchangeRateTile/formatCurrency.ts +8 -0
  197. package/mobile/src/components/ExchangeRateTile/renderInput.tsx +43 -0
  198. package/mobile/src/components/ExchangeRateTile/useFetchExchangeRateData.ts +25 -0
  199. package/package.json +2 -2
  200. package/src/components/ApplicationForm/ApplicationForm.example.json +92 -29
  201. package/src/components/ApplicationForm/ApplicationForm.fixture.mobile.tsx +11 -11
  202. package/src/components/ApplicationForm/ApplicationForm.fixture.tsx +11 -11
  203. package/src/components/ApplicationForm/ApplicationFormContent.ts +2 -1
  204. package/src/components/Blocks.mobile.ts +2 -0
  205. package/src/components/Blocks.ts +2 -0
  206. package/src/components/ExchangeRateTile/CurrencyProps.ts +6 -0
  207. package/src/components/ExchangeRateTile/CurrencyTable.tsx +64 -0
  208. package/src/components/ExchangeRateTile/CurrentLocation.tsx +28 -0
  209. package/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +155 -0
  210. package/src/components/ExchangeRateTile/ExchangeRateTile.example.json +12 -0
  211. package/src/components/ExchangeRateTile/ExchangeRateTile.fixture.mobile.tsx +21 -0
  212. package/src/components/ExchangeRateTile/ExchangeRateTile.fixture.tsx +21 -0
  213. package/src/components/ExchangeRateTile/ExchangeRateTile.tsx +60 -0
  214. package/src/components/ExchangeRateTile/ExchangeRateTile.ui.json +8 -0
  215. package/src/components/ExchangeRateTile/ExchangeRateTileContent.ts +11 -0
  216. package/src/components/ExchangeRateTile/calculateResult.ts +9 -0
  217. package/src/components/ExchangeRateTile/callbackCurrencySelect.ts +25 -0
  218. package/src/components/ExchangeRateTile/formatCurrency.ts +8 -0
  219. package/src/components/ExchangeRateTile/renderInput.tsx +43 -0
  220. package/src/components/ExchangeRateTile/useFetchExchangeRateData.ts +25 -0
@@ -159,7 +159,7 @@ export default {
159
159
  className="col-span-12"
160
160
  title="Заполните онлайн-заявку на открытие брокерского счёта"
161
161
  typeForm="BROK"
162
- endpoint="sendcorporatelead"
162
+ endpoint="initcorporatelead"
163
163
  sections={[
164
164
  {
165
165
  columns: 2,
@@ -215,7 +215,7 @@ export default {
215
215
  className="col-span-12"
216
216
  title="Заявка на выпуск бизнес-карты"
217
217
  typeForm="BCRD"
218
- endpoint="sendcorporatelead"
218
+ endpoint="initcorporatelead"
219
219
  sections={[
220
220
  {
221
221
  inputs: [{ name: 'region', required: true }],
@@ -243,7 +243,7 @@ export default {
243
243
  className="col-span-12"
244
244
  title="Заполните заявку на консультацию"
245
245
  typeForm="COLLECTION"
246
- endpoint="sendcorporatelead"
246
+ endpoint="initcorporatelead"
247
247
  sections={[
248
248
  {
249
249
  inputs: [
@@ -281,7 +281,7 @@ export default {
281
281
  className="col-span-12"
282
282
  title="Оформите заявку на кредит прямо сейчас"
283
283
  typeForm="CRED"
284
- endpoint="sendcorporatelead"
284
+ endpoint="initcorporatelead"
285
285
  sections={[
286
286
  {
287
287
  title: 'Параметры кредита',
@@ -496,7 +496,7 @@ export default {
496
496
  className="col-span-12"
497
497
  title="Самоинкассация (ЮЛ)"
498
498
  typeForm="SELFCOLLECTION"
499
- endpoint="sendcorporatelead"
499
+ endpoint="initcorporatelead"
500
500
  sections={[
501
501
  {
502
502
  inputs: [
@@ -557,7 +557,7 @@ export default {
557
557
  className="col-span-12"
558
558
  title="Получите консультацию по обслуживанию ВЭД"
559
559
  typeForm="KVED"
560
- endpoint="sendcorporatelead"
560
+ endpoint="initcorporatelead"
561
561
  sections={[
562
562
  {
563
563
  inputs: [
@@ -658,7 +658,7 @@ export default {
658
658
  className="col-span-12"
659
659
  title="Заявка по акции 'Шеф в деле'"
660
660
  typeForm="FCB"
661
- endpoint="sendcorporatelead"
661
+ endpoint="initcorporatelead"
662
662
  sections={[
663
663
  {
664
664
  inputs: [{ name: 'name', required: true }],
@@ -684,7 +684,7 @@ export default {
684
684
  className="col-span-12"
685
685
  title="Льготное кредитование АПК"
686
686
  typeForm="CREDL"
687
- endpoint="sendcorporatelead"
687
+ endpoint="initcorporatelead"
688
688
  sections={[
689
689
  {
690
690
  inputs: [{ name: 'name', required: true }],
@@ -710,7 +710,7 @@ export default {
710
710
  className="col-span-12"
711
711
  title="Подключить расчетно-кассовое обслуживание"
712
712
  typeForm="CONT"
713
- endpoint="sendcorporatelead"
713
+ endpoint="initcorporatelead"
714
714
  sections={[
715
715
  {
716
716
  inputs: [{ name: 'name', required: true }],
@@ -850,7 +850,7 @@ export default {
850
850
  className="col-span-12"
851
851
  title="Онлайн-заявка от партнера"
852
852
  typeForm="PF"
853
- endpoint="sendcorporatelead"
853
+ endpoint="initcorporatelead"
854
854
  sections={[
855
855
  {
856
856
  title: 'Информация о партнере',
@@ -919,7 +919,7 @@ export default {
919
919
  className="col-span-12"
920
920
  title="Заявка на открытие счёта для бизнеса"
921
921
  typeForm="UNIVERSAL"
922
- endpoint="sendcorporatelead"
922
+ endpoint="initcorporatelead"
923
923
  sections={[
924
924
  {
925
925
  inputs: [{ name: 'name', required: true }],
@@ -38,10 +38,11 @@ export type FieldDef = Required &
38
38
  name?: NameFieldDef;
39
39
  dadata?: boolean;
40
40
  defaultValue?: string;
41
+ placeholder?: string;
41
42
  };
42
43
 
43
44
  /** @hidden */
44
- export type EndpointType = 'lead' | 'sendcorporatelead' | 'initcorporatelead';
45
+ export type EndpointType = 'lead' | 'initcorporatelead';
45
46
 
46
47
  /**
47
48
  * @title Секция полей ввода
@@ -22,6 +22,7 @@ import { CreditForm } from './CreditForm/CreditForm';
22
22
  import { DebitForm } from './DebitForm/DebitForm';
23
23
  import { DepositFiltration } from './DepositFiltration/DepositFiltration';
24
24
  import { ErrorBlock } from './ErrorBlock/ErrorBlock';
25
+ import { ExchangeRateTile } from './ExchangeRateTile/ExchangeRateTile';
25
26
  import { Footer } from './Footer/Footer';
26
27
  import { GalleryLayout } from './GalleryLayout/GalleryLayout';
27
28
  import { GrantSupport } from './GrantSupport/GrantSupport';
@@ -61,6 +62,7 @@ export const Blocks: BlocksRegistry = {
61
62
  CarouselTariffsCard,
62
63
  DepositFiltration,
63
64
  ErrorBlock,
65
+ ExchangeRateTile,
64
66
  Footer,
65
67
  GalleryLayout,
66
68
  GrantSupport,
@@ -23,6 +23,7 @@ import { CreditForm } from './CreditForm/CreditForm';
23
23
  import { DebitForm } from './DebitForm/DebitForm';
24
24
  import { DepositFiltration } from './DepositFiltration/DepositFiltration';
25
25
  import { ErrorBlock } from './ErrorBlock/ErrorBlock';
26
+ import { ExchangeRateTile } from './ExchangeRateTile/ExchangeRateTile';
26
27
  import { Footer } from './Footer/Footer';
27
28
  import { GalleryLayout } from './GalleryLayout/GalleryLayout';
28
29
  import { GrantSupport } from './GrantSupport/GrantSupport';
@@ -66,6 +67,7 @@ export const Blocks: BlocksRegistry = {
66
67
  ErrorBlock,
67
68
  Footer,
68
69
  GalleryLayout,
70
+ ExchangeRateTile,
69
71
  GrantSupport,
70
72
  Header,
71
73
  Headline,
@@ -0,0 +1,6 @@
1
+ export enum Currency {
2
+ RUB = 'RUB',
3
+ EUR = 'EUR',
4
+ USD = 'USD',
5
+ CNY = 'CNY',
6
+ }
@@ -0,0 +1,64 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { type ComponentType } from '../../model/ComponentType';
3
+ import { Img } from '../../ui-kit/Img/Img';
4
+ import { Text } from '../../ui-kit/Text/Text';
5
+ import { style } from '../../utils/style';
6
+ import { type ExchangeCurrencyItem } from './ExchangeCurrencyCalculator';
7
+ import { formatCurrency } from './formatCurrency';
8
+
9
+ const TABLE_STYLE_BASE = 'text-m font-light text-secondary-text ';
10
+ const TABLE_HEAD_STYLE = `${TABLE_STYLE_BASE} text-left`;
11
+ const TABLE_HEAD_STYLE_CENTER = `${TABLE_STYLE_BASE} pl-5xl text-center`;
12
+ const TABLE_HEAD_STYLE_RIGHT = `${TABLE_STYLE_BASE} pl-5xl text-right`;
13
+
14
+ const CURRENCY_ICONS_MAP = {
15
+ USD: 'DollarIcon',
16
+ EUR: 'EuroIcon',
17
+ CNY: 'ChineseYuanRenminbiIcon',
18
+ };
19
+
20
+ interface CurrencyTableProps extends ComponentType {
21
+ exchangeCurrencyItems: ExchangeCurrencyItem[];
22
+ }
23
+
24
+ export const CurrencyTable = JSX<CurrencyTableProps>(({ className, exchangeCurrencyItems }) => (
25
+ <table className={style('h-fit w-full', className)}>
26
+ <thead>
27
+ <tr>
28
+ <th className={TABLE_HEAD_STYLE}>
29
+ <Text size="text-m">Валюта</Text>
30
+ </th>
31
+ <th className={TABLE_HEAD_STYLE_CENTER}>
32
+ <Text size="text-m">Купить</Text>
33
+ </th>
34
+ <th className={TABLE_HEAD_STYLE_RIGHT}>
35
+ <Text size="text-m">Продать</Text>
36
+ </th>
37
+ </tr>
38
+ </thead>
39
+ <tbody>{exchangeCurrencyItems.map(renderCurrencyRow)}</tbody>
40
+ </table>
41
+ ));
42
+
43
+ const renderCurrencyRow = (exchangeCurrencyItem: ExchangeCurrencyItem) => {
44
+ const currency = exchangeCurrencyItem?.currency?.currency;
45
+
46
+ return (
47
+ <tr key={currency} className="pb-2xs text-h6">
48
+ <td className="pt-m m-auto flex text-left">
49
+ <div className="flex items-center gap-xs">
50
+ {currency ? (
51
+ <Img image={{ icon: CURRENCY_ICONS_MAP[currency] }} width="24" height="24" />
52
+ ) : null}
53
+ <Text size="text-h6">{currency}</Text>
54
+ </div>
55
+ </td>
56
+ <td className="pt-m pl-5xl text-center">
57
+ <Text size="text-h6">{formatCurrency(exchangeCurrencyItem?.saleExchangeRate)}</Text>
58
+ </td>
59
+ <td className="pt-m pl-5xl text-right">
60
+ <Text size="text-h6">{formatCurrency(exchangeCurrencyItem?.buyExchangeRate)}</Text>
61
+ </td>
62
+ </tr>
63
+ );
64
+ };
@@ -0,0 +1,28 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { type ComponentType } from '../../model/ComponentType';
3
+ import { type Picture } from '../../model/Picture';
4
+ import { RoundedIcon } from '../../ui-kit/Icon/RoundedIcon';
5
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph';
6
+ import { style } from '../../utils/style';
7
+
8
+ interface CurrentLocationProps extends ComponentType {
9
+ address?: string;
10
+ }
11
+
12
+ const icon: Picture = { icon: 'GpsIcon' };
13
+
14
+ export const CurrentLocation = JSX<CurrentLocationProps>(({ className = '', address }) => (
15
+ <div className={style('flex gap-s w-full justify-between @sm:justify-center', className)}>
16
+ <RoundedIcon {...icon} iconBgVersion="primary" className="shrink-0" />
17
+ <div className="space-y-2xs whitespace-pre-wrap">
18
+ {address ? (
19
+ <Paragraph size="text-l" color="text-primary-main">
20
+ {address}
21
+ </Paragraph>
22
+ ) : null}
23
+ <Paragraph size="text-m" color="text-secondary-text">
24
+ Курс указан для заданного офиса
25
+ </Paragraph>
26
+ </div>
27
+ </div>
28
+ ));
@@ -0,0 +1,155 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback, useState } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type ComponentType } from '../../model/ComponentType';
4
+ import { LinkButton } from '../../ui-kit/LinkButton/LinkButton';
5
+ import { type ButtonCommonContent } from '../../ui-kit/LinkButton/LinkButtonContent';
6
+ import { calculateResult, formatValue } from './calculateResult';
7
+ import { callbackCurrencySelect } from './callbackCurrencySelect';
8
+ import { Currency } from './CurrencyProps';
9
+ import { renderInput } from './renderInput';
10
+
11
+ export interface ExchangeCurrencyItem {
12
+ currency?: {
13
+ id?: number;
14
+ code?: string;
15
+ currency?: Currency;
16
+ };
17
+ buyExchangeRate?: number;
18
+ saleExchangeRate?: number;
19
+ }
20
+
21
+ export interface ExchangeCurrencyCalculatorProps extends ComponentType {
22
+ currencyRatesBuy: ExchangeCurrencyItem[];
23
+ currencyRatesSell: ExchangeCurrencyItem[];
24
+ button?: ButtonCommonContent;
25
+ }
26
+
27
+ export interface CalcState {
28
+ inputSell: string;
29
+ inputBuy: string;
30
+ selectSell: Currency;
31
+ selectBuy: Currency;
32
+ }
33
+
34
+ export const ExchangeCurrencyCalculator = JSX<ExchangeCurrencyCalculatorProps>(
35
+ ({ className = '', currencyRatesBuy, currencyRatesSell, button }) => {
36
+ const [calcState, setCalcState] = useState<CalcState>({
37
+ inputSell: '',
38
+ inputBuy: '',
39
+ selectSell: currencyRatesBuy?.[0]?.currency?.currency || Currency.RUB,
40
+ selectBuy: currencyRatesSell?.[0]?.currency?.currency || Currency.USD,
41
+ });
42
+
43
+ const handleSetCalcState = useCallback(
44
+ (newState: Partial<CalcState>) => setCalcState((oldState) => ({ ...oldState, ...newState })),
45
+ [],
46
+ );
47
+
48
+ return (
49
+ <div className={`flex flex-col gap-m pt-2xl ${className}`}>
50
+ {currencyRatesBuy && currencyRatesSell ? (
51
+ <div className="grid gap-m">
52
+ {renderInput({
53
+ placeholder: 'Хочу продать',
54
+ rates: currencyRatesSell,
55
+ selected: calcState.selectSell,
56
+ setSelected: handleSelectSell(calcState, handleSetCalcState, currencyRatesSell),
57
+ value: calcState.inputSell,
58
+ onChange: (value) =>
59
+ handleInputSell(handleSetCalcState, currencyRatesSell)(
60
+ value,
61
+ calcState.selectSell,
62
+ calcState.selectBuy,
63
+ ),
64
+ })}
65
+ {renderInput({
66
+ placeholder: 'Получу',
67
+ rates: currencyRatesBuy,
68
+ selected: calcState.selectBuy,
69
+ setSelected: handleSelectBuy(calcState, handleSetCalcState, currencyRatesBuy),
70
+ value: calcState.inputBuy,
71
+ onChange: (value) =>
72
+ handleInputBuy(handleSetCalcState, currencyRatesBuy)(
73
+ value,
74
+ calcState.selectBuy,
75
+ calcState.selectSell,
76
+ ),
77
+ })}
78
+ </div>
79
+ ) : null}
80
+ {button?.text ? (
81
+ <LinkButton text={button.text} version={button?.version} {...button} />
82
+ ) : null}
83
+ </div>
84
+ );
85
+ },
86
+ );
87
+
88
+ const handleSelectSell =
89
+ (
90
+ calcState: CalcState,
91
+ setCalcState: (state: Partial<CalcState>) => void,
92
+ currencyRatesSell: ExchangeCurrencyItem[],
93
+ ) =>
94
+ (value: Currency) => {
95
+ setCalcState({ selectSell: value });
96
+ callbackCurrencySelect({
97
+ value,
98
+ oppositeValue: calcState.selectBuy,
99
+ handleConvert: (currencyFrom = calcState.selectSell, currencyTo = calcState.selectBuy) => {
100
+ handleInputSell(setCalcState, currencyRatesSell)(
101
+ calcState.inputSell,
102
+ currencyFrom,
103
+ currencyTo,
104
+ );
105
+ },
106
+ });
107
+ };
108
+
109
+ const handleSelectBuy =
110
+ (
111
+ calcState: CalcState,
112
+ setCalcState: (state: Partial<CalcState>) => void,
113
+ currencyRatesBuy: ExchangeCurrencyItem[],
114
+ ) =>
115
+ (value: Currency) => {
116
+ setCalcState({ selectBuy: value });
117
+ callbackCurrencySelect({
118
+ value,
119
+ oppositeValue: calcState.selectSell,
120
+ handleConvert: (currencyTo = calcState.selectBuy, currencyFrom = calcState.selectSell) =>
121
+ handleInputBuy(setCalcState, currencyRatesBuy)(
122
+ calcState.inputBuy,
123
+ currencyTo,
124
+ currencyFrom,
125
+ ),
126
+ });
127
+ };
128
+
129
+ const handleInputSell =
130
+ (setCalcState: (state: Partial<CalcState>) => void, currencyRatesSell: ExchangeCurrencyItem[]) =>
131
+ (value: string, currencyFrom: Currency, currencyTo: Currency) => {
132
+ setCalcState({ inputSell: formatValue(value), selectBuy: currencyTo });
133
+ const rate =
134
+ currencyRatesSell.find((_) => _.currency?.currency === currencyTo)?.buyExchangeRate ||
135
+ currencyRatesSell.find((_) => _.currency?.currency === currencyFrom)?.buyExchangeRate;
136
+ if (rate) {
137
+ setCalcState({
138
+ inputBuy: String(calculateResult(value, rate, currencyFrom === Currency.RUB) || ''),
139
+ });
140
+ }
141
+ };
142
+
143
+ const handleInputBuy =
144
+ (setCalcState: (state: Partial<CalcState>) => void, currencyRatesBuy: ExchangeCurrencyItem[]) =>
145
+ (value: string, currencyTo: Currency, currencyFrom: Currency) => {
146
+ setCalcState({ inputBuy: formatValue(value), selectSell: currencyFrom });
147
+ const rate =
148
+ currencyRatesBuy.find((_) => _.currency?.currency === currencyFrom)?.saleExchangeRate ||
149
+ currencyRatesBuy.find((_) => _.currency?.currency === currencyTo)?.saleExchangeRate;
150
+ if (rate) {
151
+ setCalcState({
152
+ inputSell: String(calculateResult(value, rate, currencyTo === Currency.RUB) || ''),
153
+ });
154
+ }
155
+ };
@@ -0,0 +1,12 @@
1
+ {
2
+ "content": {
3
+ "version": "primary",
4
+ "padding": "",
5
+ "button": {
6
+ "href": "https://coins.rshb.ru/exchange",
7
+ "text": "Купить валюту",
8
+ "target": "_blank",
9
+ "version": "primary"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,21 @@
1
+ import '../../setup-fixture';
2
+
3
+ import { type LinkButtonProps } from '../../ui-kit/LinkButton/LinkButtonProps';
4
+ import { PopupManager } from '../../ui-kit/PopupManager/PopupManager';
5
+ import { ExchangeRateTile } from './ExchangeRateTile';
6
+
7
+ const button: LinkButtonProps = {
8
+ href: 'https://coins.rshb.ru/exchange',
9
+ text: 'Купить валюту',
10
+ target: '_blank',
11
+ version: 'primary',
12
+ };
13
+
14
+ export default {
15
+ default: (
16
+ <div className="container grid grid-cols-12">
17
+ <ExchangeRateTile button={button} className="col-span-12" />
18
+ <PopupManager />
19
+ </div>
20
+ ),
21
+ };
@@ -0,0 +1,21 @@
1
+ import '../../setup-fixture';
2
+
3
+ import { type LinkButtonProps } from '../../ui-kit/LinkButton/LinkButtonProps';
4
+ import { PopupManager } from '../../ui-kit/PopupManager/PopupManager';
5
+ import { ExchangeRateTile } from './ExchangeRateTile';
6
+
7
+ const button: LinkButtonProps = {
8
+ href: 'https://coins.rshb.ru/exchange',
9
+ text: 'Купить валюту',
10
+ target: '_blank',
11
+ version: 'primary',
12
+ };
13
+
14
+ export default {
15
+ default: (
16
+ <div className="container grid grid-cols-12">
17
+ <ExchangeRateTile button={button} className="col-span-8" />
18
+ <PopupManager />
19
+ </div>
20
+ ),
21
+ };
@@ -0,0 +1,60 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useLocation } from '../../hooks/useLocation';
3
+ import { BaseTile } from '../../ui-kit/BaseTile/BaseTile';
4
+ import { BlockWrapper } from '../../ui-kit/BlockWrapper';
5
+ import { Heading } from '../../ui-kit/Heading/Heading';
6
+ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
7
+ import { style } from '../../utils/style';
8
+ import { Currency } from './CurrencyProps';
9
+ import { CurrencyTable } from './CurrencyTable';
10
+ import { CurrentLocation } from './CurrentLocation';
11
+ import {
12
+ ExchangeCurrencyCalculator,
13
+ type ExchangeCurrencyItem,
14
+ } from './ExchangeCurrencyCalculator';
15
+ import { type ExchangeRateTileContent } from './ExchangeRateTileContent';
16
+ import { useFetchExchangeRateData } from './useFetchExchangeRateData';
17
+
18
+ export interface ExchangeRateTileProps extends ExchangeRateTileContent, UniBlockProps {}
19
+
20
+ export const ExchangeRateTile = JSX<ExchangeRateTileProps>(
21
+ ({ className = '', title = 'Курсы обмена валют', button, ...rest }) => {
22
+ const currentLocation = useLocation();
23
+ const exchangeRates = useFetchExchangeRateData(currentLocation);
24
+
25
+ const currencyRates = getCurrencyRates(exchangeRates?.exchangeRate?.currencies);
26
+
27
+ const currencyRatesBuy = currencyRates.filter((_) => _.buyExchangeRate);
28
+ currencyRatesBuy.unshift({ currency: { currency: Currency.RUB } });
29
+
30
+ const currencyRatesSell = currencyRates.filter((_) => _.saleExchangeRate);
31
+ currencyRatesSell.push({ currency: { currency: Currency.RUB } });
32
+
33
+ return (
34
+ <BlockWrapper className={style('box-border min-h-80', className)} {...rest}>
35
+ <BaseTile
36
+ className="h-full"
37
+ title={<Heading headingType="h4" title={title} className="whitespace-pre-wrap" />}
38
+ >
39
+ <div className="flex w-full gap-6xl flex-wrap @lg:flex-nowrap">
40
+ <div className="w-full @2xl:w-auto @5xl:w-1/2">
41
+ {currencyRates ? (
42
+ <CurrencyTable className="mb-xl" exchangeCurrencyItems={currencyRates} />
43
+ ) : null}
44
+ <CurrentLocation address={exchangeRates?.address} />
45
+ </div>
46
+ <ExchangeCurrencyCalculator
47
+ className="grow w-1/2"
48
+ currencyRatesBuy={currencyRatesBuy}
49
+ currencyRatesSell={currencyRatesSell}
50
+ button={button}
51
+ />
52
+ </div>
53
+ </BaseTile>
54
+ </BlockWrapper>
55
+ );
56
+ },
57
+ );
58
+
59
+ const getCurrencyRates = (currencies?: ExchangeCurrencyItem[]) =>
60
+ currencies?.filter((_) => [1, 2, 3].includes(_?.currency?.id as number)) || [];
@@ -0,0 +1,8 @@
1
+ {
2
+ "content": {},
3
+ "style": {
4
+ "ui:options": {
5
+ "minCols": 6
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,11 @@
1
+ import { type TitleProps } from '../../model/HeadlineType';
2
+ import { type LinkButtonContent } from '../../ui-kit/LinkButton/LinkButtonContent';
3
+ import { type UniBlockContent } from '../../UniBlock/UniBlockProps';
4
+
5
+ /**
6
+ * @title Курсы обмена валют
7
+ */
8
+ export type ExchangeRateTileContent = UniBlockContent &
9
+ TitleProps & {
10
+ button?: LinkButtonContent;
11
+ };
@@ -0,0 +1,9 @@
1
+ import { roundTo } from '../../utils/roundTo';
2
+
3
+ export const calculateResult = (value: string, rate: number, precision: boolean) => {
4
+ const result = Number(formatValue(value)) * Math.pow(rate, precision ? -1 : 1);
5
+
6
+ return Number.isInteger(result) ? result : roundTo(result);
7
+ };
8
+
9
+ export const formatValue = (value: string) => value.replace(/[^\d.,]/g, '').replace(',', '.');
@@ -0,0 +1,25 @@
1
+ import { tableFunc } from '../../utils/tableFunc';
2
+ import { Currency } from './CurrencyProps';
3
+
4
+ interface TableFuncProps {
5
+ value: Currency;
6
+ oppositeValue: Currency;
7
+ handleConvert: (currencyFrom?: Currency, currencyTo?: Currency) => void;
8
+ }
9
+
10
+ export const callbackCurrencySelect = (props: TableFuncProps) =>
11
+ tableFunc<TableFuncProps, () => void>([
12
+ [
13
+ (_) => _.value !== Currency.RUB && _.oppositeValue !== Currency.RUB,
14
+ () => props.handleConvert(props.value, Currency.RUB),
15
+ ],
16
+ [
17
+ (_) => _.value === Currency.RUB && _.oppositeValue === Currency.RUB,
18
+ () => props.handleConvert(props.value, Currency.USD),
19
+ ],
20
+ [
21
+ (_) => _.value === Currency.RUB && _.oppositeValue === Currency.RUB,
22
+ () => props.handleConvert(props.value, Currency.CNY),
23
+ ],
24
+ [() => true, () => props.handleConvert(props.value)],
25
+ ])(props)?.();
@@ -0,0 +1,8 @@
1
+ import { Currency } from './CurrencyProps';
2
+
3
+ const currencyNumberFormat = new Intl.NumberFormat('ru', {
4
+ style: 'currency',
5
+ currency: Currency.RUB,
6
+ });
7
+
8
+ export const formatCurrency = (value?: number) => (value ? currencyNumberFormat.format(value) : '');
@@ -0,0 +1,43 @@
1
+ import { type ControlProps } from '../../model/ControlProps';
2
+ import { type PlaceholderProps } from '../../model/PlaceholderProps';
3
+ import { Input } from '../../ui-kit/Input/Input';
4
+ import { type Option } from '../../ui-kit/Select/Option';
5
+ import { Select } from '../../ui-kit/Select/Select';
6
+ import { type Currency } from './CurrencyProps';
7
+ import { type ExchangeCurrencyItem } from './ExchangeCurrencyCalculator';
8
+
9
+ interface InputProps extends PlaceholderProps, ControlProps<string> {
10
+ rates: ExchangeCurrencyItem[];
11
+ selected: string;
12
+ setSelected: (value: Currency) => void;
13
+ }
14
+
15
+ export function renderInput(props: InputProps) {
16
+ const { placeholder, rates, selected, value, onChange, setSelected } = props;
17
+ const ratesOptions: Option[] = rates.map((_) => ({
18
+ key: _?.currency?.currency ?? '',
19
+ text: _?.currency?.currency ?? '',
20
+ }));
21
+ const selectedValue: Option = { key: selected, text: selected };
22
+
23
+ return (
24
+ <div className="relative flex">
25
+ <Input
26
+ className="shrink-0 text-l w-full appearance-none -mr-20"
27
+ placeholder={placeholder}
28
+ type="text"
29
+ value={value}
30
+ onChange={onChange}
31
+ />
32
+ {ratesOptions.length ? (
33
+ <Select
34
+ className="absolute right-0"
35
+ isBorder={false}
36
+ onChange={(_) => setSelected(_.key as Currency)}
37
+ options={ratesOptions}
38
+ value={selectedValue}
39
+ />
40
+ ) : null}
41
+ </div>
42
+ );
43
+ }
@@ -0,0 +1,25 @@
1
+ import { useAsyncData } from '@redneckz/uni-jsx/lib/hooks/useAsyncData';
2
+ import { API_BASE_URI } from '../../api/apiBaseUrl';
3
+ import { type ExchangeCurrencyItem } from '../../components/ExchangeRateTile/ExchangeCurrencyCalculator';
4
+ import { type Region } from '../../hooks/useRegions';
5
+ import { fetchJSONUnsafe, type FetchJSONUnsafeType } from '../../utils/fetchJSON';
6
+
7
+ export interface ExchangeData {
8
+ exchangeRate?: {
9
+ currencies?: ExchangeCurrencyItem[];
10
+ };
11
+ address?: string;
12
+ }
13
+
14
+ const EXCHANGE_RATES_URL = `${API_BASE_URI}/exchangerates`;
15
+
16
+ export function useFetchExchangeRateData(currentRegion: Region) {
17
+ const regionCode = currentRegion?.code || '000';
18
+
19
+ const { data } = useAsyncData(
20
+ EXCHANGE_RATES_URL + `?regionCode=${regionCode}`,
21
+ fetchJSONUnsafe as FetchJSONUnsafeType<ExchangeData>,
22
+ );
23
+
24
+ return data || {};
25
+ }