@redneckz/wildless-cms-uni-blocks 0.14.594 → 0.14.596

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 (514) hide show
  1. package/bundle/EventBus/EventBus.d.ts +17 -4
  2. package/bundle/EventBus/defaultEventBus.d.ts +2 -13
  3. package/bundle/EventBus/useSubject.d.ts +2 -0
  4. package/bundle/EventBus/useSubjectState.d.ts +2 -0
  5. package/bundle/bundle.umd.js +148 -105
  6. package/bundle/bundle.umd.min.js +1 -1
  7. package/bundle/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  8. package/bundle/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  9. package/bundle/hooks/useLocation.d.ts +2 -1
  10. package/bundle/hooks/useReducer.d.ts +4 -0
  11. package/bundle/model/DefaultControlType.d.ts +7 -0
  12. package/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +3 -7
  13. package/bundle/ui-kit/Foldable/Foldable.d.ts +11 -1
  14. package/bundle/ui-kit/Input/InputProps.d.ts +2 -6
  15. package/bundle/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  16. package/bundle/ui-kit/RadioButtonGroup/RadioButtonGroup.d.ts +3 -5
  17. package/bundle/ui-kit/RadioButtonGroup/RadioButtonGroupControl.d.ts +2 -0
  18. package/bundle/ui-kit/Select/Select.d.ts +4 -7
  19. package/bundle/ui-kit/Select/SelectControl.d.ts +1 -8
  20. package/bundle/utils/getRequiredLabel.d.ts +2 -0
  21. package/dist/EventBus/EventBus.d.ts +17 -4
  22. package/dist/EventBus/EventBus.js +29 -10
  23. package/dist/EventBus/EventBus.js.map +1 -1
  24. package/dist/EventBus/defaultEventBus.d.ts +2 -13
  25. package/dist/EventBus/defaultEventBus.js.map +1 -1
  26. package/dist/EventBus/useSubject.d.ts +2 -0
  27. package/dist/EventBus/useSubject.js +17 -0
  28. package/dist/EventBus/useSubject.js.map +1 -0
  29. package/dist/EventBus/useSubjectState.d.ts +2 -0
  30. package/dist/EventBus/useSubjectState.js +10 -0
  31. package/dist/EventBus/useSubjectState.js.map +1 -0
  32. package/dist/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  33. package/dist/components/CarouselTariffsCard/CardCellsSection.js +18 -0
  34. package/dist/components/CarouselTariffsCard/CardCellsSection.js.map +1 -0
  35. package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +11 -25
  36. package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  37. package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  38. package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +5 -0
  39. package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +1 -0
  40. package/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
  41. package/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  42. package/dist/components/Header/HeaderSecondaryMenu.js +1 -1
  43. package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  44. package/dist/components/OfficesAtmsMap/AtmsMap.js +1 -1
  45. package/dist/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
  46. package/dist/components/OfficesAtmsMap/OfficesMap.js +1 -1
  47. package/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  48. package/dist/components/StickyBottomMenu/BurgerMenuDialog.js +1 -1
  49. package/dist/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
  50. package/dist/hooks/useLocation.d.ts +2 -1
  51. package/dist/hooks/useLocation.js +27 -33
  52. package/dist/hooks/useLocation.js.map +1 -1
  53. package/dist/hooks/useReducer.d.ts +4 -0
  54. package/dist/hooks/useReducer.js +12 -0
  55. package/dist/hooks/useReducer.js.map +1 -0
  56. package/dist/hooks/useRegions.js +3 -1
  57. package/dist/hooks/useRegions.js.map +1 -1
  58. package/dist/model/DefaultControlType.d.ts +7 -0
  59. package/dist/{components/CarouselTariffsCard/CarouselTariffsCardAction.js → model/DefaultControlType.js} +1 -1
  60. package/dist/model/DefaultControlType.js.map +1 -0
  61. package/dist/ui-kit/Calculator/renderBinaryRadioButtonGroup.js +1 -1
  62. package/dist/ui-kit/Calculator/renderBinaryRadioButtonGroup.js.map +1 -1
  63. package/dist/ui-kit/DatePicker/DatePickerControl.d.ts +3 -7
  64. package/dist/ui-kit/DatePicker/DatePickerControl.js +2 -1
  65. package/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  66. package/dist/ui-kit/DialogManager/useDialogManager.js +3 -3
  67. package/dist/ui-kit/DialogManager/useDialogManager.js.map +1 -1
  68. package/dist/ui-kit/DialogManager/useDialogsList.js +1 -1
  69. package/dist/ui-kit/DialogManager/useDialogsList.js.map +1 -1
  70. package/dist/ui-kit/Foldable/Foldable.d.ts +11 -1
  71. package/dist/ui-kit/Foldable/Foldable.js +10 -2
  72. package/dist/ui-kit/Foldable/Foldable.js.map +1 -1
  73. package/dist/ui-kit/FormField/Fields/SexField.js +5 -4
  74. package/dist/ui-kit/FormField/Fields/SexField.js.map +1 -1
  75. package/dist/ui-kit/FormField/Fields/VedField.js +1 -1
  76. package/dist/ui-kit/FormField/Fields/VedField.js.map +1 -1
  77. package/dist/ui-kit/FormField/constants.js +1 -0
  78. package/dist/ui-kit/FormField/constants.js.map +1 -1
  79. package/dist/ui-kit/FormField/getValidation.js +1 -0
  80. package/dist/ui-kit/FormField/getValidation.js.map +1 -1
  81. package/dist/ui-kit/Input/InputControl.js +2 -2
  82. package/dist/ui-kit/Input/InputControl.js.map +1 -1
  83. package/dist/ui-kit/Input/InputPhoneControl.js +2 -1
  84. package/dist/ui-kit/Input/InputPhoneControl.js.map +1 -1
  85. package/dist/ui-kit/Input/InputProps.d.ts +2 -6
  86. package/dist/ui-kit/Input/InputSnilsControl.js +2 -1
  87. package/dist/ui-kit/Input/InputSnilsControl.js.map +1 -1
  88. package/dist/ui-kit/LocationDialog/LocationDialog.js +9 -12
  89. package/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  90. package/dist/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  91. package/dist/ui-kit/LocationDialog/SelectedLocation.js +15 -0
  92. package/dist/ui-kit/LocationDialog/SelectedLocation.js.map +1 -0
  93. package/dist/ui-kit/PopupManager/PopupManager.js +1 -1
  94. package/dist/ui-kit/PopupManager/PopupManager.js.map +1 -1
  95. package/dist/ui-kit/PopupManager/usePopupManager.js +3 -3
  96. package/dist/ui-kit/PopupManager/usePopupManager.js.map +1 -1
  97. package/dist/ui-kit/RadioButtonGroup/RadioButtonGroup.d.ts +3 -5
  98. package/dist/ui-kit/RadioButtonGroup/RadioButtonGroup.js +1 -1
  99. package/dist/ui-kit/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  100. package/dist/ui-kit/RadioButtonGroup/RadioButtonGroupControl.d.ts +2 -0
  101. package/dist/ui-kit/RadioButtonGroup/RadioButtonGroupControl.js +10 -0
  102. package/dist/ui-kit/RadioButtonGroup/RadioButtonGroupControl.js.map +1 -0
  103. package/dist/ui-kit/Select/Select.d.ts +4 -7
  104. package/dist/ui-kit/Select/Select.js +3 -4
  105. package/dist/ui-kit/Select/Select.js.map +1 -1
  106. package/dist/ui-kit/Select/SelectControl.d.ts +1 -8
  107. package/dist/ui-kit/Select/SelectControl.js +2 -1
  108. package/dist/ui-kit/Select/SelectControl.js.map +1 -1
  109. package/dist/utils/getRequiredLabel.d.ts +2 -0
  110. package/dist/utils/getRequiredLabel.js +5 -0
  111. package/dist/utils/getRequiredLabel.js.map +1 -0
  112. package/lib/EventBus/EventBus.d.ts +17 -4
  113. package/lib/EventBus/EventBus.js +29 -10
  114. package/lib/EventBus/EventBus.js.map +1 -1
  115. package/lib/EventBus/defaultEventBus.d.ts +2 -13
  116. package/lib/EventBus/defaultEventBus.js.map +1 -1
  117. package/lib/EventBus/useSubject.d.ts +2 -0
  118. package/lib/EventBus/useSubject.js +14 -0
  119. package/lib/EventBus/useSubject.js.map +1 -0
  120. package/lib/EventBus/useSubjectState.d.ts +2 -0
  121. package/lib/EventBus/useSubjectState.js +7 -0
  122. package/lib/EventBus/useSubjectState.js.map +1 -0
  123. package/lib/common.css +1 -1
  124. package/lib/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  125. package/lib/components/CarouselTariffsCard/CardCellsSection.js +16 -0
  126. package/lib/components/CarouselTariffsCard/CardCellsSection.js.map +1 -0
  127. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +12 -26
  128. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  129. package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  130. package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +3 -0
  131. package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +1 -0
  132. package/lib/components/ExchangeRateTile/ExchangeRateTile.js +2 -2
  133. package/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  134. package/lib/components/Header/HeaderSecondaryMenu.js +2 -2
  135. package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  136. package/lib/components/OfficesAtmsMap/AtmsMap.js +2 -2
  137. package/lib/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
  138. package/lib/components/OfficesAtmsMap/OfficesMap.js +2 -2
  139. package/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  140. package/lib/components/StickyBottomMenu/BurgerMenuDialog.js +2 -2
  141. package/lib/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
  142. package/lib/hooks/useLocation.d.ts +2 -1
  143. package/lib/hooks/useLocation.js +26 -33
  144. package/lib/hooks/useLocation.js.map +1 -1
  145. package/lib/hooks/useReducer.d.ts +4 -0
  146. package/lib/hooks/useReducer.js +9 -0
  147. package/lib/hooks/useReducer.js.map +1 -0
  148. package/lib/hooks/useRegions.js +3 -1
  149. package/lib/hooks/useRegions.js.map +1 -1
  150. package/lib/model/DefaultControlType.d.ts +7 -0
  151. package/lib/model/DefaultControlType.js +2 -0
  152. package/lib/model/DefaultControlType.js.map +1 -0
  153. package/lib/ui-kit/Calculator/renderBinaryRadioButtonGroup.js +1 -1
  154. package/lib/ui-kit/Calculator/renderBinaryRadioButtonGroup.js.map +1 -1
  155. package/lib/ui-kit/DatePicker/DatePickerControl.d.ts +3 -7
  156. package/lib/ui-kit/DatePicker/DatePickerControl.js +2 -1
  157. package/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  158. package/lib/ui-kit/DialogManager/useDialogManager.js +3 -3
  159. package/lib/ui-kit/DialogManager/useDialogManager.js.map +1 -1
  160. package/lib/ui-kit/DialogManager/useDialogsList.js +1 -1
  161. package/lib/ui-kit/DialogManager/useDialogsList.js.map +1 -1
  162. package/lib/ui-kit/Foldable/Foldable.d.ts +11 -1
  163. package/lib/ui-kit/Foldable/Foldable.js +10 -2
  164. package/lib/ui-kit/Foldable/Foldable.js.map +1 -1
  165. package/lib/ui-kit/FormField/Fields/SexField.js +5 -4
  166. package/lib/ui-kit/FormField/Fields/SexField.js.map +1 -1
  167. package/lib/ui-kit/FormField/Fields/VedField.js +1 -1
  168. package/lib/ui-kit/FormField/Fields/VedField.js.map +1 -1
  169. package/lib/ui-kit/FormField/constants.js +1 -0
  170. package/lib/ui-kit/FormField/constants.js.map +1 -1
  171. package/lib/ui-kit/FormField/getValidation.js +1 -0
  172. package/lib/ui-kit/FormField/getValidation.js.map +1 -1
  173. package/lib/ui-kit/Input/InputControl.js +2 -2
  174. package/lib/ui-kit/Input/InputControl.js.map +1 -1
  175. package/lib/ui-kit/Input/InputPhoneControl.js +2 -1
  176. package/lib/ui-kit/Input/InputPhoneControl.js.map +1 -1
  177. package/lib/ui-kit/Input/InputProps.d.ts +2 -6
  178. package/lib/ui-kit/Input/InputSnilsControl.js +2 -1
  179. package/lib/ui-kit/Input/InputSnilsControl.js.map +1 -1
  180. package/lib/ui-kit/LocationDialog/LocationDialog.js +10 -13
  181. package/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  182. package/lib/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  183. package/lib/ui-kit/LocationDialog/SelectedLocation.js +13 -0
  184. package/lib/ui-kit/LocationDialog/SelectedLocation.js.map +1 -0
  185. package/lib/ui-kit/PopupManager/PopupManager.js +1 -1
  186. package/lib/ui-kit/PopupManager/PopupManager.js.map +1 -1
  187. package/lib/ui-kit/PopupManager/usePopupManager.js +3 -3
  188. package/lib/ui-kit/PopupManager/usePopupManager.js.map +1 -1
  189. package/lib/ui-kit/RadioButtonGroup/RadioButtonGroup.d.ts +3 -5
  190. package/lib/ui-kit/RadioButtonGroup/RadioButtonGroup.js +1 -1
  191. package/lib/ui-kit/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  192. package/lib/ui-kit/RadioButtonGroup/RadioButtonGroupControl.d.ts +2 -0
  193. package/lib/ui-kit/RadioButtonGroup/RadioButtonGroupControl.js +8 -0
  194. package/lib/ui-kit/RadioButtonGroup/RadioButtonGroupControl.js.map +1 -0
  195. package/lib/ui-kit/Select/Select.d.ts +4 -7
  196. package/lib/ui-kit/Select/Select.js +3 -4
  197. package/lib/ui-kit/Select/Select.js.map +1 -1
  198. package/lib/ui-kit/Select/SelectControl.d.ts +1 -8
  199. package/lib/ui-kit/Select/SelectControl.js +2 -1
  200. package/lib/ui-kit/Select/SelectControl.js.map +1 -1
  201. package/lib/utils/getRequiredLabel.d.ts +2 -0
  202. package/lib/utils/getRequiredLabel.js +2 -0
  203. package/lib/utils/getRequiredLabel.js.map +1 -0
  204. package/mobile/bundle/EventBus/EventBus.d.ts +17 -4
  205. package/mobile/bundle/EventBus/defaultEventBus.d.ts +2 -13
  206. package/mobile/bundle/EventBus/useSubject.d.ts +2 -0
  207. package/mobile/bundle/EventBus/useSubjectState.d.ts +2 -0
  208. package/mobile/bundle/bundle.umd.js +148 -105
  209. package/mobile/bundle/bundle.umd.min.js +1 -1
  210. package/mobile/bundle/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  211. package/mobile/bundle/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  212. package/mobile/bundle/hooks/useLocation.d.ts +2 -1
  213. package/mobile/bundle/hooks/useReducer.d.ts +4 -0
  214. package/mobile/bundle/model/DefaultControlType.d.ts +7 -0
  215. package/mobile/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +3 -7
  216. package/mobile/bundle/ui-kit/Foldable/Foldable.d.ts +11 -1
  217. package/mobile/bundle/ui-kit/Input/InputProps.d.ts +2 -6
  218. package/mobile/bundle/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  219. package/mobile/bundle/ui-kit/RadioButtonGroup/RadioButtonGroup.d.ts +3 -5
  220. package/mobile/bundle/ui-kit/RadioButtonGroup/RadioButtonGroupControl.d.ts +2 -0
  221. package/mobile/bundle/ui-kit/Select/Select.d.ts +4 -7
  222. package/mobile/bundle/ui-kit/Select/SelectControl.d.ts +1 -8
  223. package/mobile/bundle/utils/getRequiredLabel.d.ts +2 -0
  224. package/mobile/dist/EventBus/EventBus.d.ts +17 -4
  225. package/mobile/dist/EventBus/EventBus.js +29 -10
  226. package/mobile/dist/EventBus/EventBus.js.map +1 -1
  227. package/mobile/dist/EventBus/defaultEventBus.d.ts +2 -13
  228. package/mobile/dist/EventBus/defaultEventBus.js.map +1 -1
  229. package/mobile/dist/EventBus/useSubject.d.ts +2 -0
  230. package/mobile/dist/EventBus/useSubject.js +17 -0
  231. package/mobile/dist/EventBus/useSubject.js.map +1 -0
  232. package/mobile/dist/EventBus/useSubjectState.d.ts +2 -0
  233. package/mobile/dist/EventBus/useSubjectState.js +10 -0
  234. package/mobile/dist/EventBus/useSubjectState.js.map +1 -0
  235. package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  236. package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.js +18 -0
  237. package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.js.map +1 -0
  238. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +11 -25
  239. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  240. package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  241. package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +5 -0
  242. package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +1 -0
  243. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
  244. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  245. package/mobile/dist/components/Header/HeaderSecondaryMenu.js +1 -1
  246. package/mobile/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  247. package/mobile/dist/components/OfficesAtmsMap/AtmsMap.js +1 -1
  248. package/mobile/dist/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
  249. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js +1 -1
  250. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  251. package/mobile/dist/components/StickyBottomMenu/BurgerMenuDialog.js +1 -1
  252. package/mobile/dist/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
  253. package/mobile/dist/hooks/useLocation.d.ts +2 -1
  254. package/mobile/dist/hooks/useLocation.js +27 -33
  255. package/mobile/dist/hooks/useLocation.js.map +1 -1
  256. package/mobile/dist/hooks/useReducer.d.ts +4 -0
  257. package/mobile/dist/hooks/useReducer.js +12 -0
  258. package/mobile/dist/hooks/useReducer.js.map +1 -0
  259. package/mobile/dist/hooks/useRegions.js +3 -1
  260. package/mobile/dist/hooks/useRegions.js.map +1 -1
  261. package/mobile/dist/model/DefaultControlType.d.ts +7 -0
  262. package/mobile/dist/{components/CarouselTariffsCard/CarouselTariffsCardAction.js → model/DefaultControlType.js} +1 -1
  263. package/mobile/dist/model/DefaultControlType.js.map +1 -0
  264. package/mobile/dist/ui-kit/Calculator/renderBinaryRadioButtonGroup.js +1 -1
  265. package/mobile/dist/ui-kit/Calculator/renderBinaryRadioButtonGroup.js.map +1 -1
  266. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.d.ts +3 -7
  267. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.js +2 -1
  268. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  269. package/mobile/dist/ui-kit/DialogManager/useDialogManager.js +3 -3
  270. package/mobile/dist/ui-kit/DialogManager/useDialogManager.js.map +1 -1
  271. package/mobile/dist/ui-kit/DialogManager/useDialogsList.js +1 -1
  272. package/mobile/dist/ui-kit/DialogManager/useDialogsList.js.map +1 -1
  273. package/mobile/dist/ui-kit/Foldable/Foldable.d.ts +11 -1
  274. package/mobile/dist/ui-kit/Foldable/Foldable.js +10 -2
  275. package/mobile/dist/ui-kit/Foldable/Foldable.js.map +1 -1
  276. package/mobile/dist/ui-kit/FormField/Fields/SexField.js +5 -4
  277. package/mobile/dist/ui-kit/FormField/Fields/SexField.js.map +1 -1
  278. package/mobile/dist/ui-kit/FormField/Fields/VedField.js +1 -1
  279. package/mobile/dist/ui-kit/FormField/Fields/VedField.js.map +1 -1
  280. package/mobile/dist/ui-kit/FormField/constants.js +1 -0
  281. package/mobile/dist/ui-kit/FormField/constants.js.map +1 -1
  282. package/mobile/dist/ui-kit/FormField/getValidation.js +1 -0
  283. package/mobile/dist/ui-kit/FormField/getValidation.js.map +1 -1
  284. package/mobile/dist/ui-kit/Input/InputControl.js +2 -2
  285. package/mobile/dist/ui-kit/Input/InputControl.js.map +1 -1
  286. package/mobile/dist/ui-kit/Input/InputPhoneControl.js +2 -1
  287. package/mobile/dist/ui-kit/Input/InputPhoneControl.js.map +1 -1
  288. package/mobile/dist/ui-kit/Input/InputProps.d.ts +2 -6
  289. package/mobile/dist/ui-kit/Input/InputSnilsControl.js +2 -1
  290. package/mobile/dist/ui-kit/Input/InputSnilsControl.js.map +1 -1
  291. package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js +9 -12
  292. package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  293. package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  294. package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.js +15 -0
  295. package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.js.map +1 -0
  296. package/mobile/dist/ui-kit/PopupManager/PopupManager.js +1 -1
  297. package/mobile/dist/ui-kit/PopupManager/PopupManager.js.map +1 -1
  298. package/mobile/dist/ui-kit/PopupManager/usePopupManager.js +3 -3
  299. package/mobile/dist/ui-kit/PopupManager/usePopupManager.js.map +1 -1
  300. package/mobile/dist/ui-kit/RadioButtonGroup/RadioButtonGroup.d.ts +3 -5
  301. package/mobile/dist/ui-kit/RadioButtonGroup/RadioButtonGroup.js +1 -1
  302. package/mobile/dist/ui-kit/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  303. package/mobile/dist/ui-kit/RadioButtonGroup/RadioButtonGroupControl.d.ts +2 -0
  304. package/mobile/dist/ui-kit/RadioButtonGroup/RadioButtonGroupControl.js +10 -0
  305. package/mobile/dist/ui-kit/RadioButtonGroup/RadioButtonGroupControl.js.map +1 -0
  306. package/mobile/dist/ui-kit/Select/Select.d.ts +4 -7
  307. package/mobile/dist/ui-kit/Select/Select.js +3 -4
  308. package/mobile/dist/ui-kit/Select/Select.js.map +1 -1
  309. package/mobile/dist/ui-kit/Select/SelectControl.d.ts +1 -8
  310. package/mobile/dist/ui-kit/Select/SelectControl.js +2 -1
  311. package/mobile/dist/ui-kit/Select/SelectControl.js.map +1 -1
  312. package/mobile/dist/utils/getRequiredLabel.d.ts +2 -0
  313. package/mobile/dist/utils/getRequiredLabel.js +5 -0
  314. package/mobile/dist/utils/getRequiredLabel.js.map +1 -0
  315. package/mobile/lib/EventBus/EventBus.d.ts +17 -4
  316. package/mobile/lib/EventBus/EventBus.js +29 -10
  317. package/mobile/lib/EventBus/EventBus.js.map +1 -1
  318. package/mobile/lib/EventBus/defaultEventBus.d.ts +2 -13
  319. package/mobile/lib/EventBus/defaultEventBus.js.map +1 -1
  320. package/mobile/lib/EventBus/useSubject.d.ts +2 -0
  321. package/mobile/lib/EventBus/useSubject.js +14 -0
  322. package/mobile/lib/EventBus/useSubject.js.map +1 -0
  323. package/mobile/lib/EventBus/useSubjectState.d.ts +2 -0
  324. package/mobile/lib/EventBus/useSubjectState.js +7 -0
  325. package/mobile/lib/EventBus/useSubjectState.js.map +1 -0
  326. package/mobile/lib/common.css +1 -1
  327. package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  328. package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.js +16 -0
  329. package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.js.map +1 -0
  330. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +12 -26
  331. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  332. package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  333. package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +3 -0
  334. package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +1 -0
  335. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js +2 -2
  336. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  337. package/mobile/lib/components/Header/HeaderSecondaryMenu.js +2 -2
  338. package/mobile/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  339. package/mobile/lib/components/OfficesAtmsMap/AtmsMap.js +2 -2
  340. package/mobile/lib/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
  341. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js +2 -2
  342. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  343. package/mobile/lib/components/StickyBottomMenu/BurgerMenuDialog.js +2 -2
  344. package/mobile/lib/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
  345. package/mobile/lib/hooks/useLocation.d.ts +2 -1
  346. package/mobile/lib/hooks/useLocation.js +26 -33
  347. package/mobile/lib/hooks/useLocation.js.map +1 -1
  348. package/mobile/lib/hooks/useReducer.d.ts +4 -0
  349. package/mobile/lib/hooks/useReducer.js +9 -0
  350. package/mobile/lib/hooks/useReducer.js.map +1 -0
  351. package/mobile/lib/hooks/useRegions.js +3 -1
  352. package/mobile/lib/hooks/useRegions.js.map +1 -1
  353. package/mobile/lib/model/DefaultControlType.d.ts +7 -0
  354. package/mobile/lib/model/DefaultControlType.js +2 -0
  355. package/mobile/lib/model/DefaultControlType.js.map +1 -0
  356. package/mobile/lib/ui-kit/Calculator/renderBinaryRadioButtonGroup.js +1 -1
  357. package/mobile/lib/ui-kit/Calculator/renderBinaryRadioButtonGroup.js.map +1 -1
  358. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.d.ts +3 -7
  359. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.js +2 -1
  360. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  361. package/mobile/lib/ui-kit/DialogManager/useDialogManager.js +3 -3
  362. package/mobile/lib/ui-kit/DialogManager/useDialogManager.js.map +1 -1
  363. package/mobile/lib/ui-kit/DialogManager/useDialogsList.js +1 -1
  364. package/mobile/lib/ui-kit/DialogManager/useDialogsList.js.map +1 -1
  365. package/mobile/lib/ui-kit/Foldable/Foldable.d.ts +11 -1
  366. package/mobile/lib/ui-kit/Foldable/Foldable.js +10 -2
  367. package/mobile/lib/ui-kit/Foldable/Foldable.js.map +1 -1
  368. package/mobile/lib/ui-kit/FormField/Fields/SexField.js +5 -4
  369. package/mobile/lib/ui-kit/FormField/Fields/SexField.js.map +1 -1
  370. package/mobile/lib/ui-kit/FormField/Fields/VedField.js +1 -1
  371. package/mobile/lib/ui-kit/FormField/Fields/VedField.js.map +1 -1
  372. package/mobile/lib/ui-kit/FormField/constants.js +1 -0
  373. package/mobile/lib/ui-kit/FormField/constants.js.map +1 -1
  374. package/mobile/lib/ui-kit/FormField/getValidation.js +1 -0
  375. package/mobile/lib/ui-kit/FormField/getValidation.js.map +1 -1
  376. package/mobile/lib/ui-kit/Input/InputControl.js +2 -2
  377. package/mobile/lib/ui-kit/Input/InputControl.js.map +1 -1
  378. package/mobile/lib/ui-kit/Input/InputPhoneControl.js +2 -1
  379. package/mobile/lib/ui-kit/Input/InputPhoneControl.js.map +1 -1
  380. package/mobile/lib/ui-kit/Input/InputProps.d.ts +2 -6
  381. package/mobile/lib/ui-kit/Input/InputSnilsControl.js +2 -1
  382. package/mobile/lib/ui-kit/Input/InputSnilsControl.js.map +1 -1
  383. package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js +10 -13
  384. package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  385. package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  386. package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.js +13 -0
  387. package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.js.map +1 -0
  388. package/mobile/lib/ui-kit/PopupManager/PopupManager.js +1 -1
  389. package/mobile/lib/ui-kit/PopupManager/PopupManager.js.map +1 -1
  390. package/mobile/lib/ui-kit/PopupManager/usePopupManager.js +3 -3
  391. package/mobile/lib/ui-kit/PopupManager/usePopupManager.js.map +1 -1
  392. package/mobile/lib/ui-kit/RadioButtonGroup/RadioButtonGroup.d.ts +3 -5
  393. package/mobile/lib/ui-kit/RadioButtonGroup/RadioButtonGroup.js +1 -1
  394. package/mobile/lib/ui-kit/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  395. package/mobile/lib/ui-kit/RadioButtonGroup/RadioButtonGroupControl.d.ts +2 -0
  396. package/mobile/lib/ui-kit/RadioButtonGroup/RadioButtonGroupControl.js +8 -0
  397. package/mobile/lib/ui-kit/RadioButtonGroup/RadioButtonGroupControl.js.map +1 -0
  398. package/mobile/lib/ui-kit/Select/Select.d.ts +4 -7
  399. package/mobile/lib/ui-kit/Select/Select.js +3 -4
  400. package/mobile/lib/ui-kit/Select/Select.js.map +1 -1
  401. package/mobile/lib/ui-kit/Select/SelectControl.d.ts +1 -8
  402. package/mobile/lib/ui-kit/Select/SelectControl.js +2 -1
  403. package/mobile/lib/ui-kit/Select/SelectControl.js.map +1 -1
  404. package/mobile/lib/utils/getRequiredLabel.d.ts +2 -0
  405. package/mobile/lib/utils/getRequiredLabel.js +2 -0
  406. package/mobile/lib/utils/getRequiredLabel.js.map +1 -0
  407. package/mobile/src/EventBus/EventBus.ts +51 -15
  408. package/mobile/src/EventBus/defaultEventBus.ts +2 -14
  409. package/mobile/src/EventBus/useSubject.ts +19 -0
  410. package/mobile/src/EventBus/useSubjectState.ts +13 -0
  411. package/mobile/src/components/CarouselTariffsCard/CardCellsSection.tsx +54 -0
  412. package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +23 -66
  413. package/mobile/src/components/CarouselTariffsCard/carouselTariffsCardEventBus.ts +11 -0
  414. package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.tsx +2 -2
  415. package/mobile/src/components/Header/HeaderSecondaryMenu.tsx +2 -2
  416. package/mobile/src/components/OfficesAtmsMap/AtmsMap.tsx +2 -3
  417. package/mobile/src/components/OfficesAtmsMap/OfficesMap.tsx +2 -2
  418. package/mobile/src/components/StickyBottomMenu/BurgerMenuDialog.tsx +2 -2
  419. package/mobile/src/hooks/useLocation.ts +30 -44
  420. package/mobile/src/hooks/useReducer.ts +21 -0
  421. package/mobile/src/hooks/useRegions.ts +4 -1
  422. package/mobile/src/model/DefaultControlType.ts +7 -0
  423. package/mobile/src/ui-kit/Calculator/renderBinaryRadioButtonGroup.tsx +1 -1
  424. package/mobile/src/ui-kit/DatePicker/DatePickerControl.tsx +6 -14
  425. package/mobile/src/ui-kit/DialogManager/useDialogManager.ts +3 -3
  426. package/mobile/src/ui-kit/DialogManager/useDialogsList.ts +1 -1
  427. package/mobile/src/ui-kit/Foldable/Foldable.tsx +21 -5
  428. package/mobile/src/ui-kit/FormField/Fields/SexField.tsx +13 -11
  429. package/mobile/src/ui-kit/FormField/Fields/VedField.tsx +1 -1
  430. package/mobile/src/ui-kit/FormField/constants.tsx +1 -0
  431. package/mobile/src/ui-kit/FormField/getValidation.tsx +1 -0
  432. package/mobile/src/ui-kit/Input/InputControl.tsx +2 -3
  433. package/mobile/src/ui-kit/Input/InputPhoneControl.tsx +2 -1
  434. package/mobile/src/ui-kit/Input/InputProps.ts +2 -6
  435. package/mobile/src/ui-kit/Input/InputSnilsControl.tsx +2 -1
  436. package/mobile/src/ui-kit/LocationDialog/LocationDialog.tsx +13 -25
  437. package/mobile/src/ui-kit/LocationDialog/SelectedLocation.tsx +27 -0
  438. package/mobile/src/ui-kit/PopupManager/PopupManager.tsx +1 -1
  439. package/mobile/src/ui-kit/PopupManager/usePopupManager.tsx +3 -3
  440. package/mobile/src/ui-kit/RadioButtonGroup/RadioButtonGroup.tsx +9 -10
  441. package/mobile/src/ui-kit/RadioButtonGroup/RadioButtonGroupControl.tsx +18 -0
  442. package/mobile/src/ui-kit/Select/Select.tsx +8 -10
  443. package/mobile/src/ui-kit/Select/SelectControl.tsx +4 -10
  444. package/mobile/src/utils/getRequiredLabel.ts +4 -0
  445. package/package.json +1 -1
  446. package/src/EventBus/EventBus.ts +51 -15
  447. package/src/EventBus/defaultEventBus.ts +2 -14
  448. package/src/EventBus/useSubject.ts +19 -0
  449. package/src/EventBus/useSubjectState.ts +13 -0
  450. package/src/components/CarouselTariffsCard/CardCellsSection.tsx +54 -0
  451. package/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +23 -66
  452. package/src/components/CarouselTariffsCard/carouselTariffsCardEventBus.ts +11 -0
  453. package/src/components/ExchangeRateTile/ExchangeRateTile.tsx +2 -2
  454. package/src/components/Header/HeaderSecondaryMenu.tsx +2 -2
  455. package/src/components/OfficesAtmsMap/AtmsMap.tsx +2 -3
  456. package/src/components/OfficesAtmsMap/OfficesMap.tsx +2 -2
  457. package/src/components/StickyBottomMenu/BurgerMenuDialog.tsx +2 -2
  458. package/src/hooks/useLocation.ts +30 -44
  459. package/src/hooks/useReducer.ts +21 -0
  460. package/src/hooks/useRegions.ts +4 -1
  461. package/src/model/DefaultControlType.ts +7 -0
  462. package/src/ui-kit/Calculator/renderBinaryRadioButtonGroup.tsx +1 -1
  463. package/src/ui-kit/DatePicker/DatePickerControl.tsx +6 -14
  464. package/src/ui-kit/DialogManager/useDialogManager.ts +3 -3
  465. package/src/ui-kit/DialogManager/useDialogsList.ts +1 -1
  466. package/src/ui-kit/Foldable/Foldable.tsx +21 -5
  467. package/src/ui-kit/FormField/Fields/SexField.tsx +13 -11
  468. package/src/ui-kit/FormField/Fields/VedField.tsx +1 -1
  469. package/src/ui-kit/FormField/constants.tsx +1 -0
  470. package/src/ui-kit/FormField/getValidation.tsx +1 -0
  471. package/src/ui-kit/Input/InputControl.tsx +2 -3
  472. package/src/ui-kit/Input/InputPhoneControl.tsx +2 -1
  473. package/src/ui-kit/Input/InputProps.ts +2 -6
  474. package/src/ui-kit/Input/InputSnilsControl.tsx +2 -1
  475. package/src/ui-kit/LocationDialog/LocationDialog.tsx +13 -25
  476. package/src/ui-kit/LocationDialog/SelectedLocation.tsx +27 -0
  477. package/src/ui-kit/PopupManager/PopupManager.tsx +1 -1
  478. package/src/ui-kit/PopupManager/usePopupManager.tsx +3 -3
  479. package/src/ui-kit/RadioButtonGroup/RadioButtonGroup.fixture.tsx +2 -2
  480. package/src/ui-kit/RadioButtonGroup/RadioButtonGroup.tsx +9 -10
  481. package/src/ui-kit/RadioButtonGroup/RadioButtonGroupControl.tsx +18 -0
  482. package/src/ui-kit/Select/Select.tsx +8 -10
  483. package/src/ui-kit/Select/SelectControl.tsx +4 -10
  484. package/src/utils/getRequiredLabel.ts +4 -0
  485. package/bundle/EventBus/useLatestEvent.d.ts +0 -2
  486. package/bundle/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  487. package/dist/EventBus/useLatestEvent.d.ts +0 -2
  488. package/dist/EventBus/useLatestEvent.js +0 -11
  489. package/dist/EventBus/useLatestEvent.js.map +0 -1
  490. package/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  491. package/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +0 -1
  492. package/lib/EventBus/useLatestEvent.d.ts +0 -2
  493. package/lib/EventBus/useLatestEvent.js +0 -8
  494. package/lib/EventBus/useLatestEvent.js.map +0 -1
  495. package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  496. package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js +0 -2
  497. package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +0 -1
  498. package/mobile/bundle/EventBus/useLatestEvent.d.ts +0 -2
  499. package/mobile/bundle/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  500. package/mobile/dist/EventBus/useLatestEvent.d.ts +0 -2
  501. package/mobile/dist/EventBus/useLatestEvent.js +0 -11
  502. package/mobile/dist/EventBus/useLatestEvent.js.map +0 -1
  503. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  504. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +0 -1
  505. package/mobile/lib/EventBus/useLatestEvent.d.ts +0 -2
  506. package/mobile/lib/EventBus/useLatestEvent.js +0 -8
  507. package/mobile/lib/EventBus/useLatestEvent.js.map +0 -1
  508. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  509. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js +0 -2
  510. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +0 -1
  511. package/mobile/src/EventBus/useLatestEvent.ts +0 -16
  512. package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCardAction.ts +0 -6
  513. package/src/EventBus/useLatestEvent.ts +0 -16
  514. package/src/components/CarouselTariffsCard/CarouselTariffsCardAction.ts +0 -6
@@ -411,39 +411,58 @@
411
411
  ].join(' ');
412
412
 
413
413
  class EventBus {
414
- subscribers = {};
414
+ subscribersMap = {};
415
415
  subjectsStateMap = {};
416
+ emitter = this;
417
+ observable = this;
416
418
  subscribe(type, listener) {
417
- this.subscribers[type] = (this.subscribers[type] || []).concat(listener);
418
- const latestEvent = this.subjectsStateMap[type];
419
- if (latestEvent) {
420
- listener(latestEvent);
421
- }
419
+ this.subscribersMap[type] ||= [];
420
+ this.subscribersMap[type]?.push(listener);
421
+ this.fireSubscribers([listener], this.subjectsStateMap[type]);
422
422
  return () => {
423
423
  this.unsubscribe(type, listener);
424
424
  };
425
425
  }
426
426
  unsubscribe(type, listener) {
427
- this.subscribers[type] = this.subscribers[type]?.filter((s) => s !== listener);
427
+ const index = this.subscribersMap[type]?.indexOf(listener);
428
+ if (index && index !== -1) {
429
+ this.subscribersMap[type]?.splice(index, 1);
430
+ }
428
431
  }
429
432
  fire(type, event) {
430
433
  const isSubjectDeclared = type in this.subjectsStateMap;
431
434
  if (isSubjectDeclared) {
432
- this.subjectsStateMap[type] = event;
435
+ this.subject(type, event);
436
+ }
437
+ else {
438
+ this.fireSubscribers(this.subscribersMap[type], event);
433
439
  }
434
- this.subscribers[type]?.forEach((s) => s(event));
435
440
  }
436
441
  subject(type, event) {
437
- this.subjectsStateMap[type] = event;
442
+ if (this.subjectsStateMap[type] !== event) {
443
+ this.subjectsStateMap[type] = event;
444
+ this.fireSubscribers(this.subscribersMap[type], event);
445
+ }
446
+ return () => {
447
+ delete this.subjectsStateMap[type];
448
+ };
449
+ }
450
+ fireSubscribers(subscribers, event) {
451
+ if (!subscribers || !event) {
452
+ return;
453
+ }
454
+ for (const _ of subscribers) {
455
+ _(event);
456
+ }
438
457
  }
439
458
  }
440
459
 
441
460
  const defaultEventBus = new EventBus();
442
461
 
443
462
  const useDialogManager = () => ({
444
- open: (dialog, options = {}) => defaultEventBus.fire('dialog', { type: 'open', dialog, ...options }),
445
- close: () => defaultEventBus.fire('dialog', { type: 'close' }),
446
- closeAll: () => defaultEventBus.fire('dialog', { type: 'close', all: true }),
463
+ open: (dialog, options = {}) => defaultEventBus.emitter.fire('dialog', { type: 'open', dialog, ...options }),
464
+ close: () => defaultEventBus.emitter.fire('dialog', { type: 'close' }),
465
+ closeAll: () => defaultEventBus.emitter.fire('dialog', { type: 'close', all: true }),
447
466
  });
448
467
 
449
468
  const adjustBase = (href, basePath = '') => href.replace(basePath, '') || '/';
@@ -1098,6 +1117,7 @@
1098
1117
  { key: 'phone', text: 'Телефонный звонок' },
1099
1118
  { key: 'email', text: 'Электронное сообщение' },
1100
1119
  ];
1120
+ // TODO Тоже надо рефакторить - файлик constants
1101
1121
  const OUT_SERVICE_URL = '/api/v1/outservice/outserviceregions';
1102
1122
 
1103
1123
  const getRegionUrl = (typeForm) => typeForm === 'OUTSERVICE' ? OUT_SERVICE_URL : undefined;
@@ -1170,6 +1190,8 @@
1170
1190
  return targetRef;
1171
1191
  }
1172
1192
 
1193
+ const getRequiredLabel = ({ label, errors }) => label && errors ? `${label}*` : label;
1194
+
1173
1195
  const noop = () => {
1174
1196
  // Do nothing
1175
1197
  };
@@ -1273,9 +1295,9 @@
1273
1295
  };
1274
1296
 
1275
1297
  const usePopupManager = () => ({
1276
- open: (popup, options) => defaultEventBus.fire('popup', { type: 'open', popup, ...options }),
1277
- update: (popup, options) => defaultEventBus.fire('popup', { type: 'update', popup, ...options }),
1278
- close: () => defaultEventBus.fire('popup', { type: 'close' }),
1298
+ open: (popup, options) => defaultEventBus.emitter.fire('popup', { type: 'open', popup, ...options }),
1299
+ update: (popup, options) => defaultEventBus.emitter.fire('popup', { type: 'update', popup, ...options }),
1300
+ close: () => defaultEventBus.emitter.fire('popup', { type: 'close' }),
1279
1301
  });
1280
1302
 
1281
1303
  const InputPopup = JSX(({ options, onChange }) => (jsx("div", { className: "bg-white text-l max-h-64 overflow-y-auto overflow-x-hidden rounded-md shadow-2xl", role: "list", children: options?.map((item, key) => (jsx("div", { className: "flex px-m py-s cursor-pointer hover:bg-main-divider pr-5xl relative", role: "listitem", onMouseDown: () => onChange(item.processedValue), children: jsx("span", { className: "min-h-6", children: item.processedValue }) }, key.toString()))) })));
@@ -1341,9 +1363,8 @@
1341
1363
  value,
1342
1364
  onChange,
1343
1365
  });
1344
- return (jsxs("div", { className: style('shrink-0 w-full', className), ref: popupRef, onBlur: close, onFocus: open, children: [jsx("div", { ref: inputRef, children: jsx(Input, { type: type || 'text', "aria-label": label, label: getLabel(errors, label), valid: Boolean(!error), value: value, onChange: onChange, onBlur: onBlur, isTextarea: isTextarea, placeholder: getPlaceholder(placeholder, errors, label) }) }), renderErrorText(error)] }));
1366
+ return (jsxs("div", { className: style('shrink-0 w-full', className), ref: popupRef, onBlur: close, onFocus: open, children: [jsx("div", { ref: inputRef, children: jsx(Input, { type: type || 'text', "aria-label": label, label: getRequiredLabel({ label, errors }), valid: Boolean(!error), value: value, onChange: onChange, onBlur: onBlur, isTextarea: isTextarea, placeholder: getPlaceholder(placeholder, errors, label) }) }), renderErrorText(error)] }));
1345
1367
  });
1346
- const getLabel = (errors, label) => (label && errors ? `${label}*` : label);
1347
1368
  const getPlaceholder = (placeholder, errors, label) => errors && !label ? `${placeholder}*` : placeholder;
1348
1369
 
1349
1370
  const formatOption = (_) => _?.text || _?.key || '';
@@ -1391,12 +1412,10 @@
1391
1412
  return inputRef;
1392
1413
  }
1393
1414
 
1394
- const Select = JSX(
1395
- // eslint-disable-next-line complexity
1396
- ({ className, label, options = [], value, valid = true, isBorder = true, placeholder = '', isSearch = false, iconVersion = 'black', onChange, disabled, }) => {
1415
+ const Select = JSX(({ className, label, options = [], value, valid = true, isBorder = true, placeholder = '', isSearch = false, iconVersion = 'black', onChange, disabled = false, }) => {
1397
1416
  const [isOpen, { setFalse: close, setTrue: open }] = useBool();
1398
1417
  const [query, setQuery] = useState('');
1399
- const isDisabled = disabled || options.length === 0;
1418
+ const isDisabled = getDisabled(disabled, options.length);
1400
1419
  const hasOpen = isOpen && !isDisabled;
1401
1420
  const handleClose = useCallback(() => {
1402
1421
  setQuery('');
@@ -1415,8 +1434,9 @@
1415
1434
  });
1416
1435
  const renderIcon$2 = (isOpen, iconVersion) => (jsx(Icon, { className: style('absolute right-0 flex self-center', { 'rotate-180': !isOpen }), iconVersion: iconVersion, name: "ArrowUpIcon", width: "16", height: "16" }));
1417
1436
  const getStyle = (isBorder, valid, disabled) => style(isBorder ? 'border rounded-md ' : '', isBorder && !disabled ? 'hover:border-primary-hover' : '', disabled ? 'bg-main-divider' : 'cursor-pointer ', valid ? 'border-gray' : 'border-error');
1437
+ const getDisabled = (disabled, length) => disabled || length === 0;
1418
1438
 
1419
- const SelectControl = JSX(({ className = '', label, error, ...rest }) => (jsxs("div", { className: className, children: [jsx(Select, { ...rest, valid: !error, label: rest?.errors ? `${label}*` : label }), renderErrorText(error)] })));
1439
+ const SelectControl = JSX(({ className = '', label, error, errors, ...rest }) => (jsxs("div", { className: className, children: [jsx(Select, { ...rest, valid: !error, label: getRequiredLabel({ label, errors }) }), renderErrorText(error)] })));
1420
1440
 
1421
1441
  const getNamesFromInput = (inputs) => Object.values(inputs.filter((_) => _))?.map((_) => _.name);
1422
1442
 
@@ -1541,6 +1561,7 @@
1541
1561
  };
1542
1562
  };
1543
1563
 
1564
+ // TODO Зачем это?
1544
1565
  const getValidation = (field, validator, required = false) => required ? withValidator(field, validator) : field;
1545
1566
 
1546
1567
  const ACQUIRING_TYPES = [
@@ -1920,7 +1941,7 @@
1920
1941
  });
1921
1942
  const renderDatePickerForm = (handleChangeVisibleCalendar, value, valid) => (jsxs("div", { onClick: handleChangeVisibleCalendar, className: style(formStyle, valid ? 'border-gray' : 'border-error'), children: [jsx(Paragraph, { children: value && formatDate(value) }), jsx(Icon, { ...ICON_PROPS, name: "CalendarIcon" })] }));
1922
1943
 
1923
- const DatePickerControl = JSX(({ className, label, error, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(DatePicker, { label: label && rest?.errors ? `${label}*` : label, valid: Boolean(!error), ...rest }), renderErrorText(error)] })));
1944
+ const DatePickerControl = JSX(({ className, label, error, errors, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(DatePicker, { label: getRequiredLabel({ label, errors }), valid: Boolean(!error), ...rest }), renderErrorText(error)] })));
1924
1945
 
1925
1946
  const BeginDateField = JSX(({ field, input }) => (jsx(DatePickerControl, { label: "\u0414\u0430\u0442\u0430 \u043D\u0430\u0447\u0430\u043B\u0430 \u0440\u0430\u0431\u043E\u0442\u044B \u043D\u0430 \u0442\u0435\u043A\u0443\u0449\u0435\u043C \u043C\u0435\u0441\u0442\u0435", ...getValidation(field('beginDate'), validatorObj.beginDate, input?.required), ...input })));
1926
1947
 
@@ -2025,9 +2046,11 @@
2025
2046
  const LegalFormField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u041E\u041F\u0424", placeholder: "\u041E\u041E\u041E, \u041F\u0410\u041E \u0438 \u0434\u0440.", ...getValidation(field('legalForm'), validatorObj.legalForm, input?.required), ...input })));
2026
2047
 
2027
2048
  const REGIONS_URL = '/api/v1/regions';
2049
+ const EMPTY_REGIONS = [];
2050
+ // TODO Почему url можно менять? Разве смысл не в инкапсуляции api url. Тоже под рефакторинг попадает
2028
2051
  function useRegions(url = REGIONS_URL) {
2029
2052
  const { data } = useAsyncData(url, fetchJSONUnsafe);
2030
- return Array.isArray(data) ? data : [];
2053
+ return Array.isArray(data) ? data : EMPTY_REGIONS;
2031
2054
  }
2032
2055
 
2033
2056
  const LocalitiesField = JSX(({ field, input }) => {
@@ -2092,7 +2115,7 @@
2092
2115
  return (jsx(Input, { ...inputProps, onChange: handleChange, onFocus: (ev) => handleChange(ev?.target?.value || ''), onBlur: (ev) => handleBlur(ev?.target?.value || ''), children: children }));
2093
2116
  });
2094
2117
 
2095
- const InputPhoneControl = JSX(({ className, label, error, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(PhoneInput, { "aria-label": label, label: rest?.errors ? `${label}*` : label, valid: Boolean(!error), placeholder: "+7 (___) ___-__-__", ...rest }), renderErrorText(error)] })));
2118
+ const InputPhoneControl = JSX(({ className, label, error, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(PhoneInput, { "aria-label": label, label: getRequiredLabel({ label, errors: rest?.errors }), valid: Boolean(!error), placeholder: "+7 (___) ___-__-__", ...rest }), renderErrorText(error)] })));
2096
2119
 
2097
2120
  const PhoneField = JSX(({ field, input }) => (jsx(InputPhoneControl, { label: "\u0422\u0435\u043B\u0435\u0444\u043E\u043D", ...getValidation(field('phone'), validatorObj.phone, input?.required), ...input })));
2098
2121
 
@@ -2135,15 +2158,16 @@
2135
2158
  horizontal: '@lg:flex-row',
2136
2159
  vertical: '',
2137
2160
  };
2138
- const RadioButtonGroup = JSX(({ title, items, checkedItem, className, onChange: onChangeCheckedItem, disabled = false, orientation = 'horizontal', }) => (jsxs("div", { className: "grid gap-xs whitespace-nowrap", children: [title ? (jsx("div", { role: "radiogroup", "aria-label": title, children: jsx(Text, { color: "text-secondary-text", font: "font-light", children: title }) })) : null, jsx("div", { className: style('flex flex-col gap-s', orientationStyleMap[orientation], className), role: "radiogroup", "aria-label": "\u0413\u0440\u0443\u043F\u043F\u0430 \u043A\u043D\u043E\u043F\u043E\u043A", children: items?.map(({ id, text }) => (jsx(Checkbox, { isRadio: true, text: text, value: checkedItem === id, onChange: () => onChangeCheckedItem && onChangeCheckedItem(id), disabled: disabled }, String(id)))) })] })));
2161
+ const RadioButtonGroup = JSX(({ label, items, value, className, onChange: onChangeCheckedItem, disabled = false, orientation = 'horizontal', }) => (jsxs("div", { className: "grid gap-xs whitespace-nowrap", children: [label ? (jsx("div", { role: "radiogroup", "aria-label": label, children: jsx(Text, { color: "text-secondary-text", font: "font-light", children: label }) })) : null, jsx("div", { className: style('flex flex-col gap-s', orientationStyleMap[orientation], className), role: "radiogroup", "aria-label": "\u0413\u0440\u0443\u043F\u043F\u0430 \u043A\u043D\u043E\u043F\u043E\u043A", children: items?.map(({ id, text }) => (jsx(Checkbox, { isRadio: true, text: text, value: value === id, onChange: () => onChangeCheckedItem && onChangeCheckedItem(id), disabled: disabled }, String(id)))) })] })));
2162
+
2163
+ const RadioButtonGroupControl = JSX(({ className, label, onChange, error, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(RadioButtonGroup, { label: getRequiredLabel({ label, errors: rest?.errors }), onChange: (_) => onChange && onChange(_), ...rest }), renderErrorText(error)] })));
2139
2164
 
2140
2165
  const SEX_TYPES = [
2141
2166
  { id: 'male', text: 'Мужской' },
2142
2167
  { id: 'female', text: 'Женский' },
2143
2168
  ];
2144
- const SexField = JSX(({ field }) => {
2145
- const { value, onChange } = field('sex');
2146
- return (jsx(RadioButtonGroup, { title: "\u041F\u043E\u043B", orientation: "horizontal", items: SEX_TYPES, checkedItem: value, onChange: (_) => onChange && onChange(_) }));
2169
+ const SexField = JSX(({ field, input }) => {
2170
+ return (jsx("div", { children: jsx(RadioButtonGroupControl, { label: "\u041F\u043E\u043B", orientation: "horizontal", items: SEX_TYPES, ...getValidation(field('sex'), validatorObj.sex, input?.required) }) }));
2147
2171
  });
2148
2172
 
2149
2173
  const isPlaceholder = (_) => _ === '_';
@@ -2176,7 +2200,7 @@
2176
2200
  return (jsx(Input, { ...inputProps, onChange: handleChange, onFocus: (ev) => handleChange(ev?.target?.value || ''), onBlur: (ev) => handleBlur(ev?.target?.value || ''), children: children }));
2177
2201
  });
2178
2202
 
2179
- const InputSnilsControl = JSX(({ className, label, value, error, onChange, onBlur, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(SnilsInput, { "aria-label": label, label: rest?.errors ? `${label}*` : label, valid: Boolean(!error), value: value, onChange: onChange, onBlur: onBlur, placeholder: "___-___-___ __" }), renderErrorText(error)] })));
2203
+ const InputSnilsControl = JSX(({ className, label, value, error, onChange, onBlur, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(SnilsInput, { "aria-label": label, label: getRequiredLabel({ label, errors: rest?.errors }), valid: Boolean(!error), value: value, onChange: onChange, onBlur: onBlur, placeholder: "___-___-___ __" }), renderErrorText(error)] })));
2180
2204
 
2181
2205
  const SnilsField = JSX(({ field, input }) => (jsx(InputSnilsControl, { label: "\u0421\u041D\u0418\u041B\u0421", ...getValidation(field('snils'), validatorObj.snils, input?.required), ...input })));
2182
2206
 
@@ -2205,7 +2229,7 @@
2205
2229
  field?.('region')?.onChange?.('');
2206
2230
  }
2207
2231
  }, [value]);
2208
- return (jsx("div", { className: "py-m gap-m grid @xl:flex @xl:items-center", children: jsx(RadioButtonGroup, { className: "whitespace-normal", orientation: "horizontal", items: VED_TYPES, checkedItem: value, onChange: (_) => onChange && onChange(_) }) }));
2232
+ return (jsx("div", { className: "py-m gap-m grid @xl:flex @xl:items-center", children: jsx(RadioButtonGroup, { className: "whitespace-normal", orientation: "horizontal", items: VED_TYPES, value: value, onChange: (_) => onChange && onChange(_) }) }));
2209
2233
  });
2210
2234
 
2211
2235
  function isRenderField({ input, field, }) {
@@ -2550,6 +2574,14 @@
2550
2574
  return { ...formState, typeForm: { key: typeForm, text: '' } };
2551
2575
  };
2552
2576
 
2577
+ const FoldableWrapper = JSX(({ className, children }) => (jsx("div", { className: className, role: "group", children: children })));
2578
+ /**
2579
+ * Какой то бесполезный компонент. Его можно заменить на useBool
2580
+ * Лучше оставить только обёрточный div с необходимой атрибутикой
2581
+ * и сделать пассивный компонент
2582
+ *
2583
+ * @deprecated
2584
+ */
2553
2585
  const Foldable = JSX(({ className = '', isFoldButtonOnTop = false, unfoldedByDefault = false, renderFoldableSection, renderFoldButton, }) => {
2554
2586
  const [isUnfolded, setIsUnfolded] = useState(unfoldedByDefault);
2555
2587
  const onToggle = useCallback(() => {
@@ -2557,7 +2589,7 @@
2557
2589
  }, []);
2558
2590
  const sectionNode = renderFoldableSection({ isUnfolded, onToggle });
2559
2591
  const buttonNode = renderFoldButton ? renderFoldButton({ isUnfolded, onToggle }) : null;
2560
- return isFoldButtonOnTop ? (jsxs("div", { className: className, role: "group", children: [buttonNode, sectionNode] })) : (jsxs("div", { className: className, role: "group", children: [sectionNode, buttonNode] }));
2592
+ return isFoldButtonOnTop ? (jsxs(FoldableWrapper, { className: className, children: [buttonNode, sectionNode] })) : (jsxs(FoldableWrapper, { className: className, children: [sectionNode, buttonNode] }));
2561
2593
  });
2562
2594
 
2563
2595
  function useResizeObserver(callback, deps) {
@@ -3638,7 +3670,7 @@
3638
3670
  const renderDaysInput = (props) => (jsx(InputRange, { items: [`От ${daysText(props.min || 0)}`, `До ${daysText(props.max || 0)}`], step: STEP_DAYS, ...props }));
3639
3671
  const daysText = (days) => `${days} ${Number(days) % 10 === 1 ? 'дня' : 'дней'}`;
3640
3672
 
3641
- const renderBinaryRadioButtonGroup = ({ items, title, mobileTitle = title, orientation = 'horizontal', value, onChange, ...rest }) => (jsxs("div", { className: "grid gap-s whitespace-nowrap", children: [title ? (jsx("div", { className: "hidden @5xl:block", role: "radiogroup", "aria-label": title, children: jsx(Text, { color: "text-secondary-text", font: "font-light", children: title }) })) : null, mobileTitle ? (jsx("div", { className: "@5xl:hidden", role: "radiogroup", "aria-label": mobileTitle, children: jsx(Text, { color: "text-secondary-text", font: "font-light", children: mobileTitle }) })) : null, jsx(RadioButtonGroup, { orientation: orientation, items: items, checkedItem: items[value ? 0 : 1].id, onChange: (_) => onChange && onChange(_ === items[0].id), ...rest })] }));
3673
+ const renderBinaryRadioButtonGroup = ({ items, title, mobileTitle = title, orientation = 'horizontal', value, onChange, ...rest }) => (jsxs("div", { className: "grid gap-s whitespace-nowrap", children: [title ? (jsx("div", { className: "hidden @5xl:block", role: "radiogroup", "aria-label": title, children: jsx(Text, { color: "text-secondary-text", font: "font-light", children: title }) })) : null, mobileTitle ? (jsx("div", { className: "@5xl:hidden", role: "radiogroup", "aria-label": mobileTitle, children: jsx(Text, { color: "text-secondary-text", font: "font-light", children: mobileTitle }) })) : null, jsx(RadioButtonGroup, { orientation: orientation, items: items, value: items[value ? 0 : 1].id, onChange: (_) => onChange && onChange(_ === items[0].id), ...rest })] }));
3642
3674
 
3643
3675
  const renderPayout = (props) => renderBinaryRadioButtonGroup({
3644
3676
  ...props,
@@ -4635,31 +4667,37 @@
4635
4667
  const CarouselRecommendationCard = JSX(({ className, padding, description, additionalDescription, href, icon, isDotted, __html, socialMedia = [], target, title, align = 'text-left', benefits, imageOptions: { directionRight = true, isImageAlwaysOnRight = ImageAlwaysOnRight, isImageSecondary = false, } = {}, data, ...rest }) => (jsx(BlockWrapper, { className: style('relative min-h-28 group-data-gray:bg-main-divider/50', className), defaultPadding: "p-0", ...rest, children: jsx(LinkWrapper, { href: href, target: target, className: "h-full", data: getAspectsWithInclude(data), children: jsxs(BaseTile, { className: "h-full", defaultPadding: "p-2xl", padding: padding, insetTitle: jsx(Headline, { title: title, description: description, headlineVersion: "XS", isEmbedded: true, align: align }), ...leftOrRightImage(isIcon(icon) ? jsx(Img, { image: icon }) : null, directionRight), buttons: socialMedia.length ? (jsx(SocialMedia, { media: socialMedia, stretched: true, showButtonText: true, version: rest?.version })) : null, isImageAlwaysOnRight: isImageAlwaysOnRight, isImageSecondary: isImageSecondary, imageAlign: "center", children: [jsx(BenefitsList, { benefits: benefits }), __html ? jsx(RichText, { __html: __html, isDotted: isDotted, itemSize: "list-s" }) : null, renderAdditionalDescription(additionalDescription, align)] }) }) })));
4636
4668
  const renderAdditionalDescription = (additionalDescription, align) => additionalDescription ? (jsx(Paragraph, { size: "text-m", font: "font-light", color: "text-secondary-text group-data-secondary:text-white/80", align: align, children: additionalDescription })) : null;
4637
4669
 
4670
+ const useSubjectState = (eventBus, type, initialState) => {
4671
+ const [state, setState] = useState(initialState);
4672
+ useEffect(() => eventBus.subscribe(type, setState), [eventBus, type]);
4673
+ return state;
4674
+ };
4675
+
4638
4676
  const renderCardInfo = (cell, i) => {
4639
4677
  const { title, description, buttons } = cell;
4640
4678
  return (jsxs("div", { className: "py-lg border-b border-main-divider", children: [title ? (jsx("div", { className: "opacity-80", children: jsx(Text, { size: "text-m", color: "text-secondary-text", children: title }) })) : null, description ? (jsx("div", { className: "mt-2xs", children: jsx(Text, { size: "text-xl", color: "text-primary-text", children: description }) })) : null, buttons?.length ? (jsx("div", { className: "text-primary-main", children: renderButtonsSection(buttons) })) : null] }, String(i)));
4641
4679
  };
4642
4680
 
4643
- const CarouselTariffsCard = JSX(({ className = '', title, align = 'text-center', icon, button, visibleCellsCount = 1, cardCells = [], options, data, ...rest }) => {
4644
- const cellsNode = cardCells.map(renderCardInfo);
4645
- const [visibleCells, hiddenCells] = visibleCellsCount > 0
4646
- ? [cellsNode.slice(0, visibleCellsCount), cellsNode.slice(visibleCellsCount)]
4647
- : [cellsNode, []];
4648
- const [isVisible, setIsVisible] = useState(false);
4649
- useEffect(() => defaultEventBus.subscribe('fold', (event) => {
4650
- if (options?.parent !== undefined && event.parent === options?.parent) {
4651
- setIsVisible(event.isUnfolded);
4652
- }
4653
- }), [options?.parent]);
4654
- return (jsxs(BlockWrapper, { className: style('flex flex-col', className), defaultPadding: "p-2xl", ...rest, children: [isIcon(icon) ? (jsx("div", { className: "self-center", children: jsx(Img, { image: icon }) })) : null, title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button?.text ? jsx(LinkButton, { className: "w-full mt-m mb-lg", ...button }) : null, hiddenCells.length ? (jsx(Foldable, { renderFoldableSection: () => (jsxs("div", { children: [visibleCells, jsx(FoldableSection, { isUnfolded: isVisible, children: hiddenCells })] })), renderFoldButton: cardCells.length >= visibleCellsCount
4655
- ? renderFoldButton$3(options?.parent, data, isVisible)
4656
- : null })) : (jsx("div", { children: visibleCells }))] }));
4657
- });
4658
- const renderFoldButton$3 = (parent, data, isUnfolded = false) => () => (jsxs("button", { className: "w-full cursor-pointer text-primary-main pt-lg flex justify-between items-center", onClick: () => {
4659
- if (parent !== undefined) {
4660
- defaultEventBus.fire('fold', { type: 'fold', isUnfolded: !isUnfolded, parent });
4661
- }
4662
- }, type: "button", ...(isUnfolded ? getAspectsAttributes(data) : {}), children: [jsx("div", { children: isUnfolded ? 'Скрыть' : 'Подробнее о тарифе' }), jsx(Icon, { className: "text-primary-text", name: isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon', width: "16", height: "16" })] }));
4681
+ const CardCellsSection = JSX((props) => {
4682
+ const { cardCells = [], visibleCellsCount = 1, isUnfolded } = props;
4683
+ const [visibleCells, hiddenCells] = visibleCellsCount > 0 && cardCells.length >= visibleCellsCount
4684
+ ? [cardCells.slice(0, visibleCellsCount), cardCells.slice(visibleCellsCount)]
4685
+ : [cardCells, []];
4686
+ return hiddenCells.length ? (jsxs(FoldableWrapper, { children: [jsxs("div", { children: [visibleCells.map(renderCardInfo), jsx(FoldableSection, { isUnfolded: isUnfolded, children: hiddenCells.map(renderCardInfo) })] }), jsx(FoldButton, { ...props })] })) : (jsx("div", { children: visibleCells.map(renderCardInfo) }));
4687
+ });
4688
+ const FoldButton = JSX(({ isUnfolded, data, onToggle }) => (jsxs("button", { type: "button", className: "w-full cursor-pointer text-primary-main pt-lg flex justify-between items-center", ...(isUnfolded ? getAspectsAttributes(data) : {}), onClick: onToggle, children: [jsx("div", { children: isUnfolded ? 'Скрыть' : 'Подробнее о тарифе' }), jsx(Icon, { className: "text-primary-text", name: isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon', width: "16", height: "16" })] })));
4689
+
4690
+ const carouselTariffsCardEventBus = new EventBus();
4691
+
4692
+ const CarouselTariffsCard = JSX(({ className, title, align = 'text-center', icon, button, visibleCellsCount = 1, cardCells = [], options, data, ...rest }) => {
4693
+ const { isUnfolded, parent: firedParent } = useSubjectState(carouselTariffsCardEventBus.observable, 'fold', {});
4694
+ const isVisible = isUnfolded && firedParent === options?.parent;
4695
+ const toggle = useCallback(() => carouselTariffsCardEventBus.emitter.fire('fold', {
4696
+ isUnfolded: !isVisible,
4697
+ parent: options?.parent,
4698
+ }), [isVisible, options?.parent]);
4699
+ return (jsxs(BlockWrapper, { className: style('flex flex-col', className), defaultPadding: "p-2xl", ...rest, children: [isIcon(icon) ? (jsx("div", { className: "self-center", children: jsx(Img, { image: icon }) })) : null, title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button?.text ? jsx(LinkButton, { className: "w-full mt-m mb-lg", ...button }) : null, jsx(CardCellsSection, { cardCells: cardCells, visibleCellsCount: visibleCellsCount, isUnfolded: isVisible, data: data, onToggle: toggle })] }));
4700
+ });
4663
4701
 
4664
4702
  const isRateRow = (rateRow) => typeof rateRow?.minMonths === 'number' && typeof rateRow?.maxMonths === 'number';
4665
4703
 
@@ -4826,47 +4864,46 @@
4826
4864
  };
4827
4865
  const ErrorBlock = JSX(({ className = '', title, description, error, button, ...rest }) => (jsxs(BlockWrapper, { className: style('flex flex-col justify-center items-center', className), defaultPadding: style('p-6xl'), version: "transparent", ...rest, children: [jsx("div", { className: "flex justify-center", children: renderErrorContent(error) }), jsx(Headline, { title: title, description: description, headlineVersion: "XL", isEmbedded: true, className: "mb-2xl last:mb-0" }), button?.text ? (jsx(LinkButton, { version: button?.version, text: button?.text, ...button })) : null] })));
4828
4866
 
4829
- const useLatestEvent = (eventBus, type, initialEvent) => {
4830
- const [latestEvent, setLatestEvent] = useState(initialEvent || null);
4831
- useEffect(() => eventBus.subscribe(type, (_) => setLatestEvent(_)), [eventBus, type]);
4832
- const fireEvent = useCallback((_) => eventBus.fire(type, _), [eventBus, type]);
4833
- return [latestEvent, fireEvent];
4834
- };
4867
+ function useSubject(eventBus, type, initialState) {
4868
+ useEffect(() => {
4869
+ const state = initialState instanceof Function ? initialState() : initialState;
4870
+ if (state instanceof Promise) {
4871
+ state.then((_) => eventBus.subject(type, _), console.warn);
4872
+ }
4873
+ else {
4874
+ eventBus.subject(type, state);
4875
+ }
4876
+ }, [eventBus, type]);
4877
+ return useCallback((_) => eventBus.fire(type, _), [eventBus, type]);
4878
+ }
4835
4879
 
4836
4880
  const REGION_URL = '/api/v1/region';
4837
4881
  const LOCATION_STORAGE_KEY = 'location';
4838
4882
  function useLocation(defaultLocation = 'Москва') {
4839
- const [currentLocation, fireCurrentLocation] = useLatestEvent(defaultEventBus, 'location', restoreLocation() ?? { name: defaultLocation });
4840
- const selectCurrentLocation = useCallback((_) => {
4841
- storeLocation(_);
4842
- fireCurrentLocation(_);
4843
- }, []);
4844
- const { data } = useAsyncData(hasStoredLocation() ? null : REGION_URL, fetchJSONUnsafe);
4845
- useEffect(() => {
4846
- if (data && !hasStoredLocation()) {
4847
- fireCurrentLocation(data);
4883
+ useEffect(() => defaultEventBus.subscribe('location', storeLocation), []);
4884
+ return useSubject(defaultEventBus.emitter, 'location', restoreLocation(defaultLocation));
4885
+ }
4886
+ function useLocationState(defaultLocation = 'Москва') {
4887
+ return useSubjectState(defaultEventBus.observable, 'location', { name: defaultLocation });
4888
+ }
4889
+ function restoreLocation(defaultLocation) {
4890
+ return async () => {
4891
+ if (!globalThis.localStorage?.hasItem(LOCATION_STORAGE_KEY)) {
4892
+ storeLocation(await fetchJSON(REGION_URL));
4848
4893
  }
4849
- }, [data]);
4850
- return [currentLocation ?? { name: defaultLocation }, selectCurrentLocation];
4894
+ const storedLocation = globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY);
4895
+ try {
4896
+ return storedLocation && JSON.parse(storedLocation);
4897
+ }
4898
+ catch (ex) {
4899
+ // Do nothing
4900
+ }
4901
+ return { name: defaultLocation };
4902
+ };
4903
+ }
4904
+ function storeLocation(_) {
4905
+ _ && globalThis.localStorage?.setItem(LOCATION_STORAGE_KEY, JSON.stringify(_));
4851
4906
  }
4852
- const hasStoredLocation = () => Boolean(globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY));
4853
- const restoreLocation = () => {
4854
- try {
4855
- const data = globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY);
4856
- return data && JSON.parse(data);
4857
- }
4858
- catch (ex) {
4859
- return null;
4860
- }
4861
- };
4862
- const storeLocation = (_) => {
4863
- try {
4864
- globalThis.localStorage?.setItem(LOCATION_STORAGE_KEY, JSON.stringify(_));
4865
- }
4866
- catch (ex) {
4867
- // Do nothing
4868
- }
4869
- };
4870
4907
 
4871
4908
  var Currency;
4872
4909
  (function (Currency) {
@@ -5008,7 +5045,7 @@
5008
5045
  }
5009
5046
 
5010
5047
  const ExchangeRateTile = JSX(({ className = '', title = 'Курсы обмена валют', button, ...rest }) => {
5011
- const [currentLocation] = useLocation();
5048
+ const currentLocation = useLocationState();
5012
5049
  const exchangeRates = useFetchExchangeRateData(currentLocation);
5013
5050
  const currencyRates = getCurrencyRates(exchangeRates?.exchangeRate?.currencies);
5014
5051
  const currencyRatesBuy = currencyRates.filter((_) => _.buyExchangeRate);
@@ -5861,7 +5898,7 @@
5861
5898
  designDisabledPeople: (item) => Boolean(item.designDisabledPeople),
5862
5899
  };
5863
5900
  const AtmsMap = JSX(({ descriptionData, className }) => {
5864
- const [currentLocation] = useLocation();
5901
+ const currentLocation = useLocationState();
5865
5902
  const regionCode = currentLocation?.code ?? '000';
5866
5903
  const { data: officesData, isLoad } = useAtms(regionCode);
5867
5904
  return (jsx(OfficesAtmsMapLayout, { className: className, filterItems: filterItems, data: officesData, isLoad: isLoad, initFilterState: INITIAL_FILTRATION_STATE, renderCard: renderAtmCard, getBalloon: getAtmPoint, title: `Банкоматы филиала ${currentLocation?.name}`, descriptionData: descriptionData }));
@@ -6080,7 +6117,7 @@
6080
6117
  };
6081
6118
 
6082
6119
  const OfficesMap = JSX(({ className }) => {
6083
- const [currentLocation] = useLocation();
6120
+ const currentLocation = useLocationState();
6084
6121
  const regionCode = currentLocation?.code ?? '000';
6085
6122
  const { data, isLoad } = useOffices(regionCode);
6086
6123
  return (jsx(OfficesAtmsMapLayout, { className: className, data: data?.branches, isLoad: isLoad, remoteWorkplaces: data?.remoteWorkplaces, renderCard: renderOfficeCard, renderRemoteWorkplaceCard: renderRemoteWorkplaceCard, getBalloon: getOfficePoint, getBalloonRemoteWorkplaces: getRemoteWorkplacePoint, title: `Офисы филиала ${currentLocation?.name}` }));
@@ -6328,7 +6365,7 @@
6328
6365
  onClose && onClose(dialogs[dialogs.length - 1]);
6329
6366
  pop();
6330
6367
  }, [dialogs, onClose]);
6331
- useEffect(() => defaultEventBus.subscribe('dialog', (action) => {
6368
+ useEffect(() => defaultEventBus.observable.subscribe('dialog', (action) => {
6332
6369
  switch (action.type) {
6333
6370
  case 'open':
6334
6371
  push(action);
@@ -6437,27 +6474,33 @@
6437
6474
  return (jsxs("form", { className: `font-sans relative ${className}`, children: [jsx("div", { className: "absolute rounded h-full flex items-center justify-center pl-m max-w-44 gap-s pointer-events-none", children: searchTerm ? null : (jsx("label", { htmlFor: "search-bar-input", className: `text-secondary-text `, children: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0444\u0438\u043B\u0438\u0430\u043B\u0430\u043C" })) }), jsx("input", { id: "search-bar-input", className: style(inputValidStyle, `h-12 pl-m w-full peer text-l text-black rounded-md box-border`), value: searchTerm, onChange: (e) => onSearch(e.target.value.toLowerCase()), type: "text", name: "location-search-bar-input" })] }));
6438
6475
  });
6439
6476
 
6440
- const SEARCH_TERM_MIN_LENGTH = 3;
6441
- const LocationDialog = JSX(({ foreignOffices, branches }) => {
6442
- const [currentLocation, selectCurrentLocation] = useLocation(branches?.default);
6477
+ const SelectedLocation = JSX(({ defaultLocation }) => {
6478
+ const currentLocation = useLocationState(defaultLocation);
6443
6479
  const link = useLink();
6444
6480
  const { href } = link({ href: `/branches/${currentLocation.slug}` });
6481
+ return currentLocation ? (jsx("div", { className: "mb-s", children: jsxs(Paragraph, { size: "text-l", color: "text-primary-text", children: ["\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044B\u0431\u0440\u0430\u043D:", jsx(LinkWrapper, { href: href, className: "inline mx-2xs text-primary-main", children: currentLocation.name })] }) })) : null;
6482
+ });
6483
+
6484
+ const SEARCH_TERM_MIN_LENGTH = 3;
6485
+ const LocationDialog = JSX(({ foreignOffices, branches }) => {
6486
+ const selectLocation = useLocation(branches?.default);
6445
6487
  const [query, setQuery] = useState('');
6446
- const regions = cleanUpRegions(useRegions()).sort((a, b) => a.name.localeCompare(b.name));
6447
- const regionsGroupByLetter = groupBy(regions, regionFirstLetter);
6488
+ const rawRegions = useRegions();
6489
+ const regions = useMemo(() => cleanUpRegions(rawRegions).sort((a, b) => (a.name ?? '').localeCompare(b.name ?? '')), [rawRegions]);
6490
+ const regionsGroupByLetter = useMemo(() => groupBy(regions, regionFirstLetter), [regions]);
6448
6491
  const { close } = useDialogManager();
6449
6492
  const handleChangeLocation = useCallback((region) => {
6450
- selectCurrentLocation(region);
6493
+ selectLocation(region);
6451
6494
  close();
6452
6495
  }, []);
6453
- return (jsxs(Dialog, { className: "pb-20", head: jsxs("div", { children: [jsx(Text, { size: "text-h4", color: "text-primary-text", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0438\u043B\u0438\u0430\u043B" }), currentLocation ? (jsx("div", { className: "mb-s", children: jsxs(Paragraph, { size: "text-l", color: "text-primary-text", children: ["\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044B\u0431\u0440\u0430\u043D:", jsx(LinkWrapper, { href: href, className: "inline mx-2xs text-primary-main", children: currentLocation.name })] }) })) : null, jsx(SearchBar, { onSearch: setQuery, searchTerm: query })] }), children: [query && query.length >= SEARCH_TERM_MIN_LENGTH ? (jsx("div", { children: regions
6496
+ return (jsxs(Dialog, { className: "pb-20", head: jsxs("div", { children: [jsx(Text, { size: "text-h4", color: "text-primary-text", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0438\u043B\u0438\u0430\u043B" }), jsx(SelectedLocation, { defaultLocation: branches?.default }), jsx(SearchBar, { onSearch: setQuery, searchTerm: query })] }), children: [query && query.length >= SEARCH_TERM_MIN_LENGTH ? (jsx("div", { children: regions
6454
6497
  .filter(({ name }) => name && jaroWinklerDistance(name.toLowerCase())(query.toLowerCase()) >= 0.8)
6455
6498
  .map(renderRegion(branches?.dataSelect, handleChangeLocation)) })) : (jsx("div", { className: "columns-1 sm:columns-3 md:columns-4 lg:columns-5", children: Array.from(regionsGroupByLetter.entries()).map(renderRegionGroup(handleChangeLocation, branches?.dataSelect)) })), renderForeignOffices(foreignOffices)] }));
6456
6499
  });
6457
- const regionFirstLetter = (region) => region.name?.charAt(0) || '';
6500
+ const regionFirstLetter = (region) => region.name?.charAt(0) ?? '';
6458
6501
  const cleanUpRegions = (regions) => regions.map((region) => ({
6459
6502
  ...region,
6460
- name: region.name?.replace(/республика|область|край'/gi, '').trim() || '',
6503
+ name: region.name?.replace(/республика|область|край'/gi, '').trim() ?? '',
6461
6504
  }));
6462
6505
 
6463
6506
  const useLocationDialog = (props) => {
@@ -6470,7 +6513,7 @@
6470
6513
 
6471
6514
  const BurgerMenuDialog = JSX(({ menuRef, menuItem, locationDialogProps, closeAll }) => {
6472
6515
  const locationDialog = useLocationDialog(locationDialogProps || {});
6473
- const [{ name: location }] = useLocation();
6516
+ const { name: location } = useLocationState();
6474
6517
  const menuDimensions = menuRef?.current?.getBoundingClientRect();
6475
6518
  const basePath = getBasePath(env.SITE_URL);
6476
6519
  const handleIframeLoad = () => {
@@ -7030,7 +7073,7 @@
7030
7073
  const close = useCallback(() => {
7031
7074
  setPopup(null);
7032
7075
  }, []);
7033
- useEffect(() => defaultEventBus.subscribe('popup', (action) => {
7076
+ useEffect(() => defaultEventBus.observable.subscribe('popup', (action) => {
7034
7077
  switch (action.type) {
7035
7078
  case 'open':
7036
7079
  case 'update':
@@ -7085,7 +7128,7 @@
7085
7128
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
7086
7129
  });
7087
7130
 
7088
- const packageVersion = "0.14.593";
7131
+ const packageVersion = "0.14.595";
7089
7132
 
7090
7133
  exports.Blocks = Blocks;
7091
7134
  exports.ContentPage = ContentPage;