@redneckz/wildless-cms-uni-blocks 0.3.35 → 0.3.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 (287) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +123 -79
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/dist/components/Blocks.js +1 -1
  5. package/dist/components/Blocks.js.map +1 -1
  6. package/dist/components/ComparisonTable/HeaderCell.js +1 -1
  7. package/dist/components/ComparisonTable/HeaderCell.js.map +1 -1
  8. package/dist/components/ComparisonTable/TableCell.js +1 -1
  9. package/dist/components/ContentPage/ContentPage.js +10 -3
  10. package/dist/components/ContentPage/ContentPage.js.map +1 -1
  11. package/dist/components/CreditCalculator/renderButton.js +8 -1
  12. package/dist/components/CreditCalculator/renderButton.js.map +1 -1
  13. package/dist/components/Gallery/GalleryCardInner.js +5 -6
  14. package/dist/components/Gallery/GalleryCardInner.js.map +1 -1
  15. package/dist/components/Gallery/GalleryContainer.js +2 -2
  16. package/dist/components/Gallery/GalleryContainer.js.map +1 -1
  17. package/dist/components/Gallery/GalleryInner.js +1 -1
  18. package/dist/components/Header/Header.js +1 -1
  19. package/dist/components/Header/Header.js.map +1 -1
  20. package/dist/components/Header/HeaderSubMenu.js +4 -1
  21. package/dist/components/Header/HeaderSubMenu.js.map +1 -1
  22. package/dist/components/LinkDocs/LinkDocsList.d.ts +1 -1
  23. package/dist/components/LinkDocs/LinkDocsList.js +1 -1
  24. package/dist/components/LinkDocs/LinkDocsList.js.map +1 -1
  25. package/dist/components/LinkDocs/LinkDocsListItem.js +1 -1
  26. package/dist/components/LinkDocs/LinkDocsListItem.js.map +1 -1
  27. package/dist/components/NavigatorTabs/NavigatorTabItem.js +4 -4
  28. package/dist/components/NavigatorTabs/NavigatorTabItem.js.map +1 -1
  29. package/dist/components/NavigatorTabs/NavigatorTabs.d.ts +1 -1
  30. package/dist/components/NavigatorTabs/NavigatorTabs.js +11 -6
  31. package/dist/components/NavigatorTabs/NavigatorTabs.js.map +1 -1
  32. package/dist/components/NavigatorTabs/NavigatorTabsContent.d.ts +3 -1
  33. package/dist/components/ProductBlock/renderBackwardButton.js +1 -1
  34. package/dist/components/ProductBlock/renderBackwardButton.js.map +1 -1
  35. package/dist/components/Recommendation/RecommendationCard.js +2 -1
  36. package/dist/components/Recommendation/RecommendationCard.js.map +1 -1
  37. package/dist/components/Recommendation/RecommendationContent.d.ts +4 -0
  38. package/dist/components/StepsBlock/StepsBlock.js +6 -5
  39. package/dist/components/StepsBlock/StepsBlock.js.map +1 -1
  40. package/dist/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  41. package/dist/components/TariffsTable/TariffsTableCell.js +2 -1
  42. package/dist/components/TariffsTable/TariffsTableCell.js.map +1 -1
  43. package/dist/components/TariffsTable/TariffsTableTileCell.js +2 -1
  44. package/dist/components/TariffsTable/TariffsTableTileCell.js.map +1 -1
  45. package/dist/components/TariffsTable/utils/getButtonAriaLabel.d.ts +2 -0
  46. package/dist/components/TariffsTable/utils/getButtonAriaLabel.js +6 -0
  47. package/dist/components/TariffsTable/utils/getButtonAriaLabel.js.map +1 -0
  48. package/dist/components/Tile/Tile.js +1 -1
  49. package/dist/components/Tile/Tile.js.map +1 -1
  50. package/dist/hooks/useLink.d.ts +1 -1
  51. package/dist/hooks/useLink.js +1 -1
  52. package/dist/hooks/useLink.js.map +1 -1
  53. package/dist/ui-kit/Button/Button.js +6 -1
  54. package/dist/ui-kit/Button/Button.js.map +1 -1
  55. package/dist/ui-kit/Heading/Heading.d.ts +2 -1
  56. package/dist/ui-kit/Heading/Heading.js +3 -3
  57. package/dist/ui-kit/Heading/Heading.js.map +1 -1
  58. package/dist/ui-kit/Heading/Heading.mobile.d.ts +2 -1
  59. package/dist/ui-kit/Heading/Heading.mobile.js +2 -2
  60. package/dist/ui-kit/Heading/Heading.mobile.js.map +1 -1
  61. package/dist/utils/changeHashOnScroll.d.ts +2 -0
  62. package/dist/utils/changeHashOnScroll.js +16 -0
  63. package/dist/utils/changeHashOnScroll.js.map +1 -0
  64. package/dist/utils/tableFunc.d.ts +2 -0
  65. package/dist/utils/tableFunc.js +8 -0
  66. package/dist/utils/tableFunc.js.map +1 -0
  67. package/lib/common.css +1 -1
  68. package/lib/components/Blocks.js +1 -1
  69. package/lib/components/Blocks.js.map +1 -1
  70. package/lib/components/ComparisonTable/HeaderCell.js +1 -1
  71. package/lib/components/ComparisonTable/HeaderCell.js.map +1 -1
  72. package/lib/components/ComparisonTable/TableCell.js +1 -1
  73. package/lib/components/ContentPage/ContentPage.js +10 -3
  74. package/lib/components/ContentPage/ContentPage.js.map +1 -1
  75. package/lib/components/CreditCalculator/renderButton.js +8 -1
  76. package/lib/components/CreditCalculator/renderButton.js.map +1 -1
  77. package/lib/components/Gallery/GalleryCardInner.js +5 -6
  78. package/lib/components/Gallery/GalleryCardInner.js.map +1 -1
  79. package/lib/components/Gallery/GalleryContainer.js +2 -2
  80. package/lib/components/Gallery/GalleryContainer.js.map +1 -1
  81. package/lib/components/Gallery/GalleryInner.js +1 -1
  82. package/lib/components/Header/Header.js +1 -1
  83. package/lib/components/Header/Header.js.map +1 -1
  84. package/lib/components/Header/HeaderSubMenu.js +4 -1
  85. package/lib/components/Header/HeaderSubMenu.js.map +1 -1
  86. package/lib/components/LinkDocs/LinkDocsList.d.ts +1 -1
  87. package/lib/components/LinkDocs/LinkDocsList.js +1 -1
  88. package/lib/components/LinkDocs/LinkDocsList.js.map +1 -1
  89. package/lib/components/LinkDocs/LinkDocsListItem.js +1 -1
  90. package/lib/components/LinkDocs/LinkDocsListItem.js.map +1 -1
  91. package/lib/components/NavigatorTabs/NavigatorTabItem.js +4 -4
  92. package/lib/components/NavigatorTabs/NavigatorTabItem.js.map +1 -1
  93. package/lib/components/NavigatorTabs/NavigatorTabs.d.ts +1 -1
  94. package/lib/components/NavigatorTabs/NavigatorTabs.js +12 -7
  95. package/lib/components/NavigatorTabs/NavigatorTabs.js.map +1 -1
  96. package/lib/components/NavigatorTabs/NavigatorTabsContent.d.ts +3 -1
  97. package/lib/components/ProductBlock/renderBackwardButton.js +1 -1
  98. package/lib/components/ProductBlock/renderBackwardButton.js.map +1 -1
  99. package/lib/components/Recommendation/RecommendationCard.js +2 -1
  100. package/lib/components/Recommendation/RecommendationCard.js.map +1 -1
  101. package/lib/components/Recommendation/RecommendationContent.d.ts +4 -0
  102. package/lib/components/StepsBlock/StepsBlock.fixture.d.ts +2 -0
  103. package/lib/components/StepsBlock/StepsBlock.js +6 -5
  104. package/lib/components/StepsBlock/StepsBlock.js.map +1 -1
  105. package/lib/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  106. package/lib/components/TariffsTable/TariffsTableCell.js +2 -1
  107. package/lib/components/TariffsTable/TariffsTableCell.js.map +1 -1
  108. package/lib/components/TariffsTable/TariffsTableTileCell.js +2 -1
  109. package/lib/components/TariffsTable/TariffsTableTileCell.js.map +1 -1
  110. package/lib/components/TariffsTable/utils/getButtonAriaLabel.d.ts +2 -0
  111. package/lib/components/TariffsTable/utils/getButtonAriaLabel.js +3 -0
  112. package/lib/components/TariffsTable/utils/getButtonAriaLabel.js.map +1 -0
  113. package/lib/components/Tile/Tile.js +1 -1
  114. package/lib/components/Tile/Tile.js.map +1 -1
  115. package/lib/hooks/useLink.d.ts +1 -1
  116. package/lib/hooks/useLink.js +1 -1
  117. package/lib/hooks/useLink.js.map +1 -1
  118. package/lib/ui-kit/Button/Button.js +6 -1
  119. package/lib/ui-kit/Button/Button.js.map +1 -1
  120. package/lib/ui-kit/Heading/Heading.d.ts +2 -1
  121. package/lib/ui-kit/Heading/Heading.js +3 -3
  122. package/lib/ui-kit/Heading/Heading.js.map +1 -1
  123. package/lib/ui-kit/Heading/Heading.mobile.d.ts +2 -1
  124. package/lib/ui-kit/Heading/Heading.mobile.js +2 -2
  125. package/lib/ui-kit/Heading/Heading.mobile.js.map +1 -1
  126. package/lib/utils/changeHashOnScroll.d.ts +2 -0
  127. package/lib/utils/changeHashOnScroll.js +13 -0
  128. package/lib/utils/changeHashOnScroll.js.map +1 -0
  129. package/lib/utils/tableFunc.d.ts +2 -0
  130. package/lib/utils/tableFunc.js +5 -0
  131. package/lib/utils/tableFunc.js.map +1 -0
  132. package/mobile/bundle/bundle.umd.js +28 -7
  133. package/mobile/bundle/bundle.umd.min.js +1 -1
  134. package/mobile/dist/components/ContentPage/ContentPage.js +10 -3
  135. package/mobile/dist/components/ContentPage/ContentPage.js.map +1 -1
  136. package/mobile/dist/components/CreditCalculator/renderButton.js +8 -1
  137. package/mobile/dist/components/CreditCalculator/renderButton.js.map +1 -1
  138. package/mobile/dist/components/Gallery/GalleryCardInner.js +5 -6
  139. package/mobile/dist/components/Gallery/GalleryCardInner.js.map +1 -1
  140. package/mobile/dist/components/Gallery/GalleryContainer.js +2 -2
  141. package/mobile/dist/components/Gallery/GalleryContainer.js.map +1 -1
  142. package/mobile/dist/components/Gallery/GalleryInner.js +1 -1
  143. package/mobile/dist/components/Header/HeaderSubMenu.js +4 -1
  144. package/mobile/dist/components/Header/HeaderSubMenu.js.map +1 -1
  145. package/mobile/dist/components/LinkDocs/LinkDocsList.d.ts +1 -1
  146. package/mobile/dist/components/LinkDocs/LinkDocsList.js +1 -1
  147. package/mobile/dist/components/LinkDocs/LinkDocsList.js.map +1 -1
  148. package/mobile/dist/components/NavigatorTabs/NavigatorTabItem.js +4 -4
  149. package/mobile/dist/components/NavigatorTabs/NavigatorTabItem.js.map +1 -1
  150. package/mobile/dist/components/NavigatorTabs/NavigatorTabs.d.ts +1 -1
  151. package/mobile/dist/components/NavigatorTabs/NavigatorTabs.js +11 -6
  152. package/mobile/dist/components/NavigatorTabs/NavigatorTabs.js.map +1 -1
  153. package/mobile/dist/components/NavigatorTabs/NavigatorTabsContent.d.ts +3 -1
  154. package/mobile/dist/components/ProductBlock/renderBackwardButton.js +1 -1
  155. package/mobile/dist/components/ProductBlock/renderBackwardButton.js.map +1 -1
  156. package/mobile/dist/components/Recommendation/RecommendationCard.js +2 -1
  157. package/mobile/dist/components/Recommendation/RecommendationCard.js.map +1 -1
  158. package/mobile/dist/components/Recommendation/RecommendationContent.d.ts +4 -0
  159. package/mobile/dist/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  160. package/mobile/dist/components/TariffsTable/TariffsTableCell.js +2 -1
  161. package/mobile/dist/components/TariffsTable/TariffsTableCell.js.map +1 -1
  162. package/mobile/dist/components/TariffsTable/TariffsTableTileCell.js +2 -1
  163. package/mobile/dist/components/TariffsTable/TariffsTableTileCell.js.map +1 -1
  164. package/mobile/dist/components/TariffsTable/utils/getButtonAriaLabel.d.ts +2 -0
  165. package/mobile/dist/components/TariffsTable/utils/getButtonAriaLabel.js +6 -0
  166. package/mobile/dist/components/TariffsTable/utils/getButtonAriaLabel.js.map +1 -0
  167. package/mobile/dist/components/Tile/Tile.js +1 -1
  168. package/mobile/dist/components/Tile/Tile.js.map +1 -1
  169. package/mobile/dist/hooks/useLink.d.ts +1 -1
  170. package/mobile/dist/hooks/useLink.js +1 -1
  171. package/mobile/dist/hooks/useLink.js.map +1 -1
  172. package/mobile/dist/ui-kit/Heading/Heading.d.ts +2 -1
  173. package/mobile/dist/ui-kit/Heading/Heading.js +2 -2
  174. package/mobile/dist/ui-kit/Heading/Heading.js.map +1 -1
  175. package/mobile/dist/utils/changeHashOnScroll.d.ts +2 -0
  176. package/mobile/dist/utils/changeHashOnScroll.js +16 -0
  177. package/mobile/dist/utils/changeHashOnScroll.js.map +1 -0
  178. package/mobile/dist/utils/tableFunc.d.ts +2 -0
  179. package/mobile/dist/utils/tableFunc.js +8 -0
  180. package/mobile/dist/utils/tableFunc.js.map +1 -0
  181. package/mobile/lib/components/ContentPage/ContentPage.js +10 -3
  182. package/mobile/lib/components/ContentPage/ContentPage.js.map +1 -1
  183. package/mobile/lib/components/CreditCalculator/renderButton.js +8 -1
  184. package/mobile/lib/components/CreditCalculator/renderButton.js.map +1 -1
  185. package/mobile/lib/components/Gallery/GalleryCardInner.js +5 -6
  186. package/mobile/lib/components/Gallery/GalleryCardInner.js.map +1 -1
  187. package/mobile/lib/components/Gallery/GalleryContainer.js +2 -2
  188. package/mobile/lib/components/Gallery/GalleryContainer.js.map +1 -1
  189. package/mobile/lib/components/Gallery/GalleryInner.js +1 -1
  190. package/mobile/lib/components/Header/HeaderSubMenu.js +4 -1
  191. package/mobile/lib/components/Header/HeaderSubMenu.js.map +1 -1
  192. package/mobile/lib/components/LinkDocs/LinkDocsList.d.ts +1 -1
  193. package/mobile/lib/components/LinkDocs/LinkDocsList.js +1 -1
  194. package/mobile/lib/components/LinkDocs/LinkDocsList.js.map +1 -1
  195. package/mobile/lib/components/NavigatorTabs/NavigatorTabItem.js +4 -4
  196. package/mobile/lib/components/NavigatorTabs/NavigatorTabItem.js.map +1 -1
  197. package/mobile/lib/components/NavigatorTabs/NavigatorTabs.d.ts +1 -1
  198. package/mobile/lib/components/NavigatorTabs/NavigatorTabs.js +12 -7
  199. package/mobile/lib/components/NavigatorTabs/NavigatorTabs.js.map +1 -1
  200. package/mobile/lib/components/NavigatorTabs/NavigatorTabsContent.d.ts +3 -1
  201. package/mobile/lib/components/ProductBlock/renderBackwardButton.js +1 -1
  202. package/mobile/lib/components/ProductBlock/renderBackwardButton.js.map +1 -1
  203. package/mobile/lib/components/Recommendation/RecommendationCard.js +2 -1
  204. package/mobile/lib/components/Recommendation/RecommendationCard.js.map +1 -1
  205. package/mobile/lib/components/Recommendation/RecommendationContent.d.ts +4 -0
  206. package/mobile/lib/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  207. package/mobile/lib/components/TariffsTable/TariffsTableCell.js +2 -1
  208. package/mobile/lib/components/TariffsTable/TariffsTableCell.js.map +1 -1
  209. package/mobile/lib/components/TariffsTable/TariffsTableTileCell.js +2 -1
  210. package/mobile/lib/components/TariffsTable/TariffsTableTileCell.js.map +1 -1
  211. package/mobile/lib/components/TariffsTable/utils/getButtonAriaLabel.d.ts +2 -0
  212. package/mobile/lib/components/TariffsTable/utils/getButtonAriaLabel.js +3 -0
  213. package/mobile/lib/components/TariffsTable/utils/getButtonAriaLabel.js.map +1 -0
  214. package/mobile/lib/components/Tile/Tile.js +1 -1
  215. package/mobile/lib/components/Tile/Tile.js.map +1 -1
  216. package/mobile/lib/hooks/useLink.d.ts +1 -1
  217. package/mobile/lib/hooks/useLink.js +1 -1
  218. package/mobile/lib/hooks/useLink.js.map +1 -1
  219. package/mobile/lib/ui-kit/Heading/Heading.d.ts +2 -1
  220. package/mobile/lib/ui-kit/Heading/Heading.js +2 -2
  221. package/mobile/lib/ui-kit/Heading/Heading.js.map +1 -1
  222. package/mobile/lib/utils/changeHashOnScroll.d.ts +2 -0
  223. package/mobile/lib/utils/changeHashOnScroll.js +13 -0
  224. package/mobile/lib/utils/changeHashOnScroll.js.map +1 -0
  225. package/mobile/lib/utils/tableFunc.d.ts +2 -0
  226. package/mobile/lib/utils/tableFunc.js +5 -0
  227. package/mobile/lib/utils/tableFunc.js.map +1 -0
  228. package/mobile/src/components/ContentPage/ContentPage.page.json +94 -234
  229. package/mobile/src/components/ContentPage/ContentPage.tsx +14 -2
  230. package/mobile/src/components/CreditCalculator/renderButton.tsx +11 -1
  231. package/mobile/src/components/Footer/FooterContent.ts +0 -1
  232. package/mobile/src/components/Gallery/GalleryCardInner.tsx +6 -7
  233. package/mobile/src/components/Gallery/GalleryContainer.tsx +2 -2
  234. package/mobile/src/components/Gallery/GalleryInner.tsx +1 -1
  235. package/mobile/src/components/Header/HeaderSubMenu.tsx +12 -2
  236. package/mobile/src/components/LinkDocs/LinkDocsList.tsx +3 -3
  237. package/mobile/src/components/NavigatorTabs/NavigatorTabItem.tsx +7 -5
  238. package/mobile/src/components/NavigatorTabs/NavigatorTabs.example.json +3 -3
  239. package/mobile/src/components/NavigatorTabs/NavigatorTabs.tsx +17 -9
  240. package/mobile/src/components/NavigatorTabs/NavigatorTabsContent.ts +3 -1
  241. package/mobile/src/components/ProductBlock/renderBackwardButton.tsx +1 -0
  242. package/mobile/src/components/Recommendation/RecommendationCard.tsx +2 -1
  243. package/mobile/src/components/Recommendation/RecommendationContent.ts +4 -0
  244. package/mobile/src/components/StepsBlock/StepsBlockContent.ts +3 -0
  245. package/mobile/src/components/TariffsTable/TariffsTableCell.tsx +2 -0
  246. package/mobile/src/components/TariffsTable/TariffsTableTileCell.tsx +2 -0
  247. package/mobile/src/components/TariffsTable/utils/getButtonAriaLabel.ts +5 -0
  248. package/mobile/src/components/Tile/Tile.tsx +1 -0
  249. package/mobile/src/hooks/useLink.ts +1 -1
  250. package/mobile/src/ui-kit/Heading/Heading.tsx +5 -2
  251. package/mobile/src/utils/changeHashOnScroll.ts +15 -0
  252. package/mobile/src/utils/tableFunc.ts +8 -0
  253. package/package.json +1 -1
  254. package/src/components/Blocks.ts +1 -1
  255. package/src/components/ComparisonTable/HeaderCell.tsx +1 -1
  256. package/src/components/ComparisonTable/TableCell.tsx +1 -1
  257. package/src/components/ContentPage/ContentPage.page.json +94 -234
  258. package/src/components/ContentPage/ContentPage.tsx +14 -2
  259. package/src/components/CreditCalculator/renderButton.tsx +11 -1
  260. package/src/components/Footer/FooterContent.ts +0 -1
  261. package/src/components/Gallery/GalleryCardInner.tsx +6 -7
  262. package/src/components/Gallery/GalleryContainer.tsx +2 -2
  263. package/src/components/Gallery/GalleryInner.tsx +1 -1
  264. package/src/components/Header/Header.tsx +1 -1
  265. package/src/components/Header/HeaderSubMenu.tsx +12 -2
  266. package/src/components/LinkDocs/LinkDocsList.tsx +3 -3
  267. package/src/components/LinkDocs/LinkDocsListItem.tsx +3 -3
  268. package/src/components/NavigatorTabs/NavigatorTabItem.tsx +7 -5
  269. package/src/components/NavigatorTabs/NavigatorTabs.example.json +3 -3
  270. package/src/components/NavigatorTabs/NavigatorTabs.tsx +17 -9
  271. package/src/components/NavigatorTabs/NavigatorTabsContent.ts +3 -1
  272. package/src/components/ProductBlock/renderBackwardButton.tsx +1 -0
  273. package/src/components/Recommendation/RecommendationCard.tsx +2 -1
  274. package/src/components/Recommendation/RecommendationContent.ts +4 -0
  275. package/src/components/StepsBlock/StepsBlock.fixture.tsx +59 -0
  276. package/src/components/StepsBlock/StepsBlock.tsx +34 -11
  277. package/src/components/StepsBlock/StepsBlockContent.ts +3 -0
  278. package/src/components/TariffsTable/TariffsTableCell.tsx +2 -0
  279. package/src/components/TariffsTable/TariffsTableTileCell.tsx +2 -0
  280. package/src/components/TariffsTable/utils/getButtonAriaLabel.ts +5 -0
  281. package/src/components/Tile/Tile.tsx +1 -0
  282. package/src/hooks/useLink.ts +1 -1
  283. package/src/ui-kit/Button/Button.tsx +20 -15
  284. package/src/ui-kit/Heading/Heading.mobile.tsx +5 -2
  285. package/src/ui-kit/Heading/Heading.tsx +6 -3
  286. package/src/utils/changeHashOnScroll.ts +15 -0
  287. package/src/utils/tableFunc.ts +8 -0
@@ -1,5 +1,6 @@
1
1
  import { JSX, PropsWithChildren } from '@redneckz/uni-jsx';
2
2
  import type { BlockDef, ContentPageDef, UniBlockProps } from '../../types';
3
+ import { changeHashOnScroll } from '../../utils/changeHashOnScroll';
3
4
  import type { BlockContent } from '../BlockContent';
4
5
  import { LikeControl } from '../LikeControl/LikeControl';
5
6
  import { Placeholder } from '../Placeholder/Placeholder';
@@ -41,17 +42,26 @@ const defaultBlockDecorator: BlockDecorator = ({ blockClassName, block, render }
41
42
 
42
43
  export const ContentPage = JSX<ContentPageProps>(
43
44
  ({
44
- className,
45
+ className = '',
45
46
  context,
46
47
  blocksRegistry,
47
48
  data: { style: pageStyle, blocks, slots = {}, likeControl, colorPalette = 'pc' },
48
49
  blockDecorator = defaultBlockDecorator,
49
50
  }) => {
50
51
  const { header } = slots;
52
+ const router = context.useRouter();
53
+
54
+ // listener is for NavigatorTabs
55
+ globalThis.addEventListener('load', () => {
56
+ const sectionsWithAnchors = globalThis.document.querySelectorAll('section[id]');
57
+ globalThis.document.addEventListener('scroll', () =>
58
+ changeHashOnScroll(router, sectionsWithAnchors),
59
+ );
60
+ });
51
61
 
52
62
  return (
53
63
  <section
54
- className={`relative ${style2className(pageStyle)} ${className || ''}`}
64
+ className={`relative ${style2className(pageStyle)} ${className}`}
55
65
  data-theme={colorPalette}
56
66
  >
57
67
  {header?.blocks?.length ? (
@@ -73,6 +83,7 @@ export const ContentPage = JSX<ContentPageProps>(
73
83
  {likeControl && (
74
84
  <div className="flex items-end absolute bottom-0 right-0 h-full pointer-events-none">
75
85
  <LikeControl
86
+ key="LikeControl"
76
87
  className="rounded-tl-lg sticky bottom-0 pointer-events-auto"
77
88
  context={context}
78
89
  />
@@ -100,6 +111,7 @@ function renderBlock(
100
111
  const { version, content, anchor } = props.block;
101
112
  return (
102
113
  <BlockComponent
114
+ key={`${type}-${i}`}
103
115
  className={props.blockClassName}
104
116
  version={version}
105
117
  context={context}
@@ -1,4 +1,14 @@
1
+ import { tableFunc } from '../../utils/tableFunc';
2
+
3
+ const func = tableFunc<number, string>([
4
+ [(_) => _ === 1, 'год'],
5
+ [(_) => _ <= 4, 'года'],
6
+ [() => true, 'лет'],
7
+ ]);
8
+
1
9
  export function renderButton(number: number, i: number, handleClick: (number: number) => void) {
10
+ const string = func(number);
11
+
2
12
  return (
3
13
  <button
4
14
  key={String(i)}
@@ -6,7 +16,7 @@ export function renderButton(number: number, i: number, handleClick: (number: nu
6
16
  onClick={() => handleClick(number)}
7
17
  >
8
18
  <span className="font-semibold text-sm">
9
- {number} {number === 1 ? 'год' : number > 4 ? 'лет' : 'года'}
19
+ {number} {string}
10
20
  </span>
11
21
  </button>
12
22
  );
@@ -1,4 +1,3 @@
1
- import type { IconName } from '../../icons/IconName';
2
1
  import type { LinkProps } from '../../model/LinkProps';
3
2
  import type { SitemapProps } from '../../services/sitemap/SitemapProps';
4
3
  import type { Picture } from '../../model/Picture';
@@ -7,9 +7,9 @@ import type { GalleryCard, GalleryItem } from './GalleryContent';
7
7
 
8
8
  export const GalleryCardInner = JSX<GalleryCard>(
9
9
  ({ title, description, image, items, button, version }) => {
10
- const titleStyleClasses = getTitleStyle(version, description, items);
10
+ const titleStyleClasses = getTitleStyle(version);
11
11
  return (
12
- <div className="h-full flex flex-col justify-between">
12
+ <div className="h-full flex flex-col justify-between text-center">
13
13
  <div>
14
14
  {image?.src ? (
15
15
  <div className="flex justify-center">
@@ -18,7 +18,7 @@ export const GalleryCardInner = JSX<GalleryCard>(
18
18
  ) : null}
19
19
  {title ? renderCardTitle(title, titleStyleClasses) : null}
20
20
  {description ? (
21
- <div className={`font-normal text-sm ${title ? 'mt-2' : ''}`}>{description}</div>
21
+ <div className={`font-light text-m-md-new ${title ? 'mt-2' : ''}`}>{description}</div>
22
22
  ) : null}
23
23
  {items?.length ? renderItems(items, version) : null}
24
24
  </div>
@@ -39,7 +39,7 @@ function renderButton(button) {
39
39
  }
40
40
 
41
41
  function renderCardTitle(title: string, className: string) {
42
- return <div className={`font-medium text-xl m-0 ${className}`}>{title}</div>;
42
+ return <div className={`text-xl m-0 ${className}`}>{title}</div>;
43
43
  }
44
44
 
45
45
  function renderItems(items: GalleryItem[], version: BlockVersion = 'primary') {
@@ -55,9 +55,8 @@ function renderItems(items: GalleryItem[], version: BlockVersion = 'primary') {
55
55
  );
56
56
  }
57
57
 
58
- function getTitleStyle(version, description, items) {
59
- return `font-medium text-xl m-0
58
+ function getTitleStyle(version) {
59
+ return `text-xl m-0
60
60
  ${version !== 'secondary' ? 'text-primary-text' : ''}
61
- ${!description && !items?.length ? 'text-center' : ''}
62
61
  `;
63
62
  }
@@ -25,7 +25,7 @@ export const GalleryContainer = JSX<GalleryContainerProps>(
25
25
  <div className="flex flex-col items-center mb-8">
26
26
  {title ? <Heading headingType="h2" className="text-center" title={title} /> : null}
27
27
  {description ? (
28
- <div className="font-normal text-base max-w-[600px] mt-2.5">{description}</div>
28
+ <div className="font-light text-md max-w-[600px] mt-2.5">{description}</div>
29
29
  ) : null}
30
30
  </div>
31
31
  <div
@@ -45,7 +45,7 @@ export const GalleryContainer = JSX<GalleryContainerProps>(
45
45
  function renderCard({ card, version }: GalleryCardData, i: number) {
46
46
  return (
47
47
  <section
48
- className={`box-border border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between
48
+ className={`box-border border-solid border border-main-stroke p-6 mx-2 flex flex-col justify-between
49
49
  items-stretch ${cardStyleMap[version]} ${
50
50
  cardVersionMap[card.version ?? 'primary']
51
51
  } w-full col-span-4`}
@@ -27,7 +27,7 @@ export const GalleryInner = JSX<GalleryInnerProps>(
27
27
 
28
28
  return (
29
29
  <section
30
- className={`relative font-sans text-primary-text bg-white p-[50px] overflow-hidden ${className}`}
30
+ className={`relative font-sans text-primary-text bg-white p-[42px] overflow-hidden ${className}`}
31
31
  id={anchor}
32
32
  >
33
33
  <GalleryContainer
@@ -70,10 +70,16 @@ const renderDotsSubMenu = ({
70
70
  <button
71
71
  className="flex justify-between items-center cursor-pointer h-6 ml-6"
72
72
  onClick={toggleSubMenu}
73
+ aria-label={`${subMenuIsShow ? 'Скрыть другие разделы' : 'Показать другие разделы'}`}
73
74
  >
74
- {Array(3).fill(<div className="w-[3px] h-[3px] rounded bg-black mr-1" />)}
75
+ {Array(3)
76
+ .fill(0)
77
+ .map((_, i) => renderDot(i))}
75
78
  </button>
76
- <div className={`flex flex-col rounded-md bg-white p-6 pb-2 ${subMenuIsShow ? '' : 'hidden'}`}>
79
+ <div
80
+ className={`flex flex-col rounded-md bg-white p-6 pb-2 ${subMenuIsShow ? '' : 'hidden'}`}
81
+ aria-hidden={!subMenuIsShow}
82
+ >
77
83
  {renderDotsSubMenuItems(subItems, router, handlerDecorator)}
78
84
  </div>
79
85
  </div>
@@ -91,3 +97,7 @@ const renderDotsSubMenuItems = (subItems, router, handlerDecorator) =>
91
97
  {_.text}
92
98
  </a>
93
99
  ));
100
+
101
+ const renderDot = (i: number) => (
102
+ <div key={String(i)} className="w-[3px] h-[3px] rounded bg-black mr-1" />
103
+ );
@@ -1,7 +1,7 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import { LinkDocsListItem } from './LinkDocsListItem';
3
- import type { LinkColumnsMode, LinkDocsItem } from './LinkDocsContent';
4
2
  import type { Picture } from '../../model/Picture';
3
+ import type { LinkColumnsMode, LinkDocsItem } from './LinkDocsContent';
4
+ import { LinkDocsListItem } from './LinkDocsListItem';
5
5
 
6
6
  export interface LinkDocsListProps {
7
7
  className?: string;
@@ -21,7 +21,7 @@ export const LinkDocsList = JSX<LinkDocsListProps>(
21
21
  role="listitem"
22
22
  >
23
23
  <LinkDocsListItem
24
- className="group flex text-sm align-middle h-fit w-fit text-primary-text no-underline hover:text-primary-main"
24
+ className="group flex align-middle h-fit w-fit text-primary-text no-underline hover:text-primary-main"
25
25
  doc={doc}
26
26
  icon={icon}
27
27
  />
@@ -8,22 +8,24 @@ export interface NavigatorTabItemProps extends NavigatorTab {
8
8
  }
9
9
 
10
10
  const TEXT_CLASSES = 'font-sans font-normal text-sm';
11
- const LINK_CLASSES = 'flex-1 flex items-center justify-center';
11
+ const LINK_CLASSES = 'flex-1 flex items-center justify-center cursor-pointer';
12
12
 
13
13
  export const NavigatorTabItem = JSX<NavigatorTabItemProps>(
14
- ({ className = '', label, active, children, onClick, anchor }) => (
15
- <a className={getLinkClasses(className, active)} href={`#${anchor}`} onClick={onClick}>
14
+ ({ className = '', label, active, children, onClick, href, target = '_self' }) => (
15
+ <a className={getLinkClasses(className, active)} target={target} href={href} onClick={onClick}>
16
16
  <span className={getTextClasses(active)}>{label || children}</span>
17
17
  </a>
18
18
  ),
19
19
  );
20
20
 
21
21
  const getLinkClasses = (className: string, active?: boolean) => {
22
- const classes = active ? 'bg-primary-main' : 'bg-white';
22
+ const classes = active ? 'bg-primary-main' : 'group bg-white';
23
+
23
24
  return `${classes} ${LINK_CLASSES} ${className}`;
24
25
  };
25
26
 
26
27
  const getTextClasses = (active?: boolean) => {
27
- const classes = active ? 'text-white' : 'text-secondary-text hover:text-primary-main';
28
+ const classes = active ? 'text-white' : 'text-secondary-text group-hover:text-primary-main ';
29
+
28
30
  return `${classes} ${TEXT_CLASSES}`;
29
31
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "navigatorTabs": [
3
- { "label": "Tab1", "anchor": "tab1" },
4
- { "label": "Tab2", "anchor": "tab2" },
5
- { "label": "Tab3", "anchor": "tab3" }
3
+ { "label": "Tab1", "href": "#tab1" },
4
+ { "label": "Tab2", "href": "#tab2" },
5
+ { "label": "Link", "href": "https://rshb.ru", "target": "_blank" }
6
6
  ]
7
7
  }
@@ -1,36 +1,44 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import type { UniBlockProps } from '../../types';
3
- import { getHash } from '../../utils/url';
3
+ import { getHash, isURL } from '../../utils/url';
4
4
  import type { Router } from '../ContentPage/ContentPageContext';
5
5
  import { NavigatorTabItem } from './NavigatorTabItem';
6
6
  import type { NavigatorTab, NavigatorTabsContent } from './NavigatorTabsContent';
7
7
 
8
- export interface TabsBlockProps extends NavigatorTabsContent, UniBlockProps {}
8
+ export interface TabsBlockProps extends UniBlockProps, NavigatorTabsContent {}
9
9
 
10
10
  export const NavigatorTabs = JSX<TabsBlockProps>(
11
11
  ({ className = '', navigatorTabs, context, anchor = null }) => {
12
12
  const router = context.useRouter();
13
- const hash = getHash(router.href);
13
+ const href = globalThis.location.href;
14
+
14
15
  return (
15
16
  <section
16
17
  className={`sticky top-0 z-20 box-border flex gap-x-1 h-12 ${className}`}
17
18
  id={anchor}
18
19
  >
19
- {navigatorTabs ? navigatorTabs.map(renderTab(hash, router)) : null}
20
+ {navigatorTabs ? navigatorTabs.map(renderTab(href, router)) : null}
20
21
  </section>
21
22
  );
22
23
  },
23
24
  );
24
25
 
25
- const renderTab = (hash?: string, router?: Router) => (tab: NavigatorTab, i: number) => {
26
- const anchorHash = `#${tab.anchor}`;
27
- const active = hash ? anchorHash === hash : i === 0;
26
+ const renderTab = (href?: string, router?: Router) => (tab: NavigatorTab, i: number) => {
27
+ const hash = getHash(href);
28
+ const active = hash ? tab.href === hash : i === 0;
29
+
28
30
  return (
29
31
  <NavigatorTabItem
30
- key={tab.anchor}
32
+ key={tab.href}
31
33
  active={active}
32
- onClick={() => router?.replace(anchorHash)}
34
+ onClick={() => handleRoute(router, tab.href)}
33
35
  {...tab}
34
36
  />
35
37
  );
36
38
  };
39
+
40
+ const handleRoute = (router?: Router, href?: string) => {
41
+ if (isURL(href)) return; // if href if full URL - move to HTML href action, do not touch router
42
+
43
+ router?.replace(href || '');
44
+ };
@@ -5,7 +5,9 @@ export interface NavigatorTab {
5
5
  /** @title Название */
6
6
  label?: string;
7
7
  /** @title Якорь */
8
- anchor?: string;
8
+ href?: string;
9
+ /** @title Таргет (target) */
10
+ target?: string;
9
11
  }
10
12
 
11
13
  /**
@@ -18,6 +18,7 @@ export function renderBackwardButton(text: string, version: BlockVersion, classN
18
18
  <Button
19
19
  rounded
20
20
  className={`w-12 h-12 min-h-12 max-h-12 flex items-center justify-center mr-3 ${backwardBgStyleMap[version]}`}
21
+ ariaLabel={text}
21
22
  >
22
23
  <Img
23
24
  className={`w-4 h-4 min-w-4 min-h-4 rounded-full box-border ${backwardIconStyleMap[version]}`}
@@ -6,6 +6,7 @@ import { BaseTile } from '../BaseTile/BaseTile';
6
6
  import { SocialMedia } from '../Footer/SocialMedia';
7
7
  import type { UniBlockProps } from '../../types';
8
8
  import type { RecommendationCardTypes } from './RecommendationContent';
9
+ import { Heading } from '../../ui-kit/Heading/Heading';
9
10
 
10
11
  export interface RecommendationCardProps extends RecommendationCardTypes, UniBlockProps {}
11
12
 
@@ -21,7 +22,7 @@ export const RecommendationCard = JSX<RecommendationCardProps>(
21
22
  className="flex justify-between"
22
23
  title={
23
24
  title ? (
24
- <h4 className={`font-sans text-title-xs font-normal m-0 mb-3.5`}>{title}</h4>
25
+ <Heading headingType="h4" as="h3" className="font-normal mb-3.5" title={title} />
25
26
  ) : null
26
27
  }
27
28
  image={image?.src && <Img className="mt-auto ml-7" image={image} />}
@@ -17,5 +17,9 @@ export interface RecommendationContent extends HeadingContent {
17
17
  /** @title Карточки */
18
18
  recommendations?: RecommendationCardTypes[];
19
19
  version?: BlockVersion;
20
+ /**
21
+ * @title Ссылка
22
+ * @minItems 3
23
+ */
20
24
  socialMedia?: LinkProps[];
21
25
  }
@@ -1,6 +1,7 @@
1
1
  import type { SizeVersion } from '../../model/SizeVersion';
2
2
  import type { BlockVersion } from '../../model/BlockVersion';
3
3
  import type { Picture } from '../../model/Picture';
4
+ import type { ButtonProps } from '../../ui-kit/Button/ButtonProps';
4
5
 
5
6
  /**
6
7
  * @title Шаг
@@ -11,6 +12,7 @@ export interface Step {
11
12
  /** @title Описание */
12
13
  description?: string;
13
14
  icon?: Picture;
15
+ button?: ButtonProps;
14
16
  }
15
17
 
16
18
  /**
@@ -29,6 +31,7 @@ export interface StepsBlockContent {
29
31
  * @maxItems 4
30
32
  */
31
33
  steps?: Step[];
34
+ button?: ButtonProps;
32
35
  /** @title Размер шагов (моб.) */
33
36
  size?: SizeVersion; // TODO: mobile content
34
37
  version?: BlockVersion; // TODO: mobile content
@@ -4,6 +4,7 @@ import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
4
4
  import { Img } from '../../ui-kit/Img/Img';
5
5
  import { List } from '../../ui-kit/List/List';
6
6
  import type { TariffsTableCellData, TariffsTableList } from './TariffsTableContent';
7
+ import { getButtonAriaLabel } from './utils/getButtonAriaLabel';
7
8
 
8
9
  export interface TariffsTableCellProps {
9
10
  cell: TariffsTableCellData[];
@@ -53,6 +54,7 @@ const renderButtons = (buttons: ButtonWithIconProps[]) => (
53
54
  <Button
54
55
  className={`${idx > 0 && rounded ? 'ml-3' : ''} w-12 h-12`}
55
56
  key={String(idx)}
57
+ ariaLabel={getButtonAriaLabel(icon)}
56
58
  rounded={rounded}
57
59
  appendLeft={icon ? <Img image={icon} width="24px" height="24px" asSVG /> : null}
58
60
  {...buttonProps}
@@ -9,6 +9,7 @@ import type {
9
9
  TariffsTableList,
10
10
  TariffsTableTileCellProps,
11
11
  } from './TariffsTableContent';
12
+ import { getButtonAriaLabel } from './utils/getButtonAriaLabel';
12
13
 
13
14
  export const TariffsTableTileCell = JSX<TariffsTableTileCellProps>(({ header, data }) => {
14
15
  return (
@@ -52,6 +53,7 @@ const renderButtons = (buttons: ButtonWithIconProps[]) => (
52
53
  <Button
53
54
  className={`mt-3 ${idx > 0 && rounded ? 'ml-2.5' : ''} ${icon ? 'w-12 h-12' : ''}`}
54
55
  key={String(idx)}
56
+ ariaLabel={getButtonAriaLabel(icon)}
55
57
  rounded={rounded}
56
58
  appendLeft={icon ? <Img image={icon} width="24px" height="24px" asSVG /> : null}
57
59
  {...buttonProps}
@@ -0,0 +1,5 @@
1
+ import type { Picture } from '../../../model/Picture';
2
+ import { IconTitleMap } from '../../../icons/IconName';
3
+
4
+ export const getButtonAriaLabel = (icon: Picture | undefined) =>
5
+ icon?.alt || icon?.title || IconTitleMap[icon?.icon ? icon.icon : ''];
@@ -50,6 +50,7 @@ export const Tile = JSX<TileProps>((props) => {
50
50
  title && (
51
51
  <Heading
52
52
  headingType={getTileHeadingType(className)}
53
+ as="h3"
53
54
  title={title}
54
55
  className={`whitespace-pre-wrap max-w-[600px] ${title ? 'mb-3' : ''}
55
56
  ${version === 'primary' ? 'text-primary-text' : ''}`}
@@ -16,7 +16,7 @@ export function useLink(
16
16
  return {
17
17
  ...link,
18
18
  href,
19
- ariaLabel: link.text,
19
+ 'aria-label': link.text,
20
20
  onClick: handlerDecorator((ev: MouseEvent) => {
21
21
  const isLocalHref = href && !isURL(href);
22
22
  const isLocalTarget = !link.target || link.target === '_self';
@@ -3,6 +3,7 @@ import { HeadingContent, HeadingType, HeadingTypeContent } from './HeadingConten
3
3
 
4
4
  export interface HeadingProps extends HeadingContent, HeadingTypeContent {
5
5
  className?: string;
6
+ as?: HeadingType;
6
7
  }
7
8
 
8
9
  const HeadingClass: Record<HeadingType, string> = {
@@ -15,11 +16,13 @@ const HeadingClass: Record<HeadingType, string> = {
15
16
  };
16
17
 
17
18
  export const Heading = JSX<HeadingProps>((props) => {
18
- const { className, headingType, title } = props;
19
+ const { className, headingType, title, as } = props;
20
+
19
21
  if (!headingType) {
20
22
  return;
21
23
  }
22
- const Tag = headingType;
24
+
25
+ const Tag = as || headingType;
23
26
 
24
27
  return (
25
28
  <Tag className={`font-sans font-medium m-0 ${HeadingClass[headingType]} ${className || ''}`}>
@@ -0,0 +1,15 @@
1
+ import { Router } from '../components/ContentPage/ContentPageContext';
2
+
3
+ export const changeHashOnScroll = (router: Router, blocks: NodeListOf<Element> | null) => {
4
+ blocks?.forEach((block) => {
5
+ const currentHash = globalThis.location.hash;
6
+ const anchorHash = `#${block?.id}`;
7
+
8
+ if (currentHash === anchorHash) return;
9
+
10
+ const position = block?.getBoundingClientRect();
11
+ if (position && position.top > 0 && position.top < 150) {
12
+ router.replace(`#${block?.id}`);
13
+ }
14
+ });
15
+ };
@@ -0,0 +1,8 @@
1
+ export type Predicate<Input> = (input: Input) => boolean;
2
+
3
+ export const tableFunc =
4
+ <Input, Output>(table: Array<[Predicate<Input>, Output]>) =>
5
+ (input: Input): Output | undefined => {
6
+ const [, output] = table.find(([predicate]) => predicate(input)) || [];
7
+ return output;
8
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.3.35",
3
+ "version": "0.3.36",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -12,6 +12,7 @@ import { MiniGallery } from './MiniGallery/MiniGallery';
12
12
  import { MobileAppTile } from './MobileAppTile/MobileAppTile';
13
13
  import { Navigation } from './Navigation/Navigation';
14
14
  import { NavigatorTabs } from './NavigatorTabs/NavigatorTabs';
15
+ import { OtherProducts } from './OtherProducts/OtherProducts';
15
16
  import { PictureText } from './PictureText/PictureText';
16
17
  import { Placeholder } from './Placeholder/Placeholder';
17
18
  import { ProductBlock } from './ProductBlock/ProductBlock';
@@ -19,7 +20,6 @@ import { ProductGallery } from './ProductGallery/ProductGallery';
19
20
  import { ProductGalleryGreen } from './ProductGalleryGreen/ProductGalleryGreen';
20
21
  import { ProductTile } from './ProductTile/ProductTile';
21
22
  import { PromoTile } from './PromoTile/PromoTile';
22
- import { OtherProducts } from './OtherProducts/OtherProducts';
23
23
  import { Recommendation } from './Recommendation/Recommendation';
24
24
  import { StepsBlock } from './StepsBlock/StepsBlock';
25
25
  import { TariffsTable } from './TariffsTable/TariffsTable';
@@ -29,7 +29,7 @@ export const HeaderCell = JSX<HeaderCellProps>(({ icon, image, title, link }) =>
29
29
  />
30
30
  )}
31
31
  {image?.src && <Img className="mb-[18px]" image={image} />}
32
- {title && <Heading headingType="h4" className="text-center text-white" title={title} />}
32
+ {title && <Heading headingType="h4" as="h3" className="text-center text-white" title={title} />}
33
33
  {link?.text && (
34
34
  <div className="mt-auto w-full">
35
35
  <Button
@@ -31,7 +31,7 @@ export const TableCell = JSX<TableCellProps>(({ cell, isFirstRow, isLastRow, isF
31
31
  const renderCellInner = ({ label, description }: CellData, i: number, isFillGradient: boolean) => (
32
32
  <div key={String(i)} className="first:pt-7 pt-6 last:pb-7">
33
33
  {label && (
34
- <h5 className={`text-xl font-medium m-0 ${isFillGradient ? 'text-white' : ''}`}>{label}</h5>
34
+ <h4 className={`text-xl font-medium m-0 ${isFillGradient ? 'text-white' : ''}`}>{label}</h4>
35
35
  )}
36
36
  {description && (
37
37
  <div