@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
@@ -12,7 +12,7 @@ import { Link } from 'react-router-dom';
12
12
  import {
13
13
  Button,
14
14
  Confirm,
15
- Container,
15
+ Container as SemanticContainer,
16
16
  Divider,
17
17
  Dropdown,
18
18
  Menu,
@@ -35,6 +35,7 @@ import {
35
35
  import move from 'lodash-move';
36
36
  import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
37
37
  import { asyncConnect } from '@plone/volto/helpers';
38
+ import { flattenToAppURL } from '@plone/volto/helpers';
38
39
 
39
40
  import {
40
41
  searchContent,
@@ -70,6 +71,7 @@ import {
70
71
 
71
72
  import { Helmet, getBaseUrl } from '@plone/volto/helpers';
72
73
  import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable';
74
+ import config from '@plone/volto/registry';
73
75
 
74
76
  import backSVG from '@plone/volto/icons/back.svg';
75
77
  import cutSVG from '@plone/volto/icons/cut.svg';
@@ -117,9 +119,13 @@ const messages = defineMessages({
117
119
  id: 'Delete',
118
120
  defaultMessage: 'Delete',
119
121
  },
120
- deleteConfirm: {
121
- id: 'Do you really want to delete the following items?',
122
- defaultMessage: 'Do you really want to delete the following items?',
122
+ deleteConfirmSingleItem: {
123
+ id: 'Delete this item?',
124
+ defaultMessage: 'Delete this item?',
125
+ },
126
+ deleteConfirmMultipleItems: {
127
+ id: 'Delete selected items?',
128
+ defaultMessage: 'Delete selected items?',
123
129
  },
124
130
  deleteError: {
125
131
  id: 'The item could not be deleted.',
@@ -269,35 +275,6 @@ const messages = defineMessages({
269
275
  id: 'All',
270
276
  defaultMessage: 'All',
271
277
  },
272
- linkIntegrityMessageHeader: {
273
- id: 'Potential link breakage',
274
- defaultMessage: 'Potential link breakage',
275
- },
276
- linkIntegrityMessageBody: {
277
- id:
278
- 'By deleting this item, you will break ' +
279
- 'links that exist in the items listed below. ' +
280
- 'If this is indeed what you want to do, ' +
281
- 'we recommend that remove these references first.',
282
- defaultMessage:
283
- 'By deleting this item, ' +
284
- 'you will break links that exist in the items ' +
285
- 'listed below. If this is indeed what you ' +
286
- 'want to do, we recommend that remove ' +
287
- 'these references first.',
288
- },
289
- linkIntegrityMessageExtra: {
290
- id: 'This Page is referenced by the following items:',
291
- defaultMessage: 'This Page is referenced by the following items:',
292
- },
293
- deleteItemCountMessage: {
294
- id: 'Total items to be deleted:',
295
- defaultMessage: 'Total items to be deleted:',
296
- },
297
- deleteItemMessage: {
298
- id: 'Items to be deleted:',
299
- defaultMessage: 'Items to be deleted:',
300
- },
301
278
  });
302
279
 
303
280
  /**
@@ -433,6 +410,8 @@ class Contents extends Component {
433
410
  showProperties: false,
434
411
  showWorkflow: false,
435
412
  itemsToDelete: [],
413
+ containedItemsToDelete: [],
414
+ brokenReferences: [],
436
415
  showAllItemsToDelete: true,
437
416
  items: this.props.items,
438
417
  filter: '',
@@ -449,7 +428,7 @@ class Contents extends Component {
449
428
  sort_on: this.props.sort?.on || 'getObjPositionInParent',
450
429
  sort_order: this.props.sort?.order || 'ascending',
451
430
  isClient: false,
452
- linkIntegrityBreakages: '',
431
+ linkIntegrityBreakages: [],
453
432
  };
454
433
  this.filterTimeout = null;
455
434
  }
@@ -468,12 +447,23 @@ class Contents extends Component {
468
447
  this.state.itemsToDelete !== prevState.itemsToDelete &&
469
448
  this.state.itemsToDelete.length > 0
470
449
  ) {
450
+ const linkintegrityInfo = await this.props.linkIntegrityCheck(
451
+ map(this.state.itemsToDelete, (item) => this.getFieldById(item, 'UID')),
452
+ );
453
+ let containedItems = 0;
454
+ let brokenReferencesCount = 0;
455
+
456
+ linkintegrityInfo.forEach((item) => {
457
+ containedItems += item.items_total ?? 0;
458
+ brokenReferencesCount += item.breaches.length;
459
+ });
471
460
  this.setState({
472
- linkIntegrityBreakages: await this.props.linkIntegrityCheck(
473
- map(this.state.itemsToDelete, (item) =>
474
- this.getFieldById(item, 'UID'),
475
- ),
476
- ),
461
+ containedItemsToDelete: containedItems,
462
+ brokenReferences: brokenReferencesCount,
463
+ brokenLinksList:
464
+ linkintegrityInfo.length === 1
465
+ ? linkintegrityInfo[0]['@id'] + '/links-to-item'
466
+ : null,
477
467
  showAllItemsToDelete:
478
468
  this.state.itemsToDelete.length < this.deleteItemsToShowThreshold,
479
469
  });
@@ -796,18 +786,20 @@ class Contents extends Component {
796
786
  */
797
787
  onMoveToTop(event, { value }) {
798
788
  const id = this.state.items[value]['@id'];
799
- value = this.state.currentPage * this.state.pageSize + value;
800
- this.props.orderContent(
801
- getBaseUrl(this.props.pathname),
802
- id.replace(/^.*\//, ''),
803
- -value,
804
- );
805
- this.setState(
806
- {
807
- currentPage: 0,
808
- },
809
- () => this.fetchContents(),
810
- );
789
+ this.props
790
+ .orderContent(
791
+ getBaseUrl(this.props.pathname),
792
+ id.replace(/^.*\//, ''),
793
+ 'top',
794
+ )
795
+ .then(() => {
796
+ this.setState(
797
+ {
798
+ currentPage: 0,
799
+ },
800
+ () => this.fetchContents(),
801
+ );
802
+ });
811
803
  }
812
804
 
813
805
  /**
@@ -818,18 +810,21 @@ class Contents extends Component {
818
810
  * @returns {undefined}
819
811
  */
820
812
  onMoveToBottom(event, { value }) {
821
- this.onOrderItem(
822
- this.state.items[value]['@id'],
823
- value,
824
- this.state.items.length - 1 - value,
825
- false,
826
- );
827
- this.onOrderItem(
828
- this.state.items[value]['@id'],
829
- value,
830
- this.state.items.length - 1 - value,
831
- true,
832
- );
813
+ const id = this.state.items[value]['@id'];
814
+ this.props
815
+ .orderContent(
816
+ getBaseUrl(this.props.pathname),
817
+ id.replace(/^.*\//, ''),
818
+ 'bottom',
819
+ )
820
+ .then(() => {
821
+ this.setState(
822
+ {
823
+ currentPage: 0,
824
+ },
825
+ () => this.fetchContents(),
826
+ );
827
+ });
833
828
  }
834
829
 
835
830
  /**
@@ -1008,6 +1003,7 @@ class Contents extends Component {
1008
1003
  sort_order: this.state.sort_order,
1009
1004
  metadata_fields: '_all',
1010
1005
  b_size: 100000000,
1006
+ show_inactive: true,
1011
1007
  ...(this.state.filter && { SearchableText: `${this.state.filter}*` }),
1012
1008
  });
1013
1009
  } else {
@@ -1019,6 +1015,7 @@ class Contents extends Component {
1019
1015
  ...(this.state.filter && { SearchableText: `${this.state.filter}*` }),
1020
1016
  b_size: this.state.pageSize,
1021
1017
  b_start: this.state.currentPage * this.state.pageSize,
1018
+ show_inactive: true,
1022
1019
  });
1023
1020
  }
1024
1021
  }
@@ -1170,6 +1167,9 @@ class Contents extends Component {
1170
1167
  (this.props.orderRequest?.loading && !this.props.orderRequest?.error) ||
1171
1168
  (this.props.searchRequest?.loading && !this.props.searchRequest?.error);
1172
1169
 
1170
+ const Container =
1171
+ config.getComponent({ name: 'Container' }).component || SemanticContainer;
1172
+
1173
1173
  return this.props.token && this.props.objectActions?.length > 0 ? (
1174
1174
  <>
1175
1175
  {folderContentsAction ? (
@@ -1189,82 +1189,234 @@ class Contents extends Component {
1189
1189
  <Confirm
1190
1190
  open={this.state.showDelete}
1191
1191
  confirmButton="Delete"
1192
- header={this.props.intl.formatMessage(
1193
- messages.deleteConfirm,
1194
- )}
1192
+ header={
1193
+ this.state.itemsToDelete.length === 1
1194
+ ? this.props.intl.formatMessage(
1195
+ messages.deleteConfirmSingleItem,
1196
+ )
1197
+ : this.props.intl.formatMessage(
1198
+ messages.deleteConfirmMultipleItems,
1199
+ )
1200
+ }
1195
1201
  content={
1196
1202
  <div className="content">
1197
- <h3>
1198
- {this.props.intl.formatMessage(
1199
- messages.deleteItemCountMessage,
1200
- ) + ` ${this.state.itemsToDelete.length}`}
1201
- </h3>
1202
- <ul className="content">
1203
- {map(
1204
- this.state.showAllItemsToDelete
1205
- ? this.state.itemsToDelete
1206
- : this.state.itemsToDelete.slice(
1207
- 0,
1208
- this.deleteItemsToShowThreshold,
1209
- ),
1210
- (item) => (
1211
- <li key={item}>
1212
- {this.getFieldById(item, 'title')}
1213
- </li>
1214
- ),
1215
- )}
1216
- </ul>
1217
- {!this.state.showAllItemsToDelete && (
1218
- <Button
1219
- onClick={() =>
1220
- this.setState({
1221
- showAllItemsToDelete: true,
1222
- })
1223
- }
1224
- >
1225
- Show all items
1226
- </Button>
1227
- )}
1228
- {this.state.linkIntegrityBreakages.length > 0 ? (
1229
- <div>
1230
- <h3>
1231
- {this.props.intl.formatMessage(
1232
- messages.linkIntegrityMessageHeader,
1233
- )}
1234
- </h3>
1235
- <p>
1236
- {this.props.intl.formatMessage(
1237
- messages.linkIntegrityMessageBody,
1238
- )}
1239
- </p>
1240
- <ul className="content">
1241
- {map(
1242
- this.state.linkIntegrityBreakages,
1243
- (item) => (
1244
- <li key={item['@id']}>
1245
- <a href={item['@id']}>{item.title}</a>
1246
- <p>
1247
- {this.props.intl.formatMessage(
1248
- messages.linkIntegrityMessageExtra,
1203
+ <p>
1204
+ {this.state.itemsToDelete.length > 1 ? (
1205
+ this.state.containedItemsToDelete > 0 ? (
1206
+ <>
1207
+ <FormattedMessage
1208
+ id="Some items are also a folder.
1209
+ By deleting them you will delete {containedItemsToDelete} {variation} inside the folders."
1210
+ defaultMessage="Some items are also a folder.
1211
+ By deleting them you will delete {containedItemsToDelete} {variation} inside the folders."
1212
+ values={{
1213
+ containedItemsToDelete: (
1214
+ <span>
1215
+ {this.state.containedItemsToDelete}
1216
+ </span>
1217
+ ),
1218
+ variation: (
1219
+ <span>
1220
+ {this.state.containedItemsToDelete ===
1221
+ 1 ? (
1222
+ <FormattedMessage
1223
+ id="item"
1224
+ defaultMessage="item"
1225
+ />
1226
+ ) : (
1227
+ <FormattedMessage
1228
+ id="items"
1229
+ defaultMessage="items"
1230
+ />
1231
+ )}
1232
+ </span>
1233
+ ),
1234
+ }}
1235
+ />
1236
+ {this.state.brokenReferences > 0 && (
1237
+ <>
1238
+ <br />
1239
+ <FormattedMessage
1240
+ id="Some items are referenced by other contents. By deleting them {brokenReferences} {variation} will be broken."
1241
+ defaultMessage="Some items are referenced by other contents. By deleting them {brokenReferences} {variation} will be broken."
1242
+ values={{
1243
+ brokenReferences: (
1244
+ <span>
1245
+ {this.state.brokenReferences}
1246
+ </span>
1247
+ ),
1248
+ variation: (
1249
+ <span>
1250
+ {this.state.brokenReferences ===
1251
+ 1 ? (
1252
+ <FormattedMessage
1253
+ id="reference"
1254
+ defaultMessage="reference"
1255
+ />
1256
+ ) : (
1257
+ <FormattedMessage
1258
+ id="references"
1259
+ defaultMessage="references"
1260
+ />
1261
+ )}
1262
+ </span>
1263
+ ),
1264
+ }}
1265
+ />
1266
+ </>
1267
+ )}
1268
+ </>
1269
+ ) : (
1270
+ <>
1271
+ {this.state.brokenReferences > 0 && (
1272
+ <>
1273
+ <FormattedMessage
1274
+ id="Some items are referenced by other contents. By deleting them {brokenReferences} {variation} will be broken."
1275
+ defaultMessage="Some items are referenced by other contents. By deleting them {brokenReferences} {variation} will be broken."
1276
+ values={{
1277
+ brokenReferences: (
1278
+ <span>
1279
+ {this.state.brokenReferences}
1280
+ </span>
1281
+ ),
1282
+ variation: (
1283
+ <span>
1284
+ {this.state.brokenReferences ===
1285
+ 1 ? (
1286
+ <FormattedMessage
1287
+ id="reference"
1288
+ defaultMessage="reference"
1289
+ />
1290
+ ) : (
1291
+ <FormattedMessage
1292
+ id="references"
1293
+ defaultMessage="references"
1294
+ />
1295
+ )}
1296
+ </span>
1297
+ ),
1298
+ }}
1299
+ />
1300
+ </>
1301
+ )}
1302
+ </>
1303
+ )
1304
+ ) : this.state.containedItemsToDelete > 0 ? (
1305
+ <>
1306
+ <FormattedMessage
1307
+ id="This item is also a folder.
1308
+ By deleting it you will delete {containedItemsToDelete} {variation} inside the folder."
1309
+ defaultMessage="This item is also a folder.
1310
+ By deleting it you will delete {containedItemsToDelete} {variation} inside the folder."
1311
+ values={{
1312
+ containedItemsToDelete: (
1313
+ <span>
1314
+ {this.state.containedItemsToDelete}
1315
+ </span>
1316
+ ),
1317
+ variation: (
1318
+ <span>
1319
+ {this.state.containedItemsToDelete ===
1320
+ 1 ? (
1321
+ <FormattedMessage
1322
+ id="item"
1323
+ defaultMessage="item"
1324
+ />
1325
+ ) : (
1326
+ <FormattedMessage
1327
+ id="items"
1328
+ defaultMessage="items"
1329
+ />
1249
1330
  )}
1250
- </p>
1251
- <ul className="content">
1252
- {map(item.breaches, (breach) => (
1253
- <li key={breach['@id']}>
1254
- <a href={breach['@id']}>
1255
- {breach.title}
1256
- </a>
1257
- </li>
1258
- ))}
1259
- </ul>
1260
- </li>
1261
- ),
1331
+ </span>
1332
+ ),
1333
+ }}
1334
+ />
1335
+ {this.state.brokenReferences > 0 && (
1336
+ <>
1337
+ <br />
1338
+ <FormattedMessage
1339
+ id="This item is referenced by other items. By deleting it {brokenReferences} {variation} will be broken."
1340
+ defaultMessage="This item is referenced by other items. By deleting it {brokenReferences} {variation} will be broken."
1341
+ values={{
1342
+ brokenReferences: (
1343
+ <span>
1344
+ {this.state.brokenReferences}
1345
+ </span>
1346
+ ),
1347
+ variation: (
1348
+ <span>
1349
+ {this.state.brokenReferences === 1 ? (
1350
+ <FormattedMessage
1351
+ id="reference"
1352
+ defaultMessage="reference"
1353
+ />
1354
+ ) : (
1355
+ <FormattedMessage
1356
+ id="references"
1357
+ defaultMessage="references"
1358
+ />
1359
+ )}
1360
+ </span>
1361
+ ),
1362
+ }}
1363
+ />
1364
+ <div className="broken-links-list-link-wrapper">
1365
+ <Link
1366
+ to={flattenToAppURL(
1367
+ this.state.brokenLinksList,
1368
+ )}
1369
+ >
1370
+ <FormattedMessage
1371
+ id="View broken links list"
1372
+ defaultMessage="View broken links list"
1373
+ />
1374
+ </Link>
1375
+ </div>
1376
+ </>
1262
1377
  )}
1263
- </ul>
1264
- </div>
1265
- ) : (
1266
- <div></div>
1267
- )}
1378
+ </>
1379
+ ) : this.state.brokenReferences > 0 ? (
1380
+ <>
1381
+ <FormattedMessage
1382
+ id="This item is referenced by other items. By deleting it {brokenReferences} {variation} will be broken."
1383
+ defaultMessage="This item is referenced by other items. By deleting it {brokenReferences} {variation} will be broken."
1384
+ values={{
1385
+ brokenReferences: (
1386
+ <span>{this.state.brokenReferences}</span>
1387
+ ),
1388
+ variation: (
1389
+ <span>
1390
+ {this.state.brokenReferences === 1 ? (
1391
+ <FormattedMessage
1392
+ id="reference"
1393
+ defaultMessage="reference"
1394
+ />
1395
+ ) : (
1396
+ <FormattedMessage
1397
+ id="references"
1398
+ defaultMessage="references"
1399
+ />
1400
+ )}
1401
+ </span>
1402
+ ),
1403
+ }}
1404
+ />
1405
+ <div className="broken-links-list-link-wrapper">
1406
+ <Link
1407
+ to={flattenToAppURL(
1408
+ this.state.brokenLinksList,
1409
+ )}
1410
+ >
1411
+ <FormattedMessage
1412
+ id="View broken links list"
1413
+ defaultMessage="View broken links list"
1414
+ />
1415
+ </Link>
1416
+ </div>
1417
+ </>
1418
+ ) : null}
1419
+ </p>
1268
1420
  </div>
1269
1421
  }
1270
1422
  onCancel={this.onDeleteCancel}
@@ -1321,6 +1473,9 @@ class Contents extends Component {
1321
1473
  as={Button}
1322
1474
  onClick={this.upload}
1323
1475
  className="upload"
1476
+ aria-label={this.props.intl.formatMessage(
1477
+ messages.upload,
1478
+ )}
1324
1479
  >
1325
1480
  <Icon
1326
1481
  name={uploadSVG}
@@ -1345,6 +1500,9 @@ class Contents extends Component {
1345
1500
  as={Button}
1346
1501
  onClick={this.rename}
1347
1502
  disabled={!selected}
1503
+ aria-label={this.props.intl.formatMessage(
1504
+ messages.rename,
1505
+ )}
1348
1506
  >
1349
1507
  <Icon
1350
1508
  name={renameSVG}
@@ -1367,6 +1525,9 @@ class Contents extends Component {
1367
1525
  as={Button}
1368
1526
  onClick={this.workflow}
1369
1527
  disabled={!selected}
1528
+ aria-label={this.props.intl.formatMessage(
1529
+ messages.state,
1530
+ )}
1370
1531
  >
1371
1532
  <Icon
1372
1533
  name={semaphoreSVG}
@@ -1389,6 +1550,9 @@ class Contents extends Component {
1389
1550
  as={Button}
1390
1551
  onClick={this.tags}
1391
1552
  disabled={!selected}
1553
+ aria-label={this.props.intl.formatMessage(
1554
+ messages.tags,
1555
+ )}
1392
1556
  >
1393
1557
  <Icon
1394
1558
  name={tagSVG}
@@ -1412,6 +1576,9 @@ class Contents extends Component {
1412
1576
  as={Button}
1413
1577
  onClick={this.properties}
1414
1578
  disabled={!selected}
1579
+ aria-label={this.props.intl.formatMessage(
1580
+ messages.properties,
1581
+ )}
1415
1582
  >
1416
1583
  <Icon
1417
1584
  name={propertiesSVG}
@@ -1436,6 +1603,9 @@ class Contents extends Component {
1436
1603
  as={Button}
1437
1604
  onClick={this.cut}
1438
1605
  disabled={!selected}
1606
+ aria-label={this.props.intl.formatMessage(
1607
+ messages.cut,
1608
+ )}
1439
1609
  >
1440
1610
  <Icon
1441
1611
  name={cutSVG}
@@ -1458,6 +1628,9 @@ class Contents extends Component {
1458
1628
  as={Button}
1459
1629
  onClick={this.copy}
1460
1630
  disabled={!selected}
1631
+ aria-label={this.props.intl.formatMessage(
1632
+ messages.copy,
1633
+ )}
1461
1634
  >
1462
1635
  <Icon
1463
1636
  name={copySVG}
@@ -1481,6 +1654,9 @@ class Contents extends Component {
1481
1654
  as={Button}
1482
1655
  onClick={this.paste}
1483
1656
  disabled={!this.props.action}
1657
+ aria-label={this.props.intl.formatMessage(
1658
+ messages.paste,
1659
+ )}
1484
1660
  >
1485
1661
  <Icon
1486
1662
  name={pasteSVG}
@@ -1504,6 +1680,9 @@ class Contents extends Component {
1504
1680
  as={Button}
1505
1681
  onClick={this.delete}
1506
1682
  disabled={!selected}
1683
+ aria-label={this.props.intl.formatMessage(
1684
+ messages.delete,
1685
+ )}
1507
1686
  >
1508
1687
  <Icon
1509
1688
  name={deleteSVG}
@@ -1616,9 +1795,8 @@ class Contents extends Component {
1616
1795
  {this.props.intl.formatMessage({
1617
1796
  id: this.state.index.values[index]
1618
1797
  .label,
1619
- defaultMessage: this.state.index.values[
1620
- index
1621
- ].label,
1798
+ defaultMessage:
1799
+ this.state.index.values[index].label,
1622
1800
  })}
1623
1801
  </span>
1624
1802
  </Dropdown.Item>
@@ -1780,7 +1958,9 @@ class Contents extends Component {
1780
1958
  <Menu.Header
1781
1959
  content={this.props.intl.formatMessage(
1782
1960
  messages.selected,
1783
- { count: this.state.selected.length },
1961
+ {
1962
+ count: this.state.selected.length,
1963
+ },
1784
1964
  )}
1785
1965
  />
1786
1966
  <Input
@@ -169,6 +169,12 @@ export const ContentsItemComponent = ({
169
169
  <FormattedMessage id="Expired" defaultMessage="Expired" />
170
170
  </Button>
171
171
  )}
172
+ {item.EffectiveDate !== 'None' &&
173
+ new Date(item.EffectiveDate).getTime() > new Date().getTime() && (
174
+ <Button className="button-margin effective-future" size="mini">
175
+ <FormattedMessage id="Scheduled" defaultMessage="Scheduled" />
176
+ </Button>
177
+ )}
172
178
  </Link>
173
179
  </Table.Cell>
174
180
  {map(indexes, (index) => (