@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.
- package/.eslintrc +26 -3
- package/.yarn/install-state.gz +0 -0
- package/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs +541 -0
- package/.yarn/releases/yarn-3.6.3.cjs +874 -0
- package/CHANGELOG.md +716 -20
- package/CONTRIBUTING.md +5 -1
- package/README.md +20 -21
- package/addon-registry.js +44 -1
- package/create-addons-loader.js +1 -1
- package/create-theme-addons-loader.js +79 -0
- package/cypress/support/commands.js +70 -14
- package/cypress/support/e2e.js +1 -2
- package/cypress/support/volto-slate.js +4 -5
- package/cypress.config.js +1 -0
- package/docker-compose.yml +1 -1
- package/locales/ca/LC_MESSAGES/volto.po +422 -53
- package/locales/ca.json +1 -1
- package/locales/de/LC_MESSAGES/volto.po +442 -73
- package/locales/de.json +1 -1
- package/locales/en/LC_MESSAGES/volto.po +420 -51
- package/locales/en.json +1 -1
- package/locales/es/LC_MESSAGES/volto.po +431 -62
- package/locales/es.json +1 -1
- package/locales/eu/LC_MESSAGES/volto.po +421 -52
- package/locales/eu.json +1 -1
- package/locales/fi/LC_MESSAGES/volto.po +4985 -0
- package/locales/fi.json +1 -1
- package/locales/fr/LC_MESSAGES/volto.po +422 -53
- package/locales/fr.json +1 -1
- package/locales/it/LC_MESSAGES/volto.po +589 -220
- package/locales/it.json +1 -1
- package/locales/ja/LC_MESSAGES/volto.po +421 -52
- package/locales/ja.json +1 -1
- package/locales/nl/LC_MESSAGES/volto.po +1072 -691
- package/locales/nl.json +1 -1
- package/locales/pt/LC_MESSAGES/volto.po +422 -53
- package/locales/pt.json +1 -1
- package/locales/pt_BR/LC_MESSAGES/volto.po +429 -60
- package/locales/pt_BR.json +1 -1
- package/locales/ro/LC_MESSAGES/volto.po +422 -53
- package/locales/ro.json +1 -1
- package/locales/volto.pot +425 -52
- package/locales/zh_CN/LC_MESSAGES/volto.po +422 -53
- package/locales/zh_CN.json +1 -1
- package/package.json +46 -35
- package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +1 -1
- package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +1 -1
- package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +1 -1
- package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +1 -1
- package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +1 -1
- package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +1 -1
- package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +1 -1
- package/packages/volto-slate/build/messages/src/elementEditor/messages.json +1 -1
- package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +1 -1
- package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +1 -1
- package/packages/volto-slate/package.json +1 -1
- package/packages/volto-slate/src/actions/index.js +1 -1
- package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +21 -212
- package/packages/volto-slate/src/blocks/Table/schema.js +122 -0
- package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +8 -3
- package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +4 -3
- package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +21 -16
- package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +3 -1
- package/packages/volto-slate/src/blocks/Text/index.js +10 -7
- package/packages/volto-slate/src/editor/config.jsx +5 -4
- package/packages/volto-slate/src/editor/deserialize.js +0 -1
- package/packages/volto-slate/src/editor/index.js +4 -4
- package/packages/volto-slate/src/editor/less/slate.less +28 -0
- package/packages/volto-slate/src/editor/plugins/Link/render.jsx +5 -6
- package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +14 -4
- package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +14 -5
- package/packages/volto-slate/src/editor/render.jsx +77 -8
- package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +2 -2
- package/packages/volto-slate/src/editor/ui/index.js +15 -15
- package/packages/volto-slate/src/index.js +2 -2
- package/packages/volto-slate/src/utils/blocks.js +7 -0
- package/packages/volto-slate/src/widgets/RichTextWidget.jsx +15 -8
- package/razzle.config.js +32 -6
- package/src/actions/index.js +10 -0
- package/src/actions/language/language.js +9 -8
- package/src/actions/navroot/navroot.js +16 -0
- package/src/actions/navroot/navroot.test.js +15 -0
- package/src/actions/querystringsearch/querystringsearch.js +20 -14
- package/src/actions/relations/rebuild.js +25 -0
- package/src/actions/relations/relations.js +103 -0
- package/src/actions/relations/relations.test.js +15 -0
- package/src/actions/site/site.js +16 -0
- package/src/actions/site/site.test.js +15 -0
- package/src/actions/userSession/userSession.js +17 -1
- package/src/components/index.js +194 -191
- package/src/components/manage/Actions/Actions.jsx +133 -243
- package/src/components/manage/Add/Add.jsx +9 -10
- package/src/components/manage/AnchorPlugin/index.jsx +2 -2
- package/src/components/manage/AnchorPlugin/utils/EditorUtils.js +3 -1
- package/src/components/manage/BlockChooser/BlockChooser.jsx +8 -3
- package/src/components/manage/BlockChooser/BlockChooser.test.jsx +5 -0
- package/src/components/manage/Blocks/Block/BlocksForm.jsx +19 -2
- package/src/components/manage/Blocks/Block/Edit.jsx +1 -1
- package/src/components/manage/Blocks/Block/Settings.jsx +2 -0
- package/src/components/manage/Blocks/Block/Settings.test.jsx +92 -0
- package/src/components/manage/Blocks/Block/Style.jsx +2 -2
- package/src/components/manage/Blocks/Container/Data.jsx +32 -0
- package/src/components/manage/Blocks/Container/Edit.jsx +177 -0
- package/src/components/manage/Blocks/Container/EditBlockWrapper.jsx +121 -0
- package/src/components/manage/Blocks/Container/NewBlockAddButton.jsx +84 -0
- package/src/components/manage/Blocks/Container/SimpleContainerToolbar.jsx +54 -0
- package/src/components/manage/Blocks/Grid/Edit.jsx +47 -0
- package/src/components/manage/Blocks/Grid/View.jsx +43 -0
- package/src/components/manage/Blocks/Grid/adapter.js +14 -0
- package/src/components/manage/Blocks/Grid/grid-1.svg +6 -0
- package/src/components/manage/Blocks/Grid/grid-2.svg +9 -0
- package/src/components/manage/Blocks/Grid/grid-3.svg +10 -0
- package/src/components/manage/Blocks/Grid/grid-4.svg +11 -0
- package/src/components/manage/Blocks/Grid/schema.js +35 -0
- package/src/components/manage/Blocks/Grid/templates.js +47 -0
- package/src/components/manage/Blocks/HTML/Edit.jsx +8 -8
- package/src/components/manage/Blocks/HeroImageLeft/Edit.jsx +36 -26
- package/src/components/manage/Blocks/Image/Edit.jsx +51 -12
- package/src/components/manage/Blocks/Image/Edit.test.jsx +2 -0
- package/src/components/manage/Blocks/Image/ImageSidebar.jsx +66 -16
- package/src/components/manage/Blocks/Image/View.jsx +26 -5
- package/src/components/manage/Blocks/Image/View.test.jsx +20 -0
- package/src/components/manage/Blocks/Image/schema.js +17 -10
- package/src/components/manage/Blocks/Image/utils.js +14 -0
- package/src/components/manage/Blocks/LeadImage/Edit.jsx +32 -10
- package/src/components/manage/Blocks/LeadImage/Edit.test.jsx +11 -1
- package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.jsx +28 -9
- package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.test.jsx +8 -2
- package/src/components/manage/Blocks/LeadImage/View.jsx +50 -38
- package/src/components/manage/Blocks/LeadImage/View.test.jsx +11 -1
- package/src/components/manage/Blocks/Listing/DefaultTemplate.jsx +18 -3
- package/src/components/manage/Blocks/Listing/Edit.jsx +0 -14
- package/src/components/manage/Blocks/Listing/ListingBody.jsx +32 -8
- package/src/components/manage/Blocks/Listing/ListingBody.test.jsx +20 -0
- package/src/components/manage/Blocks/Listing/SummaryTemplate.jsx +1 -1
- package/src/components/manage/Blocks/Listing/getAsyncData.js +9 -3
- package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +34 -19
- package/src/components/manage/Blocks/Maps/Edit.jsx +135 -209
- package/src/components/manage/Blocks/Maps/Edit.test.jsx +1 -2
- package/src/components/manage/Blocks/Maps/View.test.jsx +1 -2
- package/src/components/manage/Blocks/Search/SearchBlockEdit.jsx +5 -4
- package/src/components/manage/Blocks/Search/SearchBlockView.jsx +4 -2
- package/src/components/manage/Blocks/Search/components/DateRangeFacet.jsx +4 -1
- package/src/components/manage/Blocks/Search/components/Facets.jsx +66 -7
- package/src/components/manage/Blocks/Search/components/FilterList.jsx +4 -6
- package/src/components/manage/Blocks/Search/components/SearchInput.jsx +9 -2
- package/src/components/manage/Blocks/Search/components/SelectFacet.jsx +2 -9
- package/src/components/manage/Blocks/Search/components/index.js +13 -13
- package/src/components/manage/Blocks/Search/hocs/index.js +2 -2
- package/src/components/manage/Blocks/Search/hocs/withQueryString.jsx +5 -2
- package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +93 -46
- package/src/components/manage/Blocks/Search/layout/LeftColumnFacets.jsx +17 -5
- package/src/components/manage/Blocks/Search/layout/RightColumnFacets.jsx +17 -5
- package/src/components/manage/Blocks/Search/layout/TopSideFacets.jsx +21 -5
- package/src/components/manage/Blocks/Search/schema.js +29 -14
- package/src/components/manage/Blocks/Table/Cell.jsx +2 -3
- package/src/components/manage/Blocks/Teaser/Body.jsx +0 -1
- package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +5 -10
- package/src/components/manage/Blocks/Teaser/schema.js +5 -0
- package/src/components/manage/Blocks/Text/Edit.jsx +2 -3
- package/src/components/manage/Blocks/Title/View.jsx +0 -23
- package/src/components/manage/Blocks/Title/View.test.jsx +16 -1
- package/src/components/manage/Blocks/ToC/Schema.jsx +40 -7
- package/src/components/manage/Blocks/ToC/View.jsx +84 -14
- package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.jsx +8 -3
- package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.test.jsx +44 -0
- package/src/components/manage/Blocks/ToC/variations/HorizontalMenu.jsx +149 -10
- package/src/components/manage/Blocks/ToC/variations/index.js +3 -1
- package/src/components/manage/Contents/Contents.jsx +319 -139
- package/src/components/manage/Contents/ContentsItem.jsx +6 -0
- package/src/components/manage/Contents/ContentsPropertiesModal.jsx +90 -166
- package/src/components/manage/Contents/ContentsRenameModal.jsx +88 -139
- package/src/components/manage/Contents/ContentsRenameModal.stories.jsx +61 -0
- package/src/components/manage/Contents/ContentsTagsModal.jsx +83 -130
- package/src/components/manage/Contents/ContentsTagsModal.stories.jsx +68 -0
- package/src/components/manage/Contents/ContentsUploadModal.jsx +11 -7
- package/src/components/manage/Contents/ContentsWorkflowModal.jsx +87 -154
- package/src/components/manage/Controlpanels/Aliases.jsx +4 -12
- package/src/components/manage/Controlpanels/Controlpanels.jsx +199 -224
- package/src/components/manage/Controlpanels/Controlpanels.test.jsx +46 -7
- package/src/components/manage/Controlpanels/Groups/GroupsControlpanel.jsx +65 -38
- package/src/components/manage/Controlpanels/Groups/RenderGroups.jsx +2 -2
- package/src/components/manage/Controlpanels/Relations/BrokenRelations.jsx +91 -0
- package/src/components/manage/Controlpanels/Relations/Relations.jsx +114 -0
- package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +480 -0
- package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +531 -0
- package/src/components/manage/Controlpanels/Rules/AddRule.jsx +3 -10
- package/src/components/manage/Controlpanels/Rules/EditRule.jsx +1 -1
- package/src/components/manage/Controlpanels/UndoControlpanel.jsx +6 -9
- package/src/components/manage/Controlpanels/Users/RenderUsers.jsx +97 -7
- package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +3 -3
- package/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx +51 -82
- package/src/components/manage/Controlpanels/Users/UserGroupMembershipMatrix.jsx +79 -75
- package/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +127 -99
- package/src/components/manage/Delete/Delete.jsx +96 -171
- package/src/components/manage/Diff/DiffField.jsx +25 -1
- package/src/components/manage/DragDropList/DragDropList.jsx +18 -13
- package/src/components/manage/Form/BlockDataForm.jsx +3 -2
- package/src/components/manage/Form/BlockDataForm.test.jsx +51 -17
- package/src/components/manage/Form/Form.jsx +7 -6
- package/src/components/manage/Form/InlineForm.jsx +39 -9
- package/src/components/manage/Form/InlineForm.test.jsx +16 -14
- package/src/components/manage/Form/InlineFormState.js +8 -0
- package/src/components/manage/History/History.jsx +11 -1
- package/src/components/manage/LinksToItem/LinksToItem.jsx +209 -0
- package/src/components/manage/LinksToItem/LinksToItem.test.jsx +100 -0
- package/src/components/manage/LockingToastsFactory/LockingToastsFactory.jsx +1 -2
- package/src/components/manage/Messages/Messages.jsx +32 -99
- package/src/components/manage/Messages/Messages.test.jsx +0 -1
- package/src/components/manage/Multilingual/CreateTranslation.jsx +2 -2
- package/src/components/manage/Multilingual/TranslationObject.jsx +4 -3
- package/src/components/manage/Preferences/ChangePassword.jsx +2 -2
- package/src/components/manage/Preferences/PersonalPreferences.jsx +2 -2
- package/src/components/manage/Sharing/Sharing.jsx +62 -22
- package/src/components/manage/Sidebar/AlignBlock.jsx +1 -1
- package/src/components/manage/Sidebar/Sidebar.jsx +139 -220
- package/src/components/manage/TemplateChooser/TemplateChooser.jsx +38 -0
- package/src/components/manage/TemplateChooser/TemplateChooser.test.jsx +34 -0
- package/src/components/manage/TemplateChooser/template.svg +10 -0
- package/src/components/manage/Toast/Toast.jsx +2 -2
- package/src/components/manage/Toolbar/More.jsx +17 -2
- package/src/components/manage/Toolbar/PersonalTools.jsx +97 -155
- package/src/components/manage/Toolbar/Toolbar.jsx +2 -2
- package/src/components/manage/Toolbar/Types.jsx +2 -2
- package/src/components/manage/UniversalLink/UniversalLink.jsx +6 -12
- package/src/components/manage/UniversalLink/UniversalLink.test.jsx +37 -0
- package/src/components/manage/Widgets/AlignWidget.jsx +2 -4
- package/src/components/manage/Widgets/ArrayWidget.jsx +3 -1
- package/src/components/manage/Widgets/ArrayWidget.test.jsx +45 -1
- package/src/components/manage/Widgets/ColorPickerWidget.jsx +6 -1
- package/src/components/manage/Widgets/ColorPickerWidget.test.jsx +9 -7
- package/src/components/manage/Widgets/DatetimeWidget.jsx +11 -13
- package/src/components/manage/Widgets/FileWidget.jsx +2 -1
- package/src/components/manage/Widgets/FormFieldWrapper.jsx +1 -1
- package/src/components/manage/Widgets/IdWidget.jsx +1 -2
- package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +2 -9
- package/src/components/manage/Widgets/ObjectListWidget.jsx +3 -8
- package/src/components/manage/Widgets/RecurrenceWidget/ByDayField.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/MonthOfTheYearField.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/Occurences.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +10 -12
- package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthField.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.jsx +4 -4
- package/src/components/manage/Widgets/RegistryImageWidget.jsx +210 -0
- package/src/components/manage/Widgets/RegistryImageWidget.test.jsx +91 -0
- package/src/components/manage/Widgets/SchemaWidget.jsx +6 -9
- package/src/components/manage/Widgets/SelectUtils.js +2 -2
- package/src/components/manage/Widgets/SelectWidget.jsx +16 -2
- package/src/components/manage/Widgets/SelectWidget.test.jsx +45 -1
- package/src/components/manage/Widgets/WysiwygWidget.jsx +2 -9
- package/src/components/manage/Workflow/Workflow.jsx +75 -184
- package/src/components/theme/Anontools/Anontools.jsx +44 -72
- package/src/components/theme/Anontools/Anontools.stories.jsx +16 -6
- package/src/components/theme/Anontools/Anontools.test.jsx +16 -2
- package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +52 -99
- package/src/components/theme/Breadcrumbs/Breadcrumbs.stories.jsx +14 -13
- package/src/components/theme/Comments/Comment.stories.jsx +84 -0
- package/src/components/theme/Comments/CommentEditModal.jsx +63 -115
- package/src/components/theme/Comments/Comments.jsx +268 -380
- package/src/components/theme/Component/Component.jsx +1 -1
- package/src/components/theme/ContactForm/ContactForm.jsx +108 -192
- package/src/components/theme/ContactForm/ContactForm.stories.jsx +1 -1
- package/src/components/theme/ContactForm/ContactForm.test.jsx +2 -3
- package/src/components/theme/ContentMetadataTags/ContentMetadataTags.jsx +41 -3
- package/src/components/theme/Error/ServerError.jsx +29 -0
- package/src/components/theme/Footer/Footer.jsx +2 -13
- package/src/components/theme/Header/Header.jsx +37 -63
- package/src/components/theme/Header/Header.test.jsx +18 -0
- package/src/components/theme/Icon/Icon.jsx +2 -2
- package/src/components/theme/Image/Image.jsx +96 -0
- package/src/components/theme/Image/Image.test.jsx +125 -0
- package/src/components/theme/LanguageSelector/LanguageSelector.js +8 -3
- package/src/components/theme/Login/Login.jsx +160 -242
- package/src/components/theme/Logo/Logo.Multilingual.test.jsx +131 -1
- package/src/components/theme/Logo/Logo.jsx +35 -26
- package/src/components/theme/Logo/Logo.test.jsx +135 -1
- package/src/components/theme/Logout/Logout.jsx +36 -83
- package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +2 -2
- package/src/components/theme/Navigation/NavItem.jsx +4 -2
- package/src/components/theme/Navigation/Navigation.jsx +86 -171
- package/src/components/theme/NotFound/NotFound.jsx +55 -41
- package/src/components/theme/PasswordReset/PasswordReset.jsx +8 -6
- package/src/components/theme/PasswordReset/RequestPasswordReset.jsx +96 -171
- package/src/components/theme/PreviewImage/PreviewImage.jsx +31 -15
- package/src/components/theme/PreviewImage/PreviewImage.test.js +53 -13
- package/src/components/theme/Register/Register.jsx +2 -4
- package/src/components/theme/Search/SearchTags.jsx +30 -60
- package/src/components/theme/SearchWidget/SearchWidget.jsx +49 -97
- package/src/components/theme/SearchWidget/SearchWidget.test.jsx +8 -0
- package/src/components/theme/Sitemap/Sitemap.jsx +25 -12
- package/src/components/theme/Sitemap/Sitemap.test.jsx +23 -2
- package/src/components/theme/TsTest/TsTest.test.tsx +11 -0
- package/src/components/theme/TsTest/TsTest.tsx +15 -0
- package/src/components/theme/View/AlbumView.jsx +21 -16
- package/src/components/theme/View/DefaultView.jsx +1 -1
- package/src/components/theme/View/EventDatesInfo.jsx +2 -1
- package/src/components/theme/View/EventView.jsx +36 -25
- package/src/components/theme/View/FileView.jsx +23 -18
- package/src/components/theme/View/ImageView.jsx +40 -32
- package/src/components/theme/View/ImageView.test.jsx +4 -0
- package/src/components/theme/View/LinkView.jsx +53 -78
- package/src/components/theme/View/ListingView.jsx +36 -28
- package/src/components/theme/View/NewsItemView.jsx +16 -17
- package/src/components/theme/View/RenderBlocks.jsx +56 -21
- package/src/components/theme/View/RenderEmptyBlock.jsx +5 -0
- package/src/components/theme/View/SummaryView.jsx +49 -39
- package/src/components/theme/View/TabularView.jsx +59 -53
- package/src/components/theme/View/View.jsx +2 -0
- package/src/components/theme/Widgets/DateWidget.jsx +2 -1
- package/src/components/theme/Widgets/DatetimeWidget.jsx +2 -1
- package/src/components/theme/Widgets/ImageWidget.stories.jsx +1 -2
- package/src/components/theme/Widgets/RelationsWidget.jsx +13 -11
- package/src/config/Blocks.jsx +46 -0
- package/src/config/Components.jsx +3 -1
- package/src/config/ControlPanels.js +2 -1
- package/src/config/Loadables.jsx +1 -1
- package/src/config/NonContentRoutes.jsx +1 -0
- package/src/config/RichTextEditor/Blocks.jsx +4 -5
- package/src/config/RichTextEditor/FromHTML.jsx +2 -2
- package/src/config/RichTextEditor/Plugins.jsx +2 -3
- package/src/config/RichTextEditor/Styles.jsx +1 -1
- package/src/config/RichTextEditor/ToHTML.jsx +12 -10
- package/src/config/RichTextEditor/index.js +2 -3
- package/src/config/Views.jsx +6 -4
- package/src/config/Widgets.jsx +4 -0
- package/src/config/index.js +38 -2
- package/src/config/server.js +2 -0
- package/src/constants/ActionTypes.js +8 -0
- package/src/constants/Indexes.js +3 -1
- package/src/constants/Languages.js +8 -4
- package/src/express-middleware/devproxy.js +1 -1
- package/src/express-middleware/files.js +11 -9
- package/src/express-middleware/images.js +12 -5
- package/src/express-middleware/ok.js +16 -0
- package/src/express-middleware/robotstxt.js +1 -1
- package/src/express-middleware/sitemap.js +37 -5
- package/src/express-middleware/static.js +3 -3
- package/src/helpers/Api/Api.js +1 -1
- package/src/helpers/Blocks/Blocks.js +52 -6
- package/src/helpers/Blocks/Blocks.test.js +92 -13
- package/src/helpers/Extensions/index.js +2 -1
- package/src/helpers/Extensions/withBlockSchemaEnhancer.js +63 -61
- package/src/helpers/Extensions/withBlockSchemaEnhancer.test.js +145 -0
- package/src/helpers/FormValidation/FormValidation.js +42 -3
- package/src/helpers/FormValidation/FormValidation.test.js +73 -0
- package/src/helpers/Html/Html.jsx +5 -9
- package/src/helpers/Html/Html.test.jsx +5 -0
- package/src/helpers/Loadable/__mocks__/Loadable.js +18 -18
- package/src/helpers/MessageLabels/MessageLabels.js +111 -4
- package/src/helpers/Robots/Robots.js +24 -6
- package/src/helpers/ScrollToTop/ScrollToTop.jsx +5 -3
- package/src/helpers/Site/index.js +21 -0
- package/src/helpers/Sitemap/Sitemap.js +44 -2
- package/src/helpers/Url/Url.js +30 -4
- package/src/helpers/Url/Url.test.js +55 -0
- package/src/helpers/Utils/UseDetectClickOutside.stories.jsx +190 -0
- package/src/helpers/Utils/Utils.js +73 -13
- package/src/helpers/Utils/Utils.test.js +17 -4
- package/src/helpers/Utils/usePagination.js +67 -14
- package/src/helpers/Utils/usePagination.test.js +115 -0
- package/src/helpers/index.js +22 -10
- package/src/hooks/client/useClient.js +11 -0
- package/src/hooks/clipboard/useClipboard.js +26 -0
- package/src/hooks/index.js +2 -0
- package/src/icons/grid-block.svg +11 -0
- package/src/middleware/Api.test.js +54 -0
- package/src/middleware/api.js +209 -175
- package/src/middleware/blacklistRoutes.js +25 -22
- package/src/middleware/index.js +2 -2
- package/src/middleware/storeProtectLoadUtils.js +61 -62
- package/src/middleware/storeProtectLoadUtils.test.js +47 -43
- package/src/reducers/actions/actions.js +8 -6
- package/src/reducers/actions/actions.test.js +70 -0
- package/src/reducers/breadcrumbs/breadcrumbs.js +1 -1
- package/src/reducers/content/content.test.js +4 -4
- package/src/reducers/index.js +6 -0
- package/src/reducers/navigation/navigation.js +6 -6
- package/src/reducers/navigation/navigation.test.js +30 -0
- package/src/reducers/navroot/navroot.js +79 -0
- package/src/reducers/navroot/navroot.test.js +110 -0
- package/src/reducers/relations/relations.js +201 -0
- package/src/reducers/site/site.js +51 -0
- package/src/reducers/site/site.test.js +67 -0
- package/src/reducers/types/types.js +1 -1
- package/src/reducers/userSession/userSession.js +15 -1
- package/src/registry.js +2 -2
- package/src/routes.js +14 -0
- package/src/server.jsx +37 -23
- package/src/start-server.js +2 -2
- package/src/storybook.jsx +24 -38
- package/test-setup-config.js +12 -1
- package/theme/themes/pastanaga/collections/form.overrides +46 -0
- package/theme/themes/pastanaga/collections/menu.overrides +3 -2
- package/theme/themes/pastanaga/elements/container.overrides +5 -2
- package/theme/themes/pastanaga/elements/input.overrides +11 -1
- package/theme/themes/pastanaga/elements/label.overrides +10 -0
- package/theme/themes/pastanaga/elements/step.overrides +2 -1
- package/theme/themes/pastanaga/extras/blocks.less +25 -15
- package/theme/themes/pastanaga/extras/color-picker-widget.less +1 -1
- package/theme/themes/pastanaga/extras/contents.less +6 -1
- package/theme/themes/pastanaga/extras/draftjs.less +4 -4
- package/theme/themes/pastanaga/extras/grid.less +427 -0
- package/theme/themes/pastanaga/extras/login.less +3 -0
- package/theme/themes/pastanaga/extras/main.less +14 -7
- package/theme/themes/pastanaga/extras/react-dates-overrides.less +4 -2
- package/theme/themes/pastanaga/extras/search.less +7 -1
- package/theme/themes/pastanaga/extras/sidebar.less +9 -4
- package/theme/themes/pastanaga/extras/time-picker-overrides.less +5 -3
- package/theme/themes/pastanaga/extras/toc.less +29 -0
- package/theme/themes/pastanaga/extras/toolbar.less +6 -2
- package/theme/themes/pastanaga/extras/userscontrolpanel.less +104 -73
- package/theme/themes/pastanaga/extras/widgets.less +1 -1
- package/theme/themes/pastanaga/modules/rating.overrides +2 -1
- package/theme/themes/pastanaga-cms-ui/elements/container.overrides +2 -1
- package/theme/themes/pastanaga-cms-ui/extras/cms-ui.elements.container.less +6 -2
- package/theme/themes/pastanaga-cms-ui/extras/cms-ui.site.less +2 -2
- package/tsconfig.json +33 -0
- package/webpack-plugins/webpack-less-plugin.js +19 -0
- package/.changelog.draft +0 -19
- package/.editorconfig +0 -36
- package/.storybook/main.js +0 -127
- package/.storybook/manager.js +0 -15
- package/.storybook/preview.js +0 -21
- package/.storybook/static/previewImage.svg +0 -48
- package/.vale.ini +0 -10
- package/.yarnrc.yml +0 -5
- package/jsdoc.json +0 -16
- package/netlify.toml +0 -5
- package/pyvenv.cfg +0 -3
- package/share/man/man1/ttx.1 +0 -225
- package/src/components/manage/Blocks/Teaser/utils.js +0 -44
- package/src/components/manage/Blocks/Teaser/utils.test.jsx +0 -229
- package/src/components/theme/Header/Header.md +0 -27
- package/styles/Vocab/Base/accept.txt +0 -0
- package/styles/Vocab/Base/reject.txt +0 -0
- package/styles/Vocab/Plone/accept.txt +0 -8
- package/styles/Vocab/Plone/reject.txt +0 -0
- package/towncrier.toml +0 -33
package/CONTRIBUTING.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
# Contributing to Volto
|
|
2
2
|
|
|
3
|
-
See
|
|
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.
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
- [
|
|
200
|
-
- [
|
|
201
|
-
- [
|
|
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
|
|
234
|
-
- Node
|
|
235
|
-
- Node
|
|
236
|
-
- Node
|
|
237
|
-
- Node
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
*/
|
package/create-addons-loader.js
CHANGED
|
@@ -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,
|
|
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('
|
|
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(
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
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
|
|
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
|
+
});
|
package/cypress/support/e2e.js
CHANGED
|
@@ -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.
|
|
10
|
-
|
|
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