@plone/volto 17.0.0-alpha.2 → 17.0.0-alpha.21

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 (318) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/CHANGELOG.md +549 -15
  3. package/CONTRIBUTING.md +1 -1
  4. package/README.md +11 -14
  5. package/addon-registry.js +34 -0
  6. package/create-theme-addons-loader.js +79 -0
  7. package/cypress/support/commands.js +58 -5
  8. package/cypress/support/e2e.js +1 -2
  9. package/cypress/support/volto-slate.js +4 -5
  10. package/docker-compose.yml +1 -1
  11. package/locales/ca/LC_MESSAGES/volto.po +282 -7
  12. package/locales/ca.json +1 -1
  13. package/locales/de/LC_MESSAGES/volto.po +301 -26
  14. package/locales/de.json +1 -1
  15. package/locales/en/LC_MESSAGES/volto.po +281 -6
  16. package/locales/en.json +1 -1
  17. package/locales/es/LC_MESSAGES/volto.po +291 -16
  18. package/locales/es.json +1 -1
  19. package/locales/eu/LC_MESSAGES/volto.po +282 -7
  20. package/locales/eu.json +1 -1
  21. package/locales/fi/LC_MESSAGES/volto.po +4891 -0
  22. package/locales/fi.json +1 -1
  23. package/locales/fr/LC_MESSAGES/volto.po +282 -7
  24. package/locales/fr.json +1 -1
  25. package/locales/it/LC_MESSAGES/volto.po +284 -9
  26. package/locales/it.json +1 -1
  27. package/locales/ja/LC_MESSAGES/volto.po +282 -7
  28. package/locales/ja.json +1 -1
  29. package/locales/nl/LC_MESSAGES/volto.po +937 -650
  30. package/locales/nl.json +1 -1
  31. package/locales/pt/LC_MESSAGES/volto.po +282 -7
  32. package/locales/pt.json +1 -1
  33. package/locales/pt_BR/LC_MESSAGES/volto.po +291 -16
  34. package/locales/pt_BR.json +1 -1
  35. package/locales/ro/LC_MESSAGES/volto.po +282 -7
  36. package/locales/ro.json +1 -1
  37. package/locales/volto.pot +282 -7
  38. package/locales/zh_CN/LC_MESSAGES/volto.po +282 -7
  39. package/locales/zh_CN.json +1 -1
  40. package/package.json +8 -6
  41. package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +1 -1
  42. package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +1 -1
  43. package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +1 -1
  44. package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +1 -1
  45. package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +1 -1
  46. package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +1 -1
  47. package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +1 -1
  48. package/packages/volto-slate/build/messages/src/elementEditor/messages.json +1 -1
  49. package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +1 -1
  50. package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +1 -1
  51. package/packages/volto-slate/package.json +1 -1
  52. package/packages/volto-slate/src/actions/index.js +1 -1
  53. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +21 -212
  54. package/packages/volto-slate/src/blocks/Table/schema.js +122 -0
  55. package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +8 -3
  56. package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +4 -3
  57. package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +20 -16
  58. package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +3 -1
  59. package/packages/volto-slate/src/blocks/Text/index.js +10 -2
  60. package/packages/volto-slate/src/editor/config.jsx +5 -4
  61. package/packages/volto-slate/src/editor/deserialize.js +0 -1
  62. package/packages/volto-slate/src/editor/index.js +4 -4
  63. package/packages/volto-slate/src/editor/less/slate.less +28 -0
  64. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +14 -4
  65. package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +14 -5
  66. package/packages/volto-slate/src/editor/render.jsx +68 -8
  67. package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +2 -2
  68. package/packages/volto-slate/src/editor/ui/index.js +15 -15
  69. package/packages/volto-slate/src/index.js +2 -2
  70. package/packages/volto-slate/src/utils/blocks.js +7 -0
  71. package/packages/volto-slate/src/widgets/RichTextWidget.jsx +15 -8
  72. package/razzle.config.js +28 -0
  73. package/src/actions/index.js +6 -0
  74. package/src/actions/language/language.js +9 -8
  75. package/src/actions/querystringsearch/querystringsearch.js +20 -14
  76. package/src/actions/relations/rebuild.js +25 -0
  77. package/src/actions/relations/relations.js +86 -0
  78. package/src/actions/relations/relations.test.js +15 -0
  79. package/src/components/index.js +3 -0
  80. package/src/components/manage/Add/Add.jsx +2 -2
  81. package/src/components/manage/AnchorPlugin/index.jsx +2 -2
  82. package/src/components/manage/AnchorPlugin/utils/EditorUtils.js +3 -1
  83. package/src/components/manage/BlockChooser/BlockChooser.jsx +14 -5
  84. package/src/components/manage/BlockChooser/BlockChooser.test.jsx +5 -0
  85. package/src/components/manage/Blocks/Block/BlocksForm.jsx +19 -2
  86. package/src/components/manage/Blocks/Block/Edit.jsx +1 -1
  87. package/src/components/manage/Blocks/Block/Style.jsx +2 -2
  88. package/src/components/manage/Blocks/Container/Data.jsx +32 -0
  89. package/src/components/manage/Blocks/Container/Edit.jsx +174 -0
  90. package/src/components/manage/Blocks/Container/EditBlockWrapper.jsx +120 -0
  91. package/src/components/manage/Blocks/Container/NewBlockAddButton.jsx +84 -0
  92. package/src/components/manage/Blocks/Container/SimpleContainerToolbar.jsx +54 -0
  93. package/src/components/manage/Blocks/Grid/Edit.jsx +33 -0
  94. package/src/components/manage/Blocks/Grid/View.jsx +43 -0
  95. package/src/components/manage/Blocks/Grid/adapter.js +14 -0
  96. package/src/components/manage/Blocks/Grid/grid-1.svg +6 -0
  97. package/src/components/manage/Blocks/Grid/grid-2.svg +9 -0
  98. package/src/components/manage/Blocks/Grid/grid-3.svg +10 -0
  99. package/src/components/manage/Blocks/Grid/grid-4.svg +11 -0
  100. package/src/components/manage/Blocks/Grid/schema.js +35 -0
  101. package/src/components/manage/Blocks/Grid/templates.js +47 -0
  102. package/src/components/manage/Blocks/HeroImageLeft/Edit.jsx +6 -1
  103. package/src/components/manage/Blocks/Image/Edit.jsx +51 -12
  104. package/src/components/manage/Blocks/Image/Edit.test.jsx +2 -0
  105. package/src/components/manage/Blocks/Image/ImageSidebar.jsx +66 -16
  106. package/src/components/manage/Blocks/Image/View.jsx +25 -5
  107. package/src/components/manage/Blocks/Image/View.test.jsx +20 -0
  108. package/src/components/manage/Blocks/Image/schema.js +12 -9
  109. package/src/components/manage/Blocks/Image/utils.js +14 -0
  110. package/src/components/manage/Blocks/LeadImage/Edit.jsx +32 -10
  111. package/src/components/manage/Blocks/LeadImage/Edit.test.jsx +11 -1
  112. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.jsx +28 -9
  113. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.test.jsx +8 -2
  114. package/src/components/manage/Blocks/LeadImage/View.jsx +50 -38
  115. package/src/components/manage/Blocks/LeadImage/View.test.jsx +11 -1
  116. package/src/components/manage/Blocks/Listing/DefaultTemplate.jsx +18 -3
  117. package/src/components/manage/Blocks/Listing/Edit.jsx +0 -14
  118. package/src/components/manage/Blocks/Listing/ListingBody.jsx +30 -8
  119. package/src/components/manage/Blocks/Listing/ListingBody.test.jsx +20 -0
  120. package/src/components/manage/Blocks/Listing/SummaryTemplate.jsx +1 -1
  121. package/src/components/manage/Blocks/Listing/getAsyncData.js +9 -3
  122. package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +26 -18
  123. package/src/components/manage/Blocks/Search/SearchBlockEdit.jsx +5 -4
  124. package/src/components/manage/Blocks/Search/SearchBlockView.jsx +2 -1
  125. package/src/components/manage/Blocks/Search/components/DateRangeFacet.jsx +4 -1
  126. package/src/components/manage/Blocks/Search/components/Facets.jsx +64 -4
  127. package/src/components/manage/Blocks/Search/components/SearchInput.jsx +9 -2
  128. package/src/components/manage/Blocks/Search/components/index.js +13 -13
  129. package/src/components/manage/Blocks/Search/hocs/index.js +2 -2
  130. package/src/components/manage/Blocks/Search/hocs/withQueryString.jsx +2 -2
  131. package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +43 -15
  132. package/src/components/manage/Blocks/Search/layout/LeftColumnFacets.jsx +17 -5
  133. package/src/components/manage/Blocks/Search/layout/RightColumnFacets.jsx +17 -5
  134. package/src/components/manage/Blocks/Search/layout/TopSideFacets.jsx +21 -5
  135. package/src/components/manage/Blocks/Search/schema.js +16 -1
  136. package/src/components/manage/Blocks/Teaser/Body.jsx +0 -1
  137. package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +5 -10
  138. package/src/components/manage/Blocks/Teaser/schema.js +5 -0
  139. package/src/components/manage/Blocks/Title/View.jsx +15 -5
  140. package/src/components/manage/Blocks/Title/View.test.jsx +16 -1
  141. package/src/components/manage/Blocks/ToC/Schema.jsx +5 -1
  142. package/src/components/manage/Blocks/ToC/View.jsx +8 -1
  143. package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.jsx +17 -4
  144. package/src/components/manage/Blocks/ToC/variations/HorizontalMenu.jsx +148 -10
  145. package/src/components/manage/Blocks/ToC/variations/index.js +3 -1
  146. package/src/components/manage/Contents/Contents.jsx +47 -32
  147. package/src/components/manage/Contents/ContentsItem.jsx +6 -0
  148. package/src/components/manage/Contents/ContentsUploadModal.jsx +10 -5
  149. package/src/components/manage/Controlpanels/AddonsControlpanel.jsx +3 -3
  150. package/src/components/manage/Controlpanels/Controlpanels.jsx +199 -224
  151. package/src/components/manage/Controlpanels/Controlpanels.test.jsx +46 -7
  152. package/src/components/manage/Controlpanels/Relations/BrokenRelations.jsx +66 -0
  153. package/src/components/manage/Controlpanels/Relations/Relations.jsx +114 -0
  154. package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +479 -0
  155. package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +531 -0
  156. package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +3 -3
  157. package/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx +51 -82
  158. package/src/components/manage/Controlpanels/Users/UserGroupMembershipMatrix.jsx +79 -75
  159. package/src/components/manage/DragDropList/DragDropList.jsx +18 -13
  160. package/src/components/manage/Form/Form.jsx +5 -3
  161. package/src/components/manage/Form/InlineForm.jsx +39 -9
  162. package/src/components/manage/Form/InlineFormState.js +8 -0
  163. package/src/components/manage/History/History.jsx +11 -1
  164. package/src/components/manage/LinksToItem/LinksToItem.jsx +209 -0
  165. package/src/components/manage/LinksToItem/LinksToItem.test.jsx +97 -0
  166. package/src/components/manage/Multilingual/CreateTranslation.jsx +2 -2
  167. package/src/components/manage/Multilingual/TranslationObject.jsx +4 -3
  168. package/src/components/manage/Preferences/ChangePassword.jsx +2 -2
  169. package/src/components/manage/Preferences/PersonalPreferences.jsx +2 -2
  170. package/src/components/manage/Sharing/Sharing.jsx +5 -1
  171. package/src/components/manage/Sidebar/AlignBlock.jsx +1 -1
  172. package/src/components/manage/TemplateChooser/TemplateChooser.jsx +38 -0
  173. package/src/components/manage/TemplateChooser/TemplateChooser.test.jsx +34 -0
  174. package/src/components/manage/TemplateChooser/template.svg +10 -0
  175. package/src/components/manage/Toast/Toast.jsx +2 -2
  176. package/src/components/manage/Toolbar/More.jsx +15 -0
  177. package/src/components/manage/Toolbar/Types.jsx +2 -2
  178. package/src/components/manage/UniversalLink/UniversalLink.jsx +2 -6
  179. package/src/components/manage/UniversalLink/UniversalLink.test.jsx +36 -0
  180. package/src/components/manage/Widgets/ColorPickerWidget.jsx +6 -1
  181. package/src/components/manage/Widgets/DatetimeWidget.jsx +9 -5
  182. package/src/components/manage/Widgets/FileWidget.jsx +2 -1
  183. package/src/components/manage/Widgets/ObjectListWidget.jsx +3 -8
  184. package/src/components/manage/Widgets/RecurrenceWidget/ByDayField.jsx +2 -1
  185. package/src/components/manage/Widgets/RecurrenceWidget/MonthOfTheYearField.jsx +2 -1
  186. package/src/components/manage/Widgets/RecurrenceWidget/Occurences.jsx +2 -1
  187. package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +8 -3
  188. package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthField.jsx +2 -1
  189. package/src/components/manage/Widgets/SelectUtils.js +1 -1
  190. package/src/components/manage/Widgets/SelectWidget.jsx +1 -1
  191. package/src/components/theme/Anontools/Anontools.jsx +44 -72
  192. package/src/components/theme/Anontools/Anontools.stories.jsx +16 -6
  193. package/src/components/theme/Anontools/Anontools.test.jsx +16 -2
  194. package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +52 -99
  195. package/src/components/theme/Breadcrumbs/Breadcrumbs.stories.jsx +14 -13
  196. package/src/components/theme/Comments/CommentEditModal.jsx +63 -115
  197. package/src/components/theme/Component/Component.jsx +1 -1
  198. package/src/components/theme/ContactForm/ContactForm.jsx +108 -192
  199. package/src/components/theme/ContactForm/ContactForm.stories.jsx +1 -1
  200. package/src/components/theme/ContactForm/ContactForm.test.jsx +2 -3
  201. package/src/components/theme/Footer/Footer.jsx +2 -13
  202. package/src/components/theme/Header/Header.jsx +37 -63
  203. package/src/components/theme/Header/Header.test.jsx +18 -0
  204. package/src/components/theme/Icon/Icon.jsx +2 -2
  205. package/src/components/theme/Image/Image.jsx +96 -0
  206. package/src/components/theme/Image/Image.test.jsx +125 -0
  207. package/src/components/theme/LanguageSelector/LanguageSelector.js +8 -3
  208. package/src/components/theme/Login/Login.jsx +1 -0
  209. package/src/components/theme/Logo/Logo.jsx +4 -1
  210. package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +2 -2
  211. package/src/components/theme/Navigation/NavItem.jsx +4 -2
  212. package/src/components/theme/NotFound/NotFound.jsx +55 -41
  213. package/src/components/theme/PasswordReset/PasswordReset.jsx +7 -4
  214. package/src/components/theme/PasswordReset/RequestPasswordReset.jsx +1 -1
  215. package/src/components/theme/PreviewImage/PreviewImage.jsx +25 -14
  216. package/src/components/theme/PreviewImage/PreviewImage.test.js +39 -16
  217. package/src/components/theme/SearchWidget/SearchWidget.jsx +38 -98
  218. package/src/components/theme/Sitemap/Sitemap.jsx +5 -3
  219. package/src/components/theme/View/AlbumView.jsx +20 -16
  220. package/src/components/theme/View/DefaultView.jsx +1 -1
  221. package/src/components/theme/View/EventDatesInfo.jsx +2 -1
  222. package/src/components/theme/View/EventView.jsx +36 -25
  223. package/src/components/theme/View/FileView.jsx +23 -18
  224. package/src/components/theme/View/ImageView.jsx +40 -32
  225. package/src/components/theme/View/ImageView.test.jsx +4 -0
  226. package/src/components/theme/View/LinkView.jsx +53 -78
  227. package/src/components/theme/View/ListingView.jsx +36 -28
  228. package/src/components/theme/View/NewsItemView.jsx +16 -17
  229. package/src/components/theme/View/RenderBlocks.jsx +56 -21
  230. package/src/components/theme/View/RenderEmptyBlock.jsx +5 -0
  231. package/src/components/theme/View/SummaryView.jsx +49 -39
  232. package/src/components/theme/View/TabularView.jsx +59 -53
  233. package/src/components/theme/Widgets/DateWidget.jsx +2 -1
  234. package/src/components/theme/Widgets/DatetimeWidget.jsx +2 -1
  235. package/src/components/theme/Widgets/RelationsWidget.jsx +13 -11
  236. package/src/config/Blocks.jsx +46 -0
  237. package/src/config/Components.jsx +2 -1
  238. package/src/config/ControlPanels.js +2 -0
  239. package/src/config/NonContentRoutes.jsx +1 -0
  240. package/src/config/RichTextEditor/Blocks.jsx +2 -2
  241. package/src/config/RichTextEditor/FromHTML.jsx +2 -2
  242. package/src/config/RichTextEditor/Styles.jsx +1 -1
  243. package/src/config/Widgets.jsx +2 -0
  244. package/src/config/index.js +24 -0
  245. package/src/config/server.js +2 -0
  246. package/src/constants/ActionTypes.js +4 -0
  247. package/src/constants/Indexes.js +3 -1
  248. package/src/constants/Languages.js +8 -4
  249. package/src/express-middleware/devproxy.js +1 -1
  250. package/src/express-middleware/files.js +3 -3
  251. package/src/express-middleware/images.js +4 -4
  252. package/src/express-middleware/ok.js +16 -0
  253. package/src/express-middleware/robotstxt.js +1 -1
  254. package/src/express-middleware/sitemap.js +37 -5
  255. package/src/express-middleware/static.js +3 -3
  256. package/src/helpers/Api/Api.js +1 -1
  257. package/src/helpers/Blocks/Blocks.js +48 -0
  258. package/src/helpers/Blocks/Blocks.test.js +79 -0
  259. package/src/helpers/Extensions/index.js +2 -1
  260. package/src/helpers/Extensions/withBlockSchemaEnhancer.js +15 -11
  261. package/src/helpers/Extensions/withBlockSchemaEnhancer.test.js +145 -0
  262. package/src/helpers/FormValidation/FormValidation.js +40 -2
  263. package/src/helpers/FormValidation/FormValidation.test.js +73 -0
  264. package/src/helpers/Html/Html.jsx +3 -1
  265. package/src/helpers/Html/Html.test.jsx +5 -0
  266. package/src/helpers/MessageLabels/MessageLabels.js +80 -0
  267. package/src/helpers/Robots/Robots.js +24 -6
  268. package/src/helpers/ScrollToTop/ScrollToTop.jsx +5 -3
  269. package/src/helpers/Sitemap/Sitemap.js +44 -2
  270. package/src/helpers/Url/Url.js +49 -7
  271. package/src/helpers/Url/Url.test.js +67 -0
  272. package/src/helpers/Utils/UseDetectClickOutside.stories.jsx +191 -0
  273. package/src/helpers/Utils/Utils.js +63 -13
  274. package/src/helpers/Utils/Utils.test.js +4 -4
  275. package/src/helpers/Utils/usePagination.js +67 -14
  276. package/src/helpers/Utils/usePagination.test.js +115 -0
  277. package/src/helpers/index.js +20 -10
  278. package/src/hooks/client/useClient.js +11 -0
  279. package/src/hooks/clipboard/useClipboard.js +26 -0
  280. package/src/hooks/index.js +2 -0
  281. package/src/icons/grid-block.svg +11 -0
  282. package/src/middleware/Api.test.js +54 -0
  283. package/src/middleware/api.js +24 -6
  284. package/src/middleware/index.js +2 -2
  285. package/src/reducers/actions/actions.js +8 -6
  286. package/src/reducers/actions/actions.test.js +70 -0
  287. package/src/reducers/breadcrumbs/breadcrumbs.js +1 -1
  288. package/src/reducers/index.js +2 -0
  289. package/src/reducers/navigation/navigation.js +1 -1
  290. package/src/reducers/relations/relations.js +173 -0
  291. package/src/reducers/types/types.js +1 -1
  292. package/src/routes.js +14 -0
  293. package/src/server.jsx +28 -23
  294. package/src/start-server.js +2 -2
  295. package/test-setup-config.js +11 -1
  296. package/theme/themes/pastanaga/extras/blocks.less +5 -1
  297. package/theme/themes/pastanaga/extras/contents.less +1 -0
  298. package/theme/themes/pastanaga/extras/grid.less +426 -0
  299. package/theme/themes/pastanaga/extras/main.less +8 -1
  300. package/theme/themes/pastanaga/extras/search.less +6 -0
  301. package/theme/themes/pastanaga/extras/sidebar.less +4 -0
  302. package/theme/themes/pastanaga/extras/toc.less +29 -0
  303. package/theme/themes/pastanaga/extras/userscontrolpanel.less +99 -76
  304. package/.changelog.draft +0 -31
  305. package/.editorconfig +0 -36
  306. package/.storybook/main.js +0 -127
  307. package/.storybook/manager.js +0 -15
  308. package/.storybook/preview.js +0 -21
  309. package/.storybook/static/previewImage.svg +0 -48
  310. package/.yarnrc.yml +0 -5
  311. package/jsdoc.json +0 -16
  312. package/netlify.toml +0 -5
  313. package/pyvenv.cfg +0 -3
  314. package/share/man/man1/ttx.1 +0 -225
  315. package/src/components/manage/Blocks/Teaser/utils.js +0 -44
  316. package/src/components/manage/Blocks/Teaser/utils.test.jsx +0 -229
  317. package/src/components/theme/Header/Header.md +0 -27
  318. package/towncrier.toml +0 -33
package/CONTRIBUTING.md CHANGED
@@ -1,3 +1,3 @@
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 [Contributing to Volto](https://6.docs.plone.org/volto/developer-guidelines/contributing.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
@@ -182,23 +182,20 @@ Please create a new [issue](https://github.com/plone/volto/issues/new) or [pull
182
182
 
183
183
  ## Documentation
184
184
 
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)
185
+ You can find the latest (in-progress) documentation in [https://6.docs.plone.org/](https://6.docs.plone.org/volto/index.html)
186
186
 
187
187
  ## Training
188
188
 
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.
189
+ On the [Plone Training website](https://training.plone.org), you'll find Volto-dedicated training materials, plus other JavaScript-centered trainings.
192
190
 
193
191
  - [Mastering Plone 6 Development](https://training.plone.org/mastering-plone/)
194
192
  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
193
  - [Volto Hands-On](https://training.plone.org/voltohandson/index.html)
198
194
  - [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)
195
+ - [Effective Volto](https://training.plone.org/effective-volto/index.html)
196
+ - [Plone Deployment](https://training.plone.org/plone-deployment/index.html)
197
+ - [Volto](https://2022.training.plone.org/volto/index.html) (archived)
198
+ - [JavaScript For Plone Developers](https://2022.training.plone.org/javascript/index.html) (archived)
202
199
 
203
200
  ## Talks
204
201
 
@@ -245,7 +242,7 @@ We do not guarantee that deprecated browsers (e.g., Internet Explorer 11) are su
245
242
 
246
243
  ## Upgrades
247
244
 
248
- You can find the upgrade guide here: https://6.dev-docs.plone.org/volto/upgrade-guide/index.html
245
+ You can find the upgrade guide here: https://6.docs.plone.org/volto/upgrade-guide/index.html
249
246
 
250
247
  ## Volto Development
251
248
 
@@ -269,7 +266,7 @@ yarn
269
266
  Either using a Docker command:
270
267
 
271
268
  ```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
269
+ 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
270
  ```
274
271
 
275
272
  or using the convenience makefile command:
@@ -320,11 +317,11 @@ yarn test
320
317
 
321
318
  Here you can find a guide on how acceptance testing is done in Volto:
322
319
 
323
- https://6.dev-docs.plone.org/volto/developer-guidelines/acceptance-tests.html
320
+ https://6.docs.plone.org/volto/developer-guidelines/acceptance-tests.html
324
321
 
325
322
  ## Translations
326
323
 
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).
324
+ 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
325
 
329
326
  ## Contributors
330
327
 
package/addon-registry.js CHANGED
@@ -130,6 +130,11 @@ class AddonConfigurationRegistry {
130
130
  this.packages = {};
131
131
  this.customizations = new Map();
132
132
 
133
+ // Theme from a package.json key, from volto.config.js or from an ENV VAR
134
+ // Programatically via volto.config.js wins or the ENV VAR if present
135
+ this.theme =
136
+ packageJson.theme || this.voltoConfigJS.theme || process.env.THEME;
137
+
133
138
  this.initDevelopmentPackages();
134
139
  this.initPublishedPackages();
135
140
  this.initAddonsFromEnvVar();
@@ -354,6 +359,35 @@ class AddonConfigurationRegistry {
354
359
  .filter((e) => e);
355
360
  }
356
361
 
362
+ getCustomThemeAddons() {
363
+ const customThemeAddonsInfo = {
364
+ variables: [],
365
+ main: [],
366
+ };
367
+
368
+ this.getAddonDependencies().forEach((addon) => {
369
+ const normalizedAddonName = addon.split(':')[0];
370
+ // We have two possible insertion points, variables and main
371
+
372
+ const customThemeVariables = `${this.packages[normalizedAddonName].modulePath}/theme/_variables.scss`;
373
+ const customThemeMain = `${this.packages[normalizedAddonName].modulePath}/theme/_main.scss`;
374
+ if (
375
+ fs.existsSync(customThemeVariables) &&
376
+ normalizedAddonName !== this.theme
377
+ ) {
378
+ customThemeAddonsInfo.variables.push(normalizedAddonName);
379
+ }
380
+ if (
381
+ fs.existsSync(customThemeMain) &&
382
+ normalizedAddonName !== this.theme
383
+ ) {
384
+ customThemeAddonsInfo.main.push(normalizedAddonName);
385
+ }
386
+ });
387
+
388
+ return customThemeAddonsInfo;
389
+ }
390
+
357
391
  /**
358
392
  * Returns a mapping name:diskpath to be uses in webpack's resolve aliases
359
393
  */
@@ -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,
@@ -763,6 +792,10 @@ Cypress.Commands.add('getSlateEditorAndType', (type) => {
763
792
  cy.getSlate().focus().click().type(type);
764
793
  });
765
794
 
795
+ Cypress.Commands.add('getSlateEditorSelectorAndType', (selector, type) => {
796
+ cy.getSlateSelector(selector).focus().click().type(type);
797
+ });
798
+
766
799
  Cypress.Commands.add('setSlateCursor', (subject, query, endQuery) => {
767
800
  cy.get('.slate-editor.selected [contenteditable=true]')
768
801
  .focus()
@@ -849,3 +882,23 @@ Cypress.Commands.add('getTableSlate', (header = false) => {
849
882
  );
850
883
  return slate;
851
884
  });
885
+
886
+ Cypress.Commands.add('configureListingWith', (contentType) => {
887
+ cy.get('.sidebar-container .tabs-wrapper .menu .item')
888
+ .contains('Block')
889
+ .click();
890
+ cy.get('.querystring-widget .fields').contains('Add criteria').click();
891
+ cy.get(
892
+ '.querystring-widget .fields:first-of-type .field:first-of-type .react-select__menu .react-select__option',
893
+ )
894
+ .contains('Type')
895
+ .click();
896
+
897
+ //insert Page
898
+ cy.get('.querystring-widget .fields:first-of-type > .field').click();
899
+ cy.get(
900
+ '.querystring-widget .fields:first-of-type > .field .react-select__menu .react-select__option',
901
+ )
902
+ .contains(contentType)
903
+ .click();
904
+ });
@@ -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 = () => {
@@ -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: