@plone/volto 17.0.0-alpha.9 → 17.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/.eslintrc +26 -3
  2. package/CHANGELOG.md +774 -5
  3. package/CONTRIBUTING.md +5 -1
  4. package/README.md +12 -9
  5. package/RELEASING.md +5 -5
  6. package/addon-registry.js +10 -1
  7. package/create-addons-loader.js +1 -1
  8. package/cypress/support/commands.js +70 -14
  9. package/cypress/support/e2e.js +1 -2
  10. package/cypress/support/volto-slate.js +4 -5
  11. package/cypress.config.js +1 -0
  12. package/docker-compose.yml +1 -1
  13. package/locales/ca/LC_MESSAGES/volto.po +281 -53
  14. package/locales/ca.json +1 -1
  15. package/locales/de/LC_MESSAGES/volto.po +289 -61
  16. package/locales/de.json +1 -1
  17. package/locales/en/LC_MESSAGES/volto.po +279 -51
  18. package/locales/en.json +1 -1
  19. package/locales/es/LC_MESSAGES/volto.po +318 -90
  20. package/locales/es.json +1 -1
  21. package/locales/eu/LC_MESSAGES/volto.po +280 -52
  22. package/locales/eu.json +1 -1
  23. package/locales/fi/LC_MESSAGES/volto.po +280 -52
  24. package/locales/fi.json +1 -1
  25. package/locales/fr/LC_MESSAGES/volto.po +281 -53
  26. package/locales/fr.json +1 -1
  27. package/locales/it/LC_MESSAGES/volto.po +474 -246
  28. package/locales/it.json +1 -1
  29. package/locales/ja/LC_MESSAGES/volto.po +280 -52
  30. package/locales/ja.json +1 -1
  31. package/locales/nl/LC_MESSAGES/volto.po +281 -53
  32. package/locales/nl.json +1 -1
  33. package/locales/pt/LC_MESSAGES/volto.po +281 -53
  34. package/locales/pt.json +1 -1
  35. package/locales/pt_BR/LC_MESSAGES/volto.po +314 -86
  36. package/locales/pt_BR.json +1 -1
  37. package/locales/ro/LC_MESSAGES/volto.po +281 -53
  38. package/locales/ro.json +1 -1
  39. package/locales/volto.pot +284 -52
  40. package/locales/zh_CN/LC_MESSAGES/volto.po +281 -53
  41. package/locales/zh_CN.json +1 -1
  42. package/package.json +44 -34
  43. package/packages/volto-slate/package.json +1 -1
  44. package/packages/volto-slate/src/actions/index.js +1 -1
  45. package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +21 -212
  46. package/packages/volto-slate/src/blocks/Table/schema.js +122 -0
  47. package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +8 -3
  48. package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +21 -16
  49. package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +3 -1
  50. package/packages/volto-slate/src/blocks/Text/index.js +10 -7
  51. package/packages/volto-slate/src/editor/config.jsx +5 -4
  52. package/packages/volto-slate/src/editor/index.js +4 -4
  53. package/packages/volto-slate/src/editor/less/slate.less +28 -0
  54. package/packages/volto-slate/src/editor/plugins/Link/render.jsx +5 -6
  55. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +14 -4
  56. package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +14 -5
  57. package/packages/volto-slate/src/editor/render.jsx +77 -8
  58. package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +2 -2
  59. package/packages/volto-slate/src/editor/ui/index.js +15 -15
  60. package/packages/volto-slate/src/index.js +2 -2
  61. package/packages/volto-slate/src/utils/blocks.js +7 -0
  62. package/packages/volto-slate/src/widgets/RichTextWidget.jsx +15 -8
  63. package/razzle.config.js +4 -6
  64. package/src/actions/index.js +4 -0
  65. package/src/actions/navroot/navroot.js +16 -0
  66. package/src/actions/navroot/navroot.test.js +15 -0
  67. package/src/actions/relations/rebuild.js +7 -7
  68. package/src/actions/relations/relations.js +17 -0
  69. package/src/actions/site/site.js +16 -0
  70. package/src/actions/site/site.test.js +15 -0
  71. package/src/actions/userSession/userSession.js +17 -1
  72. package/src/components/index.js +194 -192
  73. package/src/components/manage/Actions/Actions.jsx +133 -243
  74. package/src/components/manage/Add/Add.jsx +7 -8
  75. package/src/components/manage/AnchorPlugin/index.jsx +2 -2
  76. package/src/components/manage/AnchorPlugin/utils/EditorUtils.js +3 -1
  77. package/src/components/manage/Blocks/Block/BlocksForm.jsx +19 -2
  78. package/src/components/manage/Blocks/Block/Edit.jsx +1 -1
  79. package/src/components/manage/Blocks/Block/Settings.jsx +2 -0
  80. package/src/components/manage/Blocks/Block/Settings.test.jsx +92 -0
  81. package/src/components/manage/Blocks/Block/Style.jsx +2 -2
  82. package/src/components/manage/Blocks/Container/Data.jsx +32 -0
  83. package/src/components/manage/Blocks/Container/Edit.jsx +177 -0
  84. package/src/components/manage/Blocks/Container/EditBlockWrapper.jsx +121 -0
  85. package/src/components/manage/Blocks/Container/NewBlockAddButton.jsx +84 -0
  86. package/src/components/manage/Blocks/Container/SimpleContainerToolbar.jsx +54 -0
  87. package/src/components/manage/Blocks/Grid/Edit.jsx +47 -0
  88. package/src/components/manage/Blocks/Grid/View.jsx +43 -0
  89. package/src/components/manage/Blocks/Grid/adapter.js +14 -0
  90. package/src/components/manage/Blocks/Grid/grid-1.svg +6 -0
  91. package/src/components/manage/Blocks/Grid/grid-2.svg +9 -0
  92. package/src/components/manage/Blocks/Grid/grid-3.svg +10 -0
  93. package/src/components/manage/Blocks/Grid/grid-4.svg +11 -0
  94. package/src/components/manage/Blocks/Grid/schema.js +35 -0
  95. package/src/components/manage/Blocks/Grid/templates.js +47 -0
  96. package/src/components/manage/Blocks/HTML/Edit.jsx +8 -8
  97. package/src/components/manage/Blocks/HeroImageLeft/Edit.jsx +36 -26
  98. package/src/components/manage/Blocks/Image/Edit.jsx +51 -12
  99. package/src/components/manage/Blocks/Image/Edit.test.jsx +2 -0
  100. package/src/components/manage/Blocks/Image/ImageSidebar.jsx +66 -16
  101. package/src/components/manage/Blocks/Image/View.jsx +26 -5
  102. package/src/components/manage/Blocks/Image/View.test.jsx +20 -0
  103. package/src/components/manage/Blocks/Image/schema.js +17 -10
  104. package/src/components/manage/Blocks/Image/utils.js +14 -0
  105. package/src/components/manage/Blocks/LeadImage/Edit.jsx +32 -10
  106. package/src/components/manage/Blocks/LeadImage/Edit.test.jsx +11 -1
  107. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.jsx +28 -9
  108. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.test.jsx +8 -2
  109. package/src/components/manage/Blocks/LeadImage/View.jsx +50 -38
  110. package/src/components/manage/Blocks/LeadImage/View.test.jsx +11 -1
  111. package/src/components/manage/Blocks/Listing/DefaultTemplate.jsx +18 -3
  112. package/src/components/manage/Blocks/Listing/ListingBody.jsx +32 -8
  113. package/src/components/manage/Blocks/Listing/ListingBody.test.jsx +20 -0
  114. package/src/components/manage/Blocks/Listing/SummaryTemplate.jsx +1 -1
  115. package/src/components/manage/Blocks/Listing/getAsyncData.js +3 -5
  116. package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +27 -17
  117. package/src/components/manage/Blocks/Maps/Edit.jsx +135 -209
  118. package/src/components/manage/Blocks/Maps/Edit.test.jsx +1 -2
  119. package/src/components/manage/Blocks/Maps/View.test.jsx +1 -2
  120. package/src/components/manage/Blocks/Search/SearchBlockView.jsx +3 -2
  121. package/src/components/manage/Blocks/Search/components/Facets.jsx +66 -7
  122. package/src/components/manage/Blocks/Search/components/FilterList.jsx +4 -6
  123. package/src/components/manage/Blocks/Search/components/SearchInput.jsx +9 -2
  124. package/src/components/manage/Blocks/Search/components/SelectFacet.jsx +2 -9
  125. package/src/components/manage/Blocks/Search/components/index.js +13 -13
  126. package/src/components/manage/Blocks/Search/hocs/index.js +2 -2
  127. package/src/components/manage/Blocks/Search/hocs/withQueryString.jsx +5 -2
  128. package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +70 -36
  129. package/src/components/manage/Blocks/Search/layout/LeftColumnFacets.jsx +17 -5
  130. package/src/components/manage/Blocks/Search/layout/RightColumnFacets.jsx +17 -5
  131. package/src/components/manage/Blocks/Search/layout/TopSideFacets.jsx +21 -5
  132. package/src/components/manage/Blocks/Search/schema.js +29 -14
  133. package/src/components/manage/Blocks/Table/Cell.jsx +2 -3
  134. package/src/components/manage/Blocks/Teaser/Body.jsx +0 -1
  135. package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +5 -10
  136. package/src/components/manage/Blocks/Teaser/schema.js +5 -0
  137. package/src/components/manage/Blocks/Text/Edit.jsx +2 -3
  138. package/src/components/manage/Blocks/Title/View.jsx +0 -23
  139. package/src/components/manage/Blocks/Title/View.test.jsx +16 -1
  140. package/src/components/manage/Blocks/ToC/Schema.jsx +40 -7
  141. package/src/components/manage/Blocks/ToC/View.jsx +84 -14
  142. package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.jsx +8 -3
  143. package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.test.jsx +44 -0
  144. package/src/components/manage/Blocks/ToC/variations/HorizontalMenu.jsx +149 -10
  145. package/src/components/manage/Blocks/ToC/variations/index.js +3 -1
  146. package/src/components/manage/Blocks/Video/View.test.jsx +1 -1
  147. package/src/components/manage/Contents/Contents.jsx +285 -114
  148. package/src/components/manage/Contents/ContentsPropertiesModal.jsx +90 -166
  149. package/src/components/manage/Contents/ContentsRenameModal.jsx +88 -139
  150. package/src/components/manage/Contents/ContentsRenameModal.stories.jsx +61 -0
  151. package/src/components/manage/Contents/ContentsTagsModal.jsx +83 -130
  152. package/src/components/manage/Contents/ContentsTagsModal.stories.jsx +68 -0
  153. package/src/components/manage/Contents/ContentsUploadModal.jsx +11 -7
  154. package/src/components/manage/Contents/ContentsWorkflowModal.jsx +87 -154
  155. package/src/components/manage/Controlpanels/Aliases.jsx +4 -12
  156. package/src/components/manage/Controlpanels/Groups/GroupsControlpanel.jsx +65 -38
  157. package/src/components/manage/Controlpanels/Groups/RenderGroups.jsx +2 -2
  158. package/src/components/manage/Controlpanels/Relations/BrokenRelations.jsx +38 -13
  159. package/src/components/manage/Controlpanels/Relations/Relations.jsx +5 -5
  160. package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +8 -7
  161. package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +68 -68
  162. package/src/components/manage/Controlpanels/Rules/AddRule.jsx +3 -10
  163. package/src/components/manage/Controlpanels/Rules/EditRule.jsx +1 -1
  164. package/src/components/manage/Controlpanels/UndoControlpanel.jsx +6 -9
  165. package/src/components/manage/Controlpanels/Users/RenderUsers.jsx +97 -7
  166. package/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +127 -99
  167. package/src/components/manage/Delete/Delete.jsx +96 -171
  168. package/src/components/manage/Diff/DiffField.jsx +25 -1
  169. package/src/components/manage/DragDropList/DragDropList.jsx +18 -13
  170. package/src/components/manage/Form/BlockDataForm.jsx +3 -2
  171. package/src/components/manage/Form/BlockDataForm.test.jsx +51 -17
  172. package/src/components/manage/Form/Form.jsx +7 -6
  173. package/src/components/manage/Form/InlineForm.test.jsx +16 -14
  174. package/src/components/manage/History/History.jsx +11 -1
  175. package/src/components/manage/LinksToItem/LinksToItem.jsx +209 -0
  176. package/src/components/manage/LinksToItem/LinksToItem.test.jsx +100 -0
  177. package/src/components/manage/LockingToastsFactory/LockingToastsFactory.jsx +1 -2
  178. package/src/components/manage/Messages/Messages.jsx +32 -99
  179. package/src/components/manage/Messages/Messages.test.jsx +0 -1
  180. package/src/components/manage/Preferences/ChangePassword.jsx +2 -2
  181. package/src/components/manage/Sharing/Sharing.jsx +80 -22
  182. package/src/components/manage/Sidebar/AlignBlock.jsx +1 -1
  183. package/src/components/manage/Sidebar/Sidebar.jsx +139 -220
  184. package/src/components/manage/TemplateChooser/TemplateChooser.jsx +38 -0
  185. package/src/components/manage/TemplateChooser/TemplateChooser.test.jsx +34 -0
  186. package/src/components/manage/TemplateChooser/template.svg +10 -0
  187. package/src/components/manage/Toast/Toast.jsx +1 -1
  188. package/src/components/manage/Toolbar/More.jsx +17 -2
  189. package/src/components/manage/Toolbar/PersonalTools.jsx +97 -155
  190. package/src/components/manage/Toolbar/Toolbar.jsx +2 -2
  191. package/src/components/manage/UniversalLink/UniversalLink.jsx +6 -12
  192. package/src/components/manage/UniversalLink/UniversalLink.test.jsx +37 -0
  193. package/src/components/manage/Widgets/AlignWidget.jsx +2 -4
  194. package/src/components/manage/Widgets/ArrayWidget.jsx +3 -1
  195. package/src/components/manage/Widgets/ArrayWidget.test.jsx +45 -1
  196. package/src/components/manage/Widgets/ColorPickerWidget.jsx +6 -1
  197. package/src/components/manage/Widgets/ColorPickerWidget.test.jsx +9 -7
  198. package/src/components/manage/Widgets/DatetimeWidget.jsx +2 -8
  199. package/src/components/manage/Widgets/FileWidget.jsx +2 -1
  200. package/src/components/manage/Widgets/FormFieldWrapper.jsx +1 -1
  201. package/src/components/manage/Widgets/IdWidget.jsx +1 -2
  202. package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +2 -9
  203. package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +3 -10
  204. package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.jsx +4 -4
  205. package/src/components/manage/Widgets/RegistryImageWidget.jsx +210 -0
  206. package/src/components/manage/Widgets/RegistryImageWidget.test.jsx +91 -0
  207. package/src/components/manage/Widgets/SchemaWidget.jsx +6 -9
  208. package/src/components/manage/Widgets/SelectUtils.js +1 -1
  209. package/src/components/manage/Widgets/SelectWidget.jsx +15 -1
  210. package/src/components/manage/Widgets/SelectWidget.test.jsx +45 -1
  211. package/src/components/manage/Widgets/WysiwygWidget.jsx +2 -9
  212. package/src/components/manage/Workflow/Workflow.jsx +75 -184
  213. package/src/components/theme/Anontools/Anontools.jsx +44 -72
  214. package/src/components/theme/Anontools/Anontools.stories.jsx +16 -6
  215. package/src/components/theme/Anontools/Anontools.test.jsx +16 -2
  216. package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +52 -99
  217. package/src/components/theme/Breadcrumbs/Breadcrumbs.stories.jsx +14 -13
  218. package/src/components/theme/Comments/Comment.stories.jsx +84 -0
  219. package/src/components/theme/Comments/CommentEditModal.jsx +63 -115
  220. package/src/components/theme/Comments/Comments.jsx +268 -380
  221. package/src/components/theme/Component/Component.jsx +1 -1
  222. package/src/components/theme/ContactForm/ContactForm.jsx +108 -192
  223. package/src/components/theme/ContactForm/ContactForm.stories.jsx +1 -1
  224. package/src/components/theme/ContactForm/ContactForm.test.jsx +2 -3
  225. package/src/components/theme/ContentMetadataTags/ContentMetadataTags.jsx +41 -3
  226. package/src/components/theme/Error/ServerError.jsx +29 -0
  227. package/src/components/theme/Header/Header.jsx +37 -63
  228. package/src/components/theme/Header/Header.test.jsx +18 -0
  229. package/src/components/theme/Image/Image.jsx +96 -0
  230. package/src/components/theme/Image/Image.test.jsx +125 -0
  231. package/src/components/theme/Login/Login.jsx +160 -243
  232. package/src/components/theme/Logo/Logo.Multilingual.test.jsx +131 -1
  233. package/src/components/theme/Logo/Logo.jsx +35 -27
  234. package/src/components/theme/Logo/Logo.test.jsx +135 -1
  235. package/src/components/theme/Logout/Logout.jsx +36 -83
  236. package/src/components/theme/Navigation/Navigation.jsx +86 -171
  237. package/src/components/theme/PasswordReset/PasswordReset.jsx +7 -5
  238. package/src/components/theme/PasswordReset/RequestPasswordReset.jsx +95 -170
  239. package/src/components/theme/PreviewImage/PreviewImage.jsx +31 -15
  240. package/src/components/theme/PreviewImage/PreviewImage.test.js +53 -13
  241. package/src/components/theme/Register/Register.jsx +2 -4
  242. package/src/components/theme/Search/SearchTags.jsx +30 -60
  243. package/src/components/theme/SearchWidget/SearchWidget.jsx +49 -97
  244. package/src/components/theme/SearchWidget/SearchWidget.test.jsx +8 -0
  245. package/src/components/theme/Sitemap/Sitemap.jsx +24 -13
  246. package/src/components/theme/Sitemap/Sitemap.test.jsx +23 -2
  247. package/src/components/theme/TsTest/TsTest.test.tsx +11 -0
  248. package/src/components/theme/TsTest/TsTest.tsx +15 -0
  249. package/src/components/theme/View/AlbumView.jsx +21 -16
  250. package/src/components/theme/View/EventView.jsx +36 -25
  251. package/src/components/theme/View/FileView.jsx +23 -18
  252. package/src/components/theme/View/ImageView.jsx +40 -32
  253. package/src/components/theme/View/ImageView.test.jsx +4 -0
  254. package/src/components/theme/View/LinkView.jsx +53 -78
  255. package/src/components/theme/View/ListingView.jsx +36 -28
  256. package/src/components/theme/View/NewsItemView.jsx +16 -17
  257. package/src/components/theme/View/RenderBlocks.jsx +56 -27
  258. package/src/components/theme/View/RenderEmptyBlock.jsx +5 -0
  259. package/src/components/theme/View/SummaryView.jsx +49 -39
  260. package/src/components/theme/View/TabularView.jsx +59 -53
  261. package/src/components/theme/View/View.jsx +2 -0
  262. package/src/components/theme/Widgets/ImageWidget.stories.jsx +1 -2
  263. package/src/config/Blocks.jsx +46 -0
  264. package/src/config/Components.jsx +3 -1
  265. package/src/config/ControlPanels.js +0 -1
  266. package/src/config/Loadables.jsx +1 -1
  267. package/src/config/NonContentRoutes.jsx +1 -0
  268. package/src/config/RichTextEditor/Blocks.jsx +4 -5
  269. package/src/config/RichTextEditor/FromHTML.jsx +2 -2
  270. package/src/config/RichTextEditor/Plugins.jsx +2 -3
  271. package/src/config/RichTextEditor/Styles.jsx +1 -1
  272. package/src/config/RichTextEditor/ToHTML.jsx +12 -10
  273. package/src/config/RichTextEditor/index.js +2 -3
  274. package/src/config/Views.jsx +6 -4
  275. package/src/config/Widgets.jsx +3 -0
  276. package/src/config/index.js +36 -2
  277. package/src/config/server.js +2 -0
  278. package/src/constants/ActionTypes.js +4 -0
  279. package/src/constants/Indexes.js +3 -1
  280. package/src/express-middleware/devproxy.js +1 -1
  281. package/src/express-middleware/files.js +11 -9
  282. package/src/express-middleware/images.js +12 -5
  283. package/src/express-middleware/ok.js +16 -0
  284. package/src/express-middleware/robotstxt.js +1 -1
  285. package/src/express-middleware/sitemap.js +1 -1
  286. package/src/express-middleware/static.js +3 -3
  287. package/src/helpers/Blocks/Blocks.js +52 -6
  288. package/src/helpers/Blocks/Blocks.test.js +92 -13
  289. package/src/helpers/Extensions/index.js +2 -1
  290. package/src/helpers/Extensions/withBlockSchemaEnhancer.js +63 -61
  291. package/src/helpers/Extensions/withBlockSchemaEnhancer.test.js +145 -0
  292. package/src/helpers/FormValidation/FormValidation.js +37 -7
  293. package/src/helpers/FormValidation/FormValidation.test.js +32 -0
  294. package/src/helpers/Html/Html.jsx +2 -8
  295. package/src/helpers/Loadable/__mocks__/Loadable.js +18 -18
  296. package/src/helpers/MessageLabels/MessageLabels.js +39 -4
  297. package/src/helpers/ScrollToTop/ScrollToTop.jsx +5 -3
  298. package/src/helpers/Site/index.js +21 -0
  299. package/src/helpers/Url/Url.js +22 -1
  300. package/src/helpers/Url/Url.test.js +41 -0
  301. package/src/helpers/Utils/UseDetectClickOutside.stories.jsx +190 -0
  302. package/src/helpers/Utils/Utils.js +35 -0
  303. package/src/helpers/Utils/Utils.test.js +13 -0
  304. package/src/helpers/Utils/usePagination.js +67 -14
  305. package/src/helpers/Utils/usePagination.test.js +115 -0
  306. package/src/helpers/index.js +15 -8
  307. package/src/hooks/client/useClient.js +11 -0
  308. package/src/hooks/clipboard/useClipboard.js +26 -0
  309. package/src/hooks/index.js +2 -0
  310. package/src/icons/grid-block.svg +11 -0
  311. package/src/middleware/api.js +203 -173
  312. package/src/middleware/blacklistRoutes.js +25 -22
  313. package/src/middleware/index.js +2 -2
  314. package/src/middleware/storeProtectLoadUtils.js +61 -62
  315. package/src/middleware/storeProtectLoadUtils.test.js +47 -43
  316. package/src/reducers/actions/actions.js +7 -5
  317. package/src/reducers/actions/actions.test.js +70 -0
  318. package/src/reducers/content/content.test.js +4 -4
  319. package/src/reducers/index.js +4 -0
  320. package/src/reducers/navigation/navigation.js +5 -5
  321. package/src/reducers/navigation/navigation.test.js +30 -0
  322. package/src/reducers/navroot/navroot.js +79 -0
  323. package/src/reducers/navroot/navroot.test.js +110 -0
  324. package/src/reducers/relations/relations.js +74 -46
  325. package/src/reducers/site/site.js +51 -0
  326. package/src/reducers/site/site.test.js +67 -0
  327. package/src/reducers/userSession/userSession.js +15 -1
  328. package/src/registry.js +2 -2
  329. package/src/routes.js +9 -0
  330. package/src/server.jsx +9 -0
  331. package/src/start-server.js +6 -2
  332. package/src/storybook.jsx +24 -38
  333. package/test-setup-config.js +11 -1
  334. package/theme/themes/pastanaga/collections/form.overrides +46 -0
  335. package/theme/themes/pastanaga/collections/menu.overrides +3 -2
  336. package/theme/themes/pastanaga/elements/container.overrides +5 -2
  337. package/theme/themes/pastanaga/elements/input.overrides +11 -1
  338. package/theme/themes/pastanaga/elements/label.overrides +10 -0
  339. package/theme/themes/pastanaga/elements/step.overrides +2 -1
  340. package/theme/themes/pastanaga/extras/blocks.less +25 -15
  341. package/theme/themes/pastanaga/extras/color-picker-widget.less +1 -1
  342. package/theme/themes/pastanaga/extras/contents.less +6 -1
  343. package/theme/themes/pastanaga/extras/draftjs.less +4 -4
  344. package/theme/themes/pastanaga/extras/grid.less +427 -0
  345. package/theme/themes/pastanaga/extras/login.less +3 -0
  346. package/theme/themes/pastanaga/extras/main.less +14 -7
  347. package/theme/themes/pastanaga/extras/react-dates-overrides.less +4 -2
  348. package/theme/themes/pastanaga/extras/search.less +7 -1
  349. package/theme/themes/pastanaga/extras/sidebar.less +5 -4
  350. package/theme/themes/pastanaga/extras/time-picker-overrides.less +5 -3
  351. package/theme/themes/pastanaga/extras/toc.less +29 -0
  352. package/theme/themes/pastanaga/extras/toolbar.less +6 -2
  353. package/theme/themes/pastanaga/extras/userscontrolpanel.less +17 -9
  354. package/theme/themes/pastanaga/extras/widgets.less +1 -1
  355. package/theme/themes/pastanaga/modules/rating.overrides +2 -1
  356. package/theme/themes/pastanaga-cms-ui/elements/container.overrides +2 -1
  357. package/theme/themes/pastanaga-cms-ui/extras/cms-ui.elements.container.less +6 -2
  358. package/theme/themes/pastanaga-cms-ui/extras/cms-ui.site.less +2 -2
  359. package/tsconfig.json +33 -0
  360. package/webpack-plugins/webpack-less-plugin.js +19 -0
  361. package/.yarn/install-state.gz +0 -0
  362. package/.yarn/releases/yarn-3.2.3.cjs +0 -783
  363. package/src/components/manage/Blocks/Teaser/utils.js +0 -44
  364. package/src/components/manage/Blocks/Teaser/utils.test.jsx +0 -229
  365. package/src/components/theme/Header/Header.md +0 -27
@@ -1,14 +1,8 @@
1
- /**
2
- * Edit map block.
3
- * @module components/manage/Blocks/Maps/Edit
4
- */
5
-
6
- import React, { Component } from 'react';
1
+ import React, { useState, useCallback, useMemo } from 'react';
7
2
  import PropTypes from 'prop-types';
8
3
  import { Button, Input, Message } from 'semantic-ui-react';
9
- import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';
4
+ import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
10
5
  import cx from 'classnames';
11
- import { isEqual } from 'lodash';
12
6
  import { withBlockExtensions } from '@plone/volto/helpers';
13
7
  import { compose } from 'redux';
14
8
  import { Icon, SidebarPortal, MapsSidebar } from '@plone/volto/components';
@@ -43,230 +37,162 @@ const messages = defineMessages({
43
37
  },
44
38
  });
45
39
 
46
- /**
47
- * Edit image block class.
48
- * @class Edit
49
- * @extends Component
50
- */
51
- class Edit extends Component {
52
- /**
53
- * Property types.
54
- * @property {Object} propTypes Property types.
55
- * @static
56
- */
57
- static propTypes = {
58
- selected: PropTypes.bool.isRequired,
59
- block: PropTypes.string.isRequired,
60
- index: PropTypes.number.isRequired,
61
- data: PropTypes.objectOf(PropTypes.any).isRequired,
62
- pathname: PropTypes.string.isRequired,
63
- onChangeBlock: PropTypes.func.isRequired,
64
- onSelectBlock: PropTypes.func.isRequired,
65
- onDeleteBlock: PropTypes.func.isRequired,
66
- onFocusPreviousBlock: PropTypes.func.isRequired,
67
- onFocusNextBlock: PropTypes.func.isRequired,
68
- handleKeyDown: PropTypes.func.isRequired,
69
- };
70
-
71
- /**
72
- * Constructor
73
- * @method constructor
74
- * @param {Object} props Component properties
75
- * @constructs WysiwygEditor
76
- */
77
- constructor(props) {
78
- super(props);
79
- this.getSrc = this.getSrc.bind(this);
80
- this.state = {
81
- url: '',
82
- error: null,
83
- };
84
- this.onSubmitUrl = this.onSubmitUrl.bind(this);
85
- this.onKeyDownVariantMenuForm = this.onKeyDownVariantMenuForm.bind(this);
86
- }
87
-
88
- /**
89
- * @param {*} nextProps
90
- * @returns {boolean}
91
- * @memberof Edit
92
- */
93
- shouldComponentUpdate(nextProps) {
94
- return (
95
- this.props.selected ||
96
- nextProps.selected ||
97
- !isEqual(this.props.data, nextProps.data)
98
- );
99
- }
40
+ const Edit = React.memo((props) => {
41
+ const intl = useIntl();
42
+ const [url, setUrl] = useState('');
43
+ const [error, setError] = useState(null);
100
44
 
101
- /**
102
- * Change url handler
103
- * @method onChangeUrl
104
- * @param {Object} target Target object
105
- * @returns {undefined}
106
- */
107
- onChangeUrl = ({ target }) => {
108
- this.setState({
109
- url: target.value,
110
- });
45
+ const { onChangeBlock, data, block, selected } = props;
46
+ const onChangeUrl = ({ target }) => {
47
+ setUrl(target.value);
111
48
  };
112
49
 
113
- /**
114
- * Submit url handler
115
- * @method onSubmitUrl
116
- * @param {string} e event
117
- * @returns {undefined}
118
- */
119
- onSubmitUrl() {
120
- this.props.onChangeBlock(this.props.block, {
121
- ...this.props.data,
122
- url: this.getSrc(this.state.url),
50
+ const onSubmitUrl = useCallback(() => {
51
+ onChangeBlock(block, {
52
+ ...data,
53
+ url: getSrc(url),
123
54
  });
124
- }
55
+ }, [onChangeBlock, block, data, url]);
125
56
 
126
- /**
127
- * Keydown handler on Variant Menu Form
128
- * This is required since the ENTER key is already mapped to a onKeyDown
129
- * event and needs to be overriden with a child onKeyDown.
130
- * @method onKeyDownVariantMenuForm
131
- * @param {Object} e Event object
132
- * @returns {undefined}
133
- */
134
- onKeyDownVariantMenuForm(e) {
135
- if (e.key === 'Enter') {
136
- e.preventDefault();
137
- e.stopPropagation();
138
- this.onSubmitUrl();
139
- } else if (e.key === 'Escape') {
140
- e.preventDefault();
141
- e.stopPropagation();
142
- // TODO: Do something on ESC key
143
- }
144
- }
57
+ const onKeyDownVariantMenuForm = useCallback(
58
+ (e) => {
59
+ if (e.key === 'Enter') {
60
+ e.preventDefault();
61
+ e.stopPropagation();
62
+ onSubmitUrl();
63
+ } else if (e.key === 'Escape') {
64
+ e.preventDefault();
65
+ e.stopPropagation();
66
+ // TODO: Do something on ESC key
67
+ }
68
+ },
69
+ [onSubmitUrl],
70
+ );
145
71
 
146
- /**
147
- * get getSrc handler
148
- * @method getSrc
149
- * @param {string} embed Embed HTML code from Google Maps share option
150
- * @returns {string} Source URL
151
- */
152
- getSrc(embed) {
72
+ const getSrc = (embed) => {
153
73
  const parser = new DOMParser();
154
74
  const doc = parser.parseFromString(embed, 'text/html');
155
75
  const iframe = doc.getElementsByTagName('iframe');
156
76
  if (iframe.length === 0) {
157
- this.setState({ error: true });
77
+ setError(true);
158
78
  return '';
159
79
  }
160
- this.setState({ error: false });
80
+ setError(false);
161
81
  return iframe[0].src;
162
- }
82
+ };
163
83
 
164
- resetSubmitUrl = () => {
165
- this.setState({
166
- url: '',
167
- });
84
+ const resetSubmitUrl = () => {
85
+ setUrl('');
168
86
  };
169
87
 
170
- /**
171
- * Render method.
172
- * @method render
173
- * @returns {string} Markup for the component.
174
- */
175
- render() {
176
- const placeholder =
177
- this.props.data.placeholder ||
178
- this.props.intl.formatMessage(messages.MapsBlockInputPlaceholder);
179
- return (
180
- <div
181
- className={cx(
182
- 'block maps align',
183
- {
184
- center: !Boolean(this.props.data.align),
185
- },
186
- this.props.data.align,
187
- )}
188
- >
189
- {this.props.data.url ? (
190
- <div
191
- className={cx('maps-inner', {
192
- 'full-width': this.props.data.align === 'full',
193
- })}
194
- >
195
- <iframe
196
- title={this.props.intl.formatMessage(
197
- messages.GoogleMapsEmbeddedBlock,
198
- )}
199
- src={this.props.data.url}
200
- className="google-map"
201
- frameBorder="0"
202
- allowFullScreen
203
- />
204
- </div>
205
- ) : (
206
- <Message>
207
- <center>
208
- <img src={mapsBlockSVG} alt="" />
209
- <div className="toolbar-inner">
210
- <Input
211
- onKeyDown={this.onKeyDownVariantMenuForm}
212
- onChange={this.onChangeUrl}
213
- placeholder={placeholder}
214
- value={this.state.url}
215
- // Prevents propagation to the Dropzone and the opening
216
- // of the upload browser dialog
217
- onClick={(e) => e.stopPropagation()}
218
- />
219
- {this.state.url && (
220
- <Button.Group>
221
- <Button
222
- basic
223
- className="cancel"
224
- onClick={(e) => {
225
- e.stopPropagation();
226
- this.setState({ url: '' });
227
- }}
228
- >
229
- <Icon name={clearSVG} size="30px" />
230
- </Button>
231
- </Button.Group>
232
- )}
88
+ const placeholder = useMemo(
89
+ () =>
90
+ data.placeholder ||
91
+ intl.formatMessage(messages.MapsBlockInputPlaceholder),
92
+ [data, intl],
93
+ );
94
+
95
+ return (
96
+ <div
97
+ className={cx(
98
+ 'block maps align',
99
+ {
100
+ center: !Boolean(data.align),
101
+ },
102
+ data.align,
103
+ )}
104
+ >
105
+ {data.url ? (
106
+ <div
107
+ className={cx('maps-inner', {
108
+ 'full-width': data.align === 'full',
109
+ })}
110
+ >
111
+ <iframe
112
+ title={intl.formatMessage(messages.GoogleMapsEmbeddedBlock)}
113
+ src={data.url}
114
+ className="google-map"
115
+ frameBorder="0"
116
+ allowFullScreen
117
+ />
118
+ </div>
119
+ ) : (
120
+ <Message>
121
+ <center>
122
+ <img src={mapsBlockSVG} alt="" />
123
+ <div className="toolbar-inner">
124
+ <Input
125
+ onKeyDown={onKeyDownVariantMenuForm}
126
+ onChange={onChangeUrl}
127
+ placeholder={placeholder}
128
+ value={url}
129
+ // Prevents propagation to the Dropzone and the opening
130
+ // of the upload browser dialog
131
+ onClick={(e) => e.stopPropagation()}
132
+ />
133
+ {url && (
233
134
  <Button.Group>
234
135
  <Button
235
136
  basic
236
- primary
137
+ className="cancel"
237
138
  onClick={(e) => {
238
139
  e.stopPropagation();
239
- this.onSubmitUrl();
140
+ setUrl('');
240
141
  }}
241
142
  >
242
- <Icon name={aheadSVG} size="30px" />
143
+ <Icon name={clearSVG} size="30px" />
243
144
  </Button>
244
145
  </Button.Group>
245
- </div>
246
- <div className="message-text">
247
- <FormattedMessage
248
- id="Please enter the Embed Code provided by Google Maps -> Share -> Embed map. It should contain the <iframe> code on it."
249
- defaultMessage="Please enter the Embed Code provided by Google Maps -> Share -> Embed map. It should contain the <iframe> code on it."
250
- />
251
- {this.state.error && (
252
- <div style={{ color: 'red' }}>
253
- <FormattedMessage
254
- id="Embed code error, please follow the instructions and try again."
255
- defaultMessage="Embed code error, please follow the instructions and try again."
256
- />
257
- </div>
258
- )}
259
- </div>
260
- </center>
261
- </Message>
262
- )}
263
- {!this.props.selected && <div className="map-overlay" />}
264
- <SidebarPortal selected={this.props.selected}>
265
- <MapsSidebar {...this.props} resetSubmitUrl={this.resetSubmitUrl} />
266
- </SidebarPortal>
267
- </div>
268
- );
269
- }
270
- }
146
+ )}
147
+ <Button.Group>
148
+ <Button
149
+ basic
150
+ primary
151
+ onClick={(e) => {
152
+ e.stopPropagation();
153
+ onSubmitUrl();
154
+ }}
155
+ >
156
+ <Icon name={aheadSVG} size="30px" />
157
+ </Button>
158
+ </Button.Group>
159
+ </div>
160
+ <div className="message-text">
161
+ <FormattedMessage
162
+ id="Please enter the Embed Code provided by Google Maps -> Share -> Embed map. It should contain the <iframe> code on it."
163
+ defaultMessage="Please enter the Embed Code provided by Google Maps -> Share -> Embed map. It should contain the <iframe> code on it."
164
+ />
165
+ {error && (
166
+ <div style={{ color: 'red' }}>
167
+ <FormattedMessage
168
+ id="Embed code error, please follow the instructions and try again."
169
+ defaultMessage="Embed code error, please follow the instructions and try again."
170
+ />
171
+ </div>
172
+ )}
173
+ </div>
174
+ </center>
175
+ </Message>
176
+ )}
177
+ {!selected && <div className="map-overlay" />}
178
+ <SidebarPortal selected={selected}>
179
+ <MapsSidebar {...props} resetSubmitUrl={resetSubmitUrl} />
180
+ </SidebarPortal>
181
+ </div>
182
+ );
183
+ });
271
184
 
272
- export default compose(injectIntl, withBlockExtensions)(Edit);
185
+ Edit.propTypes = {
186
+ selected: PropTypes.bool.isRequired,
187
+ block: PropTypes.string.isRequired,
188
+ index: PropTypes.number.isRequired,
189
+ data: PropTypes.objectOf(PropTypes.any).isRequired,
190
+ pathname: PropTypes.string.isRequired,
191
+ onChangeBlock: PropTypes.func.isRequired,
192
+ onSelectBlock: PropTypes.func.isRequired,
193
+ onDeleteBlock: PropTypes.func.isRequired,
194
+ onFocusPreviousBlock: PropTypes.func.isRequired,
195
+ onFocusNextBlock: PropTypes.func.isRequired,
196
+ handleKeyDown: PropTypes.func.isRequired,
197
+ };
198
+ export default compose(withBlockExtensions)(Edit);
@@ -40,8 +40,7 @@ test('renders an edit map block component', () => {
40
40
  <Edit
41
41
  data={{
42
42
  '@type': 'maps',
43
- url:
44
- 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3027.7835278268726!2d14.38842915203974!3d40.634655679238854!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x133b994881d943cb%3A0x6ab93db57d3272f0!2sHotel+Mediterraneo+Sorrento!5e0!3m2!1sen!2ses!4v1550168740166',
43
+ url: 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3027.7835278268726!2d14.38842915203974!3d40.634655679238854!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x133b994881d943cb%3A0x6ab93db57d3272f0!2sHotel+Mediterraneo+Sorrento!5e0!3m2!1sen!2ses!4v1550168740166',
45
44
  }}
46
45
  selected={false}
47
46
  block="1234"
@@ -36,8 +36,7 @@ test('renders a view map component', () => {
36
36
  <View
37
37
  data={{
38
38
  '@type': 'maps',
39
- url:
40
- 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3027.7835278268726!2d14.38842915203974!3d40.634655679238854!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x133b994881d943cb%3A0x6ab93db57d3272f0!2sHotel+Mediterraneo+Sorrento!5e0!3m2!1sen!2ses!4v1550168740166',
39
+ url: 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3027.7835278268726!2d14.38842915203974!3d40.634655679238854!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x133b994881d943cb%3A0x6ab93db57d3272f0!2sHotel+Mediterraneo+Sorrento!5e0!3m2!1sen!2ses!4v1550168740166',
41
40
  }}
42
41
  />
43
42
  </Provider>,
@@ -9,6 +9,7 @@ import { withSearch, withQueryString } from './hocs';
9
9
  import { compose } from 'redux';
10
10
  import { useSelector } from 'react-redux';
11
11
  import { isEqual, isFunction } from 'lodash';
12
+ import cx from 'classnames';
12
13
 
13
14
  const getListingBodyVariation = (data) => {
14
15
  const { variations } = config.blocks.blocksConfig.listing;
@@ -57,7 +58,7 @@ const applyDefaults = (data, root) => {
57
58
  };
58
59
 
59
60
  const SearchBlockView = (props) => {
60
- const { id, data, searchData, mode = 'view', variation } = props;
61
+ const { id, data, searchData, mode = 'view', variation, className } = props;
61
62
 
62
63
  const Layout = variation.view;
63
64
 
@@ -81,7 +82,7 @@ const SearchBlockView = (props) => {
81
82
  const listingBodyVariation = variations.find(({ id }) => id === selectedView);
82
83
 
83
84
  return (
84
- <div className="block search">
85
+ <div className={cx('block search', selectedView, className)}>
85
86
  <Layout
86
87
  {...props}
87
88
  isEditMode={mode === 'edit'}
@@ -1,9 +1,18 @@
1
- import React from 'react';
1
+ import React, { useState, useMemo } from 'react';
2
+ import { Button, Grid } from 'semantic-ui-react';
2
3
  import { resolveExtension } from '@plone/volto/helpers/Extensions/withBlockExtensions';
3
4
  import config from '@plone/volto/registry';
4
5
  import { hasNonValueOperation, hasDateOperation } from '../utils';
6
+ import { defineMessages, useIntl } from 'react-intl';
5
7
 
6
- const showFacet = (index) => {
8
+ const messages = defineMessages({
9
+ moreFilters: { id: 'More filters', defaultMessage: 'More filters' },
10
+ lessFilters: { id: 'Less filters', defaultMessage: 'Less filters' },
11
+ showFilters: { id: 'Show filters', defaultMessage: 'Show filters' },
12
+ hideFilters: { id: 'Hide filters', defaultMessage: 'Hide filters' },
13
+ });
14
+
15
+ const defaultShowFacet = (index) => {
7
16
  const { values } = index;
8
17
  return index
9
18
  ? hasNonValueOperation(index.operations || []) ||
@@ -14,6 +23,7 @@ const showFacet = (index) => {
14
23
  };
15
24
 
16
25
  const Facets = (props) => {
26
+ const [hidden, setHidden] = useState(true);
17
27
  const {
18
28
  querystring,
19
29
  data = {},
@@ -24,11 +34,29 @@ const Facets = (props) => {
24
34
  } = props;
25
35
  const { search } = config.blocks.blocksConfig;
26
36
 
37
+ const advancedFilters = useMemo(() => {
38
+ let count = 0;
39
+ for (let facetSettings of data.facets || []) {
40
+ if (facetSettings.advanced) {
41
+ count++;
42
+ }
43
+ }
44
+
45
+ if (count === data.facets?.length) {
46
+ return 2;
47
+ }
48
+ if (count) {
49
+ return 1;
50
+ }
51
+ return 0;
52
+ }, [data.facets]);
53
+
27
54
  const FacetWrapper = facetWrapper;
28
55
  const query_to_values = Object.assign(
29
56
  {},
30
57
  ...(data?.query?.query?.map(({ i, v }) => ({ [i]: v })) || []),
31
58
  );
59
+ const intl = useIntl();
32
60
 
33
61
  return (
34
62
  <>
@@ -36,6 +64,7 @@ const Facets = (props) => {
36
64
  ?.filter((facetSettings) => !facetSettings.hidden)
37
65
  .map((facetSettings) => {
38
66
  const field = facetSettings?.field?.value;
67
+ const isAdvanced = facetSettings?.advanced;
39
68
  const index = querystring.indexes[field] || {};
40
69
  const { values = {} } = index;
41
70
 
@@ -58,10 +87,15 @@ const Facets = (props) => {
58
87
 
59
88
  const isMulti = facetSettings.multiple;
60
89
  const selectedValue = facets[facetSettings?.field?.value];
90
+ const visible = (isAdvanced && !hidden) || !isAdvanced;
61
91
 
62
92
  // TODO :handle changing the type of facet (multi/nonmulti)
63
93
 
64
- const { view: FacetWidget, stateToValue } = resolveExtension(
94
+ const {
95
+ view: FacetWidget,
96
+ stateToValue,
97
+ showFacet = defaultShowFacet,
98
+ } = resolveExtension(
65
99
  'type',
66
100
  search.extensions.facetWidgets.types,
67
101
  facetSettings,
@@ -69,12 +103,15 @@ const Facets = (props) => {
69
103
 
70
104
  let value = stateToValue({ facetSettings, index, selectedValue });
71
105
 
72
- const {
73
- rewriteOptions = (name, options) => options,
74
- } = search.extensions.facetWidgets;
106
+ const { rewriteOptions = (name, options) => options } =
107
+ search.extensions.facetWidgets;
75
108
 
76
109
  return FacetWrapper && (isEditMode || showFacet(index)) ? (
77
- <FacetWrapper key={facetSettings['@id']}>
110
+ <FacetWrapper
111
+ key={facetSettings['@id']}
112
+ facetSettings={facetSettings}
113
+ visible={visible}
114
+ >
78
115
  <FacetWidget
79
116
  facet={facetSettings}
80
117
  choices={rewriteOptions(facetSettings?.field?.value, choices)}
@@ -90,6 +127,28 @@ const Facets = (props) => {
90
127
  ''
91
128
  );
92
129
  })}
130
+ {advancedFilters > 0 && (
131
+ <Grid.Column
132
+ mobile={12}
133
+ tablet={12}
134
+ computer={12}
135
+ className="toggle-advanced-facets"
136
+ >
137
+ <Button
138
+ onClick={() => {
139
+ setHidden((prevHidden) => !prevHidden);
140
+ }}
141
+ >
142
+ {hidden
143
+ ? advancedFilters === 2
144
+ ? intl.formatMessage(messages.showFilters)
145
+ : intl.formatMessage(messages.moreFilters)
146
+ : advancedFilters === 2
147
+ ? intl.formatMessage(messages.hideFilters)
148
+ : intl.formatMessage(messages.lessFilters)}
149
+ </Button>
150
+ </Grid.Column>
151
+ )}
93
152
  </>
94
153
  );
95
154
  };
@@ -36,9 +36,8 @@ const FilterList = (props) => {
36
36
  !isEmpty(facets[field.value]),
37
37
  ).length;
38
38
 
39
- const {
40
- types: facetWidgetTypes,
41
- } = config.blocks.blocksConfig.search.extensions.facetWidgets;
39
+ const { types: facetWidgetTypes } =
40
+ config.blocks.blocksConfig.search.extensions.facetWidgets;
42
41
 
43
42
  const intl = useIntl();
44
43
 
@@ -70,9 +69,8 @@ const FilterList = (props) => {
70
69
  <Accordion.Content className="filter-list-content" active={isOpened}>
71
70
  <div className="filter-list">
72
71
  {data.facets?.map((facetSettings, i) => {
73
- const {
74
- filterListComponent: FilterListComponent,
75
- } = resolveExtension('type', facetWidgetTypes, facetSettings);
72
+ const { filterListComponent: FilterListComponent } =
73
+ resolveExtension('type', facetWidgetTypes, facetSettings);
76
74
  const facet = facetSettings?.field?.value;
77
75
  if (!facet) return null;
78
76
 
@@ -13,7 +13,14 @@ const messages = defineMessages({
13
13
  });
14
14
 
15
15
  const SearchInput = (props) => {
16
- const { data, searchText, setSearchText, isLive, onTriggerSearch } = props;
16
+ const {
17
+ data,
18
+ searchText,
19
+ setSearchText,
20
+ isLive,
21
+ onTriggerSearch,
22
+ removeSearchQuery,
23
+ } = props;
17
24
  const intl = useIntl();
18
25
 
19
26
  return (
@@ -44,7 +51,7 @@ const SearchInput = (props) => {
44
51
  className="search-input-clear-icon-button"
45
52
  onClick={() => {
46
53
  setSearchText('');
47
- onTriggerSearch('');
54
+ removeSearchQuery();
48
55
  }}
49
56
  >
50
57
  <Icon name={clearSVG} />
@@ -13,15 +13,8 @@ import {
13
13
  } from './base';
14
14
 
15
15
  const SelectFacet = (props) => {
16
- const {
17
- facet,
18
- choices,
19
- reactSelect,
20
- isMulti,
21
- onChange,
22
- value,
23
- isEditMode,
24
- } = props;
16
+ const { facet, choices, reactSelect, isMulti, onChange, value, isEditMode } =
17
+ props;
25
18
  const Select = reactSelect.default;
26
19
  const v = Array.isArray(value) && value.length === 0 ? null : value;
27
20
 
@@ -1,13 +1,13 @@
1
- export SearchDetails from './SearchDetails';
2
- export Facets from './Facets';
3
- export SelectFacet from './SelectFacet';
4
- export CheckboxFacet from './CheckboxFacet';
5
- export DateRangeFacet from './DateRangeFacet';
6
- export SearchInput from './SearchInput';
7
- export FilterList from './FilterList';
8
- export SortOn from './SortOn';
9
- export ToggleFacet from './ToggleFacet';
10
- export SelectFacetFilterListEntry from './SelectFacetFilterListEntry';
11
- export ToggleFacetFilterListEntry from './ToggleFacetFilterListEntry';
12
- export DateRangeFacetFilterListEntry from './DateRangeFacetFilterListEntry';
13
- export ViewSwitcher from './ViewSwitcher';
1
+ export { default as SearchDetails } from './SearchDetails';
2
+ export { default as Facets } from './Facets';
3
+ export { default as SelectFacet } from './SelectFacet';
4
+ export { default as CheckboxFacet } from './CheckboxFacet';
5
+ export { default as DateRangeFacet } from './DateRangeFacet';
6
+ export { default as SearchInput } from './SearchInput';
7
+ export { default as FilterList } from './FilterList';
8
+ export { default as SortOn } from './SortOn';
9
+ export { default as ToggleFacet } from './ToggleFacet';
10
+ export { default as SelectFacetFilterListEntry } from './SelectFacetFilterListEntry';
11
+ export { default as ToggleFacetFilterListEntry } from './ToggleFacetFilterListEntry';
12
+ export { default as DateRangeFacetFilterListEntry } from './DateRangeFacetFilterListEntry';
13
+ export { default as ViewSwitcher } from './ViewSwitcher';
@@ -1,2 +1,2 @@
1
- export withQueryString from './withQueryString';
2
- export withSearch from './withSearch';
1
+ export { default as withQueryString } from './withQueryString';
2
+ export { default as withSearch } from './withSearch';