@gravity-ui/page-constructor 6.3.2-alpha.5 → 6.3.2-alpha.7

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 (384) hide show
  1. package/README.md +98 -10
  2. package/build/cjs/blocks/FoldableList/FoldableList.css +13 -0
  3. package/build/cjs/blocks/FoldableList/FoldableList.d.ts +3 -0
  4. package/build/cjs/blocks/FoldableList/FoldableList.js +31 -0
  5. package/build/cjs/blocks/FoldableList/FoldableList.js.map +1 -0
  6. package/build/cjs/blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.css +78 -0
  7. package/build/cjs/blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.d.ts +2 -0
  8. package/build/cjs/blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.js +20 -0
  9. package/build/cjs/blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.js.map +1 -0
  10. package/build/cjs/blocks/FoldableList/schema.d.ts +140 -0
  11. package/build/cjs/blocks/FoldableList/schema.js +39 -0
  12. package/build/cjs/blocks/FoldableList/schema.js.map +1 -0
  13. package/build/cjs/blocks/Header/Header.css +12 -1
  14. package/build/cjs/blocks/Header/Header.js +4 -1
  15. package/build/cjs/blocks/Header/Header.js.map +1 -1
  16. package/build/cjs/blocks/Header/schema.d.ts +10 -0
  17. package/build/cjs/blocks/Header/schema.js +5 -0
  18. package/build/cjs/blocks/Header/schema.js.map +1 -1
  19. package/build/cjs/blocks/HeaderSlider/schema.d.ts +5 -0
  20. package/build/cjs/blocks/Slider/Slider.js +4 -1
  21. package/build/cjs/blocks/Slider/Slider.js.map +1 -1
  22. package/build/cjs/blocks/index.d.ts +1 -0
  23. package/build/cjs/blocks/index.js +3 -1
  24. package/build/cjs/blocks/index.js.map +1 -1
  25. package/build/cjs/common/store.d.ts +1 -0
  26. package/build/cjs/common/store.js +1 -0
  27. package/build/cjs/common/store.js.map +1 -1
  28. package/build/cjs/common/types/forms.d.ts +12 -1
  29. package/build/cjs/common/types/forms.js.map +1 -1
  30. package/build/cjs/components/FullscreenImage/FullscreenImage.css +1 -1
  31. package/build/cjs/components/ReactPlayer/ReactPlayer.js +4 -1
  32. package/build/cjs/components/ReactPlayer/ReactPlayer.js.map +1 -1
  33. package/build/cjs/constructor-items.d.ts +1 -0
  34. package/build/cjs/constructor-items.js +4 -4
  35. package/build/cjs/constructor-items.js.map +1 -1
  36. package/build/cjs/containers/PageConstructor/PageConstructor.js +18 -1
  37. package/build/cjs/containers/PageConstructor/PageConstructor.js.map +1 -1
  38. package/build/cjs/editor-v2/components/DynamicForm/DynamicForm.js +8 -1
  39. package/build/cjs/editor-v2/components/DynamicForm/DynamicForm.js.map +1 -1
  40. package/build/cjs/editor-v2/components/DynamicForm/FieldBase/FieldBase.css +0 -1
  41. package/build/cjs/editor-v2/components/DynamicForm/Fields/AnyOf/AnyOf.css +6 -0
  42. package/build/cjs/editor-v2/components/DynamicForm/Fields/AnyOf/AnyOf.d.ts +9 -0
  43. package/build/cjs/editor-v2/components/DynamicForm/Fields/AnyOf/AnyOf.js +35 -0
  44. package/build/cjs/editor-v2/components/DynamicForm/Fields/AnyOf/AnyOf.js.map +1 -0
  45. package/build/cjs/editor-v2/components/Tabs/Tabs.css +23 -2
  46. package/build/cjs/editor-v2/containers/BlockConfigForm/BlockConfigForm.css +0 -1
  47. package/build/cjs/editor-v2/containers/BlocksList/BlocksList.css +2 -1
  48. package/build/cjs/editor-v2/containers/GlobalConfig/GlobalConfig.css +0 -1
  49. package/build/cjs/editor-v2/containers/MiddleScreen/MiddleScreen.css +30 -0
  50. package/build/cjs/editor-v2/containers/MiddleScreen/MiddleScreen.js +9 -7
  51. package/build/cjs/editor-v2/containers/MiddleScreen/MiddleScreen.js.map +1 -1
  52. package/build/cjs/editor-v2/containers/SourceCode/SourceCode.d.ts +2 -1
  53. package/build/cjs/editor-v2/containers/SourceCode/SourceCode.js +26 -4
  54. package/build/cjs/editor-v2/containers/SourceCode/SourceCode.js.map +1 -1
  55. package/build/cjs/editor-v2/containers/ViewSwitches/ViewSwitches.js +4 -4
  56. package/build/cjs/editor-v2/containers/ViewSwitches/ViewSwitches.js.map +1 -1
  57. package/build/cjs/editor-v2/hooks/useEditorTabs.js +2 -2
  58. package/build/cjs/editor-v2/hooks/useEditorTabs.js.map +1 -1
  59. package/build/cjs/editor-v2/store.d.ts +1 -0
  60. package/build/cjs/editor-v2/store.js +3 -0
  61. package/build/cjs/editor-v2/store.js.map +1 -1
  62. package/build/cjs/hooks/usePCEditorBlockMouseEvents.d.ts +1 -0
  63. package/build/cjs/hooks/usePCEditorBlockMouseEvents.js +1 -0
  64. package/build/cjs/hooks/usePCEditorBlockMouseEvents.js.map +1 -1
  65. package/build/cjs/hooks/usePCEditorItemWrap.d.ts +1 -0
  66. package/build/cjs/internal-typings/global.d.ts +1 -0
  67. package/build/cjs/models/constructor-items/blocks.d.ts +19 -1
  68. package/build/cjs/models/constructor-items/blocks.js +1 -0
  69. package/build/cjs/models/constructor-items/blocks.js.map +1 -1
  70. package/build/cjs/models/constructor-items/sub-blocks.d.ts +2 -1
  71. package/build/cjs/models/constructor-items/sub-blocks.js.map +1 -1
  72. package/build/cjs/navigation/schema.d.ts +2 -0
  73. package/build/cjs/navigation/schema.js +12 -3
  74. package/build/cjs/navigation/schema.js.map +1 -1
  75. package/build/cjs/schema/constants.js +1 -0
  76. package/build/cjs/schema/constants.js.map +1 -1
  77. package/build/cjs/schema/index.d.ts +2 -0
  78. package/build/cjs/schema/validators/blocks.d.ts +1 -0
  79. package/build/cjs/schema/validators/blocks.js +1 -0
  80. package/build/cjs/schema/validators/blocks.js.map +1 -1
  81. package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +1 -1
  82. package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.js +5 -1
  83. package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.js.map +1 -1
  84. package/build/cjs/sub-blocks/HubspotForm/index.js +2 -2
  85. package/build/cjs/sub-blocks/HubspotForm/index.js.map +1 -1
  86. package/build/cjs/sub-blocks/HubspotForm/setHubspotDefaultValues.d.ts +2 -0
  87. package/build/cjs/sub-blocks/HubspotForm/setHubspotDefaultValues.js +51 -0
  88. package/build/cjs/sub-blocks/HubspotForm/setHubspotDefaultValues.js.map +1 -0
  89. package/build/cjs/text-transform/config.js +25 -1
  90. package/build/cjs/text-transform/config.js.map +1 -1
  91. package/build/cjs/utils/form-generator.js +27 -0
  92. package/build/cjs/utils/form-generator.js.map +1 -1
  93. package/build/cjs/utils/hubspot.d.ts +1 -0
  94. package/build/cjs/utils/hubspot.js.map +1 -1
  95. package/build/esm/blocks/FoldableList/FoldableList.css +13 -0
  96. package/build/esm/blocks/FoldableList/FoldableList.d.ts +4 -0
  97. package/build/esm/blocks/FoldableList/FoldableList.js +29 -0
  98. package/build/esm/blocks/FoldableList/FoldableList.js.map +1 -0
  99. package/build/esm/blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.css +78 -0
  100. package/build/esm/blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.d.ts +3 -0
  101. package/build/esm/blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.js +16 -0
  102. package/build/esm/blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.js.map +1 -0
  103. package/build/esm/blocks/FoldableList/schema.d.ts +140 -0
  104. package/build/esm/blocks/FoldableList/schema.js +35 -0
  105. package/build/esm/blocks/FoldableList/schema.js.map +1 -0
  106. package/build/esm/blocks/Header/Header.css +12 -1
  107. package/build/esm/blocks/Header/Header.js +4 -1
  108. package/build/esm/blocks/Header/Header.js.map +1 -1
  109. package/build/esm/blocks/Header/schema.d.ts +10 -0
  110. package/build/esm/blocks/Header/schema.js +5 -0
  111. package/build/esm/blocks/Header/schema.js.map +1 -1
  112. package/build/esm/blocks/HeaderSlider/schema.d.ts +5 -0
  113. package/build/esm/blocks/Slider/Slider.js +4 -1
  114. package/build/esm/blocks/Slider/Slider.js.map +1 -1
  115. package/build/esm/blocks/index.d.ts +1 -0
  116. package/build/esm/blocks/index.js +1 -0
  117. package/build/esm/blocks/index.js.map +1 -1
  118. package/build/esm/common/store.d.ts +1 -0
  119. package/build/esm/common/store.js +1 -0
  120. package/build/esm/common/store.js.map +1 -1
  121. package/build/esm/common/types/forms.d.ts +12 -1
  122. package/build/esm/common/types/forms.js.map +1 -1
  123. package/build/esm/components/FullscreenImage/FullscreenImage.css +1 -1
  124. package/build/esm/components/ReactPlayer/ReactPlayer.js +4 -1
  125. package/build/esm/components/ReactPlayer/ReactPlayer.js.map +1 -1
  126. package/build/esm/constructor-items.d.ts +1 -0
  127. package/build/esm/constructor-items.js +5 -5
  128. package/build/esm/constructor-items.js.map +1 -1
  129. package/build/esm/containers/PageConstructor/PageConstructor.js +18 -1
  130. package/build/esm/containers/PageConstructor/PageConstructor.js.map +1 -1
  131. package/build/esm/editor-v2/components/DynamicForm/DynamicForm.js +8 -1
  132. package/build/esm/editor-v2/components/DynamicForm/DynamicForm.js.map +1 -1
  133. package/build/esm/editor-v2/components/DynamicForm/FieldBase/FieldBase.css +0 -1
  134. package/build/esm/editor-v2/components/DynamicForm/Fields/AnyOf/AnyOf.css +6 -0
  135. package/build/esm/editor-v2/components/DynamicForm/Fields/AnyOf/AnyOf.d.ts +10 -0
  136. package/build/esm/editor-v2/components/DynamicForm/Fields/AnyOf/AnyOf.js +33 -0
  137. package/build/esm/editor-v2/components/DynamicForm/Fields/AnyOf/AnyOf.js.map +1 -0
  138. package/build/esm/editor-v2/components/Tabs/Tabs.css +23 -2
  139. package/build/esm/editor-v2/containers/BlockConfigForm/BlockConfigForm.css +0 -1
  140. package/build/esm/editor-v2/containers/BlocksList/BlocksList.css +2 -1
  141. package/build/esm/editor-v2/containers/GlobalConfig/GlobalConfig.css +0 -1
  142. package/build/esm/editor-v2/containers/MiddleScreen/MiddleScreen.css +30 -0
  143. package/build/esm/editor-v2/containers/MiddleScreen/MiddleScreen.js +10 -8
  144. package/build/esm/editor-v2/containers/MiddleScreen/MiddleScreen.js.map +1 -1
  145. package/build/esm/editor-v2/containers/SourceCode/SourceCode.d.ts +2 -1
  146. package/build/esm/editor-v2/containers/SourceCode/SourceCode.js +26 -4
  147. package/build/esm/editor-v2/containers/SourceCode/SourceCode.js.map +1 -1
  148. package/build/esm/editor-v2/containers/ViewSwitches/ViewSwitches.js +5 -5
  149. package/build/esm/editor-v2/containers/ViewSwitches/ViewSwitches.js.map +1 -1
  150. package/build/esm/editor-v2/hooks/useEditorTabs.js +2 -2
  151. package/build/esm/editor-v2/hooks/useEditorTabs.js.map +1 -1
  152. package/build/esm/editor-v2/store.d.ts +1 -0
  153. package/build/esm/editor-v2/store.js +3 -0
  154. package/build/esm/editor-v2/store.js.map +1 -1
  155. package/build/esm/hooks/usePCEditorBlockMouseEvents.d.ts +1 -0
  156. package/build/esm/hooks/usePCEditorBlockMouseEvents.js +1 -0
  157. package/build/esm/hooks/usePCEditorBlockMouseEvents.js.map +1 -1
  158. package/build/esm/hooks/usePCEditorItemWrap.d.ts +1 -0
  159. package/build/esm/internal-typings/global.d.ts +1 -0
  160. package/build/esm/models/constructor-items/blocks.d.ts +19 -1
  161. package/build/esm/models/constructor-items/blocks.js +1 -0
  162. package/build/esm/models/constructor-items/blocks.js.map +1 -1
  163. package/build/esm/models/constructor-items/sub-blocks.d.ts +2 -1
  164. package/build/esm/models/constructor-items/sub-blocks.js.map +1 -1
  165. package/build/esm/navigation/schema.d.ts +2 -0
  166. package/build/esm/navigation/schema.js +12 -3
  167. package/build/esm/navigation/schema.js.map +1 -1
  168. package/build/esm/schema/constants.js +2 -1
  169. package/build/esm/schema/constants.js.map +1 -1
  170. package/build/esm/schema/index.d.ts +2 -0
  171. package/build/esm/schema/validators/blocks.d.ts +1 -0
  172. package/build/esm/schema/validators/blocks.js +1 -0
  173. package/build/esm/schema/validators/blocks.js.map +1 -1
  174. package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +1 -1
  175. package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.js +5 -1
  176. package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.js.map +1 -1
  177. package/build/esm/sub-blocks/HubspotForm/index.js +2 -2
  178. package/build/esm/sub-blocks/HubspotForm/index.js.map +1 -1
  179. package/build/esm/sub-blocks/HubspotForm/setHubspotDefaultValues.d.ts +2 -0
  180. package/build/esm/sub-blocks/HubspotForm/setHubspotDefaultValues.js +47 -0
  181. package/build/esm/sub-blocks/HubspotForm/setHubspotDefaultValues.js.map +1 -0
  182. package/build/esm/text-transform/config.js +25 -1
  183. package/build/esm/text-transform/config.js.map +1 -1
  184. package/build/esm/utils/form-generator.js +27 -0
  185. package/build/esm/utils/form-generator.js.map +1 -1
  186. package/build/esm/utils/hubspot.d.ts +1 -0
  187. package/build/esm/utils/hubspot.js.map +1 -1
  188. package/package.json +13 -15
  189. package/schema/index.js +1 -1
  190. package/server/models/constructor-items/blocks.d.ts +19 -1
  191. package/server/models/constructor-items/blocks.js +1 -0
  192. package/server/models/constructor-items/sub-blocks.d.ts +2 -1
  193. package/server/text-transform/config.js +25 -1
  194. package/server/utils/hubspot.d.ts +1 -0
  195. package/widget/{5287.index.js → 1092.index.js} +1 -1
  196. package/widget/{8092.index.js → 1130.index.js} +1 -1
  197. package/widget/1219.index.js +1 -0
  198. package/widget/{2390.index.js → 122.index.js} +1 -1
  199. package/widget/{6817.index.js → 1289.index.js} +1 -1
  200. package/widget/{2921.index.js → 1335.index.js} +1 -1
  201. package/widget/{1876.index.js → 1340.index.js} +1 -1
  202. package/widget/{3901.index.js → 1349.index.js} +1 -1
  203. package/widget/1532.index.js +1 -0
  204. package/widget/{2957.index.js → 1750.index.js} +1 -1
  205. package/widget/{5105.index.js → 1995.index.js} +1 -1
  206. package/widget/{5418.index.js → 2010.index.js} +1 -1
  207. package/widget/{9517.index.js → 2026.index.js} +1 -1
  208. package/widget/{1794.index.js → 2187.index.js} +1 -1
  209. package/widget/{7548.index.js → 2218.index.js} +1 -1
  210. package/widget/225.index.js +1 -0
  211. package/widget/2338.index.js +1 -0
  212. package/widget/{4653.index.js → 2355.index.js} +1 -1
  213. package/widget/{5001.index.js → 2369.index.js} +1 -1
  214. package/widget/{4127.index.js → 2487.index.js} +1 -1
  215. package/widget/{6165.index.js → 2498.index.js} +1 -1
  216. package/widget/{5254.index.js → 2509.index.js} +1 -1
  217. package/widget/2544.index.js +1 -1
  218. package/widget/2619.index.js +1 -0
  219. package/widget/{5941.index.js → 2673.index.js} +1 -1
  220. package/widget/{4717.index.js → 2698.index.js} +1 -1
  221. package/widget/{7427.index.js → 2706.index.js} +1 -1
  222. package/widget/{8602.index.js → 2739.index.js} +1 -1
  223. package/widget/2745.index.js +1 -0
  224. package/widget/2796.index.js +1 -0
  225. package/widget/{7573.index.js → 2830.index.js} +1 -1
  226. package/widget/{3237.index.js → 2878.index.js} +1 -1
  227. package/widget/292.index.js +1 -0
  228. package/widget/2979.index.js +1 -0
  229. package/widget/3187.index.js +1 -0
  230. package/widget/321.index.js +1 -0
  231. package/widget/{5437.index.js → 3222.index.js} +1 -1
  232. package/widget/{1987.index.js → 3225.index.js} +1 -1
  233. package/widget/{7719.index.js → 3309.index.js} +1 -1
  234. package/widget/{4254.index.js → 3433.index.js} +1 -1
  235. package/widget/{2722.index.js → 3473.index.js} +1 -1
  236. package/widget/3532.index.js +1 -0
  237. package/widget/3562.index.js +1 -0
  238. package/widget/{6148.index.js → 3672.index.js} +1 -1
  239. package/widget/{4990.index.js → 3713.index.js} +1 -1
  240. package/widget/{8894.index.js → 3860.index.js} +1 -1
  241. package/widget/{5551.index.js → 3900.index.js} +1 -1
  242. package/widget/{6629.index.js → 4007.index.js} +1 -1
  243. package/widget/{7467.index.js → 4061.index.js} +1 -1
  244. package/widget/{5423.index.js → 4072.index.js} +1 -1
  245. package/widget/{4144.index.js → 4173.index.js} +1 -1
  246. package/widget/4288.index.js +1 -0
  247. package/widget/{8242.index.js → 4309.index.js} +1 -1
  248. package/widget/{8146.index.js → 4334.index.js} +1 -1
  249. package/widget/{9339.index.js → 4405.index.js} +1 -1
  250. package/widget/4457.index.js +1 -0
  251. package/widget/{8768.index.js → 4485.index.js} +1 -1
  252. package/widget/4509.index.js +1 -0
  253. package/widget/{4067.index.js → 4608.index.js} +1 -1
  254. package/widget/465.index.js +1 -0
  255. package/widget/{7118.index.js → 4719.index.js} +1 -1
  256. package/widget/4734.index.js +1 -0
  257. package/widget/4780.index.js +1 -0
  258. package/widget/4895.index.js +1 -0
  259. package/widget/{790.index.js → 494.index.js} +1 -1
  260. package/widget/5012.index.js +1 -0
  261. package/widget/{4722.index.js → 5084.index.js} +1 -1
  262. package/widget/5285.index.js +1 -0
  263. package/widget/5376.index.js +1 -0
  264. package/widget/539.index.js +1 -0
  265. package/widget/5414.index.js +1 -0
  266. package/widget/{8980.index.js → 5513.index.js} +1 -1
  267. package/widget/5530.index.js +1 -0
  268. package/widget/5571.index.js +1 -0
  269. package/widget/{8540.index.js → 5592.index.js} +1 -1
  270. package/widget/5616.index.js +1 -0
  271. package/widget/{5903.index.js → 5662.index.js} +1 -1
  272. package/widget/{7109.index.js → 5665.index.js} +1 -1
  273. package/widget/{8792.index.js → 5681.index.js} +1 -1
  274. package/widget/5760.index.js +1 -0
  275. package/widget/{6257.index.js → 5811.index.js} +1 -1
  276. package/widget/{5054.index.js → 5826.index.js} +1 -1
  277. package/widget/{1560.index.js → 5877.index.js} +1 -1
  278. package/widget/{9149.index.js → 5944.index.js} +1 -1
  279. package/widget/{8341.index.js → 5977.index.js} +1 -1
  280. package/widget/{3646.index.js → 5993.index.js} +1 -1
  281. package/widget/{2009.index.js → 6007.index.js} +1 -1
  282. package/widget/{3852.index.js → 6033.index.js} +1 -1
  283. package/widget/{5567.index.js → 6101.index.js} +1 -1
  284. package/widget/623.index.js +1 -0
  285. package/widget/{7989.index.js → 6290.index.js} +1 -1
  286. package/widget/6364.index.js +1 -0
  287. package/widget/{7387.index.js → 6400.index.js} +1 -1
  288. package/widget/{5473.index.js → 6462.index.js} +1 -1
  289. package/widget/6467.index.js +1 -0
  290. package/widget/{6622.index.js → 6481.index.js} +1 -1
  291. package/widget/{4888.index.js → 6605.index.js} +1 -1
  292. package/widget/{2966.index.js → 6803.index.js} +1 -1
  293. package/widget/{5627.index.js → 6847.index.js} +1 -1
  294. package/widget/{2019.index.js → 7081.index.js} +1 -1
  295. package/widget/7205.index.js +1 -0
  296. package/widget/{5596.index.js → 7250.index.js} +1 -1
  297. package/widget/{7763.index.js → 7317.index.js} +1 -1
  298. package/widget/7329.index.js +1 -0
  299. package/widget/{5159.index.js → 7406.index.js} +1 -1
  300. package/widget/{7632.index.js → 7409.index.js} +1 -1
  301. package/widget/{3783.index.js → 7420.index.js} +1 -1
  302. package/widget/{7101.index.js → 7439.index.js} +1 -1
  303. package/widget/{9197.index.js → 7674.index.js} +1 -1
  304. package/widget/{5805.index.js → 7690.index.js} +1 -1
  305. package/widget/{2641.index.js → 7741.index.js} +1 -1
  306. package/widget/{4724.index.js → 7933.index.js} +1 -1
  307. package/widget/{9132.index.js → 8003.index.js} +1 -1
  308. package/widget/813.index.js +1 -0
  309. package/widget/{6513.index.js → 8142.index.js} +1 -1
  310. package/widget/{8562.index.js → 8298.index.js} +1 -1
  311. package/widget/{7200.index.js → 8361.index.js} +1 -1
  312. package/widget/{4855.index.js → 8418.index.js} +1 -1
  313. package/widget/860.index.js +1 -0
  314. package/widget/{1796.index.js → 8615.index.js} +1 -1
  315. package/widget/{6312.index.js → 8660.index.js} +1 -1
  316. package/widget/880.index.js +1 -0
  317. package/widget/8804.index.js +1 -0
  318. package/widget/8809.index.js +1 -0
  319. package/widget/{9157.index.js → 8928.index.js} +1 -1
  320. package/widget/912.index.js +1 -0
  321. package/widget/9160.index.js +1 -0
  322. package/widget/{5914.index.js → 9252.index.js} +1 -1
  323. package/widget/{3706.index.js → 9286.index.js} +1 -1
  324. package/widget/{2502.index.js → 9294.index.js} +1 -1
  325. package/widget/{9182.index.js → 9423.index.js} +1 -1
  326. package/widget/{8477.index.js → 9464.index.js} +1 -1
  327. package/widget/950.index.js +1 -0
  328. package/widget/952.index.js +1 -0
  329. package/widget/9677.index.js +1 -0
  330. package/widget/9751.index.js +1 -0
  331. package/widget/{3220.index.js → 9836.index.js} +1 -1
  332. package/widget/{2376.index.js → 9865.index.js} +1 -1
  333. package/widget/{5109.index.js → 9881.index.js} +1 -1
  334. package/widget/9911.index.js +1 -1
  335. package/widget/{7822.index.js → 9964.index.js} +1 -1
  336. package/widget/{9091.index.js → 9990.index.js} +1 -1
  337. package/widget/9998.index.js +1 -0
  338. package/widget/index.js +1 -1
  339. package/widget/1113.index.js +0 -1
  340. package/widget/123.index.js +0 -1
  341. package/widget/1573.index.js +0 -1
  342. package/widget/2030.index.js +0 -1
  343. package/widget/229.index.js +0 -1
  344. package/widget/261.index.js +0 -1
  345. package/widget/302.index.js +0 -1
  346. package/widget/3035.index.js +0 -1
  347. package/widget/313.index.js +0 -1
  348. package/widget/3521.index.js +0 -1
  349. package/widget/3864.index.js +0 -1
  350. package/widget/3939.index.js +0 -1
  351. package/widget/4017.index.js +0 -1
  352. package/widget/4149.index.js +0 -1
  353. package/widget/4502.index.js +0 -1
  354. package/widget/466.index.js +0 -1
  355. package/widget/504.index.js +0 -1
  356. package/widget/5321.index.js +0 -1
  357. package/widget/5742.index.js +0 -1
  358. package/widget/5817.index.js +0 -1
  359. package/widget/600.index.js +0 -1
  360. package/widget/6023.index.js +0 -1
  361. package/widget/6159.index.js +0 -1
  362. package/widget/617.index.js +0 -1
  363. package/widget/6183.index.js +0 -1
  364. package/widget/6509.index.js +0 -1
  365. package/widget/6636.index.js +0 -1
  366. package/widget/6831.index.js +0 -1
  367. package/widget/6953.index.js +0 -1
  368. package/widget/7296.index.js +0 -1
  369. package/widget/7486.index.js +0 -1
  370. package/widget/7496.index.js +0 -1
  371. package/widget/7553.index.js +0 -1
  372. package/widget/758.index.js +0 -1
  373. package/widget/772.index.js +0 -1
  374. package/widget/7797.index.js +0 -1
  375. package/widget/8066.index.js +0 -1
  376. package/widget/8507.index.js +0 -1
  377. package/widget/8529.index.js +0 -1
  378. package/widget/8727.index.js +0 -1
  379. package/widget/8864.index.js +0 -1
  380. package/widget/8889.index.js +0 -1
  381. package/widget/953.index.js +0 -1
  382. package/widget/9670.index.js +0 -1
  383. package/widget/9682.index.js +0 -1
  384. package/widget/9928.index.js +0 -1
package/README.md CHANGED
@@ -14,24 +14,112 @@ For the format of input data and list of available blocks, see the [documentatio
14
14
  npm install @gravity-ui/page-constructor
15
15
  ```
16
16
 
17
- ## Required dependencies
17
+ ## Quick start
18
18
 
19
- Please note that to start using the package, your project must also have the following installed: `@diplodoc/transform`, `@gravity-ui/uikit`, `react`. Check out the `peerDependencies` section of `package.json` for accurate information.
19
+ First, we need a React project and some kind of server. For example, you can create a React project using Vite and an Express server, or you can create Next.js application - it will have a client and server side at once.
20
20
 
21
- ### Getting started
21
+ Install the required dependencies:
22
22
 
23
- The page constructor is imported as a React component. To make sure it runs properly, wrap it in `PageConstructorProvider`:
23
+ ```shell
24
+ npm install @gravity-ui/page-constructor @diplodoc/transform @gravity-ui/uikit
25
+ ```
24
26
 
25
- ```jsx
27
+ Insert the `Page Constructor` to the page. To work correctly, it must be wrapped in a `PageConstructorProvider`:
28
+
29
+ ```tsx
26
30
  import {PageConstructor, PageConstructorProvider} from '@gravity-ui/page-constructor';
31
+ import '@gravity-ui/page-constructor/styles/styles.scss';
32
+
33
+ const App = () => {
34
+ const content = {
35
+ blocks: [
36
+ {
37
+ type: 'header-block',
38
+ title: 'Hello world',
39
+ background: {color: '#f0f0f0'},
40
+ description:
41
+ '**Congratulations!** Have you built a [page-constructor](https://github.com/gravity-ui/page-constructor) into your website',
42
+ },
43
+ ],
44
+ };
45
+
46
+ return (
47
+ <PageConstructorProvider>
48
+ <PageConstructor content={content} />
49
+ </PageConstructorProvider>
50
+ );
51
+ };
27
52
 
28
- const Page: React.PropsWithChildren<PageProps> = ({content}) => (
29
- <PageConstructorProvider>
30
- <PageConstructor content={content} />
31
- </PageConstructorProvider>
32
- );
53
+ export default App;
54
+ ```
55
+
56
+ This was the simplest example of a connection. In order for YFM markup to work, you need to process content on the server and receive it on the client.
57
+
58
+ If your server is a separate application, then you need to install page-constructor:
59
+
60
+ ```shell
61
+ npm install @gravity-ui/page-constructor
62
+ ```
63
+
64
+ To process YFM in all base blocks, call the `contentTransformer` and pass the content and options there:
65
+
66
+ ```ts
67
+ const express = require('express');
68
+ const app = express();
69
+ const {contentTransformer} = require('@gravity-ui/page-constructor/server');
70
+
71
+ const content = {
72
+ blocks: [
73
+ {
74
+ type: 'header-block',
75
+ title: 'Hello world',
76
+ background: {color: '#f0f0f0'},
77
+ description:
78
+ '**Congratulations!** Have you built a [page-constructor](https://github.com/gravity-ui/page-constructor) into your website',
79
+ },
80
+ ],
81
+ };
82
+
83
+ app.get('/content', (req, res) => {
84
+ res.send({content: contentTransformer({content, options: {lang: 'en'}})});
85
+ });
86
+
87
+ app.listen(3000);
88
+ ```
89
+
90
+ On the client, add an endpoint call to receive content:
91
+
92
+ ```tsx
93
+ import {PageConstructor, PageConstructorProvider} from '@gravity-ui/page-constructor';
94
+ import '@gravity-ui/page-constructor/styles/styles.scss';
95
+ import {useEffect, useState} from 'react';
96
+
97
+ const App = () => {
98
+ const [content, setContent] = useState();
99
+
100
+ useEffect(() => {
101
+ (async () => {
102
+ const response = await fetch('http://localhost:3000/content').then((r) => r.json());
103
+ setContent(response.content);
104
+ })();
105
+ }, []);
106
+
107
+ return (
108
+ <PageConstructorProvider>
109
+ <PageConstructor content={content} />
110
+ </PageConstructorProvider>
111
+ );
112
+ };
113
+
114
+ export default App;
33
115
  ```
34
116
 
117
+ ### Ready-made template
118
+
119
+ To start a new project, you can use the [ready-made template on Next.js ](https://github.com/gravity-ui/page-constructor-website-template) which we have prepared.
120
+
121
+ ## Documentation
122
+
35
123
  ### Parameters
36
124
 
37
125
  ```typescript
@@ -0,0 +1,13 @@
1
+ /* use this for style redefinitions to awoid problems with
2
+ unpredictable css rules order in build */
3
+ .pc-FoldableList__title {
4
+ top: calc(var(--header-height) + 32px);
5
+ position: sticky;
6
+ margin-bottom: 32px;
7
+ margin-right: 64px;
8
+ }
9
+ @media (max-width: 769px) {
10
+ .pc-FoldableList__title {
11
+ margin-right: 0;
12
+ }
13
+ }
@@ -0,0 +1,3 @@
1
+ import { FoldableListProps } from "../../models/index.js";
2
+ declare const FoldableListBlock: (props: FoldableListProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default FoldableListBlock;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const grid_1 = require("../../grid/index.js");
7
+ const sub_blocks_1 = require("../../sub-blocks/index.js");
8
+ const utils_1 = require("../../utils/index.js");
9
+ const FoldableListBlockItem_1 = require("./FoldableListBlockItem/FoldableListBlockItem.js");
10
+ const b = (0, utils_1.block)('FoldableList');
11
+ const FoldableListBlock = (props) => {
12
+ const { title, text, additionalInfo, links, buttons, items, list } = props;
13
+ const [opened, setOpened] = React.useState([0]);
14
+ const toggleItem = (index) => {
15
+ let newState;
16
+ if (opened.includes(index)) {
17
+ newState = opened.filter((itemIndex) => itemIndex !== index);
18
+ }
19
+ else {
20
+ newState = [...opened, index];
21
+ }
22
+ setOpened(newState);
23
+ };
24
+ return ((0, jsx_runtime_1.jsx)("div", { className: b(), itemScope: true, children: (0, jsx_runtime_1.jsxs)(grid_1.Row, { children: [(0, jsx_runtime_1.jsx)(grid_1.Col, { sizes: { all: 12, md: 4 }, children: (0, jsx_runtime_1.jsx)("div", { className: b('title'), children: (0, jsx_runtime_1.jsx)(sub_blocks_1.Content, { title: title, text: text, additionalInfo: additionalInfo, links: links, list: list, buttons: buttons, colSizes: { all: 12, md: 12 } }) }) }), (0, jsx_runtime_1.jsx)(grid_1.Col, { sizes: { all: 12, md: 8 }, role: 'list', children: items.map(({ title: itemTitle, text: itemText, link, listStyle = 'dash' }, index) => {
25
+ const isOpened = opened.includes(index);
26
+ const onClick = () => toggleItem(index);
27
+ return ((0, jsx_runtime_1.jsx)(FoldableListBlockItem_1.FoldableListBlockItem, { title: itemTitle, text: itemText, link: link, listStyle: listStyle, isOpened: isOpened, onClick: onClick }, itemTitle));
28
+ }) })] }) }));
29
+ };
30
+ exports.default = FoldableListBlock;
31
+ //# sourceMappingURL=FoldableList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FoldableList.js","sourceRoot":"../../../../src","sources":["blocks/FoldableList/FoldableList.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,8CAAoC;AAEpC,0DAAyC;AACzC,gDAAkC;AAElC,4FAAoF;AAIpF,MAAM,CAAC,GAAG,IAAA,aAAK,EAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,iBAAiB,GAAG,CAAC,KAAwB,EAAE,EAAE;IACnD,MAAM,EAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,GAAG,KAAK,CAAC;IACzE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE;QACjC,IAAI,QAAQ,CAAC;QAEb,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAiB,EAAE,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACJ,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CACH,gCAAK,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS,kBAC1B,wBAAC,UAAG,eACA,uBAAC,UAAG,IAAC,KAAK,EAAE,EAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAC,YACxB,gCAAK,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YACtB,uBAAC,oBAAO,IACJ,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,EAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAC,GAC7B,GACA,GACJ,EACN,uBAAC,UAAG,IAAC,KAAK,EAAE,EAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAC,EAAE,IAAI,EAAE,MAAM,YACrC,KAAK,CAAC,GAAG,CACN,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,EAAC,EAAE,KAAK,EAAE,EAAE;wBACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACxC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;wBAExC,OAAO,CACH,uBAAC,6CAAqB,IAElB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,IANX,SAAS,CAOhB,CACL,CAAC;oBACN,CAAC,CACJ,GACC,IACJ,GACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {Col, Row} from '../../grid';\nimport {FoldableListProps} from '../../models';\nimport {Content} from '../../sub-blocks';\nimport {block} from '../../utils';\n\nimport {FoldableListBlockItem} from './FoldableListBlockItem/FoldableListBlockItem';\n\nimport './FoldableList.scss';\n\nconst b = block('FoldableList');\n\nconst FoldableListBlock = (props: FoldableListProps) => {\n const {title, text, additionalInfo, links, buttons, items, list} = props;\n const [opened, setOpened] = React.useState<number[]>([0]);\n\n const toggleItem = (index: number) => {\n let newState;\n\n if (opened.includes(index)) {\n newState = opened.filter((itemIndex: number) => itemIndex !== index);\n } else {\n newState = [...opened, index];\n }\n\n setOpened(newState);\n };\n\n return (\n <div className={b()} itemScope>\n <Row>\n <Col sizes={{all: 12, md: 4}}>\n <div className={b('title')}>\n <Content\n title={title}\n text={text}\n additionalInfo={additionalInfo}\n links={links}\n list={list}\n buttons={buttons}\n colSizes={{all: 12, md: 12}}\n />\n </div>\n </Col>\n <Col sizes={{all: 12, md: 8}} role={'list'}>\n {items.map(\n ({title: itemTitle, text: itemText, link, listStyle = 'dash'}, index) => {\n const isOpened = opened.includes(index);\n const onClick = () => toggleItem(index);\n\n return (\n <FoldableListBlockItem\n key={itemTitle}\n title={itemTitle}\n text={itemText}\n link={link}\n listStyle={listStyle}\n isOpened={isOpened}\n onClick={onClick}\n />\n );\n },\n )}\n </Col>\n </Row>\n </div>\n );\n};\n\nexport default FoldableListBlock;\n"]}
@@ -0,0 +1,78 @@
1
+ .pc-FoldableListBlockItem__title {
2
+ margin: 0;
3
+ }
4
+
5
+ /* use this for style redefinitions to awoid problems with
6
+ unpredictable css rules order in build */
7
+ .pc-FoldableListBlockItem {
8
+ padding-bottom: 32px;
9
+ border-bottom: 1px solid var(--g-color-line-generic);
10
+ }
11
+ .pc-FoldableListBlockItem + .pc-FoldableListBlockItem {
12
+ padding-top: 32px;
13
+ }
14
+ .pc-FoldableListBlockItem__title {
15
+ display: inline-block;
16
+ margin: 0;
17
+ padding: 0;
18
+ font: inherit;
19
+ border: none;
20
+ outline: none;
21
+ color: inherit;
22
+ background: none;
23
+ cursor: pointer;
24
+ font-size: var(--g-text-header-1-font-size);
25
+ line-height: var(--g-text-header-1-line-height);
26
+ color: var(--pc-text-header-color);
27
+ font-weight: var(--g-text-accent-font-weight);
28
+ position: relative;
29
+ display: block;
30
+ width: 100%;
31
+ padding-right: 24px;
32
+ text-align: start;
33
+ cursor: pointer;
34
+ border-radius: var(--g-focus-border-radius);
35
+ }
36
+ .pc-FoldableListBlockItem__title:focus {
37
+ outline: 2px solid var(--g-color-line-focus);
38
+ outline-offset: 0;
39
+ }
40
+ .pc-FoldableListBlockItem__title:focus:not(:focus-visible) {
41
+ outline: 0;
42
+ }
43
+ .pc-FoldableListBlockItem__title a {
44
+ outline: none;
45
+ color: var(--g-color-text-link);
46
+ text-decoration: none;
47
+ cursor: pointer;
48
+ }
49
+ .utilityfocus .pc-FoldableListBlockItem__title a:focus {
50
+ outline: 2px solid #ffdb4d;
51
+ }
52
+ .pc-FoldableListBlockItem__title a:hover, .pc-FoldableListBlockItem__title a:active {
53
+ --pc-text-header-color: var(--g-color-text-link-hover);
54
+ color: var(--g-color-text-link-hover);
55
+ }
56
+ .pc-FoldableListBlockItem__arrow {
57
+ position: absolute;
58
+ right: 0;
59
+ top: 0;
60
+ bottom: 0;
61
+ margin: auto;
62
+ color: var(--g-color-text-primary);
63
+ }
64
+ .pc-FoldableListBlockItem__link {
65
+ font-size: var(--g-text-body-2-font-size);
66
+ line-height: var(--g-text-body-2-line-height);
67
+ }
68
+ .pc-FoldableListBlockItem__link.pc-FoldableListBlockItem__link a {
69
+ outline-offset: -2px;
70
+ border-radius: calc(var(--g-focus-border-radius) + 2px);
71
+ display: inline-block;
72
+ }
73
+
74
+ .pc-FoldableListBlockItem__text {
75
+ font-size: var(--g-text-body-2-font-size);
76
+ line-height: var(--g-text-body-2-line-height);
77
+ margin-top: 12px;
78
+ }
@@ -0,0 +1,2 @@
1
+ import { FoldableListBlockItemProps } from "../../../models/index.js";
2
+ export declare const FoldableListBlockItem: ({ title: itemTitle, text: itemText, link, listStyle, isOpened, onClick, }: FoldableListBlockItemProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FoldableListBlockItem = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const uikit_1 = require("@gravity-ui/uikit");
7
+ const components_1 = require("../../../components/index.js");
8
+ const Link_1 = tslib_1.__importDefault(require("../../../components/Link/Link.js"));
9
+ const utils_1 = require("../../../utils/index.js");
10
+ const b = (0, utils_1.block)('FoldableListBlockItem');
11
+ const FoldableListBlockItem = ({ title: itemTitle, text: itemText, link, listStyle = 'dash', isOpened, onClick, }) => {
12
+ const { onKeyDown } = (0, uikit_1.useActionHandlers)(onClick);
13
+ return ((0, jsx_runtime_1.jsxs)("div", { className: b(), itemScope: true, role: 'listitem', children: [(0, jsx_runtime_1.jsxs)("button", { className: b('title'), onClick: onClick, "aria-expanded": isOpened, onKeyDown: onKeyDown, children: [(0, jsx_runtime_1.jsx)(components_1.HTML, { children: itemTitle }), (0, jsx_runtime_1.jsx)(components_1.ToggleArrow, { open: isOpened, size: 16, type: 'vertical', iconType: "navigation", className: b('arrow') })] }), (0, jsx_runtime_1.jsx)(components_1.Foldable, { isOpened: isOpened, children: (0, jsx_runtime_1.jsxs)("div", { className: b('text'), "aria-hidden": !isOpened, children: [(0, jsx_runtime_1.jsx)(components_1.YFMWrapper, { content: itemText, modifiers: {
14
+ constructor: true,
15
+ constructorListStyle: true,
16
+ constructorListStyleDash: listStyle === 'dash',
17
+ } }), link && (0, jsx_runtime_1.jsx)(Link_1.default, { ...link, tabIndex: isOpened ? 0 : -1, className: b('link') })] }) })] }));
18
+ };
19
+ exports.FoldableListBlockItem = FoldableListBlockItem;
20
+ //# sourceMappingURL=FoldableListBlockItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FoldableListBlockItem.js","sourceRoot":"../../../../../src","sources":["blocks/FoldableList/FoldableListBlockItem/FoldableListBlockItem.tsx"],"names":[],"mappings":";;;;;AAAA,6CAAoD;AAEpD,6DAA4E;AAC5E,oFAAiD;AAEjD,mDAAqC;AAIrC,MAAM,CAAC,GAAG,IAAA,aAAK,EAAC,uBAAuB,CAAC,CAAC;AAElC,MAAM,qBAAqB,GAAG,CAAC,EAClC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,QAAQ,EACd,IAAI,EACJ,SAAS,GAAG,MAAM,EAClB,QAAQ,EACR,OAAO,GACkB,EAAE,EAAE;IAC7B,MAAM,EAAC,SAAS,EAAC,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;IAE/C,OAAO,CACH,iCAAK,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS,QAAC,IAAI,EAAE,UAAU,aAC3C,oCACI,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EACrB,OAAO,EAAE,OAAO,mBACD,QAAQ,EACvB,SAAS,EAAE,SAAS,aAEpB,uBAAC,iBAAI,cAAE,SAAS,GAAQ,EACxB,uBAAC,wBAAW,IACR,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,EAAE,EACR,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAC,YAAY,EACrB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GACvB,IACG,EACT,uBAAC,qBAAQ,IAAC,QAAQ,EAAE,QAAQ,YACxB,iCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAe,CAAC,QAAQ,aAC7C,uBAAC,uBAAU,IACP,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE;gCACP,WAAW,EAAE,IAAI;gCACjB,oBAAoB,EAAE,IAAI;gCAC1B,wBAAwB,EAAE,SAAS,KAAK,MAAM;6BACjD,GACH,EACD,IAAI,IAAI,uBAAC,cAAI,OAAK,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,GAAI,IAC5E,GACC,IACT,CACT,CAAC;AACN,CAAC,CAAC;AA1CW,QAAA,qBAAqB,yBA0ChC","sourcesContent":["import {useActionHandlers} from '@gravity-ui/uikit';\n\nimport {Foldable, HTML, ToggleArrow, YFMWrapper} from '../../../components';\nimport Link from '../../../components/Link/Link';\nimport {FoldableListBlockItemProps} from '../../../models';\nimport {block} from '../../../utils';\n\nimport './FoldableListBlockItem.scss';\n\nconst b = block('FoldableListBlockItem');\n\nexport const FoldableListBlockItem = ({\n title: itemTitle,\n text: itemText,\n link,\n listStyle = 'dash',\n isOpened,\n onClick,\n}: FoldableListBlockItemProps) => {\n const {onKeyDown} = useActionHandlers(onClick);\n\n return (\n <div className={b()} itemScope role={'listitem'}>\n <button\n className={b('title')}\n onClick={onClick}\n aria-expanded={isOpened}\n onKeyDown={onKeyDown}\n >\n <HTML>{itemTitle}</HTML>\n <ToggleArrow\n open={isOpened}\n size={16}\n type={'vertical'}\n iconType=\"navigation\"\n className={b('arrow')}\n />\n </button>\n <Foldable isOpened={isOpened}>\n <div className={b('text')} aria-hidden={!isOpened}>\n <YFMWrapper\n content={itemText}\n modifiers={{\n constructor: true,\n constructorListStyle: true,\n constructorListStyleDash: listStyle === 'dash',\n }}\n />\n {link && <Link {...link} tabIndex={isOpened ? 0 : -1} className={b('link')} />}\n </div>\n </Foldable>\n </div>\n );\n};\n"]}
@@ -0,0 +1,140 @@
1
+ export declare const FoldableListBlock: {
2
+ 'foldable-list-block': {
3
+ additionalProperties: boolean;
4
+ required: string[];
5
+ properties: {
6
+ items: {
7
+ type: string;
8
+ items: {
9
+ type: string;
10
+ properties: {
11
+ when: {
12
+ type: string;
13
+ };
14
+ };
15
+ };
16
+ };
17
+ title: {
18
+ oneOf: ({
19
+ type: string;
20
+ contentType: string;
21
+ optionName: string;
22
+ } | {
23
+ optionName: string;
24
+ type: string;
25
+ additionalProperties: boolean;
26
+ required: string[];
27
+ properties: {
28
+ text: {
29
+ type: string;
30
+ contentType: string;
31
+ };
32
+ textSize: {
33
+ type: string;
34
+ enum: string[];
35
+ };
36
+ url: {
37
+ type: string;
38
+ };
39
+ urlTitle: {
40
+ type: string;
41
+ };
42
+ resetMargin: {
43
+ type: string;
44
+ };
45
+ };
46
+ contentType?: undefined;
47
+ })[];
48
+ };
49
+ text: {
50
+ type: string;
51
+ contentType: string;
52
+ inputType: string;
53
+ };
54
+ additionalInfo: {
55
+ type: string;
56
+ contentType: string;
57
+ };
58
+ links: {
59
+ type: string;
60
+ items: {
61
+ type: string;
62
+ properties: {
63
+ when: {
64
+ type: string;
65
+ };
66
+ };
67
+ };
68
+ };
69
+ buttons: {
70
+ type: string;
71
+ items: {
72
+ type: string;
73
+ properties: {
74
+ when: {
75
+ type: string;
76
+ };
77
+ };
78
+ };
79
+ };
80
+ list: {
81
+ type: string;
82
+ items: {
83
+ type: string;
84
+ properties: {
85
+ when: {
86
+ type: string;
87
+ };
88
+ };
89
+ };
90
+ };
91
+ controlPosition: {
92
+ type: string;
93
+ enum: string[];
94
+ };
95
+ anchor: {
96
+ type: string;
97
+ additionalProperties: boolean;
98
+ required: string[];
99
+ properties: {
100
+ text: {
101
+ type: string;
102
+ contentType: string;
103
+ };
104
+ url: {
105
+ type: string;
106
+ };
107
+ urlTitle: {
108
+ type: string;
109
+ };
110
+ };
111
+ };
112
+ visible: {
113
+ type: string;
114
+ enum: string[];
115
+ };
116
+ resetPaddings: {
117
+ type: string;
118
+ };
119
+ context: {
120
+ type: string;
121
+ };
122
+ indent: {
123
+ type: string;
124
+ additionalProperties: boolean;
125
+ properties: {
126
+ top: {
127
+ enum: string[];
128
+ };
129
+ bottom: {
130
+ enum: string[];
131
+ };
132
+ };
133
+ };
134
+ type: {};
135
+ when: {
136
+ type: string;
137
+ };
138
+ };
139
+ };
140
+ };
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FoldableListBlock = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const omit_1 = tslib_1.__importDefault(require("lodash/omit.js"));
6
+ const common_1 = require("../../schema/validators/common.js");
7
+ const utils_1 = require("../../schema/validators/utils.js");
8
+ const schema_1 = require("../../sub-blocks/Content/schema.js");
9
+ const FoldableListBlockContentProps = (0, omit_1.default)(schema_1.ContentBase, ['size', 'theme']);
10
+ exports.FoldableListBlock = {
11
+ 'foldable-list-block': {
12
+ additionalProperties: false,
13
+ required: ['title', 'items'],
14
+ properties: {
15
+ ...common_1.BlockBaseProps,
16
+ ...FoldableListBlockContentProps,
17
+ items: (0, utils_1.filteredArray)({
18
+ type: 'object',
19
+ required: ['title', 'text'],
20
+ properties: {
21
+ title: {
22
+ type: 'string',
23
+ contentType: 'text',
24
+ },
25
+ text: {
26
+ type: 'string',
27
+ contentType: 'yfm',
28
+ },
29
+ link: common_1.LinkProps,
30
+ listStyle: {
31
+ type: 'string',
32
+ enum: ['dash', 'disk'],
33
+ },
34
+ },
35
+ }),
36
+ },
37
+ },
38
+ };
39
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"../../../../src","sources":["blocks/FoldableList/schema.ts"],"names":[],"mappings":";;;;AAAA,kEAA+B;AAE/B,8DAAyE;AACzE,4DAA4D;AAC5D,+DAA4D;AAE5D,MAAM,6BAA6B,GAAG,IAAA,cAAI,EAAC,oBAAW,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9D,QAAA,iBAAiB,GAAG;IAC7B,qBAAqB,EAAE;QACnB,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC5B,UAAU,EAAE;YACR,GAAG,uBAAc;YACjB,GAAG,6BAA6B;YAChC,KAAK,EAAE,IAAA,qBAAa,EAAC;gBACjB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;gBAC3B,UAAU,EAAE;oBACR,KAAK,EAAE;wBACH,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,MAAM;qBACtB;oBACD,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,KAAK;qBACrB;oBACD,IAAI,EAAE,kBAAS;oBACf,SAAS,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;qBACzB;iBACJ;aACJ,CAAC;SACL;KACJ;CACJ,CAAC","sourcesContent":["import omit from 'lodash/omit';\n\nimport {BlockBaseProps, LinkProps} from '../../schema/validators/common';\nimport {filteredArray} from '../../schema/validators/utils';\nimport {ContentBase} from '../../sub-blocks/Content/schema';\n\nconst FoldableListBlockContentProps = omit(ContentBase, ['size', 'theme']);\n\nexport const FoldableListBlock = {\n 'foldable-list-block': {\n additionalProperties: false,\n required: ['title', 'items'],\n properties: {\n ...BlockBaseProps,\n ...FoldableListBlockContentProps,\n items: filteredArray({\n type: 'object',\n required: ['title', 'text'],\n properties: {\n title: {\n type: 'string',\n contentType: 'text',\n },\n text: {\n type: 'string',\n contentType: 'yfm',\n },\n link: LinkProps,\n listStyle: {\n type: 'string',\n enum: ['dash', 'disk'],\n },\n },\n }),\n },\n },\n};\n"]}
@@ -30,6 +30,9 @@ unpredictable css rules order in build */
30
30
  .pc-header-block__content_theme_dark .pc-header-block__description .yfm {
31
31
  color: var(--g-color-text-light-primary);
32
32
  }
33
+ .pc-header-block__content_theme_dark .pc-header-block__additional-info .yfm p {
34
+ color: var(--g-color-text-light-secondary) !important; /* stylelint-disable-line declaration-no-important */
35
+ }
33
36
  .pc-header-block__content_vertical-offset {
34
37
  margin: 16px 0;
35
38
  }
@@ -90,6 +93,14 @@ unpredictable css rules order in build */
90
93
  line-height: var(--g-text-body-3-line-height);
91
94
  color: var(--g-color-text-primary);
92
95
  }
96
+ .pc-header-block__additional-info {
97
+ margin-top: 16px;
98
+ }
99
+ .pc-header-block__additional-info .yfm p {
100
+ font-size: var(--g-text-body-2-font-size);
101
+ line-height: var(--g-text-body-2-line-height);
102
+ color: var(--g-color-text-secondary) !important; /* stylelint-disable-line declaration-no-important */
103
+ }
93
104
  .pc-header-block__buttons {
94
105
  margin-top: 16px;
95
106
  }
@@ -97,7 +108,7 @@ unpredictable css rules order in build */
97
108
  margin-top: 16px;
98
109
  }
99
110
  .pc-header-block__button.pc-header-block__button:not(:last-child) {
100
- margin-right: 16px;
111
+ margin-right: 12px;
101
112
  }
102
113
 
103
114
  .pc-header-block__media {
@@ -25,7 +25,7 @@ const Background = ({ background, isMobile }) => {
25
25
  };
26
26
  const FullWidthBackground = ({ background }) => ((0, jsx_runtime_1.jsx)("div", { className: b('background', { ['full-width']: true }), style: { backgroundColor: background?.color } }));
27
27
  const HeaderBlock = (props) => {
28
- const { title, overtitle, description, buttons, image, video, width = 'm', imageSize, offset = 'default', background, theme: textTheme = 'light', verticalOffset = 'm', className, breadcrumbs, status, renderTitle, children, mediaView = 'full', centered, } = props;
28
+ const { title, overtitle, description, buttons, image, video, width = 'm', imageSize, offset = 'default', background, theme: textTheme = 'light', verticalOffset = 'm', className, breadcrumbs, status, renderTitle, children, mediaView = 'full', centered, additionalInfo, } = props;
29
29
  const isMobile = React.useContext(mobileContext_1.MobileContext);
30
30
  const theme = (0, theme_1.useTheme)();
31
31
  const hasRightSideImage = Boolean((image || video) && !centered);
@@ -56,6 +56,9 @@ const HeaderBlock = (props) => {
56
56
  }), children: (0, jsx_runtime_1.jsxs)(grid_1.Col, { sizes: titleSizes, className: b('content-inner', { centered }), children: [overtitle && ((0, jsx_runtime_1.jsx)("div", { className: b('overtitle'), children: typeof overtitle === 'string' ? ((0, jsx_runtime_1.jsx)(components_1.HTML, { children: overtitle })) : (overtitle) })), (0, jsx_runtime_1.jsxs)("h1", { className: b('title'), id: titleId, children: [status, renderTitle ? renderTitle(title) : (0, jsx_runtime_1.jsx)(components_1.HTML, { children: title })] }), description && ((0, jsx_runtime_1.jsx)("div", { className: b('description', { theme: textTheme }), children: (0, jsx_runtime_1.jsx)(YFMWrapper_1.default, { content: description, modifiers: {
57
57
  constructor: true,
58
58
  constructorTheme: textTheme,
59
+ } }) })), additionalInfo && ((0, jsx_runtime_1.jsx)("div", { className: b('additional-info', { theme: textTheme }), children: (0, jsx_runtime_1.jsx)(YFMWrapper_1.default, { content: additionalInfo, modifiers: {
60
+ constructor: true,
61
+ constructorTheme: textTheme,
59
62
  } }) })), buttons && ((0, jsx_runtime_1.jsx)("div", { className: b('buttons'), "data-qa": "header-buttons", children: buttons.map((button, index) => ((0, jsx_runtime_1.jsx)(components_1.RouterLink, { href: button.url, children: (0, jsx_runtime_1.jsx)(components_1.Button, { className: b('button'), size: "xl", extraProps: {
60
63
  'aria-describedby': titleId,
61
64
  ...button.extraProps,
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"../../../../src","sources":["blocks/Header/Header.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\nimport {useUniqId} from '@gravity-ui/uikit';\nimport * as React from 'react';\n\nimport {Button, HTML, Media, RouterLink} from '../../components';\nimport HeaderBreadcrumbs from '../../components/HeaderBreadcrumbs/HeaderBreadcrumbs';\nimport {getMediaImage} from '../../components/Media/Image/utils';\nimport YFMWrapper from '../../components/YFMWrapper/YFMWrapper';\nimport {MobileContext} from '../../context/mobileContext';\nimport {useTheme} from '../../context/theme';\nimport {Col, Grid, Row} from '../../grid';\nimport {ClassNameProps, HeaderBlockBackground, HeaderBlockProps} from '../../models';\nimport {block, getThemedValue} from '../../utils';\nimport {mergeVideoMicrodata} from '../../utils/microdata';\n\nimport {getImageSize, getTitleSizes, titleWithImageSizes} from './utils';\nimport './Header.scss';\n\nconst b = block('header-block');\n\ntype HeaderBlockFullProps = HeaderBlockProps & ClassNameProps;\n\ninterface BackgroundProps {\n background: HeaderBlockBackground;\n isMobile: boolean;\n}\n\nconst Background = ({background, isMobile}: BackgroundProps) => {\n const {url, image, fullWidthMedia, video, color} = background;\n const imageObject = url ? getMediaImage(url) : image;\n const renderMedia = !isMobile || (typeof image === 'object' && 'mobile' in image);\n\n return (\n <div\n className={b('background', {media: true, 'full-width-media': fullWidthMedia})}\n style={{backgroundColor: color}}\n >\n {renderMedia && (\n <Media\n {...background}\n className={b('background-media')}\n imageClassName={b('image')}\n videoClassName={b('video')}\n isBackground={true}\n parallax={false}\n video={isMobile ? undefined : video}\n image={imageObject}\n />\n )}\n </div>\n );\n};\n\ninterface FullWidthBackgroundProps {\n background: HeaderBlockBackground;\n}\n\nconst FullWidthBackground = ({background}: FullWidthBackgroundProps) => (\n <div\n className={b('background', {['full-width']: true})}\n style={{backgroundColor: background?.color}}\n />\n);\n\nexport const HeaderBlock = (props: React.PropsWithChildren<HeaderBlockFullProps>) => {\n const {\n title,\n overtitle,\n description,\n buttons,\n image,\n video,\n width = 'm',\n imageSize,\n offset = 'default',\n background,\n theme: textTheme = 'light',\n verticalOffset = 'm',\n className,\n breadcrumbs,\n status,\n renderTitle,\n children,\n mediaView = 'full',\n centered,\n } = props;\n const isMobile = React.useContext(MobileContext);\n const theme = useTheme();\n const hasRightSideImage = Boolean((image || video) && !centered);\n const curImageSize = imageSize || getImageSize(width);\n const titleSizes = hasRightSideImage ? titleWithImageSizes(curImageSize) : getTitleSizes(width);\n let curVerticalOffset = verticalOffset;\n\n if (hasRightSideImage && !verticalOffset) {\n curVerticalOffset = 'm';\n }\n\n const backgroundThemed = background && getThemedValue(background, theme);\n const imageThemed = image && getThemedValue(image, theme);\n const videoThemed = video && getThemedValue(video, theme);\n const mediaWithMicrodata = mergeVideoMicrodata(\n {video: videoThemed, image: imageThemed},\n {\n name: title,\n description,\n },\n );\n const fullWidth = backgroundThemed?.fullWidth || backgroundThemed?.fullWidthMedia;\n const titleId = useUniqId();\n\n return (\n <header\n className={b(\n {\n ['has-media']: hasRightSideImage,\n ['full-width']: fullWidth,\n ['media-view']: mediaView,\n ['controls-view']: textTheme,\n },\n className,\n )}\n >\n {backgroundThemed && fullWidth && <FullWidthBackground background={backgroundThemed} />}\n {backgroundThemed && <Background background={backgroundThemed} isMobile={isMobile} />}\n <Grid containerClass={b('container-fluid')}>\n {breadcrumbs && (\n <Row className={b('breadcrumbs')}>\n <Col>\n <HeaderBreadcrumbs {...breadcrumbs} theme={textTheme} />\n </Col>\n </Row>\n )}\n <Row>\n <Col reset className={b('content-wrapper')}>\n <Row>\n <Col\n className={b('content', {\n offset,\n theme: textTheme,\n 'vertical-offset': curVerticalOffset,\n })}\n >\n <Col sizes={titleSizes} className={b('content-inner', {centered})}>\n {overtitle && (\n <div className={b('overtitle')}>\n {typeof overtitle === 'string' ? (\n <HTML>{overtitle}</HTML>\n ) : (\n overtitle\n )}\n </div>\n )}\n <h1 className={b('title')} id={titleId}>\n {status}\n {renderTitle ? renderTitle(title) : <HTML>{title}</HTML>}\n </h1>\n {description && (\n <div className={b('description', {theme: textTheme})}>\n <YFMWrapper\n content={description}\n modifiers={{\n constructor: true,\n constructorTheme: textTheme,\n }}\n />\n </div>\n )}\n {buttons && (\n <div className={b('buttons')} data-qa=\"header-buttons\">\n {buttons.map((button, index) => (\n <RouterLink href={button.url} key={index}>\n <Button\n key={index}\n className={b('button')}\n size=\"xl\"\n extraProps={{\n 'aria-describedby': titleId,\n ...button.extraProps,\n }}\n {...button}\n />\n </RouterLink>\n ))}\n </div>\n )}\n {children}\n </Col>\n </Col>\n </Row>\n {hasRightSideImage && (\n <Media\n className={b('media', {[curImageSize]: true})}\n videoClassName={b('video')}\n imageClassName={b('image')}\n {...mediaWithMicrodata}\n />\n )}\n </Col>\n </Row>\n </Grid>\n </header>\n );\n};\n\nexport default HeaderBlock;\n"]}
1
+ {"version":3,"file":"Header.js","sourceRoot":"../../../../src","sources":["blocks/Header/Header.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\nimport {useUniqId} from '@gravity-ui/uikit';\nimport * as React from 'react';\n\nimport {Button, HTML, Media, RouterLink} from '../../components';\nimport HeaderBreadcrumbs from '../../components/HeaderBreadcrumbs/HeaderBreadcrumbs';\nimport {getMediaImage} from '../../components/Media/Image/utils';\nimport YFMWrapper from '../../components/YFMWrapper/YFMWrapper';\nimport {MobileContext} from '../../context/mobileContext';\nimport {useTheme} from '../../context/theme';\nimport {Col, Grid, Row} from '../../grid';\nimport {ClassNameProps, HeaderBlockBackground, HeaderBlockProps} from '../../models';\nimport {block, getThemedValue} from '../../utils';\nimport {mergeVideoMicrodata} from '../../utils/microdata';\n\nimport {getImageSize, getTitleSizes, titleWithImageSizes} from './utils';\nimport './Header.scss';\n\nconst b = block('header-block');\n\ntype HeaderBlockFullProps = HeaderBlockProps & ClassNameProps;\n\ninterface BackgroundProps {\n background: HeaderBlockBackground;\n isMobile: boolean;\n}\n\nconst Background = ({background, isMobile}: BackgroundProps) => {\n const {url, image, fullWidthMedia, video, color} = background;\n const imageObject = url ? getMediaImage(url) : image;\n const renderMedia = !isMobile || (typeof image === 'object' && 'mobile' in image);\n\n return (\n <div\n className={b('background', {media: true, 'full-width-media': fullWidthMedia})}\n style={{backgroundColor: color}}\n >\n {renderMedia && (\n <Media\n {...background}\n className={b('background-media')}\n imageClassName={b('image')}\n videoClassName={b('video')}\n isBackground={true}\n parallax={false}\n video={isMobile ? undefined : video}\n image={imageObject}\n />\n )}\n </div>\n );\n};\n\ninterface FullWidthBackgroundProps {\n background: HeaderBlockBackground;\n}\n\nconst FullWidthBackground = ({background}: FullWidthBackgroundProps) => (\n <div\n className={b('background', {['full-width']: true})}\n style={{backgroundColor: background?.color}}\n />\n);\n\nexport const HeaderBlock = (props: React.PropsWithChildren<HeaderBlockFullProps>) => {\n const {\n title,\n overtitle,\n description,\n buttons,\n image,\n video,\n width = 'm',\n imageSize,\n offset = 'default',\n background,\n theme: textTheme = 'light',\n verticalOffset = 'm',\n className,\n breadcrumbs,\n status,\n renderTitle,\n children,\n mediaView = 'full',\n centered,\n additionalInfo,\n } = props;\n const isMobile = React.useContext(MobileContext);\n const theme = useTheme();\n const hasRightSideImage = Boolean((image || video) && !centered);\n const curImageSize = imageSize || getImageSize(width);\n const titleSizes = hasRightSideImage ? titleWithImageSizes(curImageSize) : getTitleSizes(width);\n let curVerticalOffset = verticalOffset;\n\n if (hasRightSideImage && !verticalOffset) {\n curVerticalOffset = 'm';\n }\n\n const backgroundThemed = background && getThemedValue(background, theme);\n const imageThemed = image && getThemedValue(image, theme);\n const videoThemed = video && getThemedValue(video, theme);\n const mediaWithMicrodata = mergeVideoMicrodata(\n {video: videoThemed, image: imageThemed},\n {\n name: title,\n description,\n },\n );\n const fullWidth = backgroundThemed?.fullWidth || backgroundThemed?.fullWidthMedia;\n const titleId = useUniqId();\n\n return (\n <header\n className={b(\n {\n ['has-media']: hasRightSideImage,\n ['full-width']: fullWidth,\n ['media-view']: mediaView,\n ['controls-view']: textTheme,\n },\n className,\n )}\n >\n {backgroundThemed && fullWidth && <FullWidthBackground background={backgroundThemed} />}\n {backgroundThemed && <Background background={backgroundThemed} isMobile={isMobile} />}\n <Grid containerClass={b('container-fluid')}>\n {breadcrumbs && (\n <Row className={b('breadcrumbs')}>\n <Col>\n <HeaderBreadcrumbs {...breadcrumbs} theme={textTheme} />\n </Col>\n </Row>\n )}\n <Row>\n <Col reset className={b('content-wrapper')}>\n <Row>\n <Col\n className={b('content', {\n offset,\n theme: textTheme,\n 'vertical-offset': curVerticalOffset,\n })}\n >\n <Col sizes={titleSizes} className={b('content-inner', {centered})}>\n {overtitle && (\n <div className={b('overtitle')}>\n {typeof overtitle === 'string' ? (\n <HTML>{overtitle}</HTML>\n ) : (\n overtitle\n )}\n </div>\n )}\n <h1 className={b('title')} id={titleId}>\n {status}\n {renderTitle ? renderTitle(title) : <HTML>{title}</HTML>}\n </h1>\n {description && (\n <div className={b('description', {theme: textTheme})}>\n <YFMWrapper\n content={description}\n modifiers={{\n constructor: true,\n constructorTheme: textTheme,\n }}\n />\n </div>\n )}\n {additionalInfo && (\n <div className={b('additional-info', {theme: textTheme})}>\n <YFMWrapper\n content={additionalInfo}\n modifiers={{\n constructor: true,\n constructorTheme: textTheme,\n }}\n />\n </div>\n )}\n {buttons && (\n <div className={b('buttons')} data-qa=\"header-buttons\">\n {buttons.map((button, index) => (\n <RouterLink href={button.url} key={index}>\n <Button\n key={index}\n className={b('button')}\n size=\"xl\"\n extraProps={{\n 'aria-describedby': titleId,\n ...button.extraProps,\n }}\n {...button}\n />\n </RouterLink>\n ))}\n </div>\n )}\n {children}\n </Col>\n </Col>\n </Row>\n {hasRightSideImage && (\n <Media\n className={b('media', {[curImageSize]: true})}\n videoClassName={b('video')}\n imageClassName={b('image')}\n {...mediaWithMicrodata}\n />\n )}\n </Col>\n </Row>\n </Grid>\n </header>\n );\n};\n\nexport default HeaderBlock;\n"]}
@@ -331,6 +331,11 @@ export declare const HeaderProperties: {
331
331
  contentType: string;
332
332
  inputType: string;
333
333
  };
334
+ additionalInfo: {
335
+ type: string;
336
+ contentType: string;
337
+ inputType: string;
338
+ };
334
339
  width: {
335
340
  type: string;
336
341
  enum: string[];
@@ -898,6 +903,11 @@ export declare const HeaderBlock: {
898
903
  contentType: string;
899
904
  inputType: string;
900
905
  };
906
+ additionalInfo: {
907
+ type: string;
908
+ contentType: string;
909
+ inputType: string;
910
+ };
901
911
  width: {
902
912
  type: string;
903
913
  enum: string[];
@@ -28,6 +28,11 @@ exports.HeaderProperties = {
28
28
  contentType: 'yfm',
29
29
  inputType: 'textarea',
30
30
  },
31
+ additionalInfo: {
32
+ type: 'string',
33
+ contentType: 'yfm',
34
+ inputType: 'textarea',
35
+ },
31
36
  width: {
32
37
  type: 'string',
33
38
  enum: ['s', 'm', 'l'],