design-comuni-plone-theme 11.9.0 → 11.10.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 (96) hide show
  1. package/.github/workflows/performance.yml +47 -0
  2. package/.yarn/cache/minipass-npm-5.0.0-c64fb63c92-425dab2887.zip +0 -0
  3. package/.yarn/cache/tar-npm-6.2.1-237800bb20-f1322768c9.zip +0 -0
  4. package/.yarn/cache/{volto-gdpr-privacy-npm-2.1.1-414b7e6a62-2246b94027.zip → volto-gdpr-privacy-npm-2.2.0-6be0f74d53-8a93254251.zip} +0 -0
  5. package/.yarn/cache/volto-slimheader-npm-0.1.1-6c4a32fae4-94bafa197c.zip +0 -0
  6. package/.yarn/install-state.gz +0 -0
  7. package/CHANGELOG.md +60 -0
  8. package/RELEASE.md +33 -0
  9. package/locales/de/LC_MESSAGES/volto.po +61 -36
  10. package/locales/en/LC_MESSAGES/volto.po +63 -38
  11. package/locales/es/LC_MESSAGES/volto.po +61 -36
  12. package/locales/fr/LC_MESSAGES/volto.po +62 -37
  13. package/locales/it/LC_MESSAGES/volto.po +61 -36
  14. package/locales/volto.pot +62 -37
  15. package/package.json +5 -3
  16. package/publiccode.yml +2 -2
  17. package/src/components/ItaliaTheme/AppExtras/TrackFocus.jsx +47 -0
  18. package/src/components/ItaliaTheme/Blocks/Accordion/View.jsx +1 -1
  19. package/src/components/ItaliaTheme/Blocks/ArgumentsInEvidence/BodyWrapper.jsx +8 -3
  20. package/src/components/ItaliaTheme/Blocks/ArgumentsInEvidence/BottomBody.jsx +25 -16
  21. package/src/components/ItaliaTheme/Blocks/ArgumentsInEvidence/Edit.jsx +10 -2
  22. package/src/components/ItaliaTheme/Blocks/ArgumentsInEvidence/Sidebar.jsx +39 -3
  23. package/src/components/ItaliaTheme/Blocks/ArgumentsInEvidence/View.jsx +31 -16
  24. package/src/components/ItaliaTheme/Blocks/Calendar/Body.jsx +23 -59
  25. package/src/components/ItaliaTheme/Blocks/Common/SearchFilters/SelectFilter.jsx +9 -1
  26. package/src/components/ItaliaTheme/Blocks/EventSearch/DefaultFilters.js +5 -0
  27. package/src/components/ItaliaTheme/Blocks/IconBlocks/Block/ViewBlock.jsx +17 -0
  28. package/src/components/ItaliaTheme/Blocks/Listing/CardWithImage/CardWithImageDefault.jsx +182 -0
  29. package/src/components/ItaliaTheme/Blocks/Listing/CardWithImageTemplate.jsx +7 -173
  30. package/src/components/ItaliaTheme/Blocks/Listing/Commons/utils.js +0 -70
  31. package/src/components/ItaliaTheme/Blocks/Listing/PhotogalleryTemplate.jsx +24 -36
  32. package/src/components/ItaliaTheme/Blocks/Listing/SimpleCard/Card/SimpleCardDefault.jsx +177 -0
  33. package/src/components/ItaliaTheme/Blocks/Listing/SimpleCard/SimpleCardTemplateDefault.jsx +8 -170
  34. package/src/components/ItaliaTheme/Blocks/Listing/Slider/SlideItemDefault.jsx +65 -0
  35. package/src/components/ItaliaTheme/Blocks/Listing/SliderTemplate.jsx +62 -212
  36. package/src/components/ItaliaTheme/Blocks/VideoGallery/Body.jsx +10 -48
  37. package/src/components/ItaliaTheme/Blocks/VideoGallery/Edit.jsx +3 -2
  38. package/src/components/ItaliaTheme/Blocks/VideoGallery/View.jsx +3 -2
  39. package/src/components/ItaliaTheme/Footer/FooterNavigation.jsx +6 -0
  40. package/src/components/ItaliaTheme/Header/HeaderSlim/TertiaryMenu.jsx +34 -5
  41. package/src/components/ItaliaTheme/Icons/FontAwesomeIcon.jsx +2 -0
  42. package/src/components/ItaliaTheme/MegaMenu/MegaMenu.jsx +8 -2
  43. package/src/components/ItaliaTheme/MenuSecondary/MenuSecondary.jsx +3 -0
  44. package/src/components/ItaliaTheme/Slider/ButtonPlayPause.jsx +48 -0
  45. package/src/components/ItaliaTheme/Slider/CarouselWrapper.jsx +23 -0
  46. package/src/components/ItaliaTheme/Slider/NextArrow.jsx +31 -0
  47. package/src/components/ItaliaTheme/Slider/PrevArrow.jsx +33 -0
  48. package/src/components/ItaliaTheme/Slider/SingleSlideWrapper.jsx +39 -0
  49. package/src/components/ItaliaTheme/Slider/slider.js +203 -0
  50. package/src/components/ItaliaTheme/View/Commons/ContactLink.jsx +3 -2
  51. package/src/components/ItaliaTheme/View/Commons/Dates.jsx +12 -4
  52. package/src/components/ItaliaTheme/View/Commons/Gallery.jsx +13 -9
  53. package/src/components/ItaliaTheme/View/Commons/Metadata.jsx +1 -1
  54. package/src/components/ItaliaTheme/View/Commons/RenderBlocks.jsx +20 -7
  55. package/src/components/ItaliaTheme/View/DocumentoView/DocumentoDescrizione.jsx +15 -7
  56. package/src/components/ItaliaTheme/View/EventoView/EventoContattiOrganizzatoreEsterno.jsx +12 -1
  57. package/src/components/ItaliaTheme/View/EventoView/EventoLuoghi.jsx +7 -7
  58. package/src/components/ItaliaTheme/View/UOView/UOServices.jsx +1 -1
  59. package/src/components/ItaliaTheme/View/__tests__/ServizioMetadati.test.jsx +1 -1
  60. package/src/components/ItaliaTheme/index.js +7 -2
  61. package/src/config/Blocks/ListingOptions/cardWithImageTemplate.js +18 -2
  62. package/src/config/Blocks/ListingOptions/simpleCardTemplate.js +34 -17
  63. package/src/config/Blocks/ListingOptions/sliderTemplate.js +68 -11
  64. package/src/config/Blocks/listingVariations.js +8 -0
  65. package/src/config/italiaConfig.js +13 -2
  66. package/src/customizations/volto/components/manage/Blocks/Listing/ListingBody.jsx +5 -0
  67. package/src/customizations/volto/components/manage/Blocks/Search/components/SelectFacetFilterListEntry.jsx +43 -36
  68. package/src/customizations/volto/components/manage/UniversalLink/UniversalLink.jsx +8 -3
  69. package/src/customizations/volto/components/manage/Widgets/FileWidget.jsx +2 -2
  70. package/src/customizations/volto/components/theme/Navigation/Navigation.jsx +5 -1
  71. package/src/customizations/volto/components/theme/Sitemap/Sitemap.jsx +126 -0
  72. package/src/helpers/config.js +1 -1
  73. package/src/theme/ItaliaTheme/Blocks/_argumentsInEvidence.scss +4 -4
  74. package/src/theme/ItaliaTheme/Blocks/{_cardWithImageAndInEvidence.scss → _cardWithImage.scss} +63 -38
  75. package/src/theme/ItaliaTheme/Blocks/_iconBlocks.scss +7 -6
  76. package/src/theme/ItaliaTheme/Blocks/_inEvidenceTemplate.scss +123 -0
  77. package/src/theme/ItaliaTheme/Blocks/_simpleCardTemplate.scss +65 -67
  78. package/src/theme/ItaliaTheme/Blocks/_sliderTemplate.scss +81 -0
  79. package/src/theme/ItaliaTheme/Blocks/common/_searchBlockFilters.scss +16 -0
  80. package/src/theme/ItaliaTheme/Components/_cardPersona.scss +1 -1
  81. package/src/theme/ItaliaTheme/Components/_mobileMenu.scss +1 -1
  82. package/src/theme/ItaliaTheme/Components/_navigation.scss +15 -0
  83. package/src/theme/ItaliaTheme/Components/_tertiaryMenu.scss +6 -0
  84. package/src/theme/ItaliaTheme/Print/_all_pages.scss +33 -0
  85. package/src/theme/ItaliaTheme/Print/_page.scss +21 -0
  86. package/src/theme/ItaliaTheme/Print/_uo.scss +7 -2
  87. package/src/theme/ItaliaTheme/Views/_common.scss +4 -0
  88. package/src/theme/bootstrap-override/bootstrap-italia/_chips.scss +16 -1
  89. package/src/theme/bootstrap-override/bootstrap-italia/_footer.scss +2 -0
  90. package/src/theme/site.scss +4 -2
  91. package/.yarn/cache/nanoid-npm-3.3.4-3d250377d6-2fddd6dee9.zip +0 -0
  92. package/.yarn/cache/postcss-npm-8.4.16-7367383579-10eee25efd.zip +0 -0
  93. package/.yarn/cache/tar-npm-6.1.11-e6ac3cba9c-a04c07bb9e.zip +0 -0
  94. package/src/components/ItaliaTheme/Blocks/Listing/Commons/NextArrow.jsx +0 -10
  95. package/src/components/ItaliaTheme/Blocks/Listing/Commons/PrevArrow.jsx +0 -10
  96. package/src/theme/ItaliaTheme/Blocks/_inevidencetemplate.scss +0 -34
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-04-03T08:27:02.322Z\n"
4
+ "POT-Creation-Date: 2024-04-09T13:53:31.353Z\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"
@@ -38,6 +38,7 @@ msgid "Allow Externals"
38
38
  msgstr ""
39
39
 
40
40
  #: config/Blocks/ListingOptions/simpleCardTemplate
41
+ #: config/Blocks/ListingOptions/sliderTemplate
41
42
  # defaultMessage: Aspetto
42
43
  msgid "Aspetto"
43
44
  msgstr ""
@@ -62,7 +63,7 @@ msgstr ""
62
63
  msgid "Block style"
63
64
  msgstr ""
64
65
 
65
- #: components/ItaliaTheme/Blocks/Listing/SimpleCard/SimpleCardTemplateDefault
66
+ #: components/ItaliaTheme/Blocks/Listing/SimpleCard/Card/SimpleCardDefault
66
67
  #: components/ItaliaTheme/Blocks/Listing/SimpleCard/SimpleCardTemplateOneForRow
67
68
  # defaultMessage: Vedi
68
69
  msgid "Card detail label"
@@ -446,9 +447,8 @@ msgstr ""
446
447
  msgid "Path filter filtro"
447
448
  msgstr ""
448
449
 
449
- #: components/ItaliaTheme/Blocks/Listing/PhotogalleryTemplate
450
- #: components/ItaliaTheme/Blocks/Listing/SliderTemplate
451
- # defaultMessage: Metti in pausa
450
+ #: components/ItaliaTheme/Slider/ButtonPlayPause
451
+ # defaultMessage: Seleziona per mettere in pausa lo slider
452
452
  msgid "Pause slider"
453
453
  msgstr ""
454
454
 
@@ -463,9 +463,8 @@ msgstr ""
463
463
  msgid "Piccolo"
464
464
  msgstr ""
465
465
 
466
- #: components/ItaliaTheme/Blocks/Listing/PhotogalleryTemplate
467
- #: components/ItaliaTheme/Blocks/Listing/SliderTemplate
468
- # defaultMessage: Play
466
+ #: components/ItaliaTheme/Slider/ButtonPlayPause
467
+ # defaultMessage: Seleziona per riprodurre lo slider
469
468
  msgid "Play slider"
470
469
  msgstr ""
471
470
 
@@ -1099,26 +1098,21 @@ msgstr ""
1099
1098
  msgid "calendarBlockSidebarTitle"
1100
1099
  msgstr ""
1101
1100
 
1102
- #: components/ItaliaTheme/Blocks/Calendar/Body
1103
- # defaultMessage: Prossimi eventi
1104
- msgid "calendar_next_arrow"
1105
- msgstr ""
1106
-
1107
1101
  #: components/ItaliaTheme/Blocks/Calendar/Body
1108
1102
  # defaultMessage: Nessun evento disponibile al momento
1109
1103
  msgid "calendar_no_results"
1110
1104
  msgstr ""
1111
1105
 
1112
- #: components/ItaliaTheme/Blocks/Calendar/Body
1113
- # defaultMessage: Eventi precedenti
1114
- msgid "calendar_prev_arrow"
1115
- msgstr ""
1116
-
1117
1106
  #: components/ItaliaTheme/manage/Widgets/CanaleDigitaleWidget
1118
1107
  # defaultMessage: Accedere al servizio
1119
1108
  msgid "canale_digitale_widget_title"
1120
1109
  msgstr ""
1121
1110
 
1111
+ #: components/ItaliaTheme/Blocks/ArgumentsInEvidence/Sidebar
1112
+ # defaultMessage: Aggiungi un argomento da visualizzare sulla card.
1113
+ msgid "cardDescription"
1114
+ msgstr ""
1115
+
1122
1116
  #: components/ItaliaTheme/Blocks/TextCard/CardWithImage/Sidebar
1123
1117
  # defaultMessage: Seleziona l'immagine da mostrare
1124
1118
  msgid "cardImage"
@@ -1140,6 +1134,21 @@ msgstr ""
1140
1134
  msgid "card_width_image"
1141
1135
  msgstr ""
1142
1136
 
1137
+ #: components/ItaliaTheme/Slider/CarouselWrapper
1138
+ # defaultMessage: Carosello
1139
+ msgid "carousel"
1140
+ msgstr ""
1141
+
1142
+ #: components/ItaliaTheme/Blocks/Listing/SliderTemplate
1143
+ # defaultMessage: Sei attualmente in un carosello, per navigare usa le frecce sinistra e destra
1144
+ msgid "carousel-item-aria-label"
1145
+ msgstr ""
1146
+
1147
+ #: components/ItaliaTheme/Slider/SingleSlideWrapper
1148
+ # defaultMessage: Slide
1149
+ msgid "carouselSlide"
1150
+ msgstr ""
1151
+
1143
1152
  #: components/ItaliaTheme/View/CartellaModulisticaView/CartellaModulisticaView
1144
1153
  # defaultMessage: Formati scaricabili
1145
1154
  msgid "cartellamodulistica_formati_scaricabili"
@@ -1155,6 +1164,11 @@ msgstr ""
1155
1164
  msgid "category_icon"
1156
1165
  msgstr ""
1157
1166
 
1167
+ #: components/ItaliaTheme/Blocks/ArgumentsInEvidence/Sidebar
1168
+ # defaultMessage: Allinea gli argomenti al centro
1169
+ msgid "centerAlignment"
1170
+ msgstr ""
1171
+
1158
1172
  #: components/ItaliaTheme/Blocks/VideoGallery/Sidebar
1159
1173
  # defaultMessage: Link al canale
1160
1174
  msgid "channel_link"
@@ -2207,6 +2221,11 @@ msgstr ""
2207
2221
  msgid "grid-gallery-max-items-exceeded"
2208
2222
  msgstr ""
2209
2223
 
2224
+ #: components/ItaliaTheme/Blocks/ArgumentsInEvidence/Sidebar
2225
+ # defaultMessage: Nascondi pulsante "Vedi tutti"
2226
+ msgid "hideButtonShowAll"
2227
+ msgstr ""
2228
+
2210
2229
  #: config/Blocks/ListingOptions/utils
2211
2230
  # defaultMessage: Nascondi le date
2212
2231
  msgid "hide_dates"
@@ -2639,6 +2658,7 @@ msgstr ""
2639
2658
  msgid "openAccordion"
2640
2659
  msgstr ""
2641
2660
 
2661
+ #: components/ItaliaTheme/Blocks/Listing/Slider/SlideItemDefault
2642
2662
  #: components/ItaliaTheme/Blocks/Listing/SliderTemplate
2643
2663
  # defaultMessage: Apri il link
2644
2664
  msgid "openLink"
@@ -2730,6 +2750,11 @@ msgstr ""
2730
2750
  msgid "organizzato_da"
2731
2751
  msgstr ""
2732
2752
 
2753
+ #: components/ItaliaTheme/View/EventoView/EventoContattiOrganizzatoreEsterno
2754
+ # defaultMessage: Organizzatore
2755
+ msgid "organizzatore"
2756
+ msgstr ""
2757
+
2733
2758
  #: components/ItaliaTheme/View/Commons/TrasparenzaFields
2734
2759
  #: components/ItaliaTheme/View/TrasparenzaView/DettagliProcedimentiView
2735
2760
  # defaultMessage: Organo competente adozione provvedimento finale
@@ -2823,7 +2848,7 @@ msgstr ""
2823
2848
  msgid "playStoreLink"
2824
2849
  msgstr ""
2825
2850
 
2826
- #: components/ItaliaTheme/Blocks/Listing/SliderTemplate
2851
+ #: components/ItaliaTheme/Slider/PrevArrow
2827
2852
  # defaultMessage: Precedente
2828
2853
  msgid "precedente"
2829
2854
  msgstr ""
@@ -2849,7 +2874,7 @@ msgstr ""
2849
2874
  msgid "provvedimento_finale"
2850
2875
  msgstr ""
2851
2876
 
2852
- #: components/ItaliaTheme/Blocks/Listing/SimpleCard/SimpleCardTemplateDefault
2877
+ #: components/ItaliaTheme/Blocks/Listing/SimpleCard/Card/SimpleCardDefault
2853
2878
  #: components/ItaliaTheme/Blocks/Listing/SimpleCard/SimpleCardTemplateOneForRow
2854
2879
  # defaultMessage: Data di pubblicazione
2855
2880
  msgid "publication_date"
@@ -3683,6 +3708,21 @@ msgstr ""
3683
3708
  msgid "slideDot"
3684
3709
  msgstr ""
3685
3710
 
3711
+ #: config/Blocks/ListingOptions/sliderTemplate
3712
+ # defaultMessage: Qui puoi selezionare, per il template 'Slider', un aspetto diverso da quello di default per gli elementi mostrati nello slider.
3713
+ msgid "slider_listing_appearance_description"
3714
+ msgstr ""
3715
+
3716
+ #: config/Blocks/ListingOptions/sliderTemplate
3717
+ # defaultMessage: Card con immagine
3718
+ msgid "slider_listing_appearance_imagecard"
3719
+ msgstr ""
3720
+
3721
+ #: config/Blocks/ListingOptions/sliderTemplate
3722
+ # defaultMessage: Card semplice
3723
+ msgid "slider_listing_appearance_simplecard"
3724
+ msgstr ""
3725
+
3686
3726
  #: config/Blocks/ListingOptions/sliderTemplate
3687
3727
  # defaultMessage: N° slide da mostrare
3688
3728
  msgid "slidesToShow"
@@ -3824,7 +3864,7 @@ msgstr ""
3824
3864
  msgid "subjects"
3825
3865
  msgstr ""
3826
3866
 
3827
- #: components/ItaliaTheme/Blocks/Listing/SliderTemplate
3867
+ #: components/ItaliaTheme/Slider/NextArrow
3828
3868
  # defaultMessage: Successivo
3829
3869
  msgid "successivo"
3830
3870
  msgstr ""
@@ -4041,7 +4081,7 @@ msgstr ""
4041
4081
  msgid "uo_type"
4042
4082
  msgstr ""
4043
4083
 
4044
- #: components/ItaliaTheme/Blocks/Listing/SimpleCard/SimpleCardTemplateDefault
4084
+ #: components/ItaliaTheme/Blocks/Listing/SimpleCard/Card/SimpleCardDefault
4045
4085
  #: components/ItaliaTheme/Blocks/Listing/SimpleCard/SimpleCardTemplateOneForRow
4046
4086
  # defaultMessage: Data di aggiornamento
4047
4087
  msgid "update_date"
@@ -4067,21 +4107,6 @@ msgstr ""
4067
4107
  msgid "venues"
4068
4108
  msgstr ""
4069
4109
 
4070
- #: components/ItaliaTheme/Blocks/VideoGallery/Body
4071
- # defaultMessage: Prossimo video
4072
- msgid "videogallery_next_arrow"
4073
- msgstr ""
4074
-
4075
- #: components/ItaliaTheme/Blocks/VideoGallery/Body
4076
- # defaultMessage: Video precedente
4077
- msgid "videogallery_prev_arrow"
4078
- msgstr ""
4079
-
4080
- #: components/ItaliaTheme/Blocks/Listing/SliderTemplate
4081
- # defaultMessage: Sei attualmente in un carosello, per navigare usa le frecce sinistra e destra
4082
- msgid "viewImage"
4083
- msgstr ""
4084
-
4085
4110
  #: components/ItaliaTheme/Blocks/ArgumentsInEvidence/BottomBody
4086
4111
  # defaultMessage: Vedi tutti
4087
4112
  msgid "view_all"
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.9.0",
5
+ "version": "11.10.0",
6
6
  "main": "src/index.js",
7
7
  "keywords": [
8
8
  "volto-addon",
@@ -31,7 +31,8 @@
31
31
  "volto-data-grid-widget",
32
32
  "volto-querywidget-with-browser",
33
33
  "@eeacms/volto-taxonomy",
34
- "volto-feedback"
34
+ "volto-feedback",
35
+ "volto-slimheader"
35
36
  ],
36
37
  "scripts": {
37
38
  "prepare": "husky install",
@@ -147,12 +148,13 @@
147
148
  "volto-editablefooter": "5.1.1",
148
149
  "volto-feedback": "0.3.0",
149
150
  "volto-form-block": "3.7.2",
150
- "volto-gdpr-privacy": "2.1.1",
151
+ "volto-gdpr-privacy": "2.2.0",
151
152
  "volto-google-analytics": "2.0.0",
152
153
  "volto-multilingual-widget": "3.0.0",
153
154
  "volto-querywidget-with-browser": "0.4.2",
154
155
  "volto-rss-block": "3.0.0",
155
156
  "volto-secondarymenu": "4.0.0",
157
+ "volto-slimheader": "0.1.1",
156
158
  "volto-social-settings": "3.0.0",
157
159
  "volto-subblocks": "2.0.0",
158
160
  "volto-subfooter": "3.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-04-03'
230
+ releaseDate: '2024-04-17'
231
231
  softwareType: standalone/web
232
- softwareVersion: 11.9.0
232
+ softwareVersion: 11.10.0
233
233
  url: 'https://github.com/italia/design-comuni-plone-theme'
234
234
  usedBy:
235
235
  - ASP Comuni Modenesi Area Nord
@@ -0,0 +1,47 @@
1
+ import { useEffect, useRef } from 'react';
2
+
3
+ const DATA_FOCUS_MOUSE = 'data-focus-mouse';
4
+ const CLASS_NAME_MOUSE_FOCUS = 'focus--mouse';
5
+
6
+ const TrackFocus = () => {
7
+ const usingMouse = useRef(false);
8
+
9
+ useEffect(() => {
10
+ const handleEvent = (e) => {
11
+ usingMouse.current = e.type === 'mousedown';
12
+ };
13
+ const handleFocusChange = (e) => {
14
+ if (e.target) {
15
+ if (usingMouse.current) {
16
+ e.target.classList.add(CLASS_NAME_MOUSE_FOCUS);
17
+ e.target.setAttribute(DATA_FOCUS_MOUSE, true);
18
+ } else {
19
+ e.target.classList.remove(CLASS_NAME_MOUSE_FOCUS);
20
+ e.target.removeAttribute(DATA_FOCUS_MOUSE);
21
+ }
22
+ }
23
+ };
24
+ const handleFocusOut = (e) => {
25
+ if (e.target) {
26
+ e.target.classList.remove(CLASS_NAME_MOUSE_FOCUS);
27
+ e.target.removeAttribute(DATA_FOCUS_MOUSE);
28
+ }
29
+ };
30
+
31
+ document.addEventListener('keydown', handleEvent);
32
+ document.addEventListener('mousedown', handleEvent);
33
+ document.addEventListener('focusin', handleFocusChange);
34
+ document.addEventListener('focusout', handleFocusOut);
35
+
36
+ return () => {
37
+ document.removeEventListener('keydown', handleEvent);
38
+ document.removeEventListener('mousedown', handleEvent);
39
+ document.removeEventListener('focusin', handleFocusChange);
40
+ document.removeEventListener('focusout', handleFocusOut);
41
+ };
42
+ }, []);
43
+
44
+ return null;
45
+ };
46
+
47
+ export default TrackFocus;
@@ -20,7 +20,7 @@ const AccordionView = ({ data, block }) => {
20
20
  };
21
21
  const id = new Date().getTime();
22
22
  return (
23
- <div className="block accordion">
23
+ <div className="block accordion border-bottom-0">
24
24
  <div className="public-ui">
25
25
  <div className="full-width section section-muted section-inset-shadow py-5">
26
26
  <Container className="px-md-4">
@@ -1,11 +1,16 @@
1
1
  import React from 'react';
2
2
  import cx from 'classnames';
3
3
 
4
- const BodyWrapper = ({ data, inEditMode, children, id }) => {
4
+ const BodyWrapper = ({ data, inEditMode, children, id, hasArguments }) => {
5
5
  return (
6
- <div className={cx('container pt-5', { 'p-5': inEditMode })}>
6
+ <div
7
+ className={cx('container argumentsCardsWrapper', {
8
+ 'pt-5': hasArguments,
9
+ 'p-5': inEditMode,
10
+ })}
11
+ >
7
12
  <h2 id={id + 'title'}>{data.text}</h2>
8
- <div className="grid mt-5">{children}</div>
13
+ {children?.length > 0 && <div className="grid mt-5">{children}</div>}
9
14
  </div>
10
15
  );
11
16
  };
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { defineMessages } from 'react-intl';
3
3
  import { UniversalLink, ConditionalLink } from '@plone/volto/components';
4
4
  import { Chip, ChipLabel, Button, Container } from 'design-react-kit';
5
+ import cx from 'classnames';
5
6
 
6
7
  const messages = defineMessages({
7
8
  view_all: {
@@ -14,16 +15,22 @@ const messages = defineMessages({
14
15
  },
15
16
  });
16
17
 
17
- const BottomBody = ({ data, intl }) => {
18
+ const BottomBody = ({ data, intl, hasArguments }) => {
18
19
  return data?.arguments?.length > 0 ? (
19
- <Container className="text-center">
20
- <div className="row d-lg-inline-flex align-items-center pt-5">
21
- <div className="col-lg-auto">
20
+ <Container className="text-center argumentsChipsWrapper pb-3">
21
+ <div
22
+ className={cx('row d-lg-inline-flex align-items-center', {
23
+ 'pt-5': hasArguments,
24
+ })}
25
+ >
26
+ <div
27
+ className={data?.centerAlignment ? 'col-lg-12 mb-3' : 'col-lg-auto'}
28
+ >
22
29
  <h6 className="text-uppercase text-center mt-1">
23
30
  {intl?.formatMessage(messages.otherArguments)}
24
31
  </h6>
25
32
  </div>
26
- <div className="col-lg-auto">
33
+ <div className={data?.centerAlignment ? 'col-lg-12' : 'col-lg-auto'}>
27
34
  {data?.arguments?.map((argument, index) => (
28
35
  <Chip
29
36
  color="primary"
@@ -43,17 +50,19 @@ const BottomBody = ({ data, intl }) => {
43
50
  </div>
44
51
  </div>
45
52
 
46
- <div className="link-button mt-5">
47
- <Button
48
- color="primary"
49
- icon={false}
50
- tag={UniversalLink}
51
- href="/argomenti"
52
- className="view-all text-decoration-none"
53
- >
54
- {intl?.formatMessage(messages.view_all)}
55
- </Button>
56
- </div>
53
+ {!data?.hideButtonShowAll && (
54
+ <div className="link-button mt-3">
55
+ <Button
56
+ color="primary"
57
+ icon={false}
58
+ tag={UniversalLink}
59
+ href="/argomenti"
60
+ className="view-all text-decoration-none"
61
+ >
62
+ {intl?.formatMessage(messages.view_all)}
63
+ </Button>
64
+ </div>
65
+ )}
57
66
  </Container>
58
67
  ) : null;
59
68
  };
@@ -14,9 +14,13 @@ import { ArgumentsInEvidenceBackground } from 'design-comuni-plone-theme/compone
14
14
 
15
15
  class Edit extends SubblocksEdit {
16
16
  render() {
17
+ const hasArguments = this.props.data.subblocks?.some((subblock) => {
18
+ return subblock.argument?.length > 0;
19
+ });
20
+
17
21
  return (
18
22
  <div className="argumentInEvidence public-ui">
19
- <ArgumentsInEvidenceBackground inEditMode={true} />
23
+ {hasArguments && <ArgumentsInEvidenceBackground inEditMode={true} />}
20
24
  <SubblocksWrapper node={this.node}>
21
25
  <BodyWrapper data={this.props.data} inEditMode={false}>
22
26
  {this.state.subblocks.map((subblock, subindex) => (
@@ -48,7 +52,11 @@ class Edit extends SubblocksEdit {
48
52
  />
49
53
  </SidebarPortal>
50
54
 
51
- <BottomBody data={this.props.data} intl={this.props.intl} />
55
+ <BottomBody
56
+ hasArguments={true}
57
+ data={this.props.data}
58
+ intl={this.props.intl}
59
+ />
52
60
  </div>
53
61
  );
54
62
  }
@@ -2,7 +2,12 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { Segment, Accordion } from 'semantic-ui-react';
4
4
  import { FormattedMessage, injectIntl } from 'react-intl';
5
- import { Icon, ObjectBrowserWidget, TextWidget } from '@plone/volto/components';
5
+ import {
6
+ Icon,
7
+ ObjectBrowserWidget,
8
+ TextWidget,
9
+ CheckboxWidget,
10
+ } from '@plone/volto/components';
6
11
  import upSVG from '@plone/volto/icons/up-key.svg';
7
12
  import downSVG from '@plone/volto/icons/down-key.svg';
8
13
  import { defineMessages, useIntl } from 'react-intl';
@@ -20,6 +25,18 @@ const messages = defineMessages({
20
25
  id: 'argoment',
21
26
  defaultMessage: 'Argomento',
22
27
  },
28
+ cardDescription: {
29
+ id: 'cardDescription',
30
+ defaultMessage: 'Aggiungi un argomento da visualizzare sulla card.',
31
+ },
32
+ centerAlignment: {
33
+ id: 'centerAlignment',
34
+ defaultMessage: 'Allinea gli argomenti al centro',
35
+ },
36
+ hideButtonShowAll: {
37
+ id: 'hideButtonShowAll',
38
+ defaultMessage: 'Nascondi pulsante "Vedi tutti"',
39
+ },
23
40
  });
24
41
 
25
42
  const Sidebar = ({
@@ -33,7 +50,7 @@ const Sidebar = ({
33
50
  const intl = useIntl();
34
51
 
35
52
  return (
36
- <Segment.Group raised>
53
+ <Segment.Group>
37
54
  <header className="header pulled">
38
55
  <h2>
39
56
  <FormattedMessage
@@ -69,6 +86,25 @@ const Sidebar = ({
69
86
  });
70
87
  }}
71
88
  />
89
+ <CheckboxWidget
90
+ id="centerAlignment"
91
+ title={intl.formatMessage(messages.centerAlignment)}
92
+ value={data.centerAlignment ? data.centerAlignment : false}
93
+ onChange={(name, value) => {
94
+ onChangeBlock(block, {
95
+ ...data,
96
+ centerAlignment: value,
97
+ });
98
+ }}
99
+ />
100
+ <CheckboxWidget
101
+ id="hideButtonShowAll"
102
+ title={intl.formatMessage(messages.hideButtonShowAll)}
103
+ value={data.hideButtonShowAll ? data.hideButtonShowAll : false}
104
+ onChange={(name, value) => {
105
+ onChangeBlock(block, { ...data, hideButtonShowAll: value });
106
+ }}
107
+ />
72
108
  </Accordion.Content>
73
109
  </Accordion>
74
110
  <Accordion fluid styled className="form">
@@ -92,7 +128,6 @@ const Sidebar = ({
92
128
  <ObjectBrowserWidget
93
129
  id={'ObjectBrowserWidget'}
94
130
  title={intl.formatMessage(messages.argument)}
95
- required={true}
96
131
  mode={'link'}
97
132
  value={subblock.argument}
98
133
  widgetOptions={{
@@ -100,6 +135,7 @@ const Sidebar = ({
100
135
  selectableTypes: ['Pagina Argomento'],
101
136
  },
102
137
  }}
138
+ description={intl.formatMessage(messages.cardDescription)}
103
139
  onChange={(name, value) => {
104
140
  onChangeSubBlock(index, {
105
141
  ...subblock,
@@ -9,25 +9,40 @@ import { useIntl } from 'react-intl';
9
9
  const View = ({ data, id }) => {
10
10
  const currentIntl = useIntl();
11
11
 
12
+ const hasArguments = data.subblocks?.some((subblock) => {
13
+ return subblock.argument?.length > 0;
14
+ });
12
15
  return (
13
16
  <div className="block full-width">
14
17
  <div className="argumentInEvidence">
15
- <ArgumentsInEvidenceBackground />
16
- <BodyWrapper data={data} inEditMode={false} id={id}>
17
- {data.subblocks
18
- ?.filter((subblock) => {
19
- return subblock.argument?.length > 0;
20
- })
21
- .map((subblock, index) => (
22
- <Block
23
- key={index}
24
- data={subblock}
25
- inEditMode={false}
26
- intl={currentIntl}
27
- />
28
- ))}
29
- </BodyWrapper>
30
- <BottomBody data={data} intl={currentIntl} />
18
+ {hasArguments && <ArgumentsInEvidenceBackground />}
19
+ {(hasArguments || data.text) && (
20
+ <BodyWrapper
21
+ hasArguments={hasArguments}
22
+ data={data}
23
+ inEditMode={false}
24
+ id={id}
25
+ >
26
+ {data.subblocks
27
+ ?.filter((subblock) => {
28
+ return subblock.argument?.length > 0;
29
+ })
30
+ .map((subblock, index) => (
31
+ <Block
32
+ key={index}
33
+ data={subblock}
34
+ inEditMode={false}
35
+ intl={currentIntl}
36
+ />
37
+ ))}
38
+ </BodyWrapper>
39
+ )}
40
+
41
+ <BottomBody
42
+ hasArguments={hasArguments}
43
+ data={data}
44
+ intl={currentIntl}
45
+ />
31
46
  </div>
32
47
  </div>
33
48
  );