@plone/volto 17.0.0-alpha.9 → 17.0.1

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 (365) hide show
  1. package/.eslintrc +26 -3
  2. package/CHANGELOG.md +774 -5
  3. package/CONTRIBUTING.md +5 -1
  4. package/README.md +12 -9
  5. package/RELEASING.md +5 -5
  6. package/addon-registry.js +10 -1
  7. package/create-addons-loader.js +1 -1
  8. package/cypress/support/commands.js +70 -14
  9. package/cypress/support/e2e.js +1 -2
  10. package/cypress/support/volto-slate.js +4 -5
  11. package/cypress.config.js +1 -0
  12. package/docker-compose.yml +1 -1
  13. package/locales/ca/LC_MESSAGES/volto.po +281 -53
  14. package/locales/ca.json +1 -1
  15. package/locales/de/LC_MESSAGES/volto.po +289 -61
  16. package/locales/de.json +1 -1
  17. package/locales/en/LC_MESSAGES/volto.po +279 -51
  18. package/locales/en.json +1 -1
  19. package/locales/es/LC_MESSAGES/volto.po +318 -90
  20. package/locales/es.json +1 -1
  21. package/locales/eu/LC_MESSAGES/volto.po +280 -52
  22. package/locales/eu.json +1 -1
  23. package/locales/fi/LC_MESSAGES/volto.po +280 -52
  24. package/locales/fi.json +1 -1
  25. package/locales/fr/LC_MESSAGES/volto.po +281 -53
  26. package/locales/fr.json +1 -1
  27. package/locales/it/LC_MESSAGES/volto.po +474 -246
  28. package/locales/it.json +1 -1
  29. package/locales/ja/LC_MESSAGES/volto.po +280 -52
  30. package/locales/ja.json +1 -1
  31. package/locales/nl/LC_MESSAGES/volto.po +281 -53
  32. package/locales/nl.json +1 -1
  33. package/locales/pt/LC_MESSAGES/volto.po +281 -53
  34. package/locales/pt.json +1 -1
  35. package/locales/pt_BR/LC_MESSAGES/volto.po +314 -86
  36. package/locales/pt_BR.json +1 -1
  37. package/locales/ro/LC_MESSAGES/volto.po +281 -53
  38. package/locales/ro.json +1 -1
  39. package/locales/volto.pot +284 -52
  40. package/locales/zh_CN/LC_MESSAGES/volto.po +281 -53
  41. package/locales/zh_CN.json +1 -1
  42. package/package.json +44 -34
  43. package/packages/volto-slate/package.json +1 -1
  44. package/packages/volto-slate/src/actions/index.js +1 -1
  45. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +21 -212
  46. package/packages/volto-slate/src/blocks/Table/schema.js +122 -0
  47. package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +8 -3
  48. package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +21 -16
  49. package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +3 -1
  50. package/packages/volto-slate/src/blocks/Text/index.js +10 -7
  51. package/packages/volto-slate/src/editor/config.jsx +5 -4
  52. package/packages/volto-slate/src/editor/index.js +4 -4
  53. package/packages/volto-slate/src/editor/less/slate.less +28 -0
  54. package/packages/volto-slate/src/editor/plugins/Link/render.jsx +5 -6
  55. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +14 -4
  56. package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +14 -5
  57. package/packages/volto-slate/src/editor/render.jsx +77 -8
  58. package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +2 -2
  59. package/packages/volto-slate/src/editor/ui/index.js +15 -15
  60. package/packages/volto-slate/src/index.js +2 -2
  61. package/packages/volto-slate/src/utils/blocks.js +7 -0
  62. package/packages/volto-slate/src/widgets/RichTextWidget.jsx +15 -8
  63. package/razzle.config.js +4 -6
  64. package/src/actions/index.js +4 -0
  65. package/src/actions/navroot/navroot.js +16 -0
  66. package/src/actions/navroot/navroot.test.js +15 -0
  67. package/src/actions/relations/rebuild.js +7 -7
  68. package/src/actions/relations/relations.js +17 -0
  69. package/src/actions/site/site.js +16 -0
  70. package/src/actions/site/site.test.js +15 -0
  71. package/src/actions/userSession/userSession.js +17 -1
  72. package/src/components/index.js +194 -192
  73. package/src/components/manage/Actions/Actions.jsx +133 -243
  74. package/src/components/manage/Add/Add.jsx +7 -8
  75. package/src/components/manage/AnchorPlugin/index.jsx +2 -2
  76. package/src/components/manage/AnchorPlugin/utils/EditorUtils.js +3 -1
  77. package/src/components/manage/Blocks/Block/BlocksForm.jsx +19 -2
  78. package/src/components/manage/Blocks/Block/Edit.jsx +1 -1
  79. package/src/components/manage/Blocks/Block/Settings.jsx +2 -0
  80. package/src/components/manage/Blocks/Block/Settings.test.jsx +92 -0
  81. package/src/components/manage/Blocks/Block/Style.jsx +2 -2
  82. package/src/components/manage/Blocks/Container/Data.jsx +32 -0
  83. package/src/components/manage/Blocks/Container/Edit.jsx +177 -0
  84. package/src/components/manage/Blocks/Container/EditBlockWrapper.jsx +121 -0
  85. package/src/components/manage/Blocks/Container/NewBlockAddButton.jsx +84 -0
  86. package/src/components/manage/Blocks/Container/SimpleContainerToolbar.jsx +54 -0
  87. package/src/components/manage/Blocks/Grid/Edit.jsx +47 -0
  88. package/src/components/manage/Blocks/Grid/View.jsx +43 -0
  89. package/src/components/manage/Blocks/Grid/adapter.js +14 -0
  90. package/src/components/manage/Blocks/Grid/grid-1.svg +6 -0
  91. package/src/components/manage/Blocks/Grid/grid-2.svg +9 -0
  92. package/src/components/manage/Blocks/Grid/grid-3.svg +10 -0
  93. package/src/components/manage/Blocks/Grid/grid-4.svg +11 -0
  94. package/src/components/manage/Blocks/Grid/schema.js +35 -0
  95. package/src/components/manage/Blocks/Grid/templates.js +47 -0
  96. package/src/components/manage/Blocks/HTML/Edit.jsx +8 -8
  97. package/src/components/manage/Blocks/HeroImageLeft/Edit.jsx +36 -26
  98. package/src/components/manage/Blocks/Image/Edit.jsx +51 -12
  99. package/src/components/manage/Blocks/Image/Edit.test.jsx +2 -0
  100. package/src/components/manage/Blocks/Image/ImageSidebar.jsx +66 -16
  101. package/src/components/manage/Blocks/Image/View.jsx +26 -5
  102. package/src/components/manage/Blocks/Image/View.test.jsx +20 -0
  103. package/src/components/manage/Blocks/Image/schema.js +17 -10
  104. package/src/components/manage/Blocks/Image/utils.js +14 -0
  105. package/src/components/manage/Blocks/LeadImage/Edit.jsx +32 -10
  106. package/src/components/manage/Blocks/LeadImage/Edit.test.jsx +11 -1
  107. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.jsx +28 -9
  108. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.test.jsx +8 -2
  109. package/src/components/manage/Blocks/LeadImage/View.jsx +50 -38
  110. package/src/components/manage/Blocks/LeadImage/View.test.jsx +11 -1
  111. package/src/components/manage/Blocks/Listing/DefaultTemplate.jsx +18 -3
  112. package/src/components/manage/Blocks/Listing/ListingBody.jsx +32 -8
  113. package/src/components/manage/Blocks/Listing/ListingBody.test.jsx +20 -0
  114. package/src/components/manage/Blocks/Listing/SummaryTemplate.jsx +1 -1
  115. package/src/components/manage/Blocks/Listing/getAsyncData.js +3 -5
  116. package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +27 -17
  117. package/src/components/manage/Blocks/Maps/Edit.jsx +135 -209
  118. package/src/components/manage/Blocks/Maps/Edit.test.jsx +1 -2
  119. package/src/components/manage/Blocks/Maps/View.test.jsx +1 -2
  120. package/src/components/manage/Blocks/Search/SearchBlockView.jsx +3 -2
  121. package/src/components/manage/Blocks/Search/components/Facets.jsx +66 -7
  122. package/src/components/manage/Blocks/Search/components/FilterList.jsx +4 -6
  123. package/src/components/manage/Blocks/Search/components/SearchInput.jsx +9 -2
  124. package/src/components/manage/Blocks/Search/components/SelectFacet.jsx +2 -9
  125. package/src/components/manage/Blocks/Search/components/index.js +13 -13
  126. package/src/components/manage/Blocks/Search/hocs/index.js +2 -2
  127. package/src/components/manage/Blocks/Search/hocs/withQueryString.jsx +5 -2
  128. package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +70 -36
  129. package/src/components/manage/Blocks/Search/layout/LeftColumnFacets.jsx +17 -5
  130. package/src/components/manage/Blocks/Search/layout/RightColumnFacets.jsx +17 -5
  131. package/src/components/manage/Blocks/Search/layout/TopSideFacets.jsx +21 -5
  132. package/src/components/manage/Blocks/Search/schema.js +29 -14
  133. package/src/components/manage/Blocks/Table/Cell.jsx +2 -3
  134. package/src/components/manage/Blocks/Teaser/Body.jsx +0 -1
  135. package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +5 -10
  136. package/src/components/manage/Blocks/Teaser/schema.js +5 -0
  137. package/src/components/manage/Blocks/Text/Edit.jsx +2 -3
  138. package/src/components/manage/Blocks/Title/View.jsx +0 -23
  139. package/src/components/manage/Blocks/Title/View.test.jsx +16 -1
  140. package/src/components/manage/Blocks/ToC/Schema.jsx +40 -7
  141. package/src/components/manage/Blocks/ToC/View.jsx +84 -14
  142. package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.jsx +8 -3
  143. package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.test.jsx +44 -0
  144. package/src/components/manage/Blocks/ToC/variations/HorizontalMenu.jsx +149 -10
  145. package/src/components/manage/Blocks/ToC/variations/index.js +3 -1
  146. package/src/components/manage/Blocks/Video/View.test.jsx +1 -1
  147. package/src/components/manage/Contents/Contents.jsx +285 -114
  148. package/src/components/manage/Contents/ContentsPropertiesModal.jsx +90 -166
  149. package/src/components/manage/Contents/ContentsRenameModal.jsx +88 -139
  150. package/src/components/manage/Contents/ContentsRenameModal.stories.jsx +61 -0
  151. package/src/components/manage/Contents/ContentsTagsModal.jsx +83 -130
  152. package/src/components/manage/Contents/ContentsTagsModal.stories.jsx +68 -0
  153. package/src/components/manage/Contents/ContentsUploadModal.jsx +11 -7
  154. package/src/components/manage/Contents/ContentsWorkflowModal.jsx +87 -154
  155. package/src/components/manage/Controlpanels/Aliases.jsx +4 -12
  156. package/src/components/manage/Controlpanels/Groups/GroupsControlpanel.jsx +65 -38
  157. package/src/components/manage/Controlpanels/Groups/RenderGroups.jsx +2 -2
  158. package/src/components/manage/Controlpanels/Relations/BrokenRelations.jsx +38 -13
  159. package/src/components/manage/Controlpanels/Relations/Relations.jsx +5 -5
  160. package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +8 -7
  161. package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +68 -68
  162. package/src/components/manage/Controlpanels/Rules/AddRule.jsx +3 -10
  163. package/src/components/manage/Controlpanels/Rules/EditRule.jsx +1 -1
  164. package/src/components/manage/Controlpanels/UndoControlpanel.jsx +6 -9
  165. package/src/components/manage/Controlpanels/Users/RenderUsers.jsx +97 -7
  166. package/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +127 -99
  167. package/src/components/manage/Delete/Delete.jsx +96 -171
  168. package/src/components/manage/Diff/DiffField.jsx +25 -1
  169. package/src/components/manage/DragDropList/DragDropList.jsx +18 -13
  170. package/src/components/manage/Form/BlockDataForm.jsx +3 -2
  171. package/src/components/manage/Form/BlockDataForm.test.jsx +51 -17
  172. package/src/components/manage/Form/Form.jsx +7 -6
  173. package/src/components/manage/Form/InlineForm.test.jsx +16 -14
  174. package/src/components/manage/History/History.jsx +11 -1
  175. package/src/components/manage/LinksToItem/LinksToItem.jsx +209 -0
  176. package/src/components/manage/LinksToItem/LinksToItem.test.jsx +100 -0
  177. package/src/components/manage/LockingToastsFactory/LockingToastsFactory.jsx +1 -2
  178. package/src/components/manage/Messages/Messages.jsx +32 -99
  179. package/src/components/manage/Messages/Messages.test.jsx +0 -1
  180. package/src/components/manage/Preferences/ChangePassword.jsx +2 -2
  181. package/src/components/manage/Sharing/Sharing.jsx +80 -22
  182. package/src/components/manage/Sidebar/AlignBlock.jsx +1 -1
  183. package/src/components/manage/Sidebar/Sidebar.jsx +139 -220
  184. package/src/components/manage/TemplateChooser/TemplateChooser.jsx +38 -0
  185. package/src/components/manage/TemplateChooser/TemplateChooser.test.jsx +34 -0
  186. package/src/components/manage/TemplateChooser/template.svg +10 -0
  187. package/src/components/manage/Toast/Toast.jsx +1 -1
  188. package/src/components/manage/Toolbar/More.jsx +17 -2
  189. package/src/components/manage/Toolbar/PersonalTools.jsx +97 -155
  190. package/src/components/manage/Toolbar/Toolbar.jsx +2 -2
  191. package/src/components/manage/UniversalLink/UniversalLink.jsx +6 -12
  192. package/src/components/manage/UniversalLink/UniversalLink.test.jsx +37 -0
  193. package/src/components/manage/Widgets/AlignWidget.jsx +2 -4
  194. package/src/components/manage/Widgets/ArrayWidget.jsx +3 -1
  195. package/src/components/manage/Widgets/ArrayWidget.test.jsx +45 -1
  196. package/src/components/manage/Widgets/ColorPickerWidget.jsx +6 -1
  197. package/src/components/manage/Widgets/ColorPickerWidget.test.jsx +9 -7
  198. package/src/components/manage/Widgets/DatetimeWidget.jsx +2 -8
  199. package/src/components/manage/Widgets/FileWidget.jsx +2 -1
  200. package/src/components/manage/Widgets/FormFieldWrapper.jsx +1 -1
  201. package/src/components/manage/Widgets/IdWidget.jsx +1 -2
  202. package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +2 -9
  203. package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +3 -10
  204. package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.jsx +4 -4
  205. package/src/components/manage/Widgets/RegistryImageWidget.jsx +210 -0
  206. package/src/components/manage/Widgets/RegistryImageWidget.test.jsx +91 -0
  207. package/src/components/manage/Widgets/SchemaWidget.jsx +6 -9
  208. package/src/components/manage/Widgets/SelectUtils.js +1 -1
  209. package/src/components/manage/Widgets/SelectWidget.jsx +15 -1
  210. package/src/components/manage/Widgets/SelectWidget.test.jsx +45 -1
  211. package/src/components/manage/Widgets/WysiwygWidget.jsx +2 -9
  212. package/src/components/manage/Workflow/Workflow.jsx +75 -184
  213. package/src/components/theme/Anontools/Anontools.jsx +44 -72
  214. package/src/components/theme/Anontools/Anontools.stories.jsx +16 -6
  215. package/src/components/theme/Anontools/Anontools.test.jsx +16 -2
  216. package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +52 -99
  217. package/src/components/theme/Breadcrumbs/Breadcrumbs.stories.jsx +14 -13
  218. package/src/components/theme/Comments/Comment.stories.jsx +84 -0
  219. package/src/components/theme/Comments/CommentEditModal.jsx +63 -115
  220. package/src/components/theme/Comments/Comments.jsx +268 -380
  221. package/src/components/theme/Component/Component.jsx +1 -1
  222. package/src/components/theme/ContactForm/ContactForm.jsx +108 -192
  223. package/src/components/theme/ContactForm/ContactForm.stories.jsx +1 -1
  224. package/src/components/theme/ContactForm/ContactForm.test.jsx +2 -3
  225. package/src/components/theme/ContentMetadataTags/ContentMetadataTags.jsx +41 -3
  226. package/src/components/theme/Error/ServerError.jsx +29 -0
  227. package/src/components/theme/Header/Header.jsx +37 -63
  228. package/src/components/theme/Header/Header.test.jsx +18 -0
  229. package/src/components/theme/Image/Image.jsx +96 -0
  230. package/src/components/theme/Image/Image.test.jsx +125 -0
  231. package/src/components/theme/Login/Login.jsx +160 -243
  232. package/src/components/theme/Logo/Logo.Multilingual.test.jsx +131 -1
  233. package/src/components/theme/Logo/Logo.jsx +35 -27
  234. package/src/components/theme/Logo/Logo.test.jsx +135 -1
  235. package/src/components/theme/Logout/Logout.jsx +36 -83
  236. package/src/components/theme/Navigation/Navigation.jsx +86 -171
  237. package/src/components/theme/PasswordReset/PasswordReset.jsx +7 -5
  238. package/src/components/theme/PasswordReset/RequestPasswordReset.jsx +95 -170
  239. package/src/components/theme/PreviewImage/PreviewImage.jsx +31 -15
  240. package/src/components/theme/PreviewImage/PreviewImage.test.js +53 -13
  241. package/src/components/theme/Register/Register.jsx +2 -4
  242. package/src/components/theme/Search/SearchTags.jsx +30 -60
  243. package/src/components/theme/SearchWidget/SearchWidget.jsx +49 -97
  244. package/src/components/theme/SearchWidget/SearchWidget.test.jsx +8 -0
  245. package/src/components/theme/Sitemap/Sitemap.jsx +24 -13
  246. package/src/components/theme/Sitemap/Sitemap.test.jsx +23 -2
  247. package/src/components/theme/TsTest/TsTest.test.tsx +11 -0
  248. package/src/components/theme/TsTest/TsTest.tsx +15 -0
  249. package/src/components/theme/View/AlbumView.jsx +21 -16
  250. package/src/components/theme/View/EventView.jsx +36 -25
  251. package/src/components/theme/View/FileView.jsx +23 -18
  252. package/src/components/theme/View/ImageView.jsx +40 -32
  253. package/src/components/theme/View/ImageView.test.jsx +4 -0
  254. package/src/components/theme/View/LinkView.jsx +53 -78
  255. package/src/components/theme/View/ListingView.jsx +36 -28
  256. package/src/components/theme/View/NewsItemView.jsx +16 -17
  257. package/src/components/theme/View/RenderBlocks.jsx +56 -27
  258. package/src/components/theme/View/RenderEmptyBlock.jsx +5 -0
  259. package/src/components/theme/View/SummaryView.jsx +49 -39
  260. package/src/components/theme/View/TabularView.jsx +59 -53
  261. package/src/components/theme/View/View.jsx +2 -0
  262. package/src/components/theme/Widgets/ImageWidget.stories.jsx +1 -2
  263. package/src/config/Blocks.jsx +46 -0
  264. package/src/config/Components.jsx +3 -1
  265. package/src/config/ControlPanels.js +0 -1
  266. package/src/config/Loadables.jsx +1 -1
  267. package/src/config/NonContentRoutes.jsx +1 -0
  268. package/src/config/RichTextEditor/Blocks.jsx +4 -5
  269. package/src/config/RichTextEditor/FromHTML.jsx +2 -2
  270. package/src/config/RichTextEditor/Plugins.jsx +2 -3
  271. package/src/config/RichTextEditor/Styles.jsx +1 -1
  272. package/src/config/RichTextEditor/ToHTML.jsx +12 -10
  273. package/src/config/RichTextEditor/index.js +2 -3
  274. package/src/config/Views.jsx +6 -4
  275. package/src/config/Widgets.jsx +3 -0
  276. package/src/config/index.js +36 -2
  277. package/src/config/server.js +2 -0
  278. package/src/constants/ActionTypes.js +4 -0
  279. package/src/constants/Indexes.js +3 -1
  280. package/src/express-middleware/devproxy.js +1 -1
  281. package/src/express-middleware/files.js +11 -9
  282. package/src/express-middleware/images.js +12 -5
  283. package/src/express-middleware/ok.js +16 -0
  284. package/src/express-middleware/robotstxt.js +1 -1
  285. package/src/express-middleware/sitemap.js +1 -1
  286. package/src/express-middleware/static.js +3 -3
  287. package/src/helpers/Blocks/Blocks.js +52 -6
  288. package/src/helpers/Blocks/Blocks.test.js +92 -13
  289. package/src/helpers/Extensions/index.js +2 -1
  290. package/src/helpers/Extensions/withBlockSchemaEnhancer.js +63 -61
  291. package/src/helpers/Extensions/withBlockSchemaEnhancer.test.js +145 -0
  292. package/src/helpers/FormValidation/FormValidation.js +37 -7
  293. package/src/helpers/FormValidation/FormValidation.test.js +32 -0
  294. package/src/helpers/Html/Html.jsx +2 -8
  295. package/src/helpers/Loadable/__mocks__/Loadable.js +18 -18
  296. package/src/helpers/MessageLabels/MessageLabels.js +39 -4
  297. package/src/helpers/ScrollToTop/ScrollToTop.jsx +5 -3
  298. package/src/helpers/Site/index.js +21 -0
  299. package/src/helpers/Url/Url.js +22 -1
  300. package/src/helpers/Url/Url.test.js +41 -0
  301. package/src/helpers/Utils/UseDetectClickOutside.stories.jsx +190 -0
  302. package/src/helpers/Utils/Utils.js +35 -0
  303. package/src/helpers/Utils/Utils.test.js +13 -0
  304. package/src/helpers/Utils/usePagination.js +67 -14
  305. package/src/helpers/Utils/usePagination.test.js +115 -0
  306. package/src/helpers/index.js +15 -8
  307. package/src/hooks/client/useClient.js +11 -0
  308. package/src/hooks/clipboard/useClipboard.js +26 -0
  309. package/src/hooks/index.js +2 -0
  310. package/src/icons/grid-block.svg +11 -0
  311. package/src/middleware/api.js +203 -173
  312. package/src/middleware/blacklistRoutes.js +25 -22
  313. package/src/middleware/index.js +2 -2
  314. package/src/middleware/storeProtectLoadUtils.js +61 -62
  315. package/src/middleware/storeProtectLoadUtils.test.js +47 -43
  316. package/src/reducers/actions/actions.js +7 -5
  317. package/src/reducers/actions/actions.test.js +70 -0
  318. package/src/reducers/content/content.test.js +4 -4
  319. package/src/reducers/index.js +4 -0
  320. package/src/reducers/navigation/navigation.js +5 -5
  321. package/src/reducers/navigation/navigation.test.js +30 -0
  322. package/src/reducers/navroot/navroot.js +79 -0
  323. package/src/reducers/navroot/navroot.test.js +110 -0
  324. package/src/reducers/relations/relations.js +74 -46
  325. package/src/reducers/site/site.js +51 -0
  326. package/src/reducers/site/site.test.js +67 -0
  327. package/src/reducers/userSession/userSession.js +15 -1
  328. package/src/registry.js +2 -2
  329. package/src/routes.js +9 -0
  330. package/src/server.jsx +9 -0
  331. package/src/start-server.js +6 -2
  332. package/src/storybook.jsx +24 -38
  333. package/test-setup-config.js +11 -1
  334. package/theme/themes/pastanaga/collections/form.overrides +46 -0
  335. package/theme/themes/pastanaga/collections/menu.overrides +3 -2
  336. package/theme/themes/pastanaga/elements/container.overrides +5 -2
  337. package/theme/themes/pastanaga/elements/input.overrides +11 -1
  338. package/theme/themes/pastanaga/elements/label.overrides +10 -0
  339. package/theme/themes/pastanaga/elements/step.overrides +2 -1
  340. package/theme/themes/pastanaga/extras/blocks.less +25 -15
  341. package/theme/themes/pastanaga/extras/color-picker-widget.less +1 -1
  342. package/theme/themes/pastanaga/extras/contents.less +6 -1
  343. package/theme/themes/pastanaga/extras/draftjs.less +4 -4
  344. package/theme/themes/pastanaga/extras/grid.less +427 -0
  345. package/theme/themes/pastanaga/extras/login.less +3 -0
  346. package/theme/themes/pastanaga/extras/main.less +14 -7
  347. package/theme/themes/pastanaga/extras/react-dates-overrides.less +4 -2
  348. package/theme/themes/pastanaga/extras/search.less +7 -1
  349. package/theme/themes/pastanaga/extras/sidebar.less +5 -4
  350. package/theme/themes/pastanaga/extras/time-picker-overrides.less +5 -3
  351. package/theme/themes/pastanaga/extras/toc.less +29 -0
  352. package/theme/themes/pastanaga/extras/toolbar.less +6 -2
  353. package/theme/themes/pastanaga/extras/userscontrolpanel.less +17 -9
  354. package/theme/themes/pastanaga/extras/widgets.less +1 -1
  355. package/theme/themes/pastanaga/modules/rating.overrides +2 -1
  356. package/theme/themes/pastanaga-cms-ui/elements/container.overrides +2 -1
  357. package/theme/themes/pastanaga-cms-ui/extras/cms-ui.elements.container.less +6 -2
  358. package/theme/themes/pastanaga-cms-ui/extras/cms-ui.site.less +2 -2
  359. package/tsconfig.json +33 -0
  360. package/webpack-plugins/webpack-less-plugin.js +19 -0
  361. package/.yarn/install-state.gz +0 -0
  362. package/.yarn/releases/yarn-3.2.3.cjs +0 -783
  363. package/src/components/manage/Blocks/Teaser/utils.js +0 -44
  364. package/src/components/manage/Blocks/Teaser/utils.test.jsx +0 -229
  365. package/src/components/theme/Header/Header.md +0 -27
package/CONTRIBUTING.md CHANGED
@@ -1,3 +1,7 @@
1
1
  # Contributing to Volto
2
2
 
3
- See [Contributing to Volto](https://6.docs.plone.org/volto/developer-guidelines/contributing.html).
3
+ See the following documents.
4
+
5
+ - [Contributing to Plone](https://6.docs.plone.org/contributing/index.html)
6
+ - [Contributing to Volto](https://6.docs.plone.org/volto/contributing/index.html)
7
+ - [First-time contributors](https://6.docs.plone.org/contributing/first-time.html)
package/README.md CHANGED
@@ -86,7 +86,7 @@ cd myvoltoproject
86
86
  You can bootstrap a ready Docker Plone container with all the dependencies and ready for Volto use. We recommend to use the Plone docker builds based in `pip` [plone/plone-backend](https://github.com/plone/plone-backend) image:
87
87
 
88
88
  ```shell
89
- docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.1
89
+ docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.5
90
90
  ```
91
91
 
92
92
  or as an alternative if you have experience with Plone and you have all the
@@ -134,7 +134,7 @@ Go to [http://localhost:3000](http://localhost:3000) in your browser.
134
134
  Volto is actively developed since 2017 and used in production since 2018 on the following websites:
135
135
 
136
136
  - [VHS Ehrenamtsportal](https://vhs-ehrenamtsportal.de) (Website to help volunteers that help refugees for the [German Adult Education Association](https://www.dvv-vhs.de/en/home/), developed by [kitconcept GmbH](https://kitconcept.com), 2018)
137
- - [Zeelandia](https://zeelandia.de) (Corporate website for one of the leading backery ingredients manufacturers in Germany, developed by [kitconcept GmbH](https://kitconcept.com), 2019)
137
+ - [Zeelandia](https://zeelandia.de) (Corporate website for one of the leading bakery ingredients manufacturers in Germany, developed by [kitconcept GmbH](https://kitconcept.com), 2019)
138
138
  - [Excellence at Humboldt-Universität zu Berlin](https://www.alles-beginnt-mit-einer-frage.de) (Website for the excellence initiative of the [Humboldt University Berlin](https://hu-berlin.de), developed by [kitconcept GmbH](https://kitconcept.com), 2019)
139
139
  - [Forest Information System for Europe](https://forest.eea.europa.eu) (Thematic website focusing on European forests, developed by [Eau de Web](https://www.eaudeweb.ro), 2019)
140
140
  - [Industrial Emissions portal for Europe](https://industry.eea.europa.eu) (Thematic website focusing on European industrial emissions, developed by [Eau de Web](https://www.eaudeweb.ro), 2020)
@@ -177,6 +177,8 @@ Volto is actively developed since 2017 and used in production since 2018 on the
177
177
  - [Helmholtz-Institut Erlangen-Nürnberg für Erneuerbare Energien (HI-ERN)](https://www.hi-ern.de) (Website for HI ERN, a research institution for renewable energies, developed by [kitconcept GmbH](https://kitconcept.com), 2022)
178
178
  - [Lanku](https://www.lanku.eus) (Website for Lanku Kultur Zerbitzuak, a company offering cultural services and improvised Basque verse singing sessions across the Basque Country, developed by [CodeSyntax](https://www.codesyntax.com/en), 2023)
179
179
  - [UEU](https://www.ueu.eus) (Website for Udako Euskal Unibertsitatea, a non-profit University offering all its service only in Basque: courses, publications, ... developed by [CodeSyntax](https://www.codesyntax.com/en), 2023)
180
+ - [German Aerospace Center (DLR)](https://www.dlr.de/de) (The German Aerospace Center (DLR) is the Federal Republic of Germany's research center for aeronautics. With more than 10.000 employees and a yearly budget of more than 1 billion euros, it is one of the largest research institutions in Germany, developed by [kitconcept GmbH](https://kitconcept.com), 2023)
181
+ - [Leibniz Institute for Science and Mathematics Education (IPN)](https://www.leibniz-ipn.de) (Website of the IPN, a research institute dedicated to issues related to learning and teaching of science, mathematics and computer science in and outside of schools, developed by [Starzel](https://www.starzel.de), 2023)
180
182
 
181
183
  Please create a new [issue](https://github.com/plone/volto/issues/new) or [pull request](https://github.com/plone/volto/pulls) to add your Volto-site here!
182
184
 
@@ -225,13 +227,14 @@ On the [Plone Training website](https://training.plone.org), you'll find Volto-d
225
227
 
226
228
  [Timo Stollenwerk - Reinventing Plone, Roadmap to the Modern Web](https://2018.ploneconf.org/talks/reinventing-plone-roadmap-to-the-modern-web)
227
229
 
228
- ## Node Support
230
+ ## Node.js Support
229
231
 
230
- - Node 18: Supported since Volto 17
231
- - Node 16: Supported since Volto 14
232
- - Node 14: No longer supported. It was supported from Volto 8.8.0 - 16
233
- - Node 12: No longer supported. It was supported from Volto 4 - 15
234
- - Node 10: No longer supported. It was supported from Volto 1 - 12
232
+ - Node.js 20: Supported since Volto 17
233
+ - Node.js 18: Supported since Volto 17
234
+ - Node.js 16: No longer supported. It was supported from Volto 14 - 16
235
+ - Node.js 14: No longer supported. It was supported from Volto 8.8.0 - 16
236
+ - Node.js 12: No longer supported. It was supported from Volto 4 - 15
237
+ - Node.js 10: No longer supported. It was supported from Volto 1 - 12
235
238
 
236
239
  ## Browser support
237
240
 
@@ -266,7 +269,7 @@ yarn
266
269
  Either using a Docker command:
267
270
 
268
271
  ```shell
269
- docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.1
272
+ docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.5
270
273
  ```
271
274
 
272
275
  or using the convenience makefile command:
package/RELEASING.md CHANGED
@@ -6,18 +6,18 @@ To ease the release process, we use the utility [`release-it`](https://www.npmjs
6
6
 
7
7
  To start a release, you must fulfill the following requirements:
8
8
 
9
- - Have permission to push to `master` branch
9
+ - Have permission to push to `main` branch
10
10
  - Have permission on the [`@plone` organization on npm](https://www.npmjs.com/org/plone).
11
11
  - Have an environment variable `GITHUB_TOKEN` with a GitHub personal token with permissions to write to the [Volto Release page on GitHub](https://github.com/plone/volto/releases).
12
12
  - Install [`pipx`](https://pypa.github.io/pipx/) in your system.
13
13
 
14
14
  To request these permissions, on GitHub tag `@plone/release-team`, or in Discord post to the [`release-team` channel](https://discord.com/channels/786421998426521600/897549410521714760).
15
15
 
16
- ### Permission to push to `master` branch
16
+ ### Permission to push to `main` branch
17
17
 
18
- The release process involves pushing directly to the `master` branch.
19
- Volto's `master` branch is protected, so the releaser needs to have permission for pushing to it.
20
- At the moment of this writing, members of the GitHub group `@plone/volto-team` have permission to push to `master`.
18
+ The release process involves pushing directly to the `main` branch.
19
+ Volto's `main` branch is protected, so the releaser needs to have permission for pushing to it.
20
+ At the moment of this writing, members of the GitHub group `@plone/volto-team` have permission to push to `main`.
21
21
 
22
22
  ### Permission to release Volto to npm registry
23
23
 
package/addon-registry.js CHANGED
@@ -6,6 +6,12 @@ const debug = require('debug')('shadowing');
6
6
  const { map } = require('lodash');
7
7
  const { DepGraph } = require('dependency-graph');
8
8
 
9
+ const excludedCompilerOptionsPaths = [
10
+ '@plone/volto/*',
11
+ '@plone/volto-slate/*',
12
+ '@root/*',
13
+ ];
14
+
9
15
  function getPackageBasePath(base) {
10
16
  while (!fs.existsSync(`${base}/package.json`)) {
11
17
  base = path.join(base, '../');
@@ -197,7 +203,10 @@ class AddonConfigurationRegistry {
197
203
  addons: require(packageJsonPath).addons || [],
198
204
  };
199
205
 
200
- this.packages[name] = Object.assign(this.packages[name] || {}, pkg);
206
+ // Removed excluded paths from CompilerOptions
207
+ if (!excludedCompilerOptionsPaths.includes(name)) {
208
+ this.packages[name] = Object.assign(this.packages[name] || {}, pkg);
209
+ }
201
210
  });
202
211
  }
203
212
  this.initPackagesFolder();
@@ -105,7 +105,7 @@ module.exports = (addons, addonsInfo) => {
105
105
 
106
106
  const addonsLoaderPath = tmp.tmpNameSync({ postfix: '.js' });
107
107
  const code = getAddonsLoaderCode(addons, addonsInfo);
108
- fs.writeFileSync(addonsLoaderPath, new Buffer.from(code));
108
+ fs.writeFileSync(addonsLoaderPath, Buffer.from(code));
109
109
  return addonsLoaderPath;
110
110
  };
111
111
 
@@ -1,4 +1,3 @@
1
- import '@testing-library/cypress/add-commands';
2
1
  import { getIfExists } from '../helpers';
3
2
  import { ploneAuth } from './constants';
4
3
 
@@ -21,6 +20,25 @@ const ploneAuthObj = {
21
20
  pass: ploneAuth[1],
22
21
  };
23
22
 
23
+ export * from './volto-slate';
24
+
25
+ // --- isInViewport ----------------------------------------------------------
26
+ Cypress.Commands.add('isInViewport', (element) => {
27
+ cy.get(element).then(($el) => {
28
+ const windowInnerWidth = Cypress.config(`viewportWidth`);
29
+ const windowInnerHeight = Cypress.config(`viewportHeight`);
30
+ const rect = $el[0].getBoundingClientRect();
31
+
32
+ const rightBoundOfWindow = windowInnerWidth;
33
+ const bottomBoundOfWindow = windowInnerHeight;
34
+
35
+ expect(rect.top).to.be.at.least(0);
36
+ expect(rect.left).to.be.at.least(0);
37
+ expect(rect.right).to.be.lessThan(rightBoundOfWindow);
38
+ expect(rect.bottom).to.be.lessThan(bottomBoundOfWindow);
39
+ });
40
+ });
41
+
24
42
  // --- AUTOLOGIN -------------------------------------------------------------
25
43
  Cypress.Commands.add('autologin', (usr, pass) => {
26
44
  let api_url, user, password;
@@ -671,10 +689,7 @@ Cypress.Commands.add(
671
689
  Cypress.Commands.add('toolbarSave', () => {
672
690
  // Save
673
691
  cy.get('#toolbar-save', { timeout: 10000 }).click();
674
- cy.waitForResourceToLoad('@navigation');
675
- cy.waitForResourceToLoad('@breadcrumbs');
676
- cy.waitForResourceToLoad('@actions');
677
- cy.waitForResourceToLoad('@types');
692
+ cy.waitForResourceToLoad('');
678
693
  });
679
694
 
680
695
  Cypress.Commands.add('clearSlate', (selector) => {
@@ -705,6 +720,20 @@ Cypress.Commands.add('getSlate', (createNewSlate = false) => {
705
720
  return slate;
706
721
  });
707
722
 
723
+ Cypress.Commands.add('getSlateSelector', (selector = SLATE_SELECTOR) => {
724
+ let slate;
725
+ cy.getIfExists(
726
+ selector,
727
+ () => {
728
+ slate = cy.get(selector).last();
729
+ },
730
+ () => {
731
+ slate = cy.get(selector, { timeout: 10000 }).last();
732
+ },
733
+ );
734
+ return slate;
735
+ });
736
+
708
737
  Cypress.Commands.add('getSlateTitle', () => {
709
738
  return cy.get(SLATE_TITLE_SELECTOR, {
710
739
  timeout: 10000,
@@ -751,18 +780,25 @@ Cypress.Commands.add('lineBreakInSlate', { prevSubject: true }, (subject) => {
751
780
  );
752
781
  });
753
782
 
754
- Cypress.Commands.add('setSlateSelection', (subject, query, endQuery) => {
755
- cy.get('.slate-editor.selected [contenteditable=true]')
756
- .focus()
757
- // .click()
758
- .setSelection(subject, query, endQuery)
759
- .wait(1000); // this wait is needed for the selection change to be detected after
760
- });
783
+ Cypress.Commands.add(
784
+ 'setSlateSelection',
785
+ (subject, query, endQuery, wait = 1000) => {
786
+ cy.get('.slate-editor.selected [contenteditable=true]')
787
+ .focus()
788
+ // .click()
789
+ .setSelection(subject, query, endQuery)
790
+ .wait(wait); // this wait is needed for the selection change to be detected after
791
+ },
792
+ );
761
793
 
762
794
  Cypress.Commands.add('getSlateEditorAndType', (type) => {
763
795
  cy.getSlate().focus().click().type(type);
764
796
  });
765
797
 
798
+ Cypress.Commands.add('getSlateEditorSelectorAndType', (selector, type) => {
799
+ cy.getSlateSelector(selector).focus().click().type(type);
800
+ });
801
+
766
802
  Cypress.Commands.add('setSlateCursor', (subject, query, endQuery) => {
767
803
  cy.get('.slate-editor.selected [contenteditable=true]')
768
804
  .focus()
@@ -771,9 +807,9 @@ Cypress.Commands.add('setSlateCursor', (subject, query, endQuery) => {
771
807
  .wait(1000); // this wait is needed for the selection change to be detected after
772
808
  });
773
809
 
774
- Cypress.Commands.add('clickSlateButton', (button) => {
810
+ Cypress.Commands.add('clickSlateButton', (button, timeout = 1000) => {
775
811
  cy.get(`.slate-inline-toolbar .button-wrapper a[title="${button}"]`, {
776
- timeout: 1000,
812
+ timeout,
777
813
  }).click({ force: true }); // force click is needed to ensure the button in visible in view.
778
814
  });
779
815
 
@@ -849,3 +885,23 @@ Cypress.Commands.add('getTableSlate', (header = false) => {
849
885
  );
850
886
  return slate;
851
887
  });
888
+
889
+ Cypress.Commands.add('configureListingWith', (contentType) => {
890
+ cy.get('.sidebar-container .tabs-wrapper .menu .item')
891
+ .contains('Block')
892
+ .click();
893
+ cy.get('.querystring-widget .fields').contains('Add criteria').click();
894
+ cy.get(
895
+ '.querystring-widget .fields:first-of-type .field:first-of-type .react-select__menu .react-select__option',
896
+ )
897
+ .contains('Type')
898
+ .click();
899
+
900
+ //insert Page
901
+ cy.get('.querystring-widget .fields:first-of-type > .field').click();
902
+ cy.get(
903
+ '.querystring-widget .fields:first-of-type > .field .react-select__menu .react-select__option',
904
+ )
905
+ .contains(contentType)
906
+ .click();
907
+ });
@@ -1,3 +1,4 @@
1
+ import '@testing-library/cypress/add-commands';
1
2
  import 'cypress-axe';
2
3
  import 'cypress-file-upload';
3
4
  import './commands';
@@ -28,5 +29,3 @@ afterEach(function () {
28
29
  teardown();
29
30
  }
30
31
  });
31
-
32
- export * from './volto-slate';
@@ -1,4 +1,5 @@
1
1
  export const slateBeforeEach = (contentType = 'Document') => {
2
+ cy.intercept('GET', `/**/*?expand*`).as('content');
2
3
  cy.autologin();
3
4
  cy.createContent({
4
5
  contentType: contentType,
@@ -6,12 +7,10 @@ export const slateBeforeEach = (contentType = 'Document') => {
6
7
  contentTitle: 'My Page',
7
8
  });
8
9
  cy.visit('/my-page');
9
- cy.waitForResourceToLoad('@navigation');
10
- cy.waitForResourceToLoad('@breadcrumbs');
11
- cy.waitForResourceToLoad('@actions');
12
- cy.waitForResourceToLoad('@types');
13
- cy.waitForResourceToLoad('my-page');
10
+ cy.wait('@content');
11
+
14
12
  cy.navigate('/my-page/edit');
13
+ cy.wait('@content');
15
14
  };
16
15
 
17
16
  export const getSelectedSlateEditor = () => {
package/cypress.config.js CHANGED
@@ -4,6 +4,7 @@ module.exports = defineConfig({
4
4
  viewportWidth: 1280,
5
5
  chromeWebSecurity: false,
6
6
  projectId: 'hvviu4',
7
+ video: true, // To remove when Test Replay is available in cypress.io
7
8
  e2e: {
8
9
  baseUrl: 'http://127.0.0.1:3000',
9
10
  excludeSpecPattern: ['*~'],
@@ -2,7 +2,7 @@ version: '3.3'
2
2
  services:
3
3
 
4
4
  backend:
5
- image: plone/plone-backend:6.0.1
5
+ image: plone/plone-backend:6.0.5
6
6
  # Plone 5.2 series can be used too
7
7
  # image: plone/plone-backend:5.2.10
8
8
  ports: