design-comuni-plone-theme 11.11.1 → 11.12.0

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 (164) hide show
  1. package/.github/workflows/npm.yml +3 -1
  2. package/.yarn/cache/@formatjs-ecma402-abstract-npm-1.18.2-281c9afdd0-c664056cca.zip +0 -0
  3. package/.yarn/cache/@formatjs-fast-memoize-npm-2.2.0-4a46a61b8b-8697fe72a7.zip +0 -0
  4. package/.yarn/cache/@formatjs-icu-messageformat-parser-npm-2.7.6-59cd895220-d537253cbf.zip +0 -0
  5. package/.yarn/cache/@formatjs-icu-skeleton-parser-npm-1.8.0-0f1fd4bf3f-85ca45148a.zip +0 -0
  6. package/.yarn/cache/@formatjs-intl-localematcher-npm-0.5.4-e30cfcd8fd-a0af57874f.zip +0 -0
  7. package/.yarn/cache/@internationalized-date-npm-3.5.3-435a424ba4-e3b011b587.zip +0 -0
  8. package/.yarn/cache/@internationalized-message-npm-3.1.3-ed0b43d16d-76b7aadad0.zip +0 -0
  9. package/.yarn/cache/@internationalized-number-npm-3.5.2-0f0b803d0d-b622849a6c.zip +0 -0
  10. package/.yarn/cache/@internationalized-string-npm-3.2.2-dc233d6c2e-32d5944f0a.zip +0 -0
  11. package/.yarn/cache/@plone-components-npm-2.0.0-alpha.7-ae15679e71-6eb35f5ef6.zip +0 -0
  12. package/.yarn/cache/@react-aria-breadcrumbs-npm-3.5.12-4df37e0505-19c473c624.zip +0 -0
  13. package/.yarn/cache/@react-aria-button-npm-3.9.4-bcfdfa6d77-3644f5b504.zip +0 -0
  14. package/.yarn/cache/@react-aria-calendar-npm-3.5.7-4a24a3018a-08088c27ad.zip +0 -0
  15. package/.yarn/cache/@react-aria-checkbox-npm-3.14.2-ec0875b197-33c280dbaa.zip +0 -0
  16. package/.yarn/cache/@react-aria-color-npm-3.0.0-beta.32-b69a571afd-fcaa145f2d.zip +0 -0
  17. package/.yarn/cache/@react-aria-combobox-npm-3.9.0-9d01e3bcc8-ebc3aa2523.zip +0 -0
  18. package/.yarn/cache/@react-aria-datepicker-npm-3.10.0-b44d40522c-b5b3226e0e.zip +0 -0
  19. package/.yarn/cache/@react-aria-dialog-npm-3.5.13-fd75d2058e-b03586c90b.zip +0 -0
  20. package/.yarn/cache/@react-aria-dnd-npm-3.6.0-085417ff5c-da39c859dc.zip +0 -0
  21. package/.yarn/cache/@react-aria-focus-npm-3.17.0-a0d6fd01c9-bac778f7f9.zip +0 -0
  22. package/.yarn/cache/@react-aria-form-npm-3.0.4-1f761ca8f4-97a8f25e7b.zip +0 -0
  23. package/.yarn/cache/@react-aria-grid-npm-3.9.0-cdd984835d-c3841b238b.zip +0 -0
  24. package/.yarn/cache/@react-aria-gridlist-npm-3.8.0-40b98ff740-04ab1cccee.zip +0 -0
  25. package/.yarn/cache/@react-aria-i18n-npm-3.11.0-3bd97ed4c6-c4c7c7bd16.zip +0 -0
  26. package/.yarn/cache/@react-aria-interactions-npm-3.21.2-c6fe2e70fd-df7ca376b1.zip +0 -0
  27. package/.yarn/cache/@react-aria-label-npm-3.7.7-39b24fbd65-bfa2ec757c.zip +0 -0
  28. package/.yarn/cache/@react-aria-link-npm-3.7.0-cf388c071e-0af089b4b6.zip +0 -0
  29. package/.yarn/cache/@react-aria-listbox-npm-3.12.0-c9a3fcfdc1-2591d78997.zip +0 -0
  30. package/.yarn/cache/@react-aria-live-announcer-npm-3.3.3-46433149f6-501e772dba.zip +0 -0
  31. package/.yarn/cache/@react-aria-menu-npm-3.14.0-6fa31f531d-7f716c6ef9.zip +0 -0
  32. package/.yarn/cache/@react-aria-meter-npm-3.4.12-2821308fcd-a344cbb3df.zip +0 -0
  33. package/.yarn/cache/@react-aria-numberfield-npm-3.11.2-09acd47715-4e86800c8a.zip +0 -0
  34. package/.yarn/cache/@react-aria-overlays-npm-3.22.0-90340dac2d-bc2a4ed89d.zip +0 -0
  35. package/.yarn/cache/@react-aria-progress-npm-3.4.12-dfcbd6cd8f-3ca779f189.zip +0 -0
  36. package/.yarn/cache/@react-aria-radio-npm-3.10.3-94cedc9974-62cc213b68.zip +0 -0
  37. package/.yarn/cache/@react-aria-searchfield-npm-3.7.4-aaf2343364-ca4bc43633.zip +0 -0
  38. package/.yarn/cache/@react-aria-select-npm-3.14.4-36c0aabf5a-7b091a7a9c.zip +0 -0
  39. package/.yarn/cache/@react-aria-selection-npm-3.18.0-ac9a672791-58d96d02cd.zip +0 -0
  40. package/.yarn/cache/@react-aria-separator-npm-3.3.12-cba989b17a-972f038c36.zip +0 -0
  41. package/.yarn/cache/@react-aria-slider-npm-3.7.7-ed4b28f711-3d4b8c88cc.zip +0 -0
  42. package/.yarn/cache/@react-aria-spinbutton-npm-3.6.4-1361ae7900-d3df661c3b.zip +0 -0
  43. package/.yarn/cache/@react-aria-ssr-npm-3.9.3-83f9d6a628-9bbc8fea4a.zip +0 -0
  44. package/.yarn/cache/@react-aria-switch-npm-3.6.3-491c39fd33-754bdd8fe0.zip +0 -0
  45. package/.yarn/cache/@react-aria-table-npm-3.14.0-28948a50ad-8ce75e4b03.zip +0 -0
  46. package/.yarn/cache/@react-aria-tabs-npm-3.9.0-06e5f74497-1460c136f1.zip +0 -0
  47. package/.yarn/cache/@react-aria-tag-npm-3.4.0-1910b576b8-1fcd4068af.zip +0 -0
  48. package/.yarn/cache/@react-aria-textfield-npm-3.14.4-1c110be229-b9ba98a86e.zip +0 -0
  49. package/.yarn/cache/@react-aria-toggle-npm-3.10.3-93811531bc-a54c83da54.zip +0 -0
  50. package/.yarn/cache/@react-aria-toolbar-npm-3.0.0-beta.4-8a6d41e05d-ae6fc5f49a.zip +0 -0
  51. package/.yarn/cache/@react-aria-tooltip-npm-3.7.3-e2a6890301-57743f4bbd.zip +0 -0
  52. package/.yarn/cache/@react-aria-tree-npm-3.0.0-alpha.0-48c591e08d-2829e3a0ef.zip +0 -0
  53. package/.yarn/cache/@react-aria-utils-npm-3.24.0-b754bf323d-0f0b530f06.zip +0 -0
  54. package/.yarn/cache/@react-aria-visually-hidden-npm-3.8.11-437e8b0708-5b0e770a9c.zip +0 -0
  55. package/.yarn/cache/@react-spectrum-utils-npm-3.11.6-38e10974c6-6089e7b70b.zip +0 -0
  56. package/.yarn/cache/@react-stately-calendar-npm-3.5.0-269efd3343-8395aaf34d.zip +0 -0
  57. package/.yarn/cache/@react-stately-checkbox-npm-3.6.4-a5dc7cc18a-89c38c8698.zip +0 -0
  58. package/.yarn/cache/@react-stately-collections-npm-3.10.6-669dc2c16b-bc81d37b45.zip +0 -0
  59. package/.yarn/cache/@react-stately-color-npm-3.6.0-aee6f5f342-2cf47e66f0.zip +0 -0
  60. package/.yarn/cache/@react-stately-combobox-npm-3.8.3-15ca98aa5c-dad97a15fb.zip +0 -0
  61. package/.yarn/cache/@react-stately-data-npm-3.11.3-cce895778d-dfc8d1ac9a.zip +0 -0
  62. package/.yarn/cache/@react-stately-datepicker-npm-3.9.3-fe9d43086a-c2fee2a75e.zip +0 -0
  63. package/.yarn/cache/@react-stately-dnd-npm-3.3.0-12dd68769d-afc0565ac1.zip +0 -0
  64. package/.yarn/cache/@react-stately-flags-npm-3.0.2-1ec044f94e-c2c19b6043.zip +0 -0
  65. package/.yarn/cache/@react-stately-form-npm-3.0.2-4bc729a2ea-9dfae19354.zip +0 -0
  66. package/.yarn/cache/@react-stately-grid-npm-3.8.6-907965ec36-313e63ff3b.zip +0 -0
  67. package/.yarn/cache/@react-stately-list-npm-3.10.4-77dd54c792-19325e9ab4.zip +0 -0
  68. package/.yarn/cache/@react-stately-menu-npm-3.7.0-90a0db1055-a108e379e4.zip +0 -0
  69. package/.yarn/cache/@react-stately-numberfield-npm-3.9.2-3a89f1bc42-96956b46c5.zip +0 -0
  70. package/.yarn/cache/@react-stately-overlays-npm-3.6.6-f8aa64654d-bc910b54b2.zip +0 -0
  71. package/.yarn/cache/@react-stately-radio-npm-3.10.3-071befd78c-f8d356f86a.zip +0 -0
  72. package/.yarn/cache/@react-stately-searchfield-npm-3.5.2-2f3fb6c209-43558cfff5.zip +0 -0
  73. package/.yarn/cache/@react-stately-select-npm-3.6.3-be5e642bfa-34fbe8501b.zip +0 -0
  74. package/.yarn/cache/@react-stately-selection-npm-3.15.0-8b7bc0694b-9edcb36fed.zip +0 -0
  75. package/.yarn/cache/@react-stately-slider-npm-3.5.3-562ef6c5cb-06d0a53b7c.zip +0 -0
  76. package/.yarn/cache/@react-stately-table-npm-3.11.7-5c9e0fd96a-58d51f98d6.zip +0 -0
  77. package/.yarn/cache/@react-stately-tabs-npm-3.6.5-146716fcbd-d1968d1417.zip +0 -0
  78. package/.yarn/cache/@react-stately-toggle-npm-3.7.3-37e71d088a-5c5e7b52fa.zip +0 -0
  79. package/.yarn/cache/@react-stately-tooltip-npm-3.4.8-fd6ef872a2-25cc3e3c24.zip +0 -0
  80. package/.yarn/cache/@react-stately-tree-npm-3.8.0-500b430bb7-19c17a7406.zip +0 -0
  81. package/.yarn/cache/@react-stately-utils-npm-3.10.0-066f48a98e-780dab3581.zip +0 -0
  82. package/.yarn/cache/@react-stately-virtualizer-npm-3.7.0-2e4e9a8821-c04424dfff.zip +0 -0
  83. package/.yarn/cache/@react-types-breadcrumbs-npm-3.7.4-0e067c6509-132d9d1b0a.zip +0 -0
  84. package/.yarn/cache/@react-types-button-npm-3.9.3-491d887431-a9da87eb7e.zip +0 -0
  85. package/.yarn/cache/@react-types-calendar-npm-3.4.5-9491b2662c-6e3b6e44df.zip +0 -0
  86. package/.yarn/cache/@react-types-checkbox-npm-3.8.0-fa41e40b34-9786fd8224.zip +0 -0
  87. package/.yarn/cache/@react-types-color-npm-3.0.0-beta.24-a1c15bc97a-894371276c.zip +0 -0
  88. package/.yarn/cache/@react-types-combobox-npm-3.11.0-e0a5e09d36-3bf3ad11d0.zip +0 -0
  89. package/.yarn/cache/@react-types-datepicker-npm-3.7.3-1c968964c9-1053453aee.zip +0 -0
  90. package/.yarn/cache/@react-types-dialog-npm-3.5.9-037d2817d8-efeb8dc70e.zip +0 -0
  91. package/.yarn/cache/@react-types-form-npm-3.7.3-faea9d8969-e88a1a4097.zip +0 -0
  92. package/.yarn/cache/@react-types-grid-npm-3.2.5-47670b811f-e3588328cf.zip +0 -0
  93. package/.yarn/cache/@react-types-link-npm-3.5.4-44b62607b6-5d7555e036.zip +0 -0
  94. package/.yarn/cache/@react-types-listbox-npm-3.4.8-2e0a7f4dea-31e7b4c8b1.zip +0 -0
  95. package/.yarn/cache/@react-types-menu-npm-3.9.8-a4a0f57423-d5fb6d99bc.zip +0 -0
  96. package/.yarn/cache/@react-types-meter-npm-3.4.0-768a873170-cc30fd4745.zip +0 -0
  97. package/.yarn/cache/@react-types-numberfield-npm-3.8.2-a842f6619d-e8ed43b08f.zip +0 -0
  98. package/.yarn/cache/@react-types-overlays-npm-3.8.6-78e91b1a37-8efb3c2569.zip +0 -0
  99. package/.yarn/cache/@react-types-progress-npm-3.5.3-27066d6e69-d13f2db5c3.zip +0 -0
  100. package/.yarn/cache/@react-types-radio-npm-3.8.0-5d03b4b24f-f868f13ff2.zip +0 -0
  101. package/.yarn/cache/@react-types-searchfield-npm-3.5.4-9a6cb6c41b-806f97f5d6.zip +0 -0
  102. package/.yarn/cache/@react-types-select-npm-3.9.3-436aaa190f-b3db4acb66.zip +0 -0
  103. package/.yarn/cache/@react-types-shared-npm-3.23.0-1952004986-aa3507ef30.zip +0 -0
  104. package/.yarn/cache/@react-types-slider-npm-3.7.2-369a50984c-fcdafa3511.zip +0 -0
  105. package/.yarn/cache/@react-types-switch-npm-3.5.2-19ff24a621-e8caae2da6.zip +0 -0
  106. package/.yarn/cache/@react-types-table-npm-3.9.4-0afc8754dd-80dae2adfe.zip +0 -0
  107. package/.yarn/cache/@react-types-tabs-npm-3.3.6-047a1fd9c3-69d89f3c5c.zip +0 -0
  108. package/.yarn/cache/@react-types-textfield-npm-3.9.2-2bd9f93005-9102b983c5.zip +0 -0
  109. package/.yarn/cache/@react-types-tooltip-npm-3.4.8-8d81ea0e23-a3122729eb.zip +0 -0
  110. package/.yarn/cache/@swc-helpers-npm-0.4.14-f806c3fb16-273fd3f3fc.zip +0 -0
  111. package/.yarn/cache/@swc-helpers-npm-0.4.36-507abd5d2a-20b9f021a9.zip +0 -0
  112. package/.yarn/cache/@swc-helpers-npm-0.5.11-94bd1e1b3e-5d85e641d9.zip +0 -0
  113. package/.yarn/cache/client-only-npm-0.0.1-07d3e9505c-0c16bf660d.zip +0 -0
  114. package/.yarn/cache/clsx-npm-2.1.1-96125b98be-acd3e1ab9d.zip +0 -0
  115. package/.yarn/cache/intl-messageformat-npm-10.5.11-1feb0e2115-b5574447a0.zip +0 -0
  116. package/.yarn/cache/react-aria-components-npm-1.2.0-30040153be-43319158c8.zip +0 -0
  117. package/.yarn/cache/react-aria-npm-3.33.0-688afc3857-980f9da630.zip +0 -0
  118. package/.yarn/cache/react-stately-npm-3.31.0-9465d26d77-d59440e0a7.zip +0 -0
  119. package/.yarn/cache/use-sync-external-store-npm-1.2.2-7923c915e1-fe07c071c4.zip +0 -0
  120. package/.yarn/cache/{volto-form-block-npm-3.7.2-f24953a510-7387a1b85a.zip → volto-form-block-npm-3.8.3-dd17b59f52-44b043f3ea.zip} +0 -0
  121. package/.yarn/cache/{volto-gdpr-privacy-npm-2.2.1-bc93b3e168-bce76108c3.zip → volto-gdpr-privacy-npm-2.2.5-1673f4cc81-0cfc4e9ba7.zip} +0 -0
  122. package/.yarn/cache/volto-multilingual-widget-npm-3.2.1-6fcb25c017-c24fd5379c.zip +0 -0
  123. package/.yarn/install-state.gz +0 -0
  124. package/CHANGELOG.md +53 -0
  125. package/RELEASE.md +17 -0
  126. package/locales/de/LC_MESSAGES/volto.po +15 -0
  127. package/locales/en/LC_MESSAGES/volto.po +15 -0
  128. package/locales/es/LC_MESSAGES/volto.po +15 -0
  129. package/locales/fr/LC_MESSAGES/volto.po +15 -0
  130. package/locales/it/LC_MESSAGES/volto.po +16 -1
  131. package/locales/volto.pot +16 -1
  132. package/package.json +4 -4
  133. package/publiccode.yml +2 -2
  134. package/src/components/ItaliaTheme/Blocks/IconBlocks/Block/ViewBlock.jsx +1 -2
  135. package/src/components/ItaliaTheme/Blocks/Listing/Commons/ListingImage.jsx +8 -4
  136. package/src/components/ItaliaTheme/Blocks/Listing/SmallBlockLinksTemplate.jsx +1 -0
  137. package/src/components/ItaliaTheme/Breadcrumbs/Breadcrumbs.jsx +13 -7
  138. package/src/components/ItaliaTheme/Header/HeaderSlim/TertiaryMenu.jsx +1 -1
  139. package/src/components/ItaliaTheme/Icons/FontAwesomeIcon.jsx +4 -4
  140. package/src/components/ItaliaTheme/Pagination/Pagination.jsx +5 -0
  141. package/src/components/ItaliaTheme/Pagination/PaginationItem.jsx +15 -1
  142. package/src/components/ItaliaTheme/Slider/SingleSlideWrapper.jsx +2 -0
  143. package/src/components/ItaliaTheme/View/Commons/ContactsCard.jsx +2 -31
  144. package/src/components/ItaliaTheme/View/Commons/PageHeader/PageHeaderBando.jsx +3 -0
  145. package/src/components/ItaliaTheme/View/DocumentoView/DocumentoAccedereServizio.jsx +5 -8
  146. package/src/components/ItaliaTheme/View/FAQ/FaqFolder/SearchBar.jsx +5 -0
  147. package/src/components/ItaliaTheme/View/PersonaView/PersonaDocumenti.jsx +0 -1
  148. package/src/components/ItaliaTheme/View/ServizioView/ServizioCondizioni.jsx +5 -1
  149. package/src/components/ItaliaTheme/View/UOView/UOServices.jsx +38 -2
  150. package/src/components/ItaliaTheme/manage/Widgets/SearchSectionsConfigurationWidget/SearchSectionsConfigurationForm.jsx +2 -2
  151. package/src/config/italiaConfig.js +2 -2
  152. package/src/customizations/volto/components/manage/Blocks/Search/components/DateRangeFacet.jsx +16 -2
  153. package/src/customizations/volto/components/manage/UniversalLink/UniversalLink.jsx +3 -1
  154. package/src/customizations/volto-form-block/components/FormResult.jsx +78 -0
  155. package/src/customizations/volto-form-block/components/FormView.jsx +79 -66
  156. package/src/customizations/volto-form-block/components/Widget/Button.jsx +50 -0
  157. package/src/overrideTranslations.jsx +8 -0
  158. package/src/theme/ItaliaTheme/Blocks/_gridBlock.scss +5 -0
  159. package/src/theme/ItaliaTheme/Components/_pager.scss +10 -0
  160. package/src/theme/ItaliaTheme/Views/_slider.scss +1 -0
  161. package/src/theme/_site-variables.scss +1 -1
  162. package/src/theme/extras/_search.scss +5 -0
  163. package/.yarn/cache/volto-multilingual-widget-npm-3.0.0-58c1ce4fb7-3fa0611e79.zip +0 -0
  164. /package/src/theme/ItaliaTheme/Blocks/{_inEvidenceTemplate.scss → _inevidencetemplate.scss} +0 -0
package/locales/volto.pot CHANGED
@@ -1,7 +1,7 @@
1
1
  msgid ""
2
2
  msgstr ""
3
3
  "Project-Id-Version: Plone\n"
4
- "POT-Creation-Date: 2024-05-02T09:19:12.781Z\n"
4
+ "POT-Creation-Date: 2024-05-15T15:55:46.048Z\n"
5
5
  "Last-Translator: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
6
6
  "Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
7
7
  "MIME-Version: 1.0\n"
@@ -106,6 +106,11 @@ msgstr ""
106
106
  msgid "Cerca per parola chiave"
107
107
  msgstr ""
108
108
 
109
+ #: overrideTranslations
110
+ # defaultMessage: Pulisci i campi
111
+ msgid "Clear dates"
112
+ msgstr ""
113
+
109
114
  #: helpers/Translations/searchBlockExtendedTranslations
110
115
  # defaultMessage: Clear filters
111
116
  msgid "Clear filters"
@@ -2994,6 +2999,11 @@ msgstr ""
2994
2999
  msgid "rrule_nd"
2995
3000
  msgstr ""
2996
3001
 
3002
+ #: overrideTranslations
3003
+ # defaultMessage: di
3004
+ msgid "rrule_on"
3005
+ msgstr ""
3006
+
2997
3007
  #: overrideTranslations
2998
3008
  # defaultMessage: di
2999
3009
  msgid "rrule_on the"
@@ -3284,6 +3294,11 @@ msgstr ""
3284
3294
  msgid "search_endDate"
3285
3295
  msgstr ""
3286
3296
 
3297
+ #: components/ItaliaTheme/View/FAQ/FaqFolder/SearchBar
3298
+ # defaultMessage: Search icon
3299
+ msgid "search_icon"
3300
+ msgstr ""
3301
+
3287
3302
  #: components/ItaliaTheme/Blocks/SearchSections/SideBar
3288
3303
  # defaultMessage: Dove cercare
3289
3304
  msgid "search_sections"
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "design-comuni-plone-theme",
3
3
  "description": "Volto Theme for Italia design guidelines",
4
4
  "license": "GPL-v3",
5
- "version": "11.11.1",
5
+ "version": "11.12.0",
6
6
  "main": "src/index.js",
7
7
  "keywords": [
8
8
  "volto-addon",
@@ -147,10 +147,10 @@
147
147
  "volto-dropdownmenu": "4.1.1",
148
148
  "volto-editablefooter": "5.1.1",
149
149
  "volto-feedback": "0.3.0",
150
- "volto-form-block": "3.7.2",
151
- "volto-gdpr-privacy": "2.2.1",
150
+ "volto-form-block": "3.8.3",
151
+ "volto-gdpr-privacy": "2.2.5",
152
152
  "volto-google-analytics": "2.0.0",
153
- "volto-multilingual-widget": "3.0.0",
153
+ "volto-multilingual-widget": "3.2.1",
154
154
  "volto-querywidget-with-browser": "0.4.2",
155
155
  "volto-rss-block": "3.0.0",
156
156
  "volto-secondarymenu": "4.0.0",
package/publiccode.yml CHANGED
@@ -227,9 +227,9 @@ maintenance:
227
227
  name: io-Comune - Il sito AgID per Comuni ed Enti Pubblici
228
228
  platforms:
229
229
  - web
230
- releaseDate: '2024-05-02'
230
+ releaseDate: '2024-05-21'
231
231
  softwareType: standalone/web
232
- softwareVersion: 11.11.1
232
+ softwareVersion: 11.12.0
233
233
  url: 'https://github.com/italia/design-comuni-plone-theme'
234
234
  usedBy:
235
235
  - ASP Comuni Modenesi Area Nord
@@ -10,7 +10,6 @@ import { useIntl, defineMessages } from 'react-intl';
10
10
  import { UniversalLink } from '@plone/volto/components';
11
11
 
12
12
  import { Icon } from 'design-comuni-plone-theme/components/ItaliaTheme';
13
- import { RichTextRender } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
14
13
  import { Card, CardBody, CardReadMore } from 'design-react-kit';
15
14
  import config from '@plone/volto/registry';
16
15
 
@@ -51,7 +50,7 @@ const ViewBlock = ({ data, isOpen, toggle, id, index }) => {
51
50
  <CardBody tag="div">
52
51
  {data.icon?.length > 0 && (
53
52
  <div className="iconblock-icon">
54
- <Icon icon={data.icon} aria-hidden={true} />
53
+ <Icon icon={data.icon} aria-hidden={true} title={cardTitle} />
55
54
  </div>
56
55
  )}
57
56
 
@@ -1,3 +1,4 @@
1
+ import { UniversalLink } from '@plone/volto/components';
1
2
  import DefaultImageSVG from '@plone/volto/components/manage/Blocks/Listing/default-image.svg';
2
3
  import { flattenToAppURL } from '@plone/volto/helpers';
3
4
  import config from '@plone/volto/registry';
@@ -15,9 +16,9 @@ const ListingImage = ({
15
16
  const Image = config.getComponent({ name: 'Image' }).component;
16
17
  let commonImageProps = {
17
18
  item,
18
- 'aria-hidden': true,
19
- alt: imageProps.alt ?? '',
20
- role: 'presentation',
19
+ 'aria-hidden': imageProps.alt || item.title ? false : true,
20
+ alt: imageProps.alt ?? item.title ?? '',
21
+ role: imageProps.alt || item.title ? '' : 'presentation',
21
22
  className,
22
23
  loading,
23
24
  responsive,
@@ -28,7 +29,10 @@ const ListingImage = ({
28
29
  commonImageProps = { ...commonImageProps, title: item.title };
29
30
  // photogallery needs to check for null image
30
31
  // https://stackoverflow.com/questions/33136399/is-there-a-way-to-tell-if-reactelement-renders-null
31
- const image = Image(commonImageProps);
32
+
33
+ const image = (
34
+ <UniversalLink item={item}>{Image(commonImageProps)}</UniversalLink>
35
+ );
32
36
  if (image === null)
33
37
  return showDefault ? <img src={DefaultImageSVG} alt="" /> : null;
34
38
 
@@ -42,6 +42,7 @@ const SmallBlockLinksTemplate = ({
42
42
  item,
43
43
  sizes: '(max-width:575px) 520px, 200px',
44
44
  style: {},
45
+ alt: item.title,
45
46
  });
46
47
 
47
48
  return (
@@ -12,7 +12,11 @@ import { matchPath } from 'react-router';
12
12
  import { useLocation } from 'react-router-dom';
13
13
  import { isEqual, isEmpty } from 'lodash';
14
14
  import { getBreadcrumbs } from '@plone/volto/actions';
15
- import { getBaseUrl, flattenToAppURL } from '@plone/volto/helpers';
15
+ import {
16
+ getBaseUrl,
17
+ flattenToAppURL,
18
+ hasApiExpander,
19
+ } from '@plone/volto/helpers';
16
20
 
17
21
  import { UniversalLink } from '@plone/volto/components';
18
22
  import { Row, Col, BreadcrumbItem } from 'design-react-kit';
@@ -73,13 +77,15 @@ const Breadcrumbs = ({ pathname }) => {
73
77
  /** fine della gestione delle rotte statiche */
74
78
 
75
79
  useEffect(() => {
76
- let actualPathForBreadcrumbs = pathname;
77
- const { path, buildFullNavTree } = getCurrentPathFromAddonRoutes();
78
- if (buildFullNavTree) {
79
- const replacedPath = path.replace('**/', '');
80
- actualPathForBreadcrumbs = pathname.replace(replacedPath, '');
80
+ if (!hasApiExpander('breadcrumbs', getBaseUrl(pathname))) {
81
+ let actualPathForBreadcrumbs = pathname;
82
+ const { path, buildFullNavTree } = getCurrentPathFromAddonRoutes();
83
+ if (buildFullNavTree) {
84
+ const replacedPath = path.replace('**/', '');
85
+ actualPathForBreadcrumbs = pathname.replace(replacedPath, '');
86
+ }
87
+ dispatch(getBreadcrumbs(getBaseUrl(actualPathForBreadcrumbs)));
81
88
  }
82
- dispatch(getBreadcrumbs(getBaseUrl(actualPathForBreadcrumbs)));
83
89
  // eslint-disable-next-line react-hooks/exhaustive-deps
84
90
  }, [pathname]);
85
91
 
@@ -26,7 +26,7 @@ const TertiaryMenu = () => {
26
26
  return {
27
27
  url: item.href || flattenToAppURL(item.linkUrl?.[0]?.['@id']) || '/',
28
28
  title: item.title,
29
- inEvidence:item.inEvidence
29
+ inEvidence: item.inEvidence,
30
30
  };
31
31
  });
32
32
 
@@ -36,10 +36,10 @@ const FontAwesomeIcon = (props) => {
36
36
  prefixKey === 'fab'
37
37
  ? 'brands'
38
38
  : prefixKey === 'far'
39
- ? 'regular'
40
- : prefixKey != null
41
- ? prefixKey
42
- : 'solid',
39
+ ? 'regular'
40
+ : prefixKey != null
41
+ ? prefixKey
42
+ : 'solid',
43
43
  iconName,
44
44
  ];
45
45
  };
@@ -81,6 +81,9 @@ class Pagination extends Component {
81
81
  totalPages,
82
82
  });
83
83
 
84
+ const inactivePrevButton = activePage === 1;
85
+ const inactiveForwButton = activePage === this.props.totalPages;
86
+
84
87
  return (
85
88
  <Pager
86
89
  className="justify-content-center mt-5"
@@ -96,6 +99,8 @@ class Pagination extends Component {
96
99
  onClick={this.handleItemClick}
97
100
  type={type}
98
101
  ellipsisItem={ellipsisItem}
102
+ isPrevButtonInactive={inactivePrevButton}
103
+ isForwButtonInactive={inactiveForwButton}
99
104
  >
100
105
  {value}
101
106
  </PaginationItem>
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import cx from 'classnames';
2
3
  import _ from 'lodash';
3
4
  import keyboardKey from 'keyboard-key';
4
5
  import PropTypes from 'prop-types';
@@ -50,6 +51,9 @@ class PaginationItem extends Component {
50
51
  'nextItem',
51
52
  'lastItem',
52
53
  ]),
54
+
55
+ isPrevButtonInactive: PropTypes.bool,
56
+ isForwButtonInactive: PropTypes.bool,
53
57
  };
54
58
 
55
59
  handleClick = (e) => {
@@ -63,7 +67,15 @@ class PaginationItem extends Component {
63
67
  };
64
68
 
65
69
  render() {
66
- const { active, type, children, intl, ellipsisItem } = this.props;
70
+ const {
71
+ active,
72
+ type,
73
+ children,
74
+ intl,
75
+ ellipsisItem,
76
+ isPrevButtonInactive,
77
+ isForwButtonInactive,
78
+ } = this.props;
67
79
  const disabled = this.props.disabled || type === 'ellipsisItem';
68
80
  return (
69
81
  <PagerItem disabled={disabled}>
@@ -79,6 +91,7 @@ class PaginationItem extends Component {
79
91
  icon="it-chevron-left"
80
92
  style={{ ariaHidden: true }}
81
93
  color="primary"
94
+ className={cx({ disabled: isPrevButtonInactive })}
82
95
  title={intl.formatMessage(messages.prevPage)}
83
96
  />
84
97
 
@@ -93,6 +106,7 @@ class PaginationItem extends Component {
93
106
  icon="it-chevron-right"
94
107
  style={{ ariaHidden: true }}
95
108
  color="primary"
109
+ className={cx({ disabled: isForwButtonInactive })}
96
110
  title={intl.formatMessage(messages.nextPage)}
97
111
  />
98
112
  <span className="visually-hidden">
@@ -12,6 +12,7 @@ const SingleSlideWrapper = (props) => {
12
12
  const wrapperKey = key ?? 'slide-wrapper-' + index;
13
13
 
14
14
  return (
15
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
15
16
  <div
16
17
  className={`it-single-slide-wrapper ${className ?? ''}`}
17
18
  key={wrapperKey}
@@ -30,6 +31,7 @@ const SingleSlideWrapper = (props) => {
30
31
  //e.preventDefault();
31
32
  //e.stopPropagation();
32
33
  }}
34
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
33
35
  tabIndex={0}
34
36
  >
35
37
  {children}
@@ -1,42 +1,13 @@
1
- import { useEffect } from 'react';
2
- import { useDispatch, useSelector } from 'react-redux';
3
1
  import { Card, CardBody, CardText, CardTitle, Icon } from 'design-react-kit';
4
- import { getContent, resetContent } from '@plone/volto/actions';
5
2
  import { UniversalLink } from '@plone/volto/components';
6
- import { flattenToAppURL } from '@plone/volto/helpers';
3
+
7
4
  import { renderPDCItemValue } from 'design-comuni-plone-theme/helpers';
8
5
  import { useIntl } from 'react-intl';
9
6
 
10
7
  const ContactsCard = ({ contact = {}, show_title = false, ...rest }) => {
11
- const dispatch = useDispatch();
12
8
  const intl = useIntl();
13
9
  const contactUrl = contact['@id'];
14
10
 
15
- const { loading, loaded, error, data } = useSelector(
16
- (state) => state.content.subrequests[flattenToAppURL(contactUrl)] ?? {},
17
- );
18
-
19
- useEffect(() => {
20
- if (!loading && !loaded) {
21
- dispatch(
22
- getContent(
23
- flattenToAppURL(contactUrl),
24
- null,
25
- flattenToAppURL(contactUrl),
26
- ),
27
- );
28
- }
29
- }, [dispatch, contactUrl, loading, loaded]);
30
-
31
- useEffect(
32
- () => () => dispatch(resetContent(flattenToAppURL(contactUrl))),
33
- [dispatch, contactUrl],
34
- );
35
-
36
- if (error) {
37
- return null;
38
- }
39
-
40
11
  return (
41
12
  <Card
42
13
  teaser
@@ -54,7 +25,7 @@ const ContactsCard = ({ contact = {}, show_title = false, ...rest }) => {
54
25
  )}
55
26
  </CardTitle>
56
27
  <CardText>
57
- {data?.value_punto_contatto.map((pdc, index) => (
28
+ {contact?.value_punto_contatto?.map((pdc, index) => (
58
29
  <span key={index}>
59
30
  <strong>
60
31
  <span className="pdc-type">{pdc.pdc_type}</span>
@@ -48,6 +48,9 @@ const PageHeaderBando = ({ content }) => {
48
48
  }
49
49
  padding={false}
50
50
  size=""
51
+ title={`${intl.formatMessage(messages.bando)} ${
52
+ content.bando_state[1]
53
+ }`}
51
54
  />
52
55
  {intl.formatMessage(messages.bando)}{' '}
53
56
  <BandoStatus content={content} />
@@ -2,7 +2,6 @@ import React from 'react';
2
2
  import { defineMessages, useIntl } from 'react-intl';
3
3
 
4
4
  import {
5
- RichText,
6
5
  RichTextSection,
7
6
  GenericCard,
8
7
  } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
@@ -24,13 +23,11 @@ const DocumentoAccedereServizio = ({ content }) => {
24
23
  >
25
24
  <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal">
26
25
  {content.servizi_collegati?.map((servizio, i) => (
27
- <GenericCard key={servizio['@id']} item={servizio} showimage={false}>
28
- <RichText
29
- serif={false}
30
- data={servizio.canale_digitale}
31
- add_class="mt-3"
32
- />
33
- </GenericCard>
26
+ <GenericCard
27
+ key={servizio['@id']}
28
+ item={servizio}
29
+ showimage={false}
30
+ ></GenericCard>
34
31
  ))}
35
32
  </div>
36
33
  </RichTextSection>
@@ -14,6 +14,10 @@ const messages = defineMessages({
14
14
  id: 'faq_search',
15
15
  defaultMessage: 'Type in a keyword to find answers',
16
16
  },
17
+ search_icon: {
18
+ id: 'search_icon',
19
+ defaultMessage: 'Search icon',
20
+ },
17
21
  });
18
22
 
19
23
  /**
@@ -41,6 +45,7 @@ const SearchBar = ({ searchableText, setSearchableText }) => {
41
45
  style={{
42
46
  ariaHidden: true,
43
47
  }}
48
+ title={intl.formatMessage(messages.search_icon)}
44
49
  />
45
50
  </div>
46
51
  </div>
@@ -205,7 +205,6 @@ const PersonaDocumenti = ({ content }) => {
205
205
  />
206
206
  </RichTextSection>
207
207
  )}
208
-
209
208
  </>
210
209
  );
211
210
  };
@@ -30,7 +30,11 @@ const ServizioCondizioni = ({ content }) => {
30
30
  data-element="service-file"
31
31
  >
32
32
  <span className="list-item-title-icon-wrapper">
33
- <Icon icon="it-clip" className="icon-primary me-1" />
33
+ <Icon
34
+ icon="it-clip"
35
+ className="icon-primary me-1"
36
+ title={intl.formatMessage(messages.condizioni_link)}
37
+ />
34
38
  {intl.formatMessage(messages.condizioni_link)} (
35
39
  {label ? <span className="text-uppercase">{label} </span> : ''}
36
40
  <span className="list-item">
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
  import { defineMessages, useIntl } from 'react-intl';
3
3
  import {
4
4
  Row,
@@ -9,6 +9,7 @@ import {
9
9
  CardTitle,
10
10
  CardText,
11
11
  } from 'design-react-kit';
12
+ import { Pagination } from 'design-comuni-plone-theme/components/ItaliaTheme';
12
13
  import { UniversalLink } from '@plone/volto/components';
13
14
 
14
15
  const messages = defineMessages({
@@ -18,9 +19,35 @@ const messages = defineMessages({
18
19
  },
19
20
  });
20
21
 
22
+ //* Pagination **/
23
+ const divideServicesIntoBatches = (arr, batchSize) => {
24
+ const batches = [];
25
+ for (let i = 0; i < arr.length; i += batchSize) {
26
+ batches.push(arr.slice(i, i + batchSize));
27
+ }
28
+ return batches;
29
+ };
30
+
21
31
  const UOServices = ({ content }) => {
22
32
  const intl = useIntl();
23
33
 
34
+ const [currentPage, setCurrentPage] = useState(1);
35
+ const bSize = 4;
36
+
37
+ //* Calcolo numero pagine
38
+
39
+ const servizi_offerti =
40
+ content.servizi_offerti === undefined || content.servizi_offerti === null
41
+ ? []
42
+ : content.servizi_offerti;
43
+
44
+ const pageNumbers = Math.ceil(servizi_offerti.length / bSize);
45
+
46
+ const onPaginationChange = (activePage) => {
47
+ const current = activePage?.children ?? 1;
48
+ setCurrentPage(current);
49
+ };
50
+
24
51
  return content?.servizi_offerti?.length > 0 ? (
25
52
  <section
26
53
  id={'servizi_offerti'}
@@ -30,7 +57,9 @@ const UOServices = ({ content }) => {
30
57
  {intl.formatMessage(messages.servizi_offerti)}
31
58
  </h2>
32
59
  <Row className="card-wrapper card-teaser-wrapper align-items-stretch">
33
- {content?.servizi_offerti?.map((servizio, i) => (
60
+ {divideServicesIntoBatches(content?.servizi_offerti, bSize)[
61
+ currentPage - 1
62
+ ]?.map((servizio, i) => (
34
63
  <Col xs="12" lg="6">
35
64
  <Card className="shadow rounded card-big-io-comune p-3 my-3">
36
65
  <CardBody>
@@ -46,6 +75,13 @@ const UOServices = ({ content }) => {
46
75
  </Col>
47
76
  ))}
48
77
  </Row>
78
+ <div className="pagination-wrapper">
79
+ <Pagination
80
+ activePage={currentPage}
81
+ totalPages={pageNumbers}
82
+ onPageChange={(e, { activePage }) => onPaginationChange(activePage)}
83
+ />
84
+ </div>
49
85
  </section>
50
86
  ) : null;
51
87
  };
@@ -50,7 +50,7 @@ const SearchSectionsConfigurationForm = ({
50
50
  useEffect(() => {
51
51
  document
52
52
  .querySelector('form.ui.form')
53
- .addEventListener('click', preventClick);
53
+ ?.addEventListener('click', preventClick);
54
54
 
55
55
  document.querySelectorAll('form.ui.form input').forEach((item) => {
56
56
  item.addEventListener('keypress', preventEnter);
@@ -59,7 +59,7 @@ const SearchSectionsConfigurationForm = ({
59
59
  return () => {
60
60
  document
61
61
  .querySelector('form.ui.form')
62
- .removeEventListener('click', preventClick);
62
+ ?.removeEventListener('click', preventClick);
63
63
  document.querySelectorAll('form.ui.form input').forEach((item) => {
64
64
  item.removeEventListener('keypress', preventEnter);
65
65
  });
@@ -66,8 +66,8 @@ import { schemaListing } from 'design-comuni-plone-theme/components/ItaliaTheme/
66
66
 
67
67
  import reducers from 'design-comuni-plone-theme/reducers';
68
68
 
69
- const ReleaseLog = loadable(() =>
70
- import('design-comuni-plone-theme/components/ReleaseLog/ReleaseLog'),
69
+ const ReleaseLog = loadable(
70
+ () => import('design-comuni-plone-theme/components/ReleaseLog/ReleaseLog'),
71
71
  );
72
72
 
73
73
  const messages = defineMessages({
@@ -22,6 +22,10 @@ const messages = defineMessages({
22
22
  id: 'End Date',
23
23
  defaultMessage: 'End Date',
24
24
  },
25
+ clearDates: {
26
+ id: 'Clear dates',
27
+ defaultMessage: 'Pulisci i campi',
28
+ },
25
29
  });
26
30
 
27
31
  const PrevIcon = () => (
@@ -64,7 +68,17 @@ const customArrowIcon = (props) => {
64
68
  );
65
69
  };
66
70
 
67
- const CloseIcon = () => <Icon icon="it-close" size="24px" className="close" />;
71
+ const CloseIcon = (props) => {
72
+ const { intl } = props;
73
+ return (
74
+ <Icon
75
+ icon="it-close"
76
+ size="24px"
77
+ className="close"
78
+ title={intl.formatMessage(messages.clearDates)}
79
+ />
80
+ );
81
+ };
68
82
 
69
83
  const DateRangeFacet = (props) => {
70
84
  const { facet, isEditMode, onChange, value, reactDates, intl, lang } = props;
@@ -89,7 +103,7 @@ const DateRangeFacet = (props) => {
89
103
  disabled={isEditMode}
90
104
  noBorder
91
105
  showClearDates
92
- customCloseIcon={<CloseIcon />}
106
+ customCloseIcon={<CloseIcon {...props} />}
93
107
  displayFormat={moment.localeData(lang).longDateFormat('L')}
94
108
  focusedInput={focused}
95
109
  onFocusChange={(focusedInput) => setFocused(focusedInput)}
@@ -126,7 +126,9 @@ const UniversalLink = ({
126
126
  config.settings.siteProperties.markSpecialLinks && (
127
127
  <Icon
128
128
  icon="it-external-link"
129
- title={title}
129
+ title={`${title ? title + ' - ' : ''}${intl.formatMessage({
130
+ id: 'opensInNewTab',
131
+ })}`}
130
132
  size="xs"
131
133
  className="ms-1 align-sub external-link"
132
134
  />
@@ -0,0 +1,78 @@
1
+ /*
2
+ CUSTOMIZATIONS:
3
+ - used design-react-kit components to render form result
4
+ */
5
+ import React from 'react';
6
+ import { useIntl, defineMessages } from 'react-intl';
7
+ import { Button, Alert } from 'design-react-kit';
8
+ import { getFieldName } from 'volto-form-block/components/utils';
9
+
10
+ const messages = defineMessages({
11
+ success: {
12
+ id: 'form_submit_success',
13
+ defaultMessage: 'Sent!',
14
+ },
15
+ reset: {
16
+ id: 'form_reset',
17
+ defaultMessage: 'Clear',
18
+ },
19
+ });
20
+
21
+ const alertTransition = {
22
+ appear: true,
23
+ baseClass: 'fade',
24
+ baseClassActive: 'show',
25
+ enter: true,
26
+ exit: true,
27
+ in: true,
28
+ mountOnEnter: false,
29
+ tag: 'div',
30
+ timeout: 150,
31
+ unmountOnExit: true,
32
+ };
33
+
34
+ /* Function that replaces variables from the user customized message */
35
+ const replaceMessage = (text, sent_data) => {
36
+ let i = 0;
37
+ while (i < sent_data.length) {
38
+ let idField = getFieldName(sent_data[i].label, sent_data[i].field_id);
39
+ text = text.replaceAll('${' + idField + '}', sent_data[i].value ?? '');
40
+ i++;
41
+ }
42
+ text = text.replaceAll(/\$\{[^}]*\}/gm, ''); //replace empty fields with nothing
43
+ text = text.replaceAll('\n', '<br/>');
44
+ return text;
45
+ };
46
+
47
+ const FormResult = ({ formState, data, resetFormState }) => {
48
+ const intl = useIntl();
49
+ return (
50
+ <Alert color="success" fade isOpen tag="div" transition={alertTransition}>
51
+ <h4>{intl.formatMessage(messages.success)}</h4>
52
+ <br />
53
+ {/* Custom message */}
54
+ {data.send_message && (
55
+ <>
56
+ <p
57
+ dangerouslySetInnerHTML={{
58
+ __html: replaceMessage(data.send_message, formState.result.data),
59
+ }}
60
+ />
61
+ <br />
62
+ </>
63
+ )}
64
+ <Button
65
+ color="primary"
66
+ outline
67
+ onClick={(e) => {
68
+ e.preventDefault();
69
+ e.stopPropagation();
70
+ resetFormState();
71
+ }}
72
+ >
73
+ {intl.formatMessage(messages.reset)}
74
+ </Button>
75
+ </Alert>
76
+ );
77
+ };
78
+ export default FormResult;