@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
@@ -1,36 +1,72 @@
1
- export class EventBus<EM extends Record<string, any>> {
2
- private subscribers: Partial<Record<keyof EM, Array<(ev: EM[keyof EM]) => void>>> = {};
1
+ export type Subscriber<Event> = (ev: Event) => void;
2
+
3
+ type Cleanup = () => void;
4
+
5
+ export interface EventBusObservable<EM extends Record<string, any>> {
6
+ subscribe<K extends keyof EM>(type: K, listener: Subscriber<EM[K]>): Cleanup;
7
+ }
8
+
9
+ export interface EventBusEmitter<EM extends Record<string, any>> {
10
+ fire<K extends keyof EM>(type: K, event: EM[K]): void;
11
+ subject<K extends keyof EM>(type: K, event: EM[K]): Cleanup;
12
+ }
13
+
14
+ export class EventBus<EM extends Record<string, any>>
15
+ implements EventBusObservable<EM>, EventBusEmitter<EM>
16
+ {
17
+ private subscribersMap: Partial<Record<keyof EM, Subscriber<EM[keyof EM]>[]>> = {};
3
18
  private subjectsStateMap: Partial<EM> = {};
4
19
 
5
- subscribe<K extends keyof EM>(type: K, listener: (event: EM[K]) => void) {
6
- this.subscribers[type] = (this.subscribers[type] || []).concat(
7
- listener as (ev: EM[keyof EM]) => void,
8
- );
20
+ readonly emitter: EventBusEmitter<EM> = this;
21
+ readonly observable: EventBusObservable<EM> = this;
9
22
 
10
- const latestEvent = this.subjectsStateMap[type];
11
- if (latestEvent) {
12
- listener(latestEvent as EM[K]);
13
- }
23
+ subscribe<K extends keyof EM>(type: K, listener: Subscriber<EM[K]>): Cleanup {
24
+ this.subscribersMap[type] ||= [];
25
+ this.subscribersMap[type]?.push(listener as Subscriber<EM[keyof EM]>);
26
+
27
+ this.fireSubscribers([listener], this.subjectsStateMap[type]);
14
28
 
15
29
  return () => {
16
30
  this.unsubscribe(type, listener);
17
31
  };
18
32
  }
19
33
 
20
- private unsubscribe<K extends keyof EM>(type: K, listener: (event: EM[K]) => void) {
21
- this.subscribers[type] = this.subscribers[type]?.filter((s) => s !== listener);
34
+ private unsubscribe<K extends keyof EM>(type: K, listener: Subscriber<EM[K]>) {
35
+ const index = this.subscribersMap[type]?.indexOf(listener as Subscriber<EM[keyof EM]>);
36
+ if (index && index !== -1) {
37
+ this.subscribersMap[type]?.splice(index, 1);
38
+ }
22
39
  }
23
40
 
24
41
  fire<K extends keyof EM>(type: K, event: EM[K]) {
25
42
  const isSubjectDeclared = type in this.subjectsStateMap;
26
43
  if (isSubjectDeclared) {
44
+ this.subject(type, event);
45
+ } else {
46
+ this.fireSubscribers(this.subscribersMap[type], event);
47
+ }
48
+ }
49
+
50
+ subject<K extends keyof EM>(type: K, event: EM[K]): Cleanup {
51
+ if (this.subjectsStateMap[type] !== event) {
27
52
  this.subjectsStateMap[type] = event;
53
+ this.fireSubscribers(this.subscribersMap[type], event);
28
54
  }
29
55
 
30
- this.subscribers[type]?.forEach((s) => s(event));
56
+ return () => {
57
+ delete this.subjectsStateMap[type];
58
+ };
31
59
  }
32
60
 
33
- subject<K extends keyof EM>(type: K, event: EM[K]) {
34
- this.subjectsStateMap[type] = event;
61
+ private fireSubscribers<K extends keyof EM>(
62
+ subscribers: Subscriber<EM[K]>[] | undefined,
63
+ event: EM[K] | undefined,
64
+ ) {
65
+ if (!subscribers || !event) {
66
+ return;
67
+ }
68
+ for (const _ of subscribers) {
69
+ _(event);
70
+ }
35
71
  }
36
72
  }
@@ -1,22 +1,10 @@
1
- import { type CarouselTariffsCardAction } from '../components/CarouselTariffsCard/CarouselTariffsCardAction';
2
- import { type Tab } from '../components/TabsLayout/TabsLayoutContent';
3
1
  import { type Region } from '../hooks/useRegions';
4
2
  import { type DialogAction } from '../ui-kit/DialogManager/DialogAction';
5
3
  import { type PopupAction } from '../ui-kit/PopupManager/PopupAction';
6
4
  import { EventBus } from './EventBus';
7
5
 
8
- interface TabActivationEvent {
9
- type?: Tab['type'];
10
- groupName?: string;
11
- label?: string;
12
- }
13
-
14
- interface GlobalEventMap {
6
+ export const defaultEventBus = new EventBus<{
15
7
  location: Region;
16
8
  dialog: DialogAction;
17
9
  popup: PopupAction;
18
- tab: TabActivationEvent;
19
- fold: CarouselTariffsCardAction;
20
- }
21
-
22
- export const defaultEventBus = new EventBus<GlobalEventMap>();
10
+ }>();
@@ -0,0 +1,19 @@
1
+ import { useCallback, useEffect } from '@redneckz/uni-jsx/lib/hooks';
2
+ import type { EventBusEmitter } from './EventBus';
3
+
4
+ export function useSubject<EM extends Record<string, any>, K extends keyof EM>(
5
+ eventBus: EventBusEmitter<EM>,
6
+ type: K,
7
+ initialState: EM[K] | (() => EM[K] | Promise<EM[K]>),
8
+ ): (_: EM[K]) => void {
9
+ useEffect(() => {
10
+ const state = initialState instanceof Function ? initialState() : initialState;
11
+ if (state instanceof Promise) {
12
+ state.then((_) => eventBus.subject(type, _), console.warn);
13
+ } else {
14
+ eventBus.subject(type, state);
15
+ }
16
+ }, [eventBus, type]);
17
+
18
+ return useCallback((_: EM[K]) => eventBus.fire(type, _), [eventBus, type]);
19
+ }
@@ -0,0 +1,13 @@
1
+ import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { type EventBusObservable } from './EventBus';
3
+
4
+ export const useSubjectState = <EM extends Record<string, any>, K extends keyof EM>(
5
+ eventBus: EventBusObservable<EM>,
6
+ type: K,
7
+ initialState: EM[K],
8
+ ): EM[K] => {
9
+ const [state, setState] = useState(initialState);
10
+ useEffect(() => eventBus.subscribe(type, setState), [eventBus, type]);
11
+
12
+ return state;
13
+ };
@@ -0,0 +1,54 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import type { AspectsProps } from '../../model/AspectsProps';
3
+ import { FoldableWrapper } from '../../ui-kit/Foldable/Foldable';
4
+ import { FoldableSection } from '../../ui-kit/Foldable/FoldableSection';
5
+ import { Icon } from '../../ui-kit/Icon/Icon';
6
+ import { getAspectsAttributes } from '../../utils/dataAttributes';
7
+ import type { TariffsCardCellProps } from './CarouselTariffsCardContent';
8
+ import { renderCardInfo } from './renderCardInfo';
9
+
10
+ export interface CardCellsSectionProps extends AspectsProps {
11
+ cardCells?: TariffsCardCellProps[];
12
+ visibleCellsCount?: number;
13
+ isUnfolded?: boolean;
14
+ onToggle?: () => void;
15
+ }
16
+
17
+ export const CardCellsSection = JSX<CardCellsSectionProps>((props) => {
18
+ const { cardCells = [], visibleCellsCount = 1, isUnfolded } = props;
19
+
20
+ const [visibleCells, hiddenCells] =
21
+ visibleCellsCount > 0 && cardCells.length >= visibleCellsCount
22
+ ? [cardCells.slice(0, visibleCellsCount), cardCells.slice(visibleCellsCount)]
23
+ : [cardCells, []];
24
+
25
+ return hiddenCells.length ? (
26
+ <FoldableWrapper>
27
+ <div>
28
+ {visibleCells.map(renderCardInfo)}
29
+ <FoldableSection isUnfolded={isUnfolded}>{hiddenCells.map(renderCardInfo)}</FoldableSection>
30
+ </div>
31
+ <FoldButton {...props} />
32
+ </FoldableWrapper>
33
+ ) : (
34
+ <div>{visibleCells.map(renderCardInfo)}</div>
35
+ );
36
+ });
37
+
38
+ const FoldButton = JSX<CardCellsSectionProps>(({ isUnfolded, data, onToggle }) => (
39
+ <button
40
+ type="button"
41
+ className="w-full cursor-pointer text-primary-main pt-lg flex justify-between items-center"
42
+ // eslint-disable-next-line react/jsx-props-no-spreading
43
+ {...(isUnfolded ? getAspectsAttributes(data) : {})}
44
+ onClick={onToggle}
45
+ >
46
+ <div>{isUnfolded ? 'Скрыть' : 'Подробнее о тарифе'}</div>
47
+ <Icon
48
+ className="text-primary-text"
49
+ name={isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon'}
50
+ width="16"
51
+ height="16"
52
+ />
53
+ </button>
54
+ ));
@@ -1,28 +1,22 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
3
- import { defaultEventBus } from '../../EventBus/defaultEventBus';
4
- import { type AspectsDef } from '../../model/AspectsProps';
5
- import { type Slot } from '../../model/ContentPageDef';
6
- import { type VNode } from '../../model/VNode';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { useSubjectState } from '../../EventBus/useSubjectState';
7
4
  import { BlockWrapper } from '../../ui-kit/BlockWrapper';
8
- import { Foldable } from '../../ui-kit/Foldable/Foldable';
9
- import { FoldableSection } from '../../ui-kit/Foldable/FoldableSection';
10
5
  import { Heading } from '../../ui-kit/Heading/Heading';
11
- import { Icon } from '../../ui-kit/Icon/Icon';
12
6
  import { Img } from '../../ui-kit/Img/Img';
13
7
  import { LinkButton } from '../../ui-kit/LinkButton/LinkButton';
14
8
  import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
15
- import { getAspectsAttributes } from '../../utils/dataAttributes';
16
9
  import { isIcon } from '../../utils/isIcon';
17
10
  import { style } from '../../utils/style';
11
+ import { CardCellsSection } from './CardCellsSection';
18
12
  import { type CarouselTariffsCardContent } from './CarouselTariffsCardContent';
19
- import { renderCardInfo } from './renderCardInfo';
13
+ import { carouselTariffsCardEventBus } from './carouselTariffsCardEventBus';
20
14
 
21
15
  export interface CarouselTariffsCardProps extends CarouselTariffsCardContent, UniBlockProps {}
22
16
 
23
17
  export const CarouselTariffsCard = JSX<CarouselTariffsCardProps>(
24
18
  ({
25
- className = '',
19
+ className,
26
20
  title,
27
21
  align = 'text-center',
28
22
  icon,
@@ -33,22 +27,20 @@ export const CarouselTariffsCard = JSX<CarouselTariffsCardProps>(
33
27
  data,
34
28
  ...rest
35
29
  }) => {
36
- const cellsNode = cardCells.map(renderCardInfo);
37
-
38
- const [visibleCells, hiddenCells] =
39
- visibleCellsCount > 0
40
- ? [cellsNode.slice(0, visibleCellsCount), cellsNode.slice(visibleCellsCount)]
41
- : [cellsNode, []];
42
- const [isVisible, setIsVisible] = useState(false);
30
+ const { isUnfolded, parent: firedParent } = useSubjectState(
31
+ carouselTariffsCardEventBus.observable,
32
+ 'fold',
33
+ {},
34
+ );
35
+ const isVisible = isUnfolded && firedParent === options?.parent;
43
36
 
44
- useEffect(
37
+ const toggle = useCallback(
45
38
  () =>
46
- defaultEventBus.subscribe('fold', (event) => {
47
- if (options?.parent !== undefined && event.parent === options?.parent) {
48
- setIsVisible(event.isUnfolded);
49
- }
39
+ carouselTariffsCardEventBus.emitter.fire('fold', {
40
+ isUnfolded: !isVisible,
41
+ parent: options?.parent,
50
42
  }),
51
- [options?.parent],
43
+ [isVisible, options?.parent],
52
44
  );
53
45
 
54
46
  return (
@@ -62,49 +54,14 @@ export const CarouselTariffsCard = JSX<CarouselTariffsCardProps>(
62
54
  <Heading className={style('pt-xs', align)} headingType="h5" title={title} />
63
55
  ) : null}
64
56
  {button?.text ? <LinkButton className="w-full mt-m mb-lg" {...button} /> : null}
65
- {hiddenCells.length ? (
66
- <Foldable
67
- renderFoldableSection={() => (
68
- <div>
69
- {visibleCells}
70
- <FoldableSection isUnfolded={isVisible}>{hiddenCells}</FoldableSection>
71
- </div>
72
- )}
73
- renderFoldButton={
74
- cardCells.length >= visibleCellsCount
75
- ? renderFoldButton(options?.parent, data, isVisible)
76
- : null
77
- }
78
- />
79
- ) : (
80
- <div>{visibleCells}</div>
81
- )}
57
+ <CardCellsSection
58
+ cardCells={cardCells}
59
+ visibleCellsCount={visibleCellsCount}
60
+ isUnfolded={isVisible}
61
+ data={data}
62
+ onToggle={toggle}
63
+ />
82
64
  </BlockWrapper>
83
65
  );
84
66
  },
85
67
  );
86
-
87
- const renderFoldButton =
88
- (parent?: Slot, data?: AspectsDef[], isUnfolded = false) =>
89
- (): VNode =>
90
- (
91
- <button
92
- className="w-full cursor-pointer text-primary-main pt-lg flex justify-between items-center"
93
- onClick={() => {
94
- if (parent !== undefined) {
95
- defaultEventBus.fire('fold', { type: 'fold', isUnfolded: !isUnfolded, parent });
96
- }
97
- }}
98
- type="button"
99
- // eslint-disable-next-line react/jsx-props-no-spreading
100
- {...(isUnfolded ? getAspectsAttributes(data) : {})}
101
- >
102
- <div>{isUnfolded ? 'Скрыть' : 'Подробнее о тарифе'}</div>
103
- <Icon
104
- className="text-primary-text"
105
- name={isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon'}
106
- width="16"
107
- height="16"
108
- />
109
- </button>
110
- );
@@ -0,0 +1,11 @@
1
+ import { EventBus } from '../../EventBus/EventBus';
2
+ import { type Slot } from '../../model/ContentPageDef';
3
+
4
+ export type CarouselTariffsCardFoldAction = {
5
+ isUnfolded?: boolean;
6
+ parent?: Slot;
7
+ };
8
+
9
+ export const carouselTariffsCardEventBus = new EventBus<{
10
+ fold: CarouselTariffsCardFoldAction;
11
+ }>();
@@ -1,5 +1,5 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import { useLocation } from '../../hooks/useLocation';
2
+ import { useLocationState } from '../../hooks/useLocation';
3
3
  import { BaseTile } from '../../ui-kit/BaseTile/BaseTile';
4
4
  import { BlockWrapper } from '../../ui-kit/BlockWrapper';
5
5
  import { Heading } from '../../ui-kit/Heading/Heading';
@@ -19,7 +19,7 @@ export interface ExchangeRateTileProps extends ExchangeRateTileContent, UniBlock
19
19
 
20
20
  export const ExchangeRateTile = JSX<ExchangeRateTileProps>(
21
21
  ({ className = '', title = 'Курсы обмена валют', button, ...rest }) => {
22
- const [currentLocation] = useLocation();
22
+ const currentLocation = useLocationState();
23
23
  const exchangeRates = useFetchExchangeRateData(currentLocation);
24
24
 
25
25
  const currencyRates = getCurrencyRates(exchangeRates?.exchangeRate?.currencies);
@@ -4,7 +4,7 @@ import { type SearchHeaderProps } from '../../data/CommonData';
4
4
  import { type HeaderData } from '../../data/HeaderData';
5
5
  import { type NavigationData } from '../../data/NavigationData';
6
6
  import { getAspectsWithInclude } from '../../hooks/useAspects/aspects/getAspectsWithInclude';
7
- import { useLocation } from '../../hooks/useLocation';
7
+ import { useLocationState } from '../../hooks/useLocation';
8
8
  import { type BlockVersion } from '../../model/BlockVersion';
9
9
  import { type IconVersion } from '../../model/IconVersion';
10
10
  import { useLocationDialog } from '../../ui-kit/LocationDialog/useLocationDialog';
@@ -22,7 +22,7 @@ export const HeaderSecondaryMenu = JSX<HeaderSecondaryMenuProps>(
22
22
  ({ className, version, ...rest }) => {
23
23
  const iconVersion: IconVersion = version === 'transparent' ? 'white' : 'black';
24
24
 
25
- const [currentLocation] = useLocation(rest?.branches?.default);
25
+ const currentLocation = useLocationState(rest?.branches?.default);
26
26
 
27
27
  const searchDialog = useSearchDialog(rest);
28
28
  const locationDialog = useLocationDialog(rest);
@@ -1,5 +1,5 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import { useLocation } from '../../hooks/useLocation';
2
+ import { useLocationState } from '../../hooks/useLocation';
3
3
  import { type AtmsDef } from './OfficesAtmsMapContent';
4
4
  import { OfficesAtmsMapLayout } from './OfficesAtmsMapLayout';
5
5
  import { type Atm } from './OfficesAtmsMapProps';
@@ -30,8 +30,7 @@ export interface AtmsMapProps {
30
30
  }
31
31
 
32
32
  export const AtmsMap = JSX<AtmsMapProps>(({ descriptionData, className }) => {
33
- const [currentLocation] = useLocation();
34
-
33
+ const currentLocation = useLocationState();
35
34
  const regionCode = currentLocation?.code ?? '000';
36
35
 
37
36
  const { data: officesData, isLoad } = useAtms(regionCode);
@@ -1,5 +1,5 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import { useLocation } from '../../hooks/useLocation';
2
+ import { useLocationState } from '../../hooks/useLocation';
3
3
  import { OfficesAtmsMapLayout } from './OfficesAtmsMapLayout';
4
4
  import { getOfficePoint, renderOfficeCard } from './renderOfficeCard';
5
5
  import { getRemoteWorkplacePoint, renderRemoteWorkplaceCard } from './renderRemoteWorkplaceCard';
@@ -10,7 +10,7 @@ export interface OfficesMapProps {
10
10
  }
11
11
 
12
12
  export const OfficesMap = JSX<OfficesMapProps>(({ className }) => {
13
- const [currentLocation] = useLocation();
13
+ const currentLocation = useLocationState();
14
14
  const regionCode = currentLocation?.code ?? '000';
15
15
  const { data, isLoad } = useOffices(regionCode);
16
16
 
@@ -4,7 +4,7 @@ import { type HeaderData } from '../../data/HeaderData';
4
4
  import { type JSONRefObject } from '../../data/JSONRefObject';
5
5
  import { type StickyMenuItem } from '../../data/StickyMobileData';
6
6
  import { env } from '../../Env';
7
- import { useLocation } from '../../hooks/useLocation';
7
+ import { useLocationState } from '../../hooks/useLocation';
8
8
  import { Heading } from '../../ui-kit/Heading/Heading';
9
9
  import { useLocationDialog } from '../../ui-kit/LocationDialog/useLocationDialog';
10
10
  import { getBasePath } from '../../utils/getBasePath';
@@ -22,7 +22,7 @@ export interface BurgerMenuDialogProps {
22
22
  export const BurgerMenuDialog = JSX<BurgerMenuDialogProps>(
23
23
  ({ menuRef, menuItem, locationDialogProps, closeAll }) => {
24
24
  const locationDialog = useLocationDialog(locationDialogProps || {});
25
- const [{ name: location }] = useLocation();
25
+ const { name: location } = useLocationState();
26
26
  const menuDimensions = menuRef?.current?.getBoundingClientRect();
27
27
  const basePath = getBasePath(env.SITE_URL);
28
28
 
@@ -1,54 +1,40 @@
1
- import { useCallback, useEffect } from '@redneckz/uni-jsx/lib/hooks';
2
- import { useAsyncData } from '@redneckz/uni-jsx/lib/hooks/useAsyncData';
1
+ import { useEffect } from '@redneckz/uni-jsx/lib/hooks';
3
2
  import { defaultEventBus } from '../EventBus/defaultEventBus';
4
- import { useLatestEvent } from '../EventBus/useLatestEvent';
5
- import { fetchJSONUnsafe, type FetchJSONUnsafeType } from '../utils/fetchJSON';
3
+ import { useSubject } from '../EventBus/useSubject';
4
+ import { useSubjectState } from '../EventBus/useSubjectState';
5
+ import { fetchJSON } from '../utils/fetchJSON';
6
6
  import { type Region } from './useRegions';
7
7
 
8
8
  const REGION_URL = '/api/v1/region';
9
9
  const LOCATION_STORAGE_KEY = 'location';
10
10
 
11
- export function useLocation(defaultLocation = 'Москва'): [Region, (_: Region) => void] {
12
- const [currentLocation, fireCurrentLocation] = useLatestEvent(
13
- defaultEventBus,
14
- 'location',
15
- restoreLocation() ?? { name: defaultLocation },
16
- );
17
-
18
- const selectCurrentLocation = useCallback((_: Region) => {
19
- storeLocation(_);
20
- fireCurrentLocation(_);
21
- }, []);
22
-
23
- const { data } = useAsyncData(
24
- hasStoredLocation() ? null : REGION_URL,
25
- fetchJSONUnsafe as FetchJSONUnsafeType<Region>,
26
- );
27
- useEffect(() => {
28
- if (data && !hasStoredLocation()) {
29
- fireCurrentLocation(data);
11
+ export function useLocation(defaultLocation = 'Москва'): (_: Region) => void {
12
+ useEffect(() => defaultEventBus.subscribe('location', storeLocation), []);
13
+
14
+ return useSubject(defaultEventBus.emitter, 'location', restoreLocation(defaultLocation));
15
+ }
16
+
17
+ export function useLocationState(defaultLocation = 'Москва'): Region {
18
+ return useSubjectState(defaultEventBus.observable, 'location', { name: defaultLocation });
19
+ }
20
+
21
+ function restoreLocation(defaultLocation: string) {
22
+ return async (): Promise<Region> => {
23
+ if (!globalThis.localStorage?.hasItem(LOCATION_STORAGE_KEY)) {
24
+ storeLocation(await fetchJSON<Region>(REGION_URL));
25
+ }
26
+
27
+ const storedLocation = globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY);
28
+ try {
29
+ return storedLocation && JSON.parse(storedLocation);
30
+ } catch (ex) {
31
+ // Do nothing
30
32
  }
31
- }, [data]);
32
33
 
33
- return [currentLocation ?? { name: defaultLocation }, selectCurrentLocation];
34
+ return { name: defaultLocation };
35
+ };
34
36
  }
35
37
 
36
- const hasStoredLocation = () => Boolean(globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY));
37
-
38
- const restoreLocation = (): Region | null => {
39
- try {
40
- const data = globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY);
41
-
42
- return data && JSON.parse(data);
43
- } catch (ex) {
44
- return null;
45
- }
46
- };
47
-
48
- const storeLocation = (_: Region) => {
49
- try {
50
- globalThis.localStorage?.setItem(LOCATION_STORAGE_KEY, JSON.stringify(_));
51
- } catch (ex) {
52
- // Do nothing
53
- }
54
- };
38
+ function storeLocation(_: Region | null | undefined) {
39
+ _ && globalThis.localStorage?.setItem(LOCATION_STORAGE_KEY, JSON.stringify(_));
40
+ }
@@ -0,0 +1,21 @@
1
+ import { useCallback, useState } from '@redneckz/uni-jsx/lib/hooks';
2
+
3
+ export type NotUndefined = object | null;
4
+ export type Reducer<S, A extends NotUndefined> = (state: S, action: A) => S;
5
+ export type Dispatch<A extends NotUndefined> = (action: A) => void;
6
+
7
+ export function useReducer<S, A extends NotUndefined>(
8
+ reducer: Reducer<S, A>,
9
+ initialArg: S,
10
+ ): [state: S, dispatch: Dispatch<A>] {
11
+ const [state, setState] = useState(initialArg);
12
+
13
+ const dispatch = useCallback(
14
+ (action: A) => {
15
+ setState((_) => reducer(_, action));
16
+ },
17
+ [reducer],
18
+ );
19
+
20
+ return [state, dispatch];
21
+ }
@@ -11,8 +11,11 @@ export interface Region {
11
11
  localities?: string[];
12
12
  }
13
13
 
14
+ const EMPTY_REGIONS: Region[] = [];
15
+
16
+ // TODO Почему url можно менять? Разве смысл не в инкапсуляции api url. Тоже под рефакторинг попадает
14
17
  export function useRegions(url: string = REGIONS_URL): Region[] {
15
18
  const { data } = useAsyncData(url, fetchJSONUnsafe as FetchJSONUnsafeType<Region[]>);
16
19
 
17
- return Array.isArray(data) ? data : [];
20
+ return Array.isArray(data) ? data : EMPTY_REGIONS;
18
21
  }
@@ -0,0 +1,7 @@
1
+ export interface DefaultControlType {
2
+ className?: string;
3
+ label?: string;
4
+ error?: string;
5
+ errors?: string[];
6
+ placeholder?: string;
7
+ }
@@ -44,7 +44,7 @@ export const renderBinaryRadioButtonGroup = ({
44
44
  <RadioButtonGroup
45
45
  orientation={orientation}
46
46
  items={items}
47
- checkedItem={items[value ? 0 : 1].id}
47
+ value={items[value ? 0 : 1].id}
48
48
  onChange={(_) => onChange && onChange(_ === items[0].id)}
49
49
  {...rest}
50
50
  />
@@ -1,25 +1,17 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { type DefaultControlType } from '../../model/DefaultControlType';
3
+ import { getRequiredLabel } from '../../utils/getRequiredLabel';
2
4
  import { style } from '../../utils/style';
5
+ import { type ControlProps } from '../ControlProps';
3
6
  import { renderErrorText } from '../Input/renderErrorText';
4
7
  import { DatePicker } from './DatePicker';
5
8
 
6
- export interface DatePickerControlProps {
7
- className?: string;
8
- label: string;
9
- value?: Date;
10
- error?: string;
11
- errors?: string[];
12
- onChange?: (value: Date) => void;
13
- }
9
+ export interface DatePickerControlProps extends DefaultControlType, ControlProps<Date> {}
14
10
 
15
11
  export const DatePickerControl = JSX<DatePickerControlProps>(
16
- ({ className, label, error, ...rest }) => (
12
+ ({ className, label, error, errors, ...rest }) => (
17
13
  <div className={style('shrink-0 w-full', className)}>
18
- <DatePicker
19
- label={label && rest?.errors ? `${label}*` : label}
20
- valid={Boolean(!error)}
21
- {...rest}
22
- />
14
+ <DatePicker label={getRequiredLabel({ label, errors })} valid={Boolean(!error)} {...rest} />
23
15
  {renderErrorText(error)}
24
16
  </div>
25
17
  ),
@@ -8,7 +8,7 @@ export interface DialogOptions {
8
8
 
9
9
  export const useDialogManager = () => ({
10
10
  open: (dialog: VNode, options: DialogOptions = {}) =>
11
- defaultEventBus.fire('dialog', { type: 'open', dialog, ...options }),
12
- close: () => defaultEventBus.fire('dialog', { type: 'close' }),
13
- closeAll: () => defaultEventBus.fire('dialog', { type: 'close', all: true }),
11
+ defaultEventBus.emitter.fire('dialog', { type: 'open', dialog, ...options }),
12
+ close: () => defaultEventBus.emitter.fire('dialog', { type: 'close' }),
13
+ closeAll: () => defaultEventBus.emitter.fire('dialog', { type: 'close', all: true }),
14
14
  });
@@ -27,7 +27,7 @@ export const useDialogsList = ({
27
27
 
28
28
  useEffect(
29
29
  () =>
30
- defaultEventBus.subscribe('dialog', (action) => {
30
+ defaultEventBus.observable.subscribe('dialog', (action) => {
31
31
  switch (action.type) {
32
32
  case 'open':
33
33
  push(action);