@redneckz/wildless-cms-uni-blocks 0.6.35 → 0.6.36

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 (494) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +160 -52
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/CarouselProgramsCard/CarouselProgramsCard.d.ts +5 -0
  5. package/bundle/components/CarouselProgramsCard/CarouselProgramsCardContent.d.ts +12 -0
  6. package/bundle/components/Header/HeaderSubMenuItem.d.ts +2 -1
  7. package/bundle/hooks/useIntersectionObserver.d.ts +7 -1
  8. package/bundle/ui-kit/Button/ArrowButton.d.ts +2 -0
  9. package/bundle/ui-kit/SwipeListControl/SwipeListContainer.d.ts +19 -0
  10. package/bundle/ui-kit/SwipeListControl/SwipeListControlDots.d.ts +7 -4
  11. package/bundle/ui-kit/SwipeListControl/SwipeListControlProps.d.ts +3 -3
  12. package/bundle/ui-kit/SwipeListControl/SwipeListItem.d.ts +14 -0
  13. package/bundle/ui-kit/SwipeListControl/scrollBy.d.ts +1 -0
  14. package/bundle/ui-kit/SwipeListControl/scrollToEnd.d.ts +1 -0
  15. package/bundle/ui-kit/SwipeListControl/scrollToStart.d.ts +1 -0
  16. package/bundle/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +17 -0
  17. package/bundle/utils/areArraysEqual.d.ts +1 -0
  18. package/bundle/utils/mapChildren.d.ts +2 -0
  19. package/bundle/utils/maxBy.d.ts +2 -2
  20. package/bundle/utils/minBy.d.ts +1 -0
  21. package/dist/components/Blocks.js +3 -1
  22. package/dist/components/Blocks.js.map +1 -1
  23. package/dist/components/Carousel/Carousel.js +14 -15
  24. package/dist/components/Carousel/Carousel.js.map +1 -1
  25. package/dist/components/CarouselProgramsCard/CarouselProgramsCard.d.ts +5 -0
  26. package/dist/components/CarouselProgramsCard/CarouselProgramsCard.js +12 -0
  27. package/dist/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -0
  28. package/dist/components/CarouselProgramsCard/CarouselProgramsCardContent.d.ts +12 -0
  29. package/dist/components/CarouselProgramsCard/CarouselProgramsCardContent.js +2 -0
  30. package/dist/components/CarouselProgramsCard/CarouselProgramsCardContent.js.map +1 -0
  31. package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +7 -13
  32. package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  33. package/dist/components/ComparisonTable/ComparisonTable.mobile.js +1 -1
  34. package/dist/components/ComparisonTable/ComparisonTable.mobile.js.map +1 -1
  35. package/dist/components/Gallery/Gallery.mobile.js +1 -1
  36. package/dist/components/Header/HeaderSubMenu.js +1 -1
  37. package/dist/components/Header/HeaderSubMenu.js.map +1 -1
  38. package/dist/components/Header/HeaderSubMenuItem.d.ts +2 -1
  39. package/dist/components/Header/HeaderSubMenuItem.js.map +1 -1
  40. package/dist/components/RollupItem/RollupItem.js +10 -1
  41. package/dist/components/RollupItem/RollupItem.js.map +1 -1
  42. package/dist/hooks/useIntersectionObserver.d.ts +7 -1
  43. package/dist/hooks/useIntersectionObserver.js +10 -1
  44. package/dist/hooks/useIntersectionObserver.js.map +1 -1
  45. package/dist/hooks/useLink.js +1 -1
  46. package/dist/hooks/useLink.js.map +1 -1
  47. package/dist/ui-kit/BlockWrapper.js +1 -11
  48. package/dist/ui-kit/BlockWrapper.js.map +1 -1
  49. package/dist/ui-kit/Button/ArrowButton.d.ts +2 -0
  50. package/dist/ui-kit/Button/ArrowButton.js +3 -1
  51. package/dist/ui-kit/Button/ArrowButton.js.map +1 -1
  52. package/dist/ui-kit/Foldable/FoldableSection.js +1 -1
  53. package/dist/ui-kit/Foldable/FoldableSection.js.map +1 -1
  54. package/dist/ui-kit/SwipeListControl/SwipeListContainer.d.ts +19 -0
  55. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js +35 -0
  56. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -0
  57. package/dist/ui-kit/SwipeListControl/SwipeListControl.js +17 -38
  58. package/dist/ui-kit/SwipeListControl/SwipeListControl.js.map +1 -1
  59. package/dist/ui-kit/SwipeListControl/SwipeListControlDots.d.ts +7 -4
  60. package/dist/ui-kit/SwipeListControl/SwipeListControlDots.js +10 -27
  61. package/dist/ui-kit/SwipeListControl/SwipeListControlDots.js.map +1 -1
  62. package/dist/ui-kit/SwipeListControl/SwipeListControlProps.d.ts +3 -3
  63. package/dist/ui-kit/SwipeListControl/SwipeListItem.d.ts +14 -0
  64. package/dist/ui-kit/SwipeListControl/SwipeListItem.js +16 -0
  65. package/dist/ui-kit/SwipeListControl/SwipeListItem.js.map +1 -0
  66. package/dist/ui-kit/SwipeListControl/scrollBy.d.ts +1 -0
  67. package/dist/ui-kit/SwipeListControl/scrollBy.js +8 -0
  68. package/dist/ui-kit/SwipeListControl/scrollBy.js.map +1 -0
  69. package/dist/ui-kit/SwipeListControl/scrollToEnd.d.ts +1 -0
  70. package/dist/ui-kit/SwipeListControl/scrollToEnd.js +7 -0
  71. package/dist/ui-kit/SwipeListControl/scrollToEnd.js.map +1 -0
  72. package/dist/ui-kit/SwipeListControl/scrollToStart.d.ts +1 -0
  73. package/dist/ui-kit/SwipeListControl/scrollToStart.js +7 -0
  74. package/dist/ui-kit/SwipeListControl/scrollToStart.js.map +1 -0
  75. package/dist/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +17 -0
  76. package/dist/ui-kit/SwipeListControl/useSwipeListScroll.js +57 -0
  77. package/dist/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -0
  78. package/dist/utils/areArraysEqual.d.ts +1 -0
  79. package/dist/utils/areArraysEqual.js +5 -0
  80. package/dist/utils/areArraysEqual.js.map +1 -0
  81. package/dist/utils/mapChildren.d.ts +2 -0
  82. package/dist/utils/mapChildren.js +10 -0
  83. package/dist/utils/mapChildren.js.map +1 -0
  84. package/dist/utils/maxBy.d.ts +2 -2
  85. package/dist/utils/maxBy.js +4 -4
  86. package/dist/utils/maxBy.js.map +1 -1
  87. package/dist/utils/minBy.d.ts +1 -0
  88. package/dist/utils/minBy.js +6 -0
  89. package/dist/utils/minBy.js.map +1 -0
  90. package/lib/common.css +1 -1
  91. package/lib/components/Blocks.js +3 -1
  92. package/lib/components/Blocks.js.map +1 -1
  93. package/lib/components/Carousel/Carousel.fixture.d.ts +1 -0
  94. package/lib/components/Carousel/Carousel.js +14 -15
  95. package/lib/components/Carousel/Carousel.js.map +1 -1
  96. package/lib/components/CarouselProgramsCard/CarouselProgramsCard.d.ts +5 -0
  97. package/lib/components/CarouselProgramsCard/CarouselProgramsCard.fixture.d.ts +8 -0
  98. package/lib/components/CarouselProgramsCard/CarouselProgramsCard.js +10 -0
  99. package/lib/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -0
  100. package/lib/components/CarouselProgramsCard/CarouselProgramsCardContent.d.ts +12 -0
  101. package/lib/components/CarouselProgramsCard/CarouselProgramsCardContent.js +2 -0
  102. package/lib/components/CarouselProgramsCard/CarouselProgramsCardContent.js.map +1 -0
  103. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.fixture.d.ts +1 -1
  104. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +7 -13
  105. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  106. package/lib/components/ComparisonTable/ComparisonTable.mobile.js +1 -1
  107. package/lib/components/ComparisonTable/ComparisonTable.mobile.js.map +1 -1
  108. package/lib/components/Gallery/Gallery.mobile.js +1 -1
  109. package/lib/components/Header/HeaderSubMenu.js +1 -1
  110. package/lib/components/Header/HeaderSubMenu.js.map +1 -1
  111. package/lib/components/Header/HeaderSubMenuItem.d.ts +2 -1
  112. package/lib/components/Header/HeaderSubMenuItem.js +1 -1
  113. package/lib/components/Header/HeaderSubMenuItem.js.map +1 -1
  114. package/lib/components/RollupItem/RollupItem.js +10 -1
  115. package/lib/components/RollupItem/RollupItem.js.map +1 -1
  116. package/lib/hooks/useIntersectionObserver.d.ts +7 -1
  117. package/lib/hooks/useIntersectionObserver.js +11 -2
  118. package/lib/hooks/useIntersectionObserver.js.map +1 -1
  119. package/lib/hooks/useLink.js +2 -2
  120. package/lib/hooks/useLink.js.map +1 -1
  121. package/lib/ui-kit/BlockWrapper.js +1 -11
  122. package/lib/ui-kit/BlockWrapper.js.map +1 -1
  123. package/lib/ui-kit/Button/ArrowButton.d.ts +2 -0
  124. package/lib/ui-kit/Button/ArrowButton.js +2 -0
  125. package/lib/ui-kit/Button/ArrowButton.js.map +1 -1
  126. package/lib/ui-kit/Foldable/FoldableSection.js +1 -1
  127. package/lib/ui-kit/Foldable/FoldableSection.js.map +1 -1
  128. package/lib/ui-kit/SwipeListControl/SwipeListContainer.d.ts +19 -0
  129. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js +33 -0
  130. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -0
  131. package/lib/ui-kit/SwipeListControl/SwipeListControl.js +17 -38
  132. package/lib/ui-kit/SwipeListControl/SwipeListControl.js.map +1 -1
  133. package/lib/ui-kit/SwipeListControl/SwipeListControlDots.d.ts +7 -4
  134. package/lib/ui-kit/SwipeListControl/SwipeListControlDots.js +10 -27
  135. package/lib/ui-kit/SwipeListControl/SwipeListControlDots.js.map +1 -1
  136. package/lib/ui-kit/SwipeListControl/SwipeListControlProps.d.ts +3 -3
  137. package/lib/ui-kit/SwipeListControl/SwipeListItem.d.ts +14 -0
  138. package/lib/ui-kit/SwipeListControl/SwipeListItem.js +14 -0
  139. package/lib/ui-kit/SwipeListControl/SwipeListItem.js.map +1 -0
  140. package/lib/ui-kit/SwipeListControl/scrollBy.d.ts +1 -0
  141. package/lib/ui-kit/SwipeListControl/scrollBy.js +5 -0
  142. package/lib/ui-kit/SwipeListControl/scrollBy.js.map +1 -0
  143. package/lib/ui-kit/SwipeListControl/scrollToEnd.d.ts +1 -0
  144. package/lib/ui-kit/SwipeListControl/scrollToEnd.js +4 -0
  145. package/lib/ui-kit/SwipeListControl/scrollToEnd.js.map +1 -0
  146. package/lib/ui-kit/SwipeListControl/scrollToStart.d.ts +1 -0
  147. package/lib/ui-kit/SwipeListControl/scrollToStart.js +4 -0
  148. package/lib/ui-kit/SwipeListControl/scrollToStart.js.map +1 -0
  149. package/lib/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +17 -0
  150. package/lib/ui-kit/SwipeListControl/useSwipeListScroll.js +54 -0
  151. package/lib/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -0
  152. package/lib/utils/areArraysEqual.d.ts +1 -0
  153. package/lib/utils/areArraysEqual.js +2 -0
  154. package/lib/utils/areArraysEqual.js.map +1 -0
  155. package/lib/utils/mapChildren.d.ts +2 -0
  156. package/lib/utils/mapChildren.js +7 -0
  157. package/lib/utils/mapChildren.js.map +1 -0
  158. package/lib/utils/maxBy.d.ts +2 -2
  159. package/lib/utils/maxBy.js +2 -2
  160. package/lib/utils/maxBy.js.map +1 -1
  161. package/lib/utils/minBy.d.ts +1 -0
  162. package/lib/utils/minBy.js +3 -0
  163. package/lib/utils/minBy.js.map +1 -0
  164. package/mobile/bundle/bundle.umd.js +141 -140
  165. package/mobile/bundle/bundle.umd.min.js +1 -1
  166. package/mobile/bundle/components/CarouselProgramsCard/CarouselProgramsCard.d.ts +5 -0
  167. package/mobile/bundle/components/CarouselProgramsCard/CarouselProgramsCardContent.d.ts +12 -0
  168. package/mobile/bundle/components/Header/HeaderSubMenuItem.d.ts +2 -1
  169. package/mobile/bundle/hooks/useIntersectionObserver.d.ts +7 -1
  170. package/mobile/bundle/ui-kit/Button/ArrowButton.d.ts +2 -0
  171. package/mobile/bundle/ui-kit/SwipeListControl/SwipeListContainer.d.ts +19 -0
  172. package/mobile/bundle/ui-kit/SwipeListControl/SwipeListControlDots.d.ts +7 -4
  173. package/mobile/bundle/ui-kit/SwipeListControl/SwipeListControlProps.d.ts +3 -3
  174. package/mobile/bundle/ui-kit/SwipeListControl/SwipeListItem.d.ts +14 -0
  175. package/mobile/bundle/ui-kit/SwipeListControl/scrollBy.d.ts +1 -0
  176. package/mobile/bundle/ui-kit/SwipeListControl/scrollToEnd.d.ts +1 -0
  177. package/mobile/bundle/ui-kit/SwipeListControl/scrollToStart.d.ts +1 -0
  178. package/mobile/bundle/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +17 -0
  179. package/mobile/bundle/utils/areArraysEqual.d.ts +1 -0
  180. package/mobile/bundle/utils/mapChildren.d.ts +2 -0
  181. package/mobile/bundle/utils/maxBy.d.ts +2 -2
  182. package/mobile/bundle/utils/minBy.d.ts +1 -0
  183. package/mobile/dist/components/Carousel/Carousel.js +14 -15
  184. package/mobile/dist/components/Carousel/Carousel.js.map +1 -1
  185. package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCard.d.ts +5 -0
  186. package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCard.js +12 -0
  187. package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -0
  188. package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCardContent.d.ts +12 -0
  189. package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCardContent.js +2 -0
  190. package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCardContent.js.map +1 -0
  191. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +7 -13
  192. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  193. package/mobile/dist/components/ComparisonTable/ComparisonTable.js +1 -1
  194. package/mobile/dist/components/ComparisonTable/ComparisonTable.js.map +1 -1
  195. package/mobile/dist/components/Gallery/Gallery.js +1 -1
  196. package/mobile/dist/components/Header/HeaderSubMenu.js +1 -1
  197. package/mobile/dist/components/Header/HeaderSubMenu.js.map +1 -1
  198. package/mobile/dist/components/Header/HeaderSubMenuItem.d.ts +2 -1
  199. package/mobile/dist/components/Header/HeaderSubMenuItem.js.map +1 -1
  200. package/mobile/dist/components/RollupItem/RollupItem.js +10 -1
  201. package/mobile/dist/components/RollupItem/RollupItem.js.map +1 -1
  202. package/mobile/dist/hooks/useIntersectionObserver.d.ts +7 -1
  203. package/mobile/dist/hooks/useIntersectionObserver.js +10 -1
  204. package/mobile/dist/hooks/useIntersectionObserver.js.map +1 -1
  205. package/mobile/dist/hooks/useLink.js +1 -1
  206. package/mobile/dist/hooks/useLink.js.map +1 -1
  207. package/mobile/dist/ui-kit/BlockWrapper.js +1 -11
  208. package/mobile/dist/ui-kit/BlockWrapper.js.map +1 -1
  209. package/mobile/dist/ui-kit/Button/ArrowButton.d.ts +2 -0
  210. package/mobile/dist/ui-kit/Button/ArrowButton.js +3 -1
  211. package/mobile/dist/ui-kit/Button/ArrowButton.js.map +1 -1
  212. package/mobile/dist/ui-kit/Foldable/FoldableSection.js +1 -1
  213. package/mobile/dist/ui-kit/Foldable/FoldableSection.js.map +1 -1
  214. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.d.ts +19 -0
  215. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js +35 -0
  216. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -0
  217. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControl.js +17 -38
  218. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControl.js.map +1 -1
  219. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlDots.d.ts +7 -4
  220. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlDots.js +10 -27
  221. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlDots.js.map +1 -1
  222. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlProps.d.ts +3 -3
  223. package/mobile/dist/ui-kit/SwipeListControl/SwipeListItem.d.ts +14 -0
  224. package/mobile/dist/ui-kit/SwipeListControl/SwipeListItem.js +16 -0
  225. package/mobile/dist/ui-kit/SwipeListControl/SwipeListItem.js.map +1 -0
  226. package/mobile/dist/ui-kit/SwipeListControl/scrollBy.d.ts +1 -0
  227. package/mobile/dist/ui-kit/SwipeListControl/scrollBy.js +8 -0
  228. package/mobile/dist/ui-kit/SwipeListControl/scrollBy.js.map +1 -0
  229. package/mobile/dist/ui-kit/SwipeListControl/scrollToEnd.d.ts +1 -0
  230. package/mobile/dist/ui-kit/SwipeListControl/scrollToEnd.js +7 -0
  231. package/mobile/dist/ui-kit/SwipeListControl/scrollToEnd.js.map +1 -0
  232. package/mobile/dist/ui-kit/SwipeListControl/scrollToStart.d.ts +1 -0
  233. package/mobile/dist/ui-kit/SwipeListControl/scrollToStart.js +7 -0
  234. package/mobile/dist/ui-kit/SwipeListControl/scrollToStart.js.map +1 -0
  235. package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +17 -0
  236. package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.js +57 -0
  237. package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -0
  238. package/mobile/dist/utils/areArraysEqual.d.ts +1 -0
  239. package/mobile/dist/utils/areArraysEqual.js +5 -0
  240. package/mobile/dist/utils/areArraysEqual.js.map +1 -0
  241. package/mobile/dist/utils/mapChildren.d.ts +2 -0
  242. package/mobile/dist/utils/mapChildren.js +10 -0
  243. package/mobile/dist/utils/mapChildren.js.map +1 -0
  244. package/mobile/dist/utils/maxBy.d.ts +2 -2
  245. package/mobile/dist/utils/maxBy.js +4 -4
  246. package/mobile/dist/utils/maxBy.js.map +1 -1
  247. package/mobile/dist/utils/minBy.d.ts +1 -0
  248. package/mobile/dist/utils/minBy.js +6 -0
  249. package/mobile/dist/utils/minBy.js.map +1 -0
  250. package/mobile/lib/components/Carousel/Carousel.js +14 -15
  251. package/mobile/lib/components/Carousel/Carousel.js.map +1 -1
  252. package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCard.d.ts +5 -0
  253. package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCard.js +10 -0
  254. package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -0
  255. package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCardContent.d.ts +12 -0
  256. package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCardContent.js +2 -0
  257. package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCardContent.js.map +1 -0
  258. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +7 -13
  259. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  260. package/mobile/lib/components/ComparisonTable/ComparisonTable.js +1 -1
  261. package/mobile/lib/components/ComparisonTable/ComparisonTable.js.map +1 -1
  262. package/mobile/lib/components/Gallery/Gallery.js +1 -1
  263. package/mobile/lib/components/Header/HeaderSubMenu.js +1 -1
  264. package/mobile/lib/components/Header/HeaderSubMenu.js.map +1 -1
  265. package/mobile/lib/components/Header/HeaderSubMenuItem.d.ts +2 -1
  266. package/mobile/lib/components/Header/HeaderSubMenuItem.js +1 -1
  267. package/mobile/lib/components/Header/HeaderSubMenuItem.js.map +1 -1
  268. package/mobile/lib/components/RollupItem/RollupItem.js +10 -1
  269. package/mobile/lib/components/RollupItem/RollupItem.js.map +1 -1
  270. package/mobile/lib/hooks/useIntersectionObserver.d.ts +7 -1
  271. package/mobile/lib/hooks/useIntersectionObserver.js +11 -2
  272. package/mobile/lib/hooks/useIntersectionObserver.js.map +1 -1
  273. package/mobile/lib/hooks/useLink.js +2 -2
  274. package/mobile/lib/hooks/useLink.js.map +1 -1
  275. package/mobile/lib/ui-kit/BlockWrapper.js +1 -11
  276. package/mobile/lib/ui-kit/BlockWrapper.js.map +1 -1
  277. package/mobile/lib/ui-kit/Button/ArrowButton.d.ts +2 -0
  278. package/mobile/lib/ui-kit/Button/ArrowButton.js +2 -0
  279. package/mobile/lib/ui-kit/Button/ArrowButton.js.map +1 -1
  280. package/mobile/lib/ui-kit/Foldable/FoldableSection.js +1 -1
  281. package/mobile/lib/ui-kit/Foldable/FoldableSection.js.map +1 -1
  282. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.d.ts +19 -0
  283. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js +33 -0
  284. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -0
  285. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControl.js +17 -38
  286. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControl.js.map +1 -1
  287. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlDots.d.ts +7 -4
  288. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlDots.js +10 -27
  289. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlDots.js.map +1 -1
  290. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlProps.d.ts +3 -3
  291. package/mobile/lib/ui-kit/SwipeListControl/SwipeListItem.d.ts +14 -0
  292. package/mobile/lib/ui-kit/SwipeListControl/SwipeListItem.js +14 -0
  293. package/mobile/lib/ui-kit/SwipeListControl/SwipeListItem.js.map +1 -0
  294. package/mobile/lib/ui-kit/SwipeListControl/scrollBy.d.ts +1 -0
  295. package/mobile/lib/ui-kit/SwipeListControl/scrollBy.js +5 -0
  296. package/mobile/lib/ui-kit/SwipeListControl/scrollBy.js.map +1 -0
  297. package/mobile/lib/ui-kit/SwipeListControl/scrollToEnd.d.ts +1 -0
  298. package/mobile/lib/ui-kit/SwipeListControl/scrollToEnd.js +4 -0
  299. package/mobile/lib/ui-kit/SwipeListControl/scrollToEnd.js.map +1 -0
  300. package/mobile/lib/ui-kit/SwipeListControl/scrollToStart.d.ts +1 -0
  301. package/mobile/lib/ui-kit/SwipeListControl/scrollToStart.js +4 -0
  302. package/mobile/lib/ui-kit/SwipeListControl/scrollToStart.js.map +1 -0
  303. package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +17 -0
  304. package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.js +54 -0
  305. package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -0
  306. package/mobile/lib/utils/areArraysEqual.d.ts +1 -0
  307. package/mobile/lib/utils/areArraysEqual.js +2 -0
  308. package/mobile/lib/utils/areArraysEqual.js.map +1 -0
  309. package/mobile/lib/utils/mapChildren.d.ts +2 -0
  310. package/mobile/lib/utils/mapChildren.js +7 -0
  311. package/mobile/lib/utils/mapChildren.js.map +1 -0
  312. package/mobile/lib/utils/maxBy.d.ts +2 -2
  313. package/mobile/lib/utils/maxBy.js +2 -2
  314. package/mobile/lib/utils/maxBy.js.map +1 -1
  315. package/mobile/lib/utils/minBy.d.ts +1 -0
  316. package/mobile/lib/utils/minBy.js +3 -0
  317. package/mobile/lib/utils/minBy.js.map +1 -0
  318. package/mobile/src/common.css +0 -7
  319. package/mobile/src/components/Carousel/Carousel.tsx +41 -23
  320. package/mobile/src/components/CarouselProgramsCard/CarouselProgramsCard.example.json +25 -0
  321. package/mobile/src/components/CarouselProgramsCard/CarouselProgramsCard.tsx +36 -0
  322. package/mobile/src/components/CarouselProgramsCard/CarouselProgramsCard.ui.json +1 -0
  323. package/mobile/src/components/CarouselProgramsCard/CarouselProgramsCardContent.ts +13 -0
  324. package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +44 -43
  325. package/mobile/src/components/ComparisonTable/ComparisonTable.tsx +1 -1
  326. package/mobile/src/components/Gallery/Gallery.tsx +1 -1
  327. package/mobile/src/components/Header/HeaderSubMenu.tsx +2 -4
  328. package/mobile/src/components/Header/HeaderSubMenuItem.tsx +5 -2
  329. package/mobile/src/components/RollupItem/RollupItem.tsx +10 -1
  330. package/mobile/src/hooks/useIntersectionObserver.ts +23 -2
  331. package/mobile/src/hooks/useLink.ts +2 -2
  332. package/mobile/src/ui-kit/BlockWrapper.tsx +1 -16
  333. package/mobile/src/ui-kit/Button/ArrowButton.tsx +13 -0
  334. package/mobile/src/ui-kit/Foldable/FoldableSection.tsx +3 -1
  335. package/mobile/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +97 -0
  336. package/mobile/src/ui-kit/SwipeListControl/SwipeListControl.tsx +31 -55
  337. package/mobile/src/ui-kit/SwipeListControl/SwipeListControlDots.tsx +25 -59
  338. package/mobile/src/ui-kit/SwipeListControl/SwipeListControlProps.ts +3 -3
  339. package/mobile/src/ui-kit/SwipeListControl/SwipeListItem.tsx +44 -0
  340. package/mobile/src/ui-kit/SwipeListControl/scrollBy.ts +10 -0
  341. package/mobile/src/ui-kit/SwipeListControl/scrollToEnd.ts +3 -0
  342. package/mobile/src/ui-kit/SwipeListControl/scrollToStart.ts +3 -0
  343. package/mobile/src/ui-kit/SwipeListControl/useSwipeListScroll.ts +84 -0
  344. package/mobile/src/utils/areArraysEqual.ts +2 -0
  345. package/mobile/src/utils/mapChildren.ts +11 -0
  346. package/mobile/src/utils/maxBy.ts +3 -4
  347. package/mobile/src/utils/minBy.ts +5 -0
  348. package/package.json +2 -2
  349. package/src/common.css +0 -7
  350. package/src/components/Blocks.ts +3 -1
  351. package/src/components/Carousel/Carousel.fixture.tsx +20 -0
  352. package/src/components/Carousel/Carousel.tsx +41 -23
  353. package/src/components/CarouselProgramsCard/CarouselProgramsCard.example.json +25 -0
  354. package/src/components/CarouselProgramsCard/CarouselProgramsCard.fixture.tsx +38 -0
  355. package/src/components/CarouselProgramsCard/CarouselProgramsCard.tsx +36 -0
  356. package/src/components/CarouselProgramsCard/CarouselProgramsCard.ui.json +1 -0
  357. package/src/components/CarouselProgramsCard/CarouselProgramsCardContent.ts +13 -0
  358. package/src/components/CarouselTariffsCard/CarouselTariffsCard.fixture.tsx +2 -2
  359. package/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +44 -43
  360. package/src/components/ComparisonTable/ComparisonTable.mobile.tsx +1 -1
  361. package/src/components/Gallery/Gallery.mobile.tsx +1 -1
  362. package/src/components/Header/HeaderSubMenu.tsx +2 -4
  363. package/src/components/Header/HeaderSubMenuItem.tsx +5 -2
  364. package/src/components/RollupItem/RollupItem.tsx +10 -1
  365. package/src/hooks/useIntersectionObserver.ts +23 -2
  366. package/src/hooks/useLink.ts +2 -2
  367. package/src/ui-kit/BlockWrapper.tsx +1 -16
  368. package/src/ui-kit/Button/ArrowButton.tsx +13 -0
  369. package/src/ui-kit/Foldable/FoldableSection.tsx +3 -1
  370. package/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +97 -0
  371. package/src/ui-kit/SwipeListControl/SwipeListControl.tsx +31 -55
  372. package/src/ui-kit/SwipeListControl/SwipeListControlDots.tsx +25 -59
  373. package/src/ui-kit/SwipeListControl/SwipeListControlProps.ts +3 -3
  374. package/src/ui-kit/SwipeListControl/SwipeListItem.tsx +44 -0
  375. package/src/ui-kit/SwipeListControl/scrollBy.ts +10 -0
  376. package/src/ui-kit/SwipeListControl/scrollToEnd.ts +3 -0
  377. package/src/ui-kit/SwipeListControl/scrollToStart.ts +3 -0
  378. package/src/ui-kit/SwipeListControl/useSwipeListScroll.ts +84 -0
  379. package/src/utils/areArraysEqual.ts +2 -0
  380. package/src/utils/mapChildren.ts +11 -0
  381. package/src/utils/maxBy.ts +3 -4
  382. package/src/utils/minBy.ts +5 -0
  383. package/bundle/components/Carousel/CarouselContainer.d.ts +0 -10
  384. package/bundle/ui-kit/SwipeListControl/SwipeListControlItem.d.ts +0 -9
  385. package/bundle/ui-kit/SwipeListControl/SwipeListControlList.d.ts +0 -11
  386. package/bundle/ui-kit/SwipeListControl/constants.d.ts +0 -2
  387. package/bundle/ui-kit/SwipeListControl/utils/getContainerStyle.d.ts +0 -1
  388. package/bundle/ui-kit/SwipeListControl/utils/getIndexParts.d.ts +0 -4
  389. package/bundle/ui-kit/SwipeListControl/utils/getScrollPoints.d.ts +0 -8
  390. package/dist/components/Carousel/CarouselContainer.d.ts +0 -10
  391. package/dist/components/Carousel/CarouselContainer.js +0 -14
  392. package/dist/components/Carousel/CarouselContainer.js.map +0 -1
  393. package/dist/ui-kit/SwipeListControl/SwipeListControlItem.d.ts +0 -9
  394. package/dist/ui-kit/SwipeListControl/SwipeListControlItem.js +0 -8
  395. package/dist/ui-kit/SwipeListControl/SwipeListControlItem.js.map +0 -1
  396. package/dist/ui-kit/SwipeListControl/SwipeListControlList.d.ts +0 -11
  397. package/dist/ui-kit/SwipeListControl/SwipeListControlList.js +0 -11
  398. package/dist/ui-kit/SwipeListControl/SwipeListControlList.js.map +0 -1
  399. package/dist/ui-kit/SwipeListControl/constants.d.ts +0 -2
  400. package/dist/ui-kit/SwipeListControl/constants.js +0 -12
  401. package/dist/ui-kit/SwipeListControl/constants.js.map +0 -1
  402. package/dist/ui-kit/SwipeListControl/utils/getContainerStyle.d.ts +0 -1
  403. package/dist/ui-kit/SwipeListControl/utils/getContainerStyle.js +0 -13
  404. package/dist/ui-kit/SwipeListControl/utils/getContainerStyle.js.map +0 -1
  405. package/dist/ui-kit/SwipeListControl/utils/getIndexParts.d.ts +0 -4
  406. package/dist/ui-kit/SwipeListControl/utils/getIndexParts.js +0 -19
  407. package/dist/ui-kit/SwipeListControl/utils/getIndexParts.js.map +0 -1
  408. package/dist/ui-kit/SwipeListControl/utils/getScrollPoints.d.ts +0 -8
  409. package/dist/ui-kit/SwipeListControl/utils/getScrollPoints.js +0 -33
  410. package/dist/ui-kit/SwipeListControl/utils/getScrollPoints.js.map +0 -1
  411. package/lib/components/Carousel/CarouselContainer.d.ts +0 -10
  412. package/lib/components/Carousel/CarouselContainer.js +0 -12
  413. package/lib/components/Carousel/CarouselContainer.js.map +0 -1
  414. package/lib/ui-kit/SwipeListControl/SwipeListControlItem.d.ts +0 -9
  415. package/lib/ui-kit/SwipeListControl/SwipeListControlItem.js +0 -6
  416. package/lib/ui-kit/SwipeListControl/SwipeListControlItem.js.map +0 -1
  417. package/lib/ui-kit/SwipeListControl/SwipeListControlList.d.ts +0 -11
  418. package/lib/ui-kit/SwipeListControl/SwipeListControlList.js +0 -9
  419. package/lib/ui-kit/SwipeListControl/SwipeListControlList.js.map +0 -1
  420. package/lib/ui-kit/SwipeListControl/constants.d.ts +0 -2
  421. package/lib/ui-kit/SwipeListControl/constants.js +0 -10
  422. package/lib/ui-kit/SwipeListControl/constants.js.map +0 -1
  423. package/lib/ui-kit/SwipeListControl/utils/getContainerStyle.d.ts +0 -1
  424. package/lib/ui-kit/SwipeListControl/utils/getContainerStyle.js +0 -10
  425. package/lib/ui-kit/SwipeListControl/utils/getContainerStyle.js.map +0 -1
  426. package/lib/ui-kit/SwipeListControl/utils/getIndexParts.d.ts +0 -7
  427. package/lib/ui-kit/SwipeListControl/utils/getIndexParts.js +0 -16
  428. package/lib/ui-kit/SwipeListControl/utils/getIndexParts.js.map +0 -1
  429. package/lib/ui-kit/SwipeListControl/utils/getScrollPoints.d.ts +0 -11
  430. package/lib/ui-kit/SwipeListControl/utils/getScrollPoints.js +0 -30
  431. package/lib/ui-kit/SwipeListControl/utils/getScrollPoints.js.map +0 -1
  432. package/mobile/bundle/components/Carousel/CarouselContainer.d.ts +0 -10
  433. package/mobile/bundle/ui-kit/SwipeListControl/SwipeListControlItem.d.ts +0 -9
  434. package/mobile/bundle/ui-kit/SwipeListControl/SwipeListControlList.d.ts +0 -11
  435. package/mobile/bundle/ui-kit/SwipeListControl/constants.d.ts +0 -2
  436. package/mobile/bundle/ui-kit/SwipeListControl/utils/getContainerStyle.d.ts +0 -1
  437. package/mobile/bundle/ui-kit/SwipeListControl/utils/getIndexParts.d.ts +0 -4
  438. package/mobile/bundle/ui-kit/SwipeListControl/utils/getScrollPoints.d.ts +0 -8
  439. package/mobile/dist/components/Carousel/CarouselContainer.d.ts +0 -10
  440. package/mobile/dist/components/Carousel/CarouselContainer.js +0 -14
  441. package/mobile/dist/components/Carousel/CarouselContainer.js.map +0 -1
  442. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlItem.d.ts +0 -9
  443. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlItem.js +0 -8
  444. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlItem.js.map +0 -1
  445. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlList.d.ts +0 -11
  446. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlList.js +0 -11
  447. package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlList.js.map +0 -1
  448. package/mobile/dist/ui-kit/SwipeListControl/constants.d.ts +0 -2
  449. package/mobile/dist/ui-kit/SwipeListControl/constants.js +0 -12
  450. package/mobile/dist/ui-kit/SwipeListControl/constants.js.map +0 -1
  451. package/mobile/dist/ui-kit/SwipeListControl/utils/getContainerStyle.d.ts +0 -1
  452. package/mobile/dist/ui-kit/SwipeListControl/utils/getContainerStyle.js +0 -13
  453. package/mobile/dist/ui-kit/SwipeListControl/utils/getContainerStyle.js.map +0 -1
  454. package/mobile/dist/ui-kit/SwipeListControl/utils/getIndexParts.d.ts +0 -4
  455. package/mobile/dist/ui-kit/SwipeListControl/utils/getIndexParts.js +0 -19
  456. package/mobile/dist/ui-kit/SwipeListControl/utils/getIndexParts.js.map +0 -1
  457. package/mobile/dist/ui-kit/SwipeListControl/utils/getScrollPoints.d.ts +0 -8
  458. package/mobile/dist/ui-kit/SwipeListControl/utils/getScrollPoints.js +0 -33
  459. package/mobile/dist/ui-kit/SwipeListControl/utils/getScrollPoints.js.map +0 -1
  460. package/mobile/lib/components/Carousel/CarouselContainer.d.ts +0 -10
  461. package/mobile/lib/components/Carousel/CarouselContainer.js +0 -12
  462. package/mobile/lib/components/Carousel/CarouselContainer.js.map +0 -1
  463. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlItem.d.ts +0 -9
  464. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlItem.js +0 -6
  465. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlItem.js.map +0 -1
  466. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlList.d.ts +0 -11
  467. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlList.js +0 -9
  468. package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlList.js.map +0 -1
  469. package/mobile/lib/ui-kit/SwipeListControl/constants.d.ts +0 -2
  470. package/mobile/lib/ui-kit/SwipeListControl/constants.js +0 -10
  471. package/mobile/lib/ui-kit/SwipeListControl/constants.js.map +0 -1
  472. package/mobile/lib/ui-kit/SwipeListControl/utils/getContainerStyle.d.ts +0 -1
  473. package/mobile/lib/ui-kit/SwipeListControl/utils/getContainerStyle.js +0 -10
  474. package/mobile/lib/ui-kit/SwipeListControl/utils/getContainerStyle.js.map +0 -1
  475. package/mobile/lib/ui-kit/SwipeListControl/utils/getIndexParts.d.ts +0 -4
  476. package/mobile/lib/ui-kit/SwipeListControl/utils/getIndexParts.js +0 -16
  477. package/mobile/lib/ui-kit/SwipeListControl/utils/getIndexParts.js.map +0 -1
  478. package/mobile/lib/ui-kit/SwipeListControl/utils/getScrollPoints.d.ts +0 -8
  479. package/mobile/lib/ui-kit/SwipeListControl/utils/getScrollPoints.js +0 -30
  480. package/mobile/lib/ui-kit/SwipeListControl/utils/getScrollPoints.js.map +0 -1
  481. package/mobile/src/components/Carousel/CarouselContainer.tsx +0 -34
  482. package/mobile/src/ui-kit/SwipeListControl/SwipeListControlItem.tsx +0 -24
  483. package/mobile/src/ui-kit/SwipeListControl/SwipeListControlList.tsx +0 -50
  484. package/mobile/src/ui-kit/SwipeListControl/constants.ts +0 -10
  485. package/mobile/src/ui-kit/SwipeListControl/utils/getContainerStyle.ts +0 -9
  486. package/mobile/src/ui-kit/SwipeListControl/utils/getIndexParts.ts +0 -25
  487. package/mobile/src/ui-kit/SwipeListControl/utils/getScrollPoints.ts +0 -49
  488. package/src/components/Carousel/CarouselContainer.tsx +0 -34
  489. package/src/ui-kit/SwipeListControl/SwipeListControlItem.tsx +0 -24
  490. package/src/ui-kit/SwipeListControl/SwipeListControlList.tsx +0 -50
  491. package/src/ui-kit/SwipeListControl/constants.ts +0 -10
  492. package/src/ui-kit/SwipeListControl/utils/getContainerStyle.ts +0 -9
  493. package/src/ui-kit/SwipeListControl/utils/getIndexParts.ts +0 -25
  494. package/src/ui-kit/SwipeListControl/utils/getScrollPoints.ts +0 -49
@@ -0,0 +1,25 @@
1
+ {
2
+ "icon": {
3
+ "icon": "SignDocsIcon",
4
+ "format": "webp",
5
+ "size": {
6
+ "width": 200,
7
+ "height": 242
8
+ }
9
+ },
10
+ "title": "Заголовок",
11
+ "list": [
12
+ {
13
+ "title": "Ячейка 1-1",
14
+ "description": "Описание 1-1"
15
+ },
16
+ {
17
+ "title": "Ячейка 1-2",
18
+ "description": "Описание 1-2"
19
+ },
20
+ {
21
+ "title": "Ячейка 1-3",
22
+ "description": "Описание 1-3"
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,36 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { VersionStyleMap } from '../../model/BlockVersion';
3
+ import type { HeadlineCommonProps } from '../../model/HeadlineType';
4
+ import type { UniBlockProps } from '../../model/JSXBlock';
5
+ import { BlockWrapper } from '../../ui-kit/BlockWrapper';
6
+ import { Heading } from '../../ui-kit/Heading/Heading';
7
+ import { Img } from '../../ui-kit/Img/Img';
8
+ import { getIconWithVersion } from '../../utils/getIconWithVersion';
9
+ import type { CarouselProgramsCardContent } from './CarouselProgramsCardContent';
10
+
11
+ export interface CarouselTariffsCardProps extends CarouselProgramsCardContent, UniBlockProps {}
12
+
13
+ export const CarouselProgramsCard = JSX<CarouselTariffsCardProps>(
14
+ ({ className = '', title, icon, list = [], version = 'primary', ...rest }) => (
15
+ <BlockWrapper
16
+ className={`font-sans border border-main-stroke flex min-w-[536px] ${VersionStyleMap[version]} ${className}`}
17
+ {...rest}
18
+ >
19
+ <div className="w-[200px] min-w-[200px] self-end">
20
+ {icon?.icon ? <Img image={getIconWithVersion(icon)} asSVG /> : null}
21
+ {icon?.src ? <Img image={icon} /> : null}
22
+ </div>
23
+ <div className="p-8 pl-3 w-full">
24
+ {title ? <Heading className=" mb-3.5" headingType="h5" title={title} /> : null}
25
+ {list.length ? <div className="flex flex-col gap-3">{list?.map(renderList)}</div> : null}
26
+ </div>
27
+ </BlockWrapper>
28
+ ),
29
+ );
30
+
31
+ const renderList = (_: HeadlineCommonProps, i: number) => (
32
+ <div key={String(i)} className="break-words">
33
+ {_.title ? <div className={`text-h6`}>{_.title}</div> : null}
34
+ {_.description ? <span className="text-l-light mt-1">{_.description}</span> : null}
35
+ </div>
36
+ );
@@ -0,0 +1,13 @@
1
+ import type { HeadlineCommonProps, TitleProps } from '../../model/HeadlineType';
2
+ import type { Picture } from '../../model/Picture';
3
+ import type { BlockVersion } from '../../model/BlockVersion';
4
+
5
+ /**
6
+ * @title Карточка программ карусели
7
+ */
8
+ export type CarouselProgramsCardContent = TitleProps & {
9
+ icon?: Picture;
10
+ /** @title Список */
11
+ list?: HeadlineCommonProps[];
12
+ version?: BlockVersion;
13
+ };
@@ -14,45 +14,50 @@ import type { CarouselTariffsCardContent } from './CarouselTariffsCardContent';
14
14
 
15
15
  export interface CarouselTariffsCardProps extends CarouselTariffsCardContent, UniBlockProps {}
16
16
 
17
+ const VISIBLE_ROWS_COUNT = 1;
18
+
17
19
  export const CarouselTariffsCard = JSX<CarouselTariffsCardProps>(
18
20
  ({ className = '', title, icon, isHighlighting, button, rows = [], ...rest }) => {
19
- const hitStyle = getHitStyle(Boolean(isHighlighting));
20
21
  const rowsNode = rows.map(renderCardInfo);
21
- const VISIBLE_ROWS_COUNT = 1;
22
- const [visibleRows, hiddenRows] = [
23
- rowsNode.slice(0, VISIBLE_ROWS_COUNT),
24
- rowsNode.slice(VISIBLE_ROWS_COUNT),
25
- ];
22
+ const visibleRows = rowsNode.slice(0, VISIBLE_ROWS_COUNT);
23
+ const hiddenRows = rowsNode.slice(VISIBLE_ROWS_COUNT);
26
24
 
27
25
  return (
28
- <BlockWrapper
29
- className={`font-sans bg-white p-8 border border-main-stroke relative w-[322px] min-w-[322px] -ml-[1px] ${hitStyle} ${className}`}
30
- {...rest}
31
- >
32
- {isHighlighting ? renderHitIcon() : null}
33
- {icon?.src ? <Img className="flex justify-center" image={icon} /> : null}
34
- {title ? (
35
- <Heading className="text-primary-text text-center pt-2" headingType="h5" title={title} />
36
- ) : null}
37
- {button ? <Button className="w-full mt-4" {...button} /> : null}
38
- {rows?.length ? (
39
- <Foldable
40
- renderFoldableSection={({ isUnfolded }) => (
41
- <div>
42
- {visibleRows}
43
- <FoldableSection isUnfolded={isUnfolded}>{hiddenRows}</FoldableSection>
44
- </div>
45
- )}
46
- renderFoldButton={rows.length > 1 ? renderFoldButton : null}
47
- />
48
- ) : null}
26
+ <BlockWrapper className={`font-sans ${className}`} {...rest}>
27
+ <div
28
+ className={`relative bg-white border border-main-stroke min-w-[322px] p-8 ${getHitStyle(
29
+ isHighlighting,
30
+ )}`}
31
+ >
32
+ {isHighlighting ? renderHitIcon() : null}
33
+ {icon?.src ? <Img image={icon} /> : null}
34
+ {title ? (
35
+ <Heading
36
+ className="text-primary-text text-center pt-2"
37
+ headingType="h5"
38
+ title={title}
39
+ />
40
+ ) : null}
41
+ {button ? <Button className="w-full mt-4" {...button} /> : null}
42
+ {rows?.length ? (
43
+ <Foldable
44
+ renderFoldableSection={({ isUnfolded }) => (
45
+ <div>
46
+ {visibleRows}
47
+ <FoldableSection isUnfolded={isUnfolded}>{hiddenRows}</FoldableSection>
48
+ </div>
49
+ )}
50
+ renderFoldButton={rows.length > 1 ? renderFoldButton : null}
51
+ />
52
+ ) : null}
53
+ </div>
49
54
  </BlockWrapper>
50
55
  );
51
56
  },
52
57
  );
53
58
 
54
- const getHitStyle = (isHighlighting: boolean): string =>
55
- isHighlighting ? 'mt-9 pt-[71px]' : 'mt-[70px] pt-9';
59
+ const getHitStyle = (isHighlighting?: boolean): string =>
60
+ isHighlighting ? 'mt-9 pt-[70px]' : 'mt-[70px] pt-9';
56
61
 
57
62
  const renderFoldButton = ({ isUnfolded, onToggle }: FoldablePartProps): VNode => (
58
63
  <button
@@ -71,23 +76,19 @@ const renderFoldButton = ({ isUnfolded, onToggle }: FoldablePartProps): VNode =>
71
76
  );
72
77
 
73
78
  const renderCardInfo = (cell: HeadlineCommonProps, i: number): VNode => (
74
- <div key={String(i)} className="py-5 border-b border-main-divider flex flex-col gap-1">
79
+ <div key={String(i)} className="py-5 border-b border-main-divider">
75
80
  {cell?.title ? (
76
81
  <div className="text-secondary-text text-m-light opacity-80">{cell.title}</div>
77
82
  ) : null}
78
- {cell?.description ? <div className="text-primary-text text-h6">{cell.description}</div> : null}
83
+ {cell?.description ? (
84
+ <div className="text-primary-text text-h6 mt-1">{cell.description}</div>
85
+ ) : null}
79
86
  </div>
80
87
  );
81
88
 
82
- const renderHitIcon = (): VNode => {
83
- const POSITION_STYLE = 'absolute -top-7 -right-4';
84
-
85
- return (
86
- <div
87
- className={`h-[60px] w-[60px] bg-white flex flex-col items-center justify-center shadow-[0_4px_25px_rgba(0,0,0,0.07)] ${POSITION_STYLE}`}
88
- >
89
- <Icon iconVersion="black" name="HeartIcon" width="23" height="22" asSVG />
90
- <div className="text-center">Хит</div>
91
- </div>
92
- );
93
- };
89
+ const renderHitIcon = (): VNode => (
90
+ <div className="absolute -top-7 -right-4 h-[60px] w-[60px] bg-white flex flex-col items-center justify-center shadow-[0_4px_25px_rgba(0,0,0,0.07)]">
91
+ <Icon iconVersion="black" name="HeartIcon" width="23" height="22" asSVG />
92
+ <div className="text-center">Хит</div>
93
+ </div>
94
+ );
@@ -62,7 +62,7 @@ const TableInner = JSX<ComparisonTableProps>(
62
62
  ));
63
63
 
64
64
  return orientation === 'horizontal' ? (
65
- <SwipeListControl onSlideChange={handleSlideChange}>{tableColumns}</SwipeListControl>
65
+ <SwipeListControl onVisibleIndicesChange={handleSlideChange}>{tableColumns}</SwipeListControl>
66
66
  ) : (
67
67
  tableColumns
68
68
  );
@@ -45,7 +45,7 @@ function renderCardsLayout(orientation: ListOrientation, cards: GalleryCardProps
45
45
  function renderCard(card: GalleryCardProps, key: number) {
46
46
  return (
47
47
  <div
48
- className={`h-full justify-between box-border horizontal-list-item border-solid border rounded-md border-main-stroke p-4 flex flex-col
48
+ className={`w-full h-full flex flex-col justify-between shrink-0 box-border snap-start snap-always border-solid border rounded-md border-main-stroke p-4
49
49
  ${VersionStyleMap[card.version ?? 'primary']}`}
50
50
  key={key}
51
51
  >
@@ -1,5 +1,6 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useMemo, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
3
+ import type { IntersectionObserverOptions } from '../../hooks/useIntersectionObserver';
3
4
  import { useRouter } from '../../hooks/useRouter';
4
5
  import type { BgColorVersion } from '../../model/BgColorVersion';
5
6
  import type { LinkProps } from '../../model/LinkProps';
@@ -21,10 +22,7 @@ export const HeaderSubMenu = JSX<HeaderSubMenuProps>(({ subItems = [], bgColor }
21
22
  const dropDownMenuItems = subItems.slice(visibleItemsCount);
22
23
 
23
24
  const subItemsListRef = useRef<HTMLDivElement | null>(null);
24
- const observerOptions = useMemo(
25
- () => ({ threshold: 1, root: subItemsListRef.current }),
26
- [subItemsListRef.current],
27
- );
25
+ const observerOptions: IntersectionObserverOptions = { rootRef: subItemsListRef };
28
26
  const subItemsVisibilityHandlers = useMemo(
29
27
  () =>
30
28
  subItems.map((_, index) => (isIntersecting: boolean) => {
@@ -1,6 +1,9 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
- import { useIntersectionObserver } from '../../hooks/useIntersectionObserver';
3
+ import {
4
+ useIntersectionObserver,
5
+ type IntersectionObserverOptions,
6
+ } from '../../hooks/useIntersectionObserver';
4
7
  import type { BgColorVersion } from '../../model/BgColorVersion';
5
8
  import type { LinkProps } from '../../model/LinkProps';
6
9
  import { HeaderItem } from '../../ui-kit/HeaderItem/HeaderItem';
@@ -9,7 +12,7 @@ export interface HeaderSubMenuItemProps extends LinkProps {
9
12
  className?: string;
10
13
  active?: boolean;
11
14
  bgColor?: BgColorVersion;
12
- observerOptions?: IntersectionObserverInit;
15
+ observerOptions?: IntersectionObserverOptions;
13
16
  onVisibilityChange?: (isIntersecting: boolean) => void;
14
17
  }
15
18
 
@@ -55,7 +55,16 @@ export const RollupItem: JSXBlock<RollupItemProps> = JSX<RollupItemProps>(
55
55
  ),
56
56
  );
57
57
 
58
- RollupItem.childrenTypes = [];
58
+ RollupItem.childrenTypes = {
59
+ exclude: [
60
+ 'RollupItem',
61
+ 'Accordion',
62
+ 'AccordionItem',
63
+ 'OtherProducts',
64
+ 'OtherProductsItem',
65
+ 'VerticalLayout',
66
+ ],
67
+ };
59
68
 
60
69
  const renderFoldButton = ({ isUnfolded, onToggle, label, version }: RollupFoldablePartProps) => {
61
70
  const iconsPrimary: IconName[] = ['PlusIcon', 'MinusIcon'];
@@ -1,11 +1,23 @@
1
- import { useEffect, useRef } from '@redneckz/uni-jsx/lib/hooks';
1
+ import { useEffect, useMemo, useRef } from '@redneckz/uni-jsx/lib/hooks';
2
+
3
+ export interface IntersectionObserverOptions<E extends Element = Element> {
4
+ sensitivity?: number; // from 0 to 1
5
+ rootRef?: { current: E | null };
6
+ }
7
+
8
+ const SENSITIVITY_SCALE = 10;
2
9
 
3
10
  export function useIntersectionObserver<R extends Element>(
4
11
  observerCallback: IntersectionObserverCallback,
5
- observerOptions?: IntersectionObserverInit,
12
+ { sensitivity, rootRef }: IntersectionObserverOptions = {},
6
13
  ) {
7
14
  const ref = useRef<R | null>(null);
8
15
 
16
+ const observerOptions = useMemo(
17
+ () => ({ threshold: sensitivityToThreshold(sensitivity), root: rootRef?.current }),
18
+ [sensitivity, rootRef?.current],
19
+ );
20
+
9
21
  useEffect(() => {
10
22
  if (!ref.current) {
11
23
  return undefined;
@@ -21,3 +33,12 @@ export function useIntersectionObserver<R extends Element>(
21
33
 
22
34
  return ref;
23
35
  }
36
+
37
+ function sensitivityToThreshold(sensitivity = 0): number[] {
38
+ const thresholdsCount = Math.round(sensitivity * SENSITIVITY_SCALE);
39
+
40
+ return new Array(thresholdsCount)
41
+ .fill(0)
42
+ .map((_, thi) => Math.min(thi / thresholdsCount), 1)
43
+ .concat(1);
44
+ }
@@ -1,6 +1,6 @@
1
1
  import type { LinkProps } from '../model/LinkProps';
2
2
  import { adjustHref } from '../utils/adjustHref';
3
- import { isURL } from '../utils/url';
3
+ import { isHash, isURL } from '../utils/url';
4
4
  import { handlerDecorator } from './handlerDecorator';
5
5
  import { useRouter } from './useRouter';
6
6
 
@@ -24,7 +24,7 @@ export function useLink(): <L extends Partial<LinkProps & ClickHandler>>(
24
24
  props.onClick && props.onClick(ev);
25
25
  const isLocalHref = href && !isURL(href);
26
26
  const isLocalTarget = !props.target || props.target === '_self';
27
- if (isLocalHref && isLocalTarget) {
27
+ if (isLocalHref && isLocalTarget && !isHash(href)) {
28
28
  ev?.preventDefault();
29
29
  router.push(href);
30
30
  }
@@ -11,15 +11,6 @@ interface BlockWrapperProps extends UniBlockProps {
11
11
  role?: string;
12
12
  }
13
13
 
14
- const THRESHOLD_ACCURACY = 100; // Decimals number (100 is for two decimals number, 0.**)
15
- const THRESHOLD_ARRAY_LENGTH = 18;
16
- const THRESHOLD_ARRAY_START_VALUE =
17
- (THRESHOLD_ACCURACY - THRESHOLD_ARRAY_LENGTH) / THRESHOLD_ACCURACY;
18
-
19
- const OBSERVER_OPTIONS = {
20
- threshold: new Array(THRESHOLD_ARRAY_LENGTH).fill(0).map(getIntersectionThreshold),
21
- };
22
-
23
14
  export const BlockWrapper = JSX<BlockWrapperProps>(
24
15
  ({ className, block, tag = 'section', role, children }) => {
25
16
  const Tag: any = tag;
@@ -33,7 +24,7 @@ export const BlockWrapper = JSX<BlockWrapperProps>(
33
24
  () => changeHashOnObserve({ anchor, anchorClickRef }),
34
25
  [anchor],
35
26
  );
36
- const ref = useIntersectionObserver(observerCallback, OBSERVER_OPTIONS);
27
+ const ref = useIntersectionObserver(observerCallback, { sensitivity: 1 });
37
28
 
38
29
  useEffect(
39
30
  () =>
@@ -65,12 +56,6 @@ export const BlockWrapper = JSX<BlockWrapperProps>(
65
56
  },
66
57
  );
67
58
 
68
- function getIntersectionThreshold(_: number, i: number): number {
69
- const value = (i + 1) / THRESHOLD_ACCURACY + THRESHOLD_ARRAY_START_VALUE;
70
-
71
- return Math.round(value * THRESHOLD_ACCURACY) / THRESHOLD_ACCURACY;
72
- }
73
-
74
59
  function changeHash(label?: string) {
75
60
  if (label) {
76
61
  globalThis.document.location.hash = label;
@@ -24,3 +24,16 @@ export const ArrowButton = JSX<ButtonProps>(({ className, disabled, ...rest }) =
24
24
  />
25
25
  </Button>
26
26
  ));
27
+
28
+ export const ScrollLeftButton = JSX<ButtonProps>((props) => (
29
+ <ArrowButton {...props} ariaLabel="Пролистать влево" data-block-control="scroll-left" />
30
+ ));
31
+
32
+ export const ScrollRightButton = JSX<ButtonProps>((props) => (
33
+ <ArrowButton
34
+ {...props}
35
+ className={`${props.className || ''} rotate-180`}
36
+ ariaLabel="Пролистать вправо"
37
+ data-block-control="scroll-right"
38
+ />
39
+ ));
@@ -21,7 +21,9 @@ export const FoldableSection = JSX<FoldableSectionProps>(
21
21
  return (
22
22
  <div
23
23
  ref={containerRef}
24
- className={`transition-max-h duration-300 overflow-hidden max-h-0 ${className}`}
24
+ className={`transition-max-h duration-300 overflow-hidden ${
25
+ containerRef.current || !isUnfolded ? 'max-h-0' : ''
26
+ } ${className}`}
25
27
  >
26
28
  {children}
27
29
  </div>
@@ -0,0 +1,97 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback, useRef } from '@redneckz/uni-jsx/lib/hooks';
3
+ import type { IntersectionObserverOptions } from '../../hooks/useIntersectionObserver';
4
+ import { mapChildren } from '../../utils/mapChildren';
5
+ import type { SwipeContainerProps } from './SwipeListControlProps';
6
+ import { SwipeListItem } from './SwipeListItem';
7
+
8
+ type ItemsVisibilityList = Array<IntersectionObserverEntry | undefined>;
9
+
10
+ type SwipeListItemWidthAuto = 0;
11
+
12
+ /**
13
+ * @title Список
14
+ */
15
+ interface SwipeListContainerProps extends SwipeContainerProps {
16
+ className?: string;
17
+ containerRef?: { current: HTMLDivElement | null };
18
+ activeIndex?: number;
19
+ visibleItemCount?: SwipeListItemWidthAuto | 1 | 2 | 3;
20
+ snapAlign?: 'snap-start' | 'snap-center' | 'snap-end';
21
+ onVisibleItemsChange?: (itemsVisibilityList: ItemsVisibilityList) => void;
22
+ onVisibleIndicesChange?: (indices: number[]) => void;
23
+ }
24
+
25
+ const childStyleMap = ['min-w-[100%]', 'min-w-[50%]', 'min-w-[33.33%]'];
26
+
27
+ export const SwipeListContainer = JSX<SwipeListContainerProps>(
28
+ ({
29
+ className = '',
30
+ containerRef,
31
+ activeIndex,
32
+ visibleItemCount,
33
+ gap = 0,
34
+ padding = 0,
35
+ snapAlign = 'snap-center',
36
+ children,
37
+ onVisibleItemsChange,
38
+ onVisibleIndicesChange,
39
+ }) => {
40
+ const observerOptions: IntersectionObserverOptions = {
41
+ sensitivity: 1,
42
+ rootRef: containerRef,
43
+ };
44
+
45
+ const itemsVisibilityListRef = useRef<ItemsVisibilityList>([]);
46
+ const handleIntersection = useCallback(
47
+ (idx: number, entry: IntersectionObserverEntry) => {
48
+ const itemsVisibilityList = [...(itemsVisibilityListRef.current || [])];
49
+ itemsVisibilityList[idx] = entry;
50
+ itemsVisibilityListRef.current = itemsVisibilityList;
51
+
52
+ onVisibleItemsChange && onVisibleItemsChange(itemsVisibilityList);
53
+ onVisibleIndicesChange && onVisibleIndicesChange(getVisibleIndices(itemsVisibilityList));
54
+ },
55
+ [onVisibleItemsChange, onVisibleIndicesChange],
56
+ );
57
+
58
+ return (
59
+ <div
60
+ className={`box-border overflow-auto flex horizontal-list no-scrollbar ${className}`}
61
+ style={{ ...getContainerStyle(padding), gap: `${gap}px` }}
62
+ role="list"
63
+ ref={containerRef}
64
+ >
65
+ {mapChildren((child, idx) => (
66
+ <SwipeListItem
67
+ key={String(idx)}
68
+ className={`${snapAlign} ${
69
+ visibleItemCount ? childStyleMap[visibleItemCount - 1] : ''
70
+ }`}
71
+ style={getContainerStyle(padding / 4)}
72
+ activeIndex={activeIndex}
73
+ idx={idx}
74
+ observerOptions={observerOptions}
75
+ onIntersection={handleIntersection}
76
+ >
77
+ {child}
78
+ </SwipeListItem>
79
+ ))(children)}
80
+ </div>
81
+ );
82
+ },
83
+ );
84
+
85
+ // Styles used to compensate outer container padding to get rid of clipping effect
86
+ const getContainerStyle = (padding: number): Record<string, string> => ({
87
+ marginLeft: `${-padding}px`,
88
+ marginRight: `${-padding}px`,
89
+ paddingLeft: `${padding}px`,
90
+ paddingRight: `${padding}px`,
91
+ });
92
+
93
+ const getVisibleIndices = (itemsVisibilityList: ItemsVisibilityList) =>
94
+ itemsVisibilityList
95
+ .map((_, i): [IntersectionObserverEntry | undefined, number] => [_, i])
96
+ .filter(([_]) => _ && _.intersectionRatio >= 0.9)
97
+ .map(([, i]) => i);
@@ -1,12 +1,17 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import { useCallback, useState } from '@redneckz/uni-jsx/lib/hooks';
3
- import { DEFAULT_GAP, DEFAULT_PADDING } from './constants';
2
+ import { SwipeListContainer } from './SwipeListContainer';
4
3
  import { SwipeListControlDots } from './SwipeListControlDots';
5
- import { SwipeListControlList } from './SwipeListControlList';
6
- import type { SwipeListControlListProps } from './SwipeListControlList';
7
4
  import type { SwipeListControlProps } from './SwipeListControlProps';
8
- import { getIndexParts } from './utils/getIndexParts';
9
- import { getScrollPoints } from './utils/getScrollPoints';
5
+ import { useSwipeListScroll } from './useSwipeListScroll';
6
+
7
+ const DEFAULT_GAP = 14;
8
+
9
+ /*
10
+ Horizontal padding used on a container above SwipeListControl.
11
+ Same value used on a SwipeListControlChildren container to compensate it
12
+ and get rid of a clipping effect caused by overflow: hidden.
13
+ */
14
+ const DEFAULT_PADDING = 16;
10
15
 
11
16
  export const SwipeListControl = JSX<SwipeListControlProps>(
12
17
  ({
@@ -14,65 +19,36 @@ export const SwipeListControl = JSX<SwipeListControlProps>(
14
19
  gap = DEFAULT_GAP,
15
20
  padding = DEFAULT_PADDING,
16
21
  showDots = true,
17
- onSlideChange,
18
22
  children,
23
+ onVisibleIndicesChange,
19
24
  }) => {
20
- const [activeIndex, setActiveIndex] = useState(0);
21
- const [indexFraction, setIndexFraction] = useState(0);
22
-
23
- const dotsProps = {
24
- activeIndex,
25
- indexFraction,
26
- showDots,
27
- children,
28
- };
29
-
30
- const handleScroll: SwipeListControlListProps['onScroll'] = useCallback(
31
- (e) => {
32
- const {
33
- scrollLeft,
34
- clientWidth,
35
- childElementCount,
36
- scrollWidth,
37
- children: childrenCollection,
38
- } = e?.currentTarget as HTMLElement;
39
- if (!childrenCollection[0]) {
40
- return;
41
- }
25
+ const itemCount = Array.isArray(children) ? children.length : 0;
42
26
 
43
- // horizontal PADDING / 2 to compensate padding-margin combo of child container
44
- // without CSS calc function, as wrapper element gets bigger in the DOM, remaining same visually
45
- const itemWidth = (childrenCollection[0] as HTMLElement).offsetWidth - padding / 2;
46
- const scrollPoints = getScrollPoints({
47
- gap,
48
- padding,
49
- clientWidth,
50
- scrollWidth,
51
- childElementCount,
52
- itemWidth,
53
- });
54
-
55
- const { index, fraction } = getIndexParts(scrollLeft, scrollPoints);
56
- if (index !== activeIndex && onSlideChange) {
57
- onSlideChange();
58
- }
59
- setActiveIndex(index);
60
- setIndexFraction(fraction);
61
- },
62
- [gap, padding, activeIndex, onSlideChange],
63
- );
27
+ const [containerRef, scroll] = useSwipeListScroll<HTMLDivElement>({
28
+ itemCount,
29
+ onVisibleIndicesChange,
30
+ });
31
+ const [activeIndex] = scroll.visibleIndicesRange;
64
32
 
65
33
  return (
66
34
  <div className={className}>
67
- <SwipeListControlList
35
+ <SwipeListContainer
36
+ containerRef={containerRef}
37
+ activeIndex={activeIndex}
38
+ visibleItemCount={1}
68
39
  gap={gap}
69
40
  padding={padding}
70
- activeIndex={activeIndex}
71
- onScroll={handleScroll}
41
+ onVisibleIndicesChange={scroll.handleVisibleIndicesChange}
72
42
  >
73
43
  {children}
74
- </SwipeListControlList>
75
- <SwipeListControlDots {...dotsProps} />
44
+ </SwipeListContainer>
45
+ {showDots ? (
46
+ <SwipeListControlDots
47
+ containerRef={containerRef}
48
+ activeIndex={activeIndex}
49
+ dotCount={itemCount}
50
+ />
51
+ ) : null}
76
52
  </div>
77
53
  );
78
54
  },