@plone/volto 17.0.0-alpha.3 → 17.0.0-alpha.30

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 (438) hide show
  1. package/.eslintrc +26 -3
  2. package/.yarn/install-state.gz +0 -0
  3. package/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs +541 -0
  4. package/.yarn/releases/yarn-3.6.3.cjs +874 -0
  5. package/CHANGELOG.md +716 -20
  6. package/CONTRIBUTING.md +5 -1
  7. package/README.md +20 -21
  8. package/addon-registry.js +44 -1
  9. package/create-addons-loader.js +1 -1
  10. package/create-theme-addons-loader.js +79 -0
  11. package/cypress/support/commands.js +70 -14
  12. package/cypress/support/e2e.js +1 -2
  13. package/cypress/support/volto-slate.js +4 -5
  14. package/cypress.config.js +1 -0
  15. package/docker-compose.yml +1 -1
  16. package/locales/ca/LC_MESSAGES/volto.po +422 -53
  17. package/locales/ca.json +1 -1
  18. package/locales/de/LC_MESSAGES/volto.po +442 -73
  19. package/locales/de.json +1 -1
  20. package/locales/en/LC_MESSAGES/volto.po +420 -51
  21. package/locales/en.json +1 -1
  22. package/locales/es/LC_MESSAGES/volto.po +431 -62
  23. package/locales/es.json +1 -1
  24. package/locales/eu/LC_MESSAGES/volto.po +421 -52
  25. package/locales/eu.json +1 -1
  26. package/locales/fi/LC_MESSAGES/volto.po +4985 -0
  27. package/locales/fi.json +1 -1
  28. package/locales/fr/LC_MESSAGES/volto.po +422 -53
  29. package/locales/fr.json +1 -1
  30. package/locales/it/LC_MESSAGES/volto.po +589 -220
  31. package/locales/it.json +1 -1
  32. package/locales/ja/LC_MESSAGES/volto.po +421 -52
  33. package/locales/ja.json +1 -1
  34. package/locales/nl/LC_MESSAGES/volto.po +1072 -691
  35. package/locales/nl.json +1 -1
  36. package/locales/pt/LC_MESSAGES/volto.po +422 -53
  37. package/locales/pt.json +1 -1
  38. package/locales/pt_BR/LC_MESSAGES/volto.po +429 -60
  39. package/locales/pt_BR.json +1 -1
  40. package/locales/ro/LC_MESSAGES/volto.po +422 -53
  41. package/locales/ro.json +1 -1
  42. package/locales/volto.pot +425 -52
  43. package/locales/zh_CN/LC_MESSAGES/volto.po +422 -53
  44. package/locales/zh_CN.json +1 -1
  45. package/package.json +46 -35
  46. package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +1 -1
  47. package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +1 -1
  48. package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +1 -1
  49. package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +1 -1
  50. package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +1 -1
  51. package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +1 -1
  52. package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +1 -1
  53. package/packages/volto-slate/build/messages/src/elementEditor/messages.json +1 -1
  54. package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +1 -1
  55. package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +1 -1
  56. package/packages/volto-slate/package.json +1 -1
  57. package/packages/volto-slate/src/actions/index.js +1 -1
  58. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +21 -212
  59. package/packages/volto-slate/src/blocks/Table/schema.js +122 -0
  60. package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +8 -3
  61. package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +4 -3
  62. package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +21 -16
  63. package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +3 -1
  64. package/packages/volto-slate/src/blocks/Text/index.js +10 -7
  65. package/packages/volto-slate/src/editor/config.jsx +5 -4
  66. package/packages/volto-slate/src/editor/deserialize.js +0 -1
  67. package/packages/volto-slate/src/editor/index.js +4 -4
  68. package/packages/volto-slate/src/editor/less/slate.less +28 -0
  69. package/packages/volto-slate/src/editor/plugins/Link/render.jsx +5 -6
  70. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +14 -4
  71. package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +14 -5
  72. package/packages/volto-slate/src/editor/render.jsx +77 -8
  73. package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +2 -2
  74. package/packages/volto-slate/src/editor/ui/index.js +15 -15
  75. package/packages/volto-slate/src/index.js +2 -2
  76. package/packages/volto-slate/src/utils/blocks.js +7 -0
  77. package/packages/volto-slate/src/widgets/RichTextWidget.jsx +15 -8
  78. package/razzle.config.js +32 -6
  79. package/src/actions/index.js +10 -0
  80. package/src/actions/language/language.js +9 -8
  81. package/src/actions/navroot/navroot.js +16 -0
  82. package/src/actions/navroot/navroot.test.js +15 -0
  83. package/src/actions/querystringsearch/querystringsearch.js +20 -14
  84. package/src/actions/relations/rebuild.js +25 -0
  85. package/src/actions/relations/relations.js +103 -0
  86. package/src/actions/relations/relations.test.js +15 -0
  87. package/src/actions/site/site.js +16 -0
  88. package/src/actions/site/site.test.js +15 -0
  89. package/src/actions/userSession/userSession.js +17 -1
  90. package/src/components/index.js +194 -191
  91. package/src/components/manage/Actions/Actions.jsx +133 -243
  92. package/src/components/manage/Add/Add.jsx +9 -10
  93. package/src/components/manage/AnchorPlugin/index.jsx +2 -2
  94. package/src/components/manage/AnchorPlugin/utils/EditorUtils.js +3 -1
  95. package/src/components/manage/BlockChooser/BlockChooser.jsx +8 -3
  96. package/src/components/manage/BlockChooser/BlockChooser.test.jsx +5 -0
  97. package/src/components/manage/Blocks/Block/BlocksForm.jsx +19 -2
  98. package/src/components/manage/Blocks/Block/Edit.jsx +1 -1
  99. package/src/components/manage/Blocks/Block/Settings.jsx +2 -0
  100. package/src/components/manage/Blocks/Block/Settings.test.jsx +92 -0
  101. package/src/components/manage/Blocks/Block/Style.jsx +2 -2
  102. package/src/components/manage/Blocks/Container/Data.jsx +32 -0
  103. package/src/components/manage/Blocks/Container/Edit.jsx +177 -0
  104. package/src/components/manage/Blocks/Container/EditBlockWrapper.jsx +121 -0
  105. package/src/components/manage/Blocks/Container/NewBlockAddButton.jsx +84 -0
  106. package/src/components/manage/Blocks/Container/SimpleContainerToolbar.jsx +54 -0
  107. package/src/components/manage/Blocks/Grid/Edit.jsx +47 -0
  108. package/src/components/manage/Blocks/Grid/View.jsx +43 -0
  109. package/src/components/manage/Blocks/Grid/adapter.js +14 -0
  110. package/src/components/manage/Blocks/Grid/grid-1.svg +6 -0
  111. package/src/components/manage/Blocks/Grid/grid-2.svg +9 -0
  112. package/src/components/manage/Blocks/Grid/grid-3.svg +10 -0
  113. package/src/components/manage/Blocks/Grid/grid-4.svg +11 -0
  114. package/src/components/manage/Blocks/Grid/schema.js +35 -0
  115. package/src/components/manage/Blocks/Grid/templates.js +47 -0
  116. package/src/components/manage/Blocks/HTML/Edit.jsx +8 -8
  117. package/src/components/manage/Blocks/HeroImageLeft/Edit.jsx +36 -26
  118. package/src/components/manage/Blocks/Image/Edit.jsx +51 -12
  119. package/src/components/manage/Blocks/Image/Edit.test.jsx +2 -0
  120. package/src/components/manage/Blocks/Image/ImageSidebar.jsx +66 -16
  121. package/src/components/manage/Blocks/Image/View.jsx +26 -5
  122. package/src/components/manage/Blocks/Image/View.test.jsx +20 -0
  123. package/src/components/manage/Blocks/Image/schema.js +17 -10
  124. package/src/components/manage/Blocks/Image/utils.js +14 -0
  125. package/src/components/manage/Blocks/LeadImage/Edit.jsx +32 -10
  126. package/src/components/manage/Blocks/LeadImage/Edit.test.jsx +11 -1
  127. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.jsx +28 -9
  128. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.test.jsx +8 -2
  129. package/src/components/manage/Blocks/LeadImage/View.jsx +50 -38
  130. package/src/components/manage/Blocks/LeadImage/View.test.jsx +11 -1
  131. package/src/components/manage/Blocks/Listing/DefaultTemplate.jsx +18 -3
  132. package/src/components/manage/Blocks/Listing/Edit.jsx +0 -14
  133. package/src/components/manage/Blocks/Listing/ListingBody.jsx +32 -8
  134. package/src/components/manage/Blocks/Listing/ListingBody.test.jsx +20 -0
  135. package/src/components/manage/Blocks/Listing/SummaryTemplate.jsx +1 -1
  136. package/src/components/manage/Blocks/Listing/getAsyncData.js +9 -3
  137. package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +34 -19
  138. package/src/components/manage/Blocks/Maps/Edit.jsx +135 -209
  139. package/src/components/manage/Blocks/Maps/Edit.test.jsx +1 -2
  140. package/src/components/manage/Blocks/Maps/View.test.jsx +1 -2
  141. package/src/components/manage/Blocks/Search/SearchBlockEdit.jsx +5 -4
  142. package/src/components/manage/Blocks/Search/SearchBlockView.jsx +4 -2
  143. package/src/components/manage/Blocks/Search/components/DateRangeFacet.jsx +4 -1
  144. package/src/components/manage/Blocks/Search/components/Facets.jsx +66 -7
  145. package/src/components/manage/Blocks/Search/components/FilterList.jsx +4 -6
  146. package/src/components/manage/Blocks/Search/components/SearchInput.jsx +9 -2
  147. package/src/components/manage/Blocks/Search/components/SelectFacet.jsx +2 -9
  148. package/src/components/manage/Blocks/Search/components/index.js +13 -13
  149. package/src/components/manage/Blocks/Search/hocs/index.js +2 -2
  150. package/src/components/manage/Blocks/Search/hocs/withQueryString.jsx +5 -2
  151. package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +93 -46
  152. package/src/components/manage/Blocks/Search/layout/LeftColumnFacets.jsx +17 -5
  153. package/src/components/manage/Blocks/Search/layout/RightColumnFacets.jsx +17 -5
  154. package/src/components/manage/Blocks/Search/layout/TopSideFacets.jsx +21 -5
  155. package/src/components/manage/Blocks/Search/schema.js +29 -14
  156. package/src/components/manage/Blocks/Table/Cell.jsx +2 -3
  157. package/src/components/manage/Blocks/Teaser/Body.jsx +0 -1
  158. package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +5 -10
  159. package/src/components/manage/Blocks/Teaser/schema.js +5 -0
  160. package/src/components/manage/Blocks/Text/Edit.jsx +2 -3
  161. package/src/components/manage/Blocks/Title/View.jsx +0 -23
  162. package/src/components/manage/Blocks/Title/View.test.jsx +16 -1
  163. package/src/components/manage/Blocks/ToC/Schema.jsx +40 -7
  164. package/src/components/manage/Blocks/ToC/View.jsx +84 -14
  165. package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.jsx +8 -3
  166. package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.test.jsx +44 -0
  167. package/src/components/manage/Blocks/ToC/variations/HorizontalMenu.jsx +149 -10
  168. package/src/components/manage/Blocks/ToC/variations/index.js +3 -1
  169. package/src/components/manage/Contents/Contents.jsx +319 -139
  170. package/src/components/manage/Contents/ContentsItem.jsx +6 -0
  171. package/src/components/manage/Contents/ContentsPropertiesModal.jsx +90 -166
  172. package/src/components/manage/Contents/ContentsRenameModal.jsx +88 -139
  173. package/src/components/manage/Contents/ContentsRenameModal.stories.jsx +61 -0
  174. package/src/components/manage/Contents/ContentsTagsModal.jsx +83 -130
  175. package/src/components/manage/Contents/ContentsTagsModal.stories.jsx +68 -0
  176. package/src/components/manage/Contents/ContentsUploadModal.jsx +11 -7
  177. package/src/components/manage/Contents/ContentsWorkflowModal.jsx +87 -154
  178. package/src/components/manage/Controlpanels/Aliases.jsx +4 -12
  179. package/src/components/manage/Controlpanels/Controlpanels.jsx +199 -224
  180. package/src/components/manage/Controlpanels/Controlpanels.test.jsx +46 -7
  181. package/src/components/manage/Controlpanels/Groups/GroupsControlpanel.jsx +65 -38
  182. package/src/components/manage/Controlpanels/Groups/RenderGroups.jsx +2 -2
  183. package/src/components/manage/Controlpanels/Relations/BrokenRelations.jsx +91 -0
  184. package/src/components/manage/Controlpanels/Relations/Relations.jsx +114 -0
  185. package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +480 -0
  186. package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +531 -0
  187. package/src/components/manage/Controlpanels/Rules/AddRule.jsx +3 -10
  188. package/src/components/manage/Controlpanels/Rules/EditRule.jsx +1 -1
  189. package/src/components/manage/Controlpanels/UndoControlpanel.jsx +6 -9
  190. package/src/components/manage/Controlpanels/Users/RenderUsers.jsx +97 -7
  191. package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +3 -3
  192. package/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx +51 -82
  193. package/src/components/manage/Controlpanels/Users/UserGroupMembershipMatrix.jsx +79 -75
  194. package/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +127 -99
  195. package/src/components/manage/Delete/Delete.jsx +96 -171
  196. package/src/components/manage/Diff/DiffField.jsx +25 -1
  197. package/src/components/manage/DragDropList/DragDropList.jsx +18 -13
  198. package/src/components/manage/Form/BlockDataForm.jsx +3 -2
  199. package/src/components/manage/Form/BlockDataForm.test.jsx +51 -17
  200. package/src/components/manage/Form/Form.jsx +7 -6
  201. package/src/components/manage/Form/InlineForm.jsx +39 -9
  202. package/src/components/manage/Form/InlineForm.test.jsx +16 -14
  203. package/src/components/manage/Form/InlineFormState.js +8 -0
  204. package/src/components/manage/History/History.jsx +11 -1
  205. package/src/components/manage/LinksToItem/LinksToItem.jsx +209 -0
  206. package/src/components/manage/LinksToItem/LinksToItem.test.jsx +100 -0
  207. package/src/components/manage/LockingToastsFactory/LockingToastsFactory.jsx +1 -2
  208. package/src/components/manage/Messages/Messages.jsx +32 -99
  209. package/src/components/manage/Messages/Messages.test.jsx +0 -1
  210. package/src/components/manage/Multilingual/CreateTranslation.jsx +2 -2
  211. package/src/components/manage/Multilingual/TranslationObject.jsx +4 -3
  212. package/src/components/manage/Preferences/ChangePassword.jsx +2 -2
  213. package/src/components/manage/Preferences/PersonalPreferences.jsx +2 -2
  214. package/src/components/manage/Sharing/Sharing.jsx +62 -22
  215. package/src/components/manage/Sidebar/AlignBlock.jsx +1 -1
  216. package/src/components/manage/Sidebar/Sidebar.jsx +139 -220
  217. package/src/components/manage/TemplateChooser/TemplateChooser.jsx +38 -0
  218. package/src/components/manage/TemplateChooser/TemplateChooser.test.jsx +34 -0
  219. package/src/components/manage/TemplateChooser/template.svg +10 -0
  220. package/src/components/manage/Toast/Toast.jsx +2 -2
  221. package/src/components/manage/Toolbar/More.jsx +17 -2
  222. package/src/components/manage/Toolbar/PersonalTools.jsx +97 -155
  223. package/src/components/manage/Toolbar/Toolbar.jsx +2 -2
  224. package/src/components/manage/Toolbar/Types.jsx +2 -2
  225. package/src/components/manage/UniversalLink/UniversalLink.jsx +6 -12
  226. package/src/components/manage/UniversalLink/UniversalLink.test.jsx +37 -0
  227. package/src/components/manage/Widgets/AlignWidget.jsx +2 -4
  228. package/src/components/manage/Widgets/ArrayWidget.jsx +3 -1
  229. package/src/components/manage/Widgets/ArrayWidget.test.jsx +45 -1
  230. package/src/components/manage/Widgets/ColorPickerWidget.jsx +6 -1
  231. package/src/components/manage/Widgets/ColorPickerWidget.test.jsx +9 -7
  232. package/src/components/manage/Widgets/DatetimeWidget.jsx +11 -13
  233. package/src/components/manage/Widgets/FileWidget.jsx +2 -1
  234. package/src/components/manage/Widgets/FormFieldWrapper.jsx +1 -1
  235. package/src/components/manage/Widgets/IdWidget.jsx +1 -2
  236. package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +2 -9
  237. package/src/components/manage/Widgets/ObjectListWidget.jsx +3 -8
  238. package/src/components/manage/Widgets/RecurrenceWidget/ByDayField.jsx +2 -1
  239. package/src/components/manage/Widgets/RecurrenceWidget/MonthOfTheYearField.jsx +2 -1
  240. package/src/components/manage/Widgets/RecurrenceWidget/Occurences.jsx +2 -1
  241. package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +10 -12
  242. package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthField.jsx +2 -1
  243. package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.jsx +4 -4
  244. package/src/components/manage/Widgets/RegistryImageWidget.jsx +210 -0
  245. package/src/components/manage/Widgets/RegistryImageWidget.test.jsx +91 -0
  246. package/src/components/manage/Widgets/SchemaWidget.jsx +6 -9
  247. package/src/components/manage/Widgets/SelectUtils.js +2 -2
  248. package/src/components/manage/Widgets/SelectWidget.jsx +16 -2
  249. package/src/components/manage/Widgets/SelectWidget.test.jsx +45 -1
  250. package/src/components/manage/Widgets/WysiwygWidget.jsx +2 -9
  251. package/src/components/manage/Workflow/Workflow.jsx +75 -184
  252. package/src/components/theme/Anontools/Anontools.jsx +44 -72
  253. package/src/components/theme/Anontools/Anontools.stories.jsx +16 -6
  254. package/src/components/theme/Anontools/Anontools.test.jsx +16 -2
  255. package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +52 -99
  256. package/src/components/theme/Breadcrumbs/Breadcrumbs.stories.jsx +14 -13
  257. package/src/components/theme/Comments/Comment.stories.jsx +84 -0
  258. package/src/components/theme/Comments/CommentEditModal.jsx +63 -115
  259. package/src/components/theme/Comments/Comments.jsx +268 -380
  260. package/src/components/theme/Component/Component.jsx +1 -1
  261. package/src/components/theme/ContactForm/ContactForm.jsx +108 -192
  262. package/src/components/theme/ContactForm/ContactForm.stories.jsx +1 -1
  263. package/src/components/theme/ContactForm/ContactForm.test.jsx +2 -3
  264. package/src/components/theme/ContentMetadataTags/ContentMetadataTags.jsx +41 -3
  265. package/src/components/theme/Error/ServerError.jsx +29 -0
  266. package/src/components/theme/Footer/Footer.jsx +2 -13
  267. package/src/components/theme/Header/Header.jsx +37 -63
  268. package/src/components/theme/Header/Header.test.jsx +18 -0
  269. package/src/components/theme/Icon/Icon.jsx +2 -2
  270. package/src/components/theme/Image/Image.jsx +96 -0
  271. package/src/components/theme/Image/Image.test.jsx +125 -0
  272. package/src/components/theme/LanguageSelector/LanguageSelector.js +8 -3
  273. package/src/components/theme/Login/Login.jsx +160 -242
  274. package/src/components/theme/Logo/Logo.Multilingual.test.jsx +131 -1
  275. package/src/components/theme/Logo/Logo.jsx +35 -26
  276. package/src/components/theme/Logo/Logo.test.jsx +135 -1
  277. package/src/components/theme/Logout/Logout.jsx +36 -83
  278. package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +2 -2
  279. package/src/components/theme/Navigation/NavItem.jsx +4 -2
  280. package/src/components/theme/Navigation/Navigation.jsx +86 -171
  281. package/src/components/theme/NotFound/NotFound.jsx +55 -41
  282. package/src/components/theme/PasswordReset/PasswordReset.jsx +8 -6
  283. package/src/components/theme/PasswordReset/RequestPasswordReset.jsx +96 -171
  284. package/src/components/theme/PreviewImage/PreviewImage.jsx +31 -15
  285. package/src/components/theme/PreviewImage/PreviewImage.test.js +53 -13
  286. package/src/components/theme/Register/Register.jsx +2 -4
  287. package/src/components/theme/Search/SearchTags.jsx +30 -60
  288. package/src/components/theme/SearchWidget/SearchWidget.jsx +49 -97
  289. package/src/components/theme/SearchWidget/SearchWidget.test.jsx +8 -0
  290. package/src/components/theme/Sitemap/Sitemap.jsx +25 -12
  291. package/src/components/theme/Sitemap/Sitemap.test.jsx +23 -2
  292. package/src/components/theme/TsTest/TsTest.test.tsx +11 -0
  293. package/src/components/theme/TsTest/TsTest.tsx +15 -0
  294. package/src/components/theme/View/AlbumView.jsx +21 -16
  295. package/src/components/theme/View/DefaultView.jsx +1 -1
  296. package/src/components/theme/View/EventDatesInfo.jsx +2 -1
  297. package/src/components/theme/View/EventView.jsx +36 -25
  298. package/src/components/theme/View/FileView.jsx +23 -18
  299. package/src/components/theme/View/ImageView.jsx +40 -32
  300. package/src/components/theme/View/ImageView.test.jsx +4 -0
  301. package/src/components/theme/View/LinkView.jsx +53 -78
  302. package/src/components/theme/View/ListingView.jsx +36 -28
  303. package/src/components/theme/View/NewsItemView.jsx +16 -17
  304. package/src/components/theme/View/RenderBlocks.jsx +56 -21
  305. package/src/components/theme/View/RenderEmptyBlock.jsx +5 -0
  306. package/src/components/theme/View/SummaryView.jsx +49 -39
  307. package/src/components/theme/View/TabularView.jsx +59 -53
  308. package/src/components/theme/View/View.jsx +2 -0
  309. package/src/components/theme/Widgets/DateWidget.jsx +2 -1
  310. package/src/components/theme/Widgets/DatetimeWidget.jsx +2 -1
  311. package/src/components/theme/Widgets/ImageWidget.stories.jsx +1 -2
  312. package/src/components/theme/Widgets/RelationsWidget.jsx +13 -11
  313. package/src/config/Blocks.jsx +46 -0
  314. package/src/config/Components.jsx +3 -1
  315. package/src/config/ControlPanels.js +2 -1
  316. package/src/config/Loadables.jsx +1 -1
  317. package/src/config/NonContentRoutes.jsx +1 -0
  318. package/src/config/RichTextEditor/Blocks.jsx +4 -5
  319. package/src/config/RichTextEditor/FromHTML.jsx +2 -2
  320. package/src/config/RichTextEditor/Plugins.jsx +2 -3
  321. package/src/config/RichTextEditor/Styles.jsx +1 -1
  322. package/src/config/RichTextEditor/ToHTML.jsx +12 -10
  323. package/src/config/RichTextEditor/index.js +2 -3
  324. package/src/config/Views.jsx +6 -4
  325. package/src/config/Widgets.jsx +4 -0
  326. package/src/config/index.js +38 -2
  327. package/src/config/server.js +2 -0
  328. package/src/constants/ActionTypes.js +8 -0
  329. package/src/constants/Indexes.js +3 -1
  330. package/src/constants/Languages.js +8 -4
  331. package/src/express-middleware/devproxy.js +1 -1
  332. package/src/express-middleware/files.js +11 -9
  333. package/src/express-middleware/images.js +12 -5
  334. package/src/express-middleware/ok.js +16 -0
  335. package/src/express-middleware/robotstxt.js +1 -1
  336. package/src/express-middleware/sitemap.js +37 -5
  337. package/src/express-middleware/static.js +3 -3
  338. package/src/helpers/Api/Api.js +1 -1
  339. package/src/helpers/Blocks/Blocks.js +52 -6
  340. package/src/helpers/Blocks/Blocks.test.js +92 -13
  341. package/src/helpers/Extensions/index.js +2 -1
  342. package/src/helpers/Extensions/withBlockSchemaEnhancer.js +63 -61
  343. package/src/helpers/Extensions/withBlockSchemaEnhancer.test.js +145 -0
  344. package/src/helpers/FormValidation/FormValidation.js +42 -3
  345. package/src/helpers/FormValidation/FormValidation.test.js +73 -0
  346. package/src/helpers/Html/Html.jsx +5 -9
  347. package/src/helpers/Html/Html.test.jsx +5 -0
  348. package/src/helpers/Loadable/__mocks__/Loadable.js +18 -18
  349. package/src/helpers/MessageLabels/MessageLabels.js +111 -4
  350. package/src/helpers/Robots/Robots.js +24 -6
  351. package/src/helpers/ScrollToTop/ScrollToTop.jsx +5 -3
  352. package/src/helpers/Site/index.js +21 -0
  353. package/src/helpers/Sitemap/Sitemap.js +44 -2
  354. package/src/helpers/Url/Url.js +30 -4
  355. package/src/helpers/Url/Url.test.js +55 -0
  356. package/src/helpers/Utils/UseDetectClickOutside.stories.jsx +190 -0
  357. package/src/helpers/Utils/Utils.js +73 -13
  358. package/src/helpers/Utils/Utils.test.js +17 -4
  359. package/src/helpers/Utils/usePagination.js +67 -14
  360. package/src/helpers/Utils/usePagination.test.js +115 -0
  361. package/src/helpers/index.js +22 -10
  362. package/src/hooks/client/useClient.js +11 -0
  363. package/src/hooks/clipboard/useClipboard.js +26 -0
  364. package/src/hooks/index.js +2 -0
  365. package/src/icons/grid-block.svg +11 -0
  366. package/src/middleware/Api.test.js +54 -0
  367. package/src/middleware/api.js +209 -175
  368. package/src/middleware/blacklistRoutes.js +25 -22
  369. package/src/middleware/index.js +2 -2
  370. package/src/middleware/storeProtectLoadUtils.js +61 -62
  371. package/src/middleware/storeProtectLoadUtils.test.js +47 -43
  372. package/src/reducers/actions/actions.js +8 -6
  373. package/src/reducers/actions/actions.test.js +70 -0
  374. package/src/reducers/breadcrumbs/breadcrumbs.js +1 -1
  375. package/src/reducers/content/content.test.js +4 -4
  376. package/src/reducers/index.js +6 -0
  377. package/src/reducers/navigation/navigation.js +6 -6
  378. package/src/reducers/navigation/navigation.test.js +30 -0
  379. package/src/reducers/navroot/navroot.js +79 -0
  380. package/src/reducers/navroot/navroot.test.js +110 -0
  381. package/src/reducers/relations/relations.js +201 -0
  382. package/src/reducers/site/site.js +51 -0
  383. package/src/reducers/site/site.test.js +67 -0
  384. package/src/reducers/types/types.js +1 -1
  385. package/src/reducers/userSession/userSession.js +15 -1
  386. package/src/registry.js +2 -2
  387. package/src/routes.js +14 -0
  388. package/src/server.jsx +37 -23
  389. package/src/start-server.js +2 -2
  390. package/src/storybook.jsx +24 -38
  391. package/test-setup-config.js +12 -1
  392. package/theme/themes/pastanaga/collections/form.overrides +46 -0
  393. package/theme/themes/pastanaga/collections/menu.overrides +3 -2
  394. package/theme/themes/pastanaga/elements/container.overrides +5 -2
  395. package/theme/themes/pastanaga/elements/input.overrides +11 -1
  396. package/theme/themes/pastanaga/elements/label.overrides +10 -0
  397. package/theme/themes/pastanaga/elements/step.overrides +2 -1
  398. package/theme/themes/pastanaga/extras/blocks.less +25 -15
  399. package/theme/themes/pastanaga/extras/color-picker-widget.less +1 -1
  400. package/theme/themes/pastanaga/extras/contents.less +6 -1
  401. package/theme/themes/pastanaga/extras/draftjs.less +4 -4
  402. package/theme/themes/pastanaga/extras/grid.less +427 -0
  403. package/theme/themes/pastanaga/extras/login.less +3 -0
  404. package/theme/themes/pastanaga/extras/main.less +14 -7
  405. package/theme/themes/pastanaga/extras/react-dates-overrides.less +4 -2
  406. package/theme/themes/pastanaga/extras/search.less +7 -1
  407. package/theme/themes/pastanaga/extras/sidebar.less +9 -4
  408. package/theme/themes/pastanaga/extras/time-picker-overrides.less +5 -3
  409. package/theme/themes/pastanaga/extras/toc.less +29 -0
  410. package/theme/themes/pastanaga/extras/toolbar.less +6 -2
  411. package/theme/themes/pastanaga/extras/userscontrolpanel.less +104 -73
  412. package/theme/themes/pastanaga/extras/widgets.less +1 -1
  413. package/theme/themes/pastanaga/modules/rating.overrides +2 -1
  414. package/theme/themes/pastanaga-cms-ui/elements/container.overrides +2 -1
  415. package/theme/themes/pastanaga-cms-ui/extras/cms-ui.elements.container.less +6 -2
  416. package/theme/themes/pastanaga-cms-ui/extras/cms-ui.site.less +2 -2
  417. package/tsconfig.json +33 -0
  418. package/webpack-plugins/webpack-less-plugin.js +19 -0
  419. package/.changelog.draft +0 -19
  420. package/.editorconfig +0 -36
  421. package/.storybook/main.js +0 -127
  422. package/.storybook/manager.js +0 -15
  423. package/.storybook/preview.js +0 -21
  424. package/.storybook/static/previewImage.svg +0 -48
  425. package/.vale.ini +0 -10
  426. package/.yarnrc.yml +0 -5
  427. package/jsdoc.json +0 -16
  428. package/netlify.toml +0 -5
  429. package/pyvenv.cfg +0 -3
  430. package/share/man/man1/ttx.1 +0 -225
  431. package/src/components/manage/Blocks/Teaser/utils.js +0 -44
  432. package/src/components/manage/Blocks/Teaser/utils.test.jsx +0 -229
  433. package/src/components/theme/Header/Header.md +0 -27
  434. package/styles/Vocab/Base/accept.txt +0 -0
  435. package/styles/Vocab/Base/reject.txt +0 -0
  436. package/styles/Vocab/Plone/accept.txt +0 -8
  437. package/styles/Vocab/Plone/reject.txt +0 -0
  438. package/towncrier.toml +0 -33
package/CONTRIBUTING.md CHANGED
@@ -1,3 +1,7 @@
1
1
  # Contributing to Volto
2
2
 
3
- See [Contributing to Volto](https://6.dev-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,28 +177,26 @@ 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)
180
181
 
181
182
  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
183
 
183
184
  ## Documentation
184
185
 
185
- You can find the latest (in-progress) documentation in [https://6.dev-docs.plone.org/](https://6.dev-docs.plone.org/volto/index.html)
186
+ You can find the latest (in-progress) documentation in [https://6.docs.plone.org/](https://6.docs.plone.org/volto/index.html)
186
187
 
187
188
  ## Training
188
189
 
189
- On the [Plone Trainings Website](https://training.plone.org) you'll find
190
- Volto-dedicated open training materials, plus React and other
191
- JavaScript-centered trainings.
190
+ On the [Plone Training website](https://training.plone.org), you'll find Volto-dedicated training materials, plus other JavaScript-centered trainings.
192
191
 
193
192
  - [Mastering Plone 6 Development](https://training.plone.org/mastering-plone/)
194
193
  The comprehensive training on Plone 6 with best practice tips for developers and integrators.
195
- - [Volto](https://training.plone.org/5/volto/index.html)
196
- A detailed training on how to create your own website using Volto frontend.
197
194
  - [Volto Hands-On](https://training.plone.org/voltohandson/index.html)
198
195
  - [Volto Add-ons Development](https://training.plone.org/voltoaddons/index.html)
199
- - [Plone Deployment](https://training.plone.org/5/plone-deployment/index.html)
200
- - [React](https://training.plone.org/react/index.html)
201
- - [JavaScript For Plone Developers](https://training.plone.org/5/javascript/index.html)
196
+ - [Effective Volto](https://training.plone.org/effective-volto/index.html)
197
+ - [Plone Deployment](https://training.plone.org/plone-deployment/index.html)
198
+ - [Volto](https://2022.training.plone.org/volto/index.html) (archived)
199
+ - [JavaScript For Plone Developers](https://2022.training.plone.org/javascript/index.html) (archived)
202
200
 
203
201
  ## Talks
204
202
 
@@ -228,13 +226,14 @@ JavaScript-centered trainings.
228
226
 
229
227
  [Timo Stollenwerk - Reinventing Plone, Roadmap to the Modern Web](https://2018.ploneconf.org/talks/reinventing-plone-roadmap-to-the-modern-web)
230
228
 
231
- ## Node Support
229
+ ## Node.js Support
232
230
 
233
- - Node 18: Supported since Volto 17
234
- - Node 16: Supported since Volto 14
235
- - Node 14: No longer supported. It was supported from Volto 8.8.0 - 16
236
- - Node 12: No longer supported. It was supported from Volto 4 - 15
237
- - Node 10: No longer supported. It was supported from Volto 1 - 12
231
+ - Node.js 20: Supported since Volto 17
232
+ - Node.js 18: Supported since Volto 17
233
+ - Node.js 16: No longer supported. It was supported from Volto 14 - 16
234
+ - Node.js 14: No longer supported. It was supported from Volto 8.8.0 - 16
235
+ - Node.js 12: No longer supported. It was supported from Volto 4 - 15
236
+ - Node.js 10: No longer supported. It was supported from Volto 1 - 12
238
237
 
239
238
  ## Browser support
240
239
 
@@ -245,7 +244,7 @@ We do not guarantee that deprecated browsers (e.g., Internet Explorer 11) are su
245
244
 
246
245
  ## Upgrades
247
246
 
248
- You can find the upgrade guide here: https://6.dev-docs.plone.org/volto/upgrade-guide/index.html
247
+ You can find the upgrade guide here: https://6.docs.plone.org/volto/upgrade-guide/index.html
249
248
 
250
249
  ## Volto Development
251
250
 
@@ -269,7 +268,7 @@ yarn
269
268
  Either using a Docker command:
270
269
 
271
270
  ```shell
272
- docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.1
271
+ docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.5
273
272
  ```
274
273
 
275
274
  or using the convenience makefile command:
@@ -320,11 +319,11 @@ yarn test
320
319
 
321
320
  Here you can find a guide on how acceptance testing is done in Volto:
322
321
 
323
- https://6.dev-docs.plone.org/volto/developer-guidelines/acceptance-tests.html
322
+ https://6.docs.plone.org/volto/developer-guidelines/acceptance-tests.html
324
323
 
325
324
  ## Translations
326
325
 
327
- If you would like contribute to translate Volto into several languages, please, read the [Internationalization (i18n) guide](https://6.dev-docs.plone.org/volto/recipes/i18n.html).
326
+ If you would like contribute to translate Volto into several languages, please, read the [Internationalization (i18n) guide](https://6.docs.plone.org/volto/recipes/i18n.html).
328
327
 
329
328
  ## Contributors
330
329
 
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, '../');
@@ -130,6 +136,11 @@ class AddonConfigurationRegistry {
130
136
  this.packages = {};
131
137
  this.customizations = new Map();
132
138
 
139
+ // Theme from a package.json key, from volto.config.js or from an ENV VAR
140
+ // Programatically via volto.config.js wins or the ENV VAR if present
141
+ this.theme =
142
+ packageJson.theme || this.voltoConfigJS.theme || process.env.THEME;
143
+
133
144
  this.initDevelopmentPackages();
134
145
  this.initPublishedPackages();
135
146
  this.initAddonsFromEnvVar();
@@ -192,7 +203,10 @@ class AddonConfigurationRegistry {
192
203
  addons: require(packageJsonPath).addons || [],
193
204
  };
194
205
 
195
- 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
+ }
196
210
  });
197
211
  }
198
212
  this.initPackagesFolder();
@@ -354,6 +368,35 @@ class AddonConfigurationRegistry {
354
368
  .filter((e) => e);
355
369
  }
356
370
 
371
+ getCustomThemeAddons() {
372
+ const customThemeAddonsInfo = {
373
+ variables: [],
374
+ main: [],
375
+ };
376
+
377
+ this.getAddonDependencies().forEach((addon) => {
378
+ const normalizedAddonName = addon.split(':')[0];
379
+ // We have two possible insertion points, variables and main
380
+
381
+ const customThemeVariables = `${this.packages[normalizedAddonName].modulePath}/theme/_variables.scss`;
382
+ const customThemeMain = `${this.packages[normalizedAddonName].modulePath}/theme/_main.scss`;
383
+ if (
384
+ fs.existsSync(customThemeVariables) &&
385
+ normalizedAddonName !== this.theme
386
+ ) {
387
+ customThemeAddonsInfo.variables.push(normalizedAddonName);
388
+ }
389
+ if (
390
+ fs.existsSync(customThemeMain) &&
391
+ normalizedAddonName !== this.theme
392
+ ) {
393
+ customThemeAddonsInfo.main.push(normalizedAddonName);
394
+ }
395
+ });
396
+
397
+ return customThemeAddonsInfo;
398
+ }
399
+
357
400
  /**
358
401
  * Returns a mapping name:diskpath to be uses in webpack's resolve aliases
359
402
  */
@@ -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
 
@@ -0,0 +1,79 @@
1
+ const path = require('path');
2
+ const fs = require('fs');
3
+ const tmp = require('tmp');
4
+ const cryptoRandomString = require('crypto-random-string');
5
+
6
+ const titleCase = (w) => w.slice(0, 1).toUpperCase() + w.slice(1, w.length);
7
+
8
+ /*
9
+ * Transforms a package name to javascript variable name
10
+ */
11
+ function nameFromPackage(name) {
12
+ name =
13
+ name.replace(/[@~./\\:\s]/gi, '') ||
14
+ cryptoRandomString({ length: 10, characters: 'abcdefghijk' });
15
+ return name
16
+ .split('-')
17
+ .map((w, i) => (i > 0 ? titleCase(w) : w))
18
+ .join('');
19
+ }
20
+
21
+ /*
22
+ * Creates a static file with code necessary to load the addons configuration
23
+ *
24
+ */
25
+ function getAddonsLoaderCode(name, customThemeAddons = []) {
26
+ let buf = `/*
27
+ This file is autogenerated. Don't change it directly.
28
+ Add a ./theme/_${name}.scss in your add-on to load your theme customizations in the current theme.
29
+ */
30
+
31
+ `;
32
+ customThemeAddons.forEach((addon) => {
33
+ const customization = `${addon}/theme/${name}`;
34
+ const line = `@import '${customization}';\n`;
35
+ buf += line;
36
+ });
37
+
38
+ return buf;
39
+ }
40
+
41
+ module.exports = ({ main, variables }) => {
42
+ // const addonsThemeLoaderVariablesPath = path.join(
43
+ // process.cwd(),
44
+ // 'src',
45
+ // '_variables.scss',
46
+ // );
47
+ // const addonsThemeLoaderMainPath = path.join(
48
+ // process.cwd(),
49
+ // 'src',
50
+ // '_main.scss',
51
+ // );
52
+
53
+ // const addonsThemeLoaderVariablesPath = path.join(
54
+ // process.cwd(),
55
+ // 'src',
56
+ // '_variables.scss',
57
+ // );
58
+ // const addonsThemeLoaderMainPath = path.join(
59
+ // process.cwd(),
60
+ // 'src',
61
+ // '_main.scss',
62
+ // );
63
+
64
+ const addonsThemeLoaderVariablesPath = tmp.tmpNameSync({ postfix: '.scss' });
65
+ const addonsThemeLoaderMainPath = tmp.tmpNameSync({ postfix: '.scss' });
66
+ fs.writeFileSync(
67
+ addonsThemeLoaderVariablesPath,
68
+ new Buffer.from(getAddonsLoaderCode('variables', variables)),
69
+ );
70
+ fs.writeFileSync(
71
+ addonsThemeLoaderMainPath,
72
+ new Buffer.from(getAddonsLoaderCode('main', main)),
73
+ );
74
+
75
+ return [addonsThemeLoaderVariablesPath, addonsThemeLoaderMainPath];
76
+ };
77
+
78
+ module.exports.getAddonsLoaderCode = getAddonsLoaderCode;
79
+ module.exports.nameFromPackage = nameFromPackage;
@@ -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: