design-comuni-plone-theme 10.2.2 → 10.4.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 (41) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/RELEASE.md +19 -0
  3. package/locales/de/LC_MESSAGES/volto.po +27 -30
  4. package/locales/en/LC_MESSAGES/volto.po +27 -30
  5. package/locales/es/LC_MESSAGES/volto.po +27 -30
  6. package/locales/fr/LC_MESSAGES/volto.po +27 -30
  7. package/locales/it/LC_MESSAGES/volto.po +27 -30
  8. package/locales/volto.pot +28 -31
  9. package/package.json +1 -1
  10. package/publiccode.yml +2 -2
  11. package/src/components/ItaliaTheme/Blocks/Alert/Edit.jsx +9 -5
  12. package/src/components/ItaliaTheme/Blocks/Alert/Sidebar.jsx +51 -76
  13. package/src/components/ItaliaTheme/Blocks/Alert/View.jsx +4 -2
  14. package/src/components/ItaliaTheme/Blocks/Listing/BandiInEvidenceTemplate.jsx +5 -20
  15. package/src/components/ItaliaTheme/Blocks/NumbersBlock/Edit.jsx +1 -0
  16. package/src/components/ItaliaTheme/Blocks/__tests__/Alert.test.jsx +1 -1
  17. package/src/components/ItaliaTheme/GalleryPreview/GalleryPreview.jsx +11 -24
  18. package/src/components/ItaliaTheme/Header/ParentSiteMenu.jsx +2 -1
  19. package/src/components/ItaliaTheme/Icons/FontAwesomeIcon.jsx +42 -20
  20. package/src/components/ItaliaTheme/View/BandoView/BandoText.jsx +7 -37
  21. package/src/components/ItaliaTheme/View/BandoView/BandoTextDestinatari.jsx +36 -0
  22. package/src/components/ItaliaTheme/View/BandoView/BandoTextEnte.jsx +34 -0
  23. package/src/components/ItaliaTheme/View/BandoView/BandoTextTipologia.jsx +32 -0
  24. package/src/components/ItaliaTheme/View/Commons/BandoStatus.jsx +38 -0
  25. package/src/components/ItaliaTheme/View/Commons/PageHeader/PageHeaderBando.jsx +3 -17
  26. package/src/components/ItaliaTheme/View/Commons/SearchSectionForm.jsx +24 -3
  27. package/src/components/ItaliaTheme/View/VenueView/VenueDescription.jsx +9 -65
  28. package/src/components/ItaliaTheme/View/VenueView/VenueElementiDiInteresse.jsx +26 -0
  29. package/src/components/ItaliaTheme/View/VenueView/VenueLuoghiCorrelati.jsx +37 -0
  30. package/src/components/ItaliaTheme/View/VenueView/VenueMultimedia.jsx +25 -0
  31. package/src/components/ItaliaTheme/View/VenueView/VenueTipologia.jsx +27 -0
  32. package/src/components/ItaliaTheme/View/index.js +5 -0
  33. package/src/components/ItaliaTheme/manage/Widgets/IconPreviewWidget.jsx +1 -1
  34. package/src/theme/ItaliaTheme/Blocks/_alert.scss +26 -65
  35. package/src/theme/ItaliaTheme/Components/_galleryPreview.scss +9 -13
  36. package/src/theme/ItaliaTheme/Subsites/_common.scss +0 -1
  37. package/src/theme/ItaliaTheme/Views/_common.scss +10 -0
  38. package/src/theme/ItaliaTheme/_home.scss +10 -0
  39. package/src/theme/_cms-ui.scss +14 -0
  40. package/src/theme/_site-variables.scss +5 -0
  41. package/src/theme/ItaliaTheme/Subsites/_homepage.scss +0 -9
@@ -5,6 +5,8 @@ import PropTypes from 'prop-types';
5
5
 
6
6
  import { Icon } from 'design-comuni-plone-theme/components/ItaliaTheme';
7
7
 
8
+ import { BandoStatus } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
9
+
8
10
  /**
9
11
  * PageHeaderBando view component class.
10
12
  * @function PageHeaderBando
@@ -17,22 +19,6 @@ const messages = defineMessages({
17
19
  id: 'Bando',
18
20
  defaultMessage: 'Bando',
19
21
  },
20
- open: {
21
- id: 'bando_open',
22
- defaultMessage: 'attivo',
23
- },
24
- closed: {
25
- id: 'bando_closed',
26
- defaultMessage: 'scaduto',
27
- },
28
- inProgress: {
29
- id: 'bando_inProgress',
30
- defaultMessage: 'in corso',
31
- },
32
- scheduled: {
33
- id: 'bando_scheduled',
34
- defaultMessage: 'programmato',
35
- },
36
22
  });
37
23
 
38
24
  const PageHeaderBando = ({ content }) => {
@@ -64,7 +50,7 @@ const PageHeaderBando = ({ content }) => {
64
50
  size=""
65
51
  />
66
52
  {intl.formatMessage(messages.bando)}{' '}
67
- {intl.formatMessage(messages[content.bando_state[0]])}
53
+ <BandoStatus content={content} />
68
54
  </div>
69
55
  </div>
70
56
  </div>
@@ -28,6 +28,26 @@ const messages = defineMessages({
28
28
 
29
29
  const SearchSectionForm = ({ content }) => {
30
30
  const intl = useIntl();
31
+ const path = content['@id'];
32
+ const searchFilters = useSelector(
33
+ (state) => state?.searchFilters?.result?.sections,
34
+ );
35
+
36
+ const customPath = [];
37
+
38
+ const sections = searchFilters?.[0]?.items ?? [];
39
+
40
+ sections.forEach((section) => {
41
+ if (!section.items) {
42
+ return;
43
+ } else {
44
+ if (path === section['@id']) {
45
+ customPath.push(
46
+ section.items.map((item) => flattenToAppURL(item['@id'])),
47
+ );
48
+ }
49
+ }
50
+ });
31
51
 
32
52
  const subsite = useSelector((state) => state.subsite?.data);
33
53
  const [searchableText, setSearchableText] = useState('');
@@ -44,13 +64,14 @@ const SearchSectionForm = ({ content }) => {
44
64
  {},
45
65
  null,
46
66
  null,
47
- null,
67
+ customPath.length > 0 ? customPath : null,
48
68
  subsite,
49
69
  intl.locale,
50
70
  false,
51
71
  ) +
52
- '&custom_path=' +
53
- flattenToAppURL(content['@id']);
72
+ (customPath.length === 0
73
+ ? `&custom_path=${flattenToAppURL(path)}`
74
+ : '');
54
75
  }
55
76
  };
56
77
  return (
@@ -2,33 +2,18 @@ import React from 'react';
2
2
  import { defineMessages, useIntl } from 'react-intl';
3
3
  import {
4
4
  RichTextSection,
5
- Gallery,
6
5
  richTextHasContent,
6
+ VenueTipologia,
7
+ VenueElementiDiInteresse,
8
+ VenueLuoghiCorrelati,
9
+ VenueMultimedia,
7
10
  } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
8
- import { contentFolderHasItems } from 'design-comuni-plone-theme/helpers';
9
- import LocationItem from 'design-comuni-plone-theme/components/ItaliaTheme/View/Commons/LocationItem';
10
11
 
11
12
  const messages = defineMessages({
12
13
  descrizione: {
13
14
  id: 'descrizione',
14
15
  defaultMessage: 'Descrizione',
15
16
  },
16
- elementi_di_interesse: {
17
- id: 'elementi_di_interesse',
18
- defaultMessage: 'Elementi di interesse',
19
- },
20
- video: {
21
- id: 'Video',
22
- defaultMessage: 'Video',
23
- },
24
- luoghi_correlati: {
25
- id: 'luoghi_correlati',
26
- defaultMessage: 'Luoghi correlati',
27
- },
28
- tipologia_luogo: {
29
- id: 'tipologia_luogo',
30
- defaultMessage: 'Tipo di luogo',
31
- },
32
17
  });
33
18
 
34
19
  const VenueDescription = ({ content }) => {
@@ -43,52 +28,11 @@ const VenueDescription = ({ content }) => {
43
28
  data={content.descrizione_completa}
44
29
  />
45
30
  )}
46
- {content?.tipologia_luogo?.length > 0 && (
47
- <RichTextSection
48
- tag_id="tipologia"
49
- title={intl.formatMessage(messages.tipologia_luogo)}
50
- >
51
- {content.tipologia_luogo.map((tipologia) => (
52
- <p key={tipologia.token} className="font-serif">
53
- {tipologia.title}
54
- </p>
55
- ))}
56
- </RichTextSection>
57
- )}
58
- {richTextHasContent(content.elementi_di_interesse) && (
59
- <RichTextSection
60
- tag_id="elementi-di-interesse"
61
- title={`${intl.formatMessage(messages.elementi_di_interesse)}`}
62
- data={content.elementi_di_interesse}
63
- />
64
- )}
65
- {content?.luoghi_correlati?.length > 0 && (
66
- <RichTextSection
67
- tag_id={'luoghi_correlati'}
68
- title={intl.formatMessage(messages.luoghi_correlati)}
69
- >
70
- <div className="card-wrapper card-teaser-wrapper mb-5">
71
- {content.luoghi_correlati?.map((item, i) => (
72
- <LocationItem
73
- key={item['@id'] + i}
74
- location={item}
75
- show_icon={false}
76
- show_title_link={true}
77
- load={true}
78
- details_link={false}
79
- />
80
- ))}
81
- </div>
82
- </RichTextSection>
83
- )}
84
- {contentFolderHasItems(content, 'multimedia') && (
85
- <Gallery
86
- content={content}
87
- folder_name={'multimedia'}
88
- title_video={intl.formatMessage(messages.video)}
89
- title_type="h5"
90
- />
91
- )}
31
+
32
+ <VenueTipologia content={content} />
33
+ <VenueElementiDiInteresse content={content} />
34
+ <VenueLuoghiCorrelati content={content} />
35
+ <VenueMultimedia content={content} />
92
36
  </>
93
37
  );
94
38
  };
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import {
4
+ RichTextSection,
5
+ richTextHasContent,
6
+ } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
7
+
8
+ const messages = defineMessages({
9
+ elementi_di_interesse: {
10
+ id: 'elementi_di_interesse',
11
+ defaultMessage: 'Elementi di interesse',
12
+ },
13
+ });
14
+
15
+ const VenueElementiDiInteresse = ({ content }) => {
16
+ const intl = useIntl();
17
+ return richTextHasContent(content.elementi_di_interesse) ? (
18
+ <RichTextSection
19
+ tag_id="elementi-di-interesse"
20
+ title={`${intl.formatMessage(messages.elementi_di_interesse)}`}
21
+ data={content.elementi_di_interesse}
22
+ />
23
+ ) : null;
24
+ };
25
+
26
+ export default VenueElementiDiInteresse;
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { RichTextSection } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
4
+
5
+ import LocationItem from 'design-comuni-plone-theme/components/ItaliaTheme/View/Commons/LocationItem';
6
+
7
+ const messages = defineMessages({
8
+ luoghi_correlati: {
9
+ id: 'luoghi_correlati',
10
+ defaultMessage: 'Luoghi correlati',
11
+ },
12
+ });
13
+
14
+ const VenueLuoghiCorrelati = ({ content }) => {
15
+ const intl = useIntl();
16
+ return content?.luoghi_correlati?.length > 0 ? (
17
+ <RichTextSection
18
+ tag_id={'luoghi_correlati'}
19
+ title={intl.formatMessage(messages.luoghi_correlati)}
20
+ >
21
+ <div className="card-wrapper card-teaser-wrapper mb-5">
22
+ {content.luoghi_correlati?.map((item, i) => (
23
+ <LocationItem
24
+ key={item['@id'] + i}
25
+ location={item}
26
+ show_icon={false}
27
+ show_title_link={true}
28
+ load={true}
29
+ details_link={false}
30
+ />
31
+ ))}
32
+ </div>
33
+ </RichTextSection>
34
+ ) : null;
35
+ };
36
+
37
+ export default VenueLuoghiCorrelati;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { Gallery } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
4
+ import { contentFolderHasItems } from 'design-comuni-plone-theme/helpers';
5
+
6
+ const messages = defineMessages({
7
+ video: {
8
+ id: 'Video',
9
+ defaultMessage: 'Video',
10
+ },
11
+ });
12
+
13
+ const VenueMultimedia = ({ content }) => {
14
+ const intl = useIntl();
15
+ return contentFolderHasItems(content, 'multimedia') ? (
16
+ <Gallery
17
+ content={content}
18
+ folder_name={'multimedia'}
19
+ title_video={intl.formatMessage(messages.video)}
20
+ title_type="h5"
21
+ />
22
+ ) : null;
23
+ };
24
+
25
+ export default VenueMultimedia;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { RichTextSection } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
4
+ const messages = defineMessages({
5
+ tipologia_luogo: {
6
+ id: 'tipologia_luogo',
7
+ defaultMessage: 'Tipo di luogo',
8
+ },
9
+ });
10
+
11
+ const VenueTipologia = ({ content }) => {
12
+ const intl = useIntl();
13
+ return content?.tipologia_luogo?.length > 0 ? (
14
+ <RichTextSection
15
+ tag_id="tipologia"
16
+ title={intl.formatMessage(messages.tipologia_luogo)}
17
+ >
18
+ {content.tipologia_luogo.map((tipologia) => (
19
+ <p key={tipologia.token} className="font-serif">
20
+ {tipologia.title}
21
+ </p>
22
+ ))}
23
+ </RichTextSection>
24
+ ) : null;
25
+ };
26
+
27
+ export default VenueTipologia;
@@ -73,6 +73,7 @@ export Sponsors from 'design-comuni-plone-theme/components/ItaliaTheme/View/Comm
73
73
  export RelatedItems from 'design-comuni-plone-theme/components/ItaliaTheme/View/Commons/RelatedItems';
74
74
  export RelatedItemInEvidence from 'design-comuni-plone-theme/components/ItaliaTheme/View/Commons/RelatedItemInEvidence/RelatedItemInEvidence';
75
75
  export DownloadFileFormat from 'design-comuni-plone-theme/components/ItaliaTheme/View/Commons/DownloadFileFormat';
76
+ export BandoStatus from 'design-comuni-plone-theme/components/ItaliaTheme/View/Commons/BandoStatus';
76
77
  export BandoDates from 'design-comuni-plone-theme/components/ItaliaTheme/View/Commons/BandoDates';
77
78
 
78
79
  /* --- View --- */
@@ -194,6 +195,10 @@ export VenueWhere from 'design-comuni-plone-theme/components/ItaliaTheme/View/Ve
194
195
  export VenuePublicTimetable from 'design-comuni-plone-theme/components/ItaliaTheme/View/VenueView/VenuePublicTimetable';
195
196
  export VenueContacts from 'design-comuni-plone-theme/components/ItaliaTheme/View/VenueView/VenueContacts';
196
197
  export VenueMoreInfos from 'design-comuni-plone-theme/components/ItaliaTheme/View/VenueView/VenueMoreInfos';
198
+ export VenueTipologia from 'design-comuni-plone-theme/components/ItaliaTheme/View/VenueView/VenueTipologia';
199
+ export VenueElementiDiInteresse from 'design-comuni-plone-theme/components/ItaliaTheme/View/VenueView/VenueElementiDiInteresse';
200
+ export VenueLuoghiCorrelati from 'design-comuni-plone-theme/components/ItaliaTheme/View/VenueView/VenueLuoghiCorrelati';
201
+ export VenueMultimedia from 'design-comuni-plone-theme/components/ItaliaTheme/View/VenueView/VenueMultimedia';
197
202
 
198
203
  export PuntoDiContattoView from 'design-comuni-plone-theme/components/ItaliaTheme/View/PuntoDiContattoView/PuntoDiContattoView';
199
204
  export PuntoDiContattoPlaceholderAfterContent from 'design-comuni-plone-theme/components/ItaliaTheme/View/PuntoDiContattoView/Placeholder/AfterContent';
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import PropTypes from 'prop-types';
3
2
  import { FontAwesomeIcon } from 'design-comuni-plone-theme/components/ItaliaTheme';
4
3
  import { defineMessages, useIntl } from 'react-intl';
@@ -14,6 +13,7 @@ const messages = defineMessages({
14
13
  const IconPreviewWidget = ({ icon, onEdit, title, description, children }) => {
15
14
  const intl = useIntl();
16
15
  const parts = icon?.split(' ') ?? [];
16
+
17
17
  return (
18
18
  <Form.Field inline className="help" id="icon-preview-widget-id">
19
19
  <Grid>
@@ -5,69 +5,38 @@
5
5
  height: auto;
6
6
  }
7
7
 
8
- .bg-alert-danger {
9
- background-color: #a32219;
10
- color: $white;
8
+ .draftjs-buttons a {
9
+ background-color: $white;
10
+ color: $body-color;
11
11
 
12
- .public-DraftEditorPlaceholder-inner {
12
+ &:hover {
13
+ background-color: $black;
13
14
  color: $white;
14
15
  }
16
+ }
15
17
 
16
- h1,
17
- h2,
18
- h3,
19
- h4,
20
- h5,
21
- h6 {
22
- color: $white;
23
- }
18
+ .bg-alert-danger {
19
+ background-color: $alert-danger;
20
+ color: $white;
24
21
 
25
22
  a {
26
23
  color: $white;
27
24
  }
28
25
  }
29
26
 
30
- .bg-alert-warning-orange {
31
- background-color: #eb973f;
32
- color: $black;
33
-
34
- .public-DraftEditorPlaceholder-inner {
35
- color: $black;
36
- }
37
-
38
- h1,
39
- h2,
40
- h3,
41
- h4,
42
- h5,
43
- h6 {
44
- color: $black;
45
- }
27
+ .bg-alert-warning {
28
+ background-color: $alert-warning;
46
29
 
47
30
  a {
48
- color: $black;
31
+ color: $body-color;
49
32
  }
50
33
  }
51
34
 
52
- .bg-alert-warning {
53
- background-color: #f0c250;
54
- color: $black;
55
-
56
- .public-DraftEditorPlaceholder-inner {
57
- color: $black;
58
- }
59
-
60
- h1,
61
- h2,
62
- h3,
63
- h4,
64
- h5,
65
- h6 {
66
- color: $black;
67
- }
35
+ .bg-alert-info {
36
+ background-color: $alert-info;
68
37
 
69
38
  a {
70
- color: $black;
39
+ color: $body-color;
71
40
  }
72
41
  }
73
42
 
@@ -81,35 +50,27 @@
81
50
  }
82
51
  }
83
52
 
84
- .DraftEditor-root {
85
- background: none;
86
- }
87
-
88
53
  p {
89
54
  margin: 0;
90
55
  }
91
56
 
92
57
  img.left-image {
93
- max-width: 80%;
94
58
  object-fit: unset;
95
- }
59
+ max-width: 80%;
96
60
 
97
- .image-col {
98
- text-align: center;
99
- }
61
+ &.size {
62
+ &-m {
63
+ max-width: 50%;
64
+ }
100
65
 
101
- div + h3,
102
- p + h3,
103
- h3 + div,
104
- h3 + p {
105
- margin-top: 1.33rem;
66
+ &-s {
67
+ max-width: 30%;
68
+ }
69
+ }
106
70
  }
107
71
 
108
- div + h2,
109
- p + h2,
110
- h2 + div,
111
- h2 + p {
112
- margin-top: 1rem;
72
+ .image-col {
73
+ text-align: center;
113
74
  }
114
75
  }
115
76
  }
@@ -23,30 +23,29 @@
23
23
  }
24
24
  }
25
25
 
26
+ .modal-body {
27
+ padding-top: 0;
28
+ }
29
+
26
30
  .item-preview {
27
31
  position: relative;
28
32
  margin-bottom: 1.25rem;
29
-
30
- .image {
31
- display: flex;
32
- align-items: center;
33
- justify-content: center;
34
- }
33
+ min-height: 72vh;
34
+ display: flex;
35
+ align-items: center;
36
+ text-align: center;
35
37
 
36
38
  img {
37
39
  width: auto !important;
38
40
  max-width: 100%;
39
-
40
41
  height: auto;
41
- max-height: calc(100vh - 12rem);
42
+ max-height: 72vh;
42
43
  }
43
44
 
44
45
  button.btn {
45
46
  position: absolute;
46
47
  z-index: 1;
47
-
48
48
  top: 50%;
49
-
50
49
  border-radius: 100%;
51
50
  transform: translateY(-50%);
52
51
  height: 3.05rem;
@@ -70,8 +69,5 @@
70
69
  }
71
70
  }
72
71
  }
73
- .modal-body {
74
- padding-top: 0;
75
- }
76
72
  }
77
73
  }
@@ -10,4 +10,3 @@
10
10
  @import '~bootstrap/scss/mixins';
11
11
 
12
12
  @import 'mixin';
13
- @import 'homepage';
@@ -292,6 +292,16 @@ div.sticky-wrapper {
292
292
  & > article.mt-5:first-of-type {
293
293
  margin-top: 0 !important;
294
294
  }
295
+
296
+ //gestione scroll per h2 con classe .visually-hidden: non devono avere il margine sopra altrimenti lo scroll si posiziona più in basso rispetto all'inizio del testo
297
+ .public-ui .h2,
298
+ .public-ui h2,
299
+ .h2,
300
+ h2 {
301
+ &.visually-hidden {
302
+ margin-top: 0 !important;
303
+ }
304
+ }
295
305
  }
296
306
 
297
307
  #view .it-carousel-wrapper .it-header-block .it-header-block-title h2.h4 {
@@ -9,3 +9,13 @@ body.public-ui.contenttype-lrf {
9
9
  .sidebar-container-enter-done {
10
10
  z-index: 150000 !important;
11
11
  }
12
+
13
+ body.subsite.subsite-root {
14
+ &,
15
+ .public-ui {
16
+ .documentFirstHeading,
17
+ #briciole {
18
+ display: none;
19
+ }
20
+ }
21
+ }
@@ -367,6 +367,20 @@ body.cms-ui {
367
367
  .button.tertiary.active {
368
368
  background-color: $tertiary;
369
369
  }
370
+
371
+ // Alert block
372
+ .button.info,
373
+ .button.info.active {
374
+ background-color: $alert-info;
375
+ }
376
+ .button.warning,
377
+ .button.warning.active {
378
+ background-color: $alert-warning;
379
+ }
380
+ .button.danger,
381
+ .button.danger.active {
382
+ background-color: $alert-danger;
383
+ }
370
384
  }
371
385
 
372
386
  .path-filter-widget {
@@ -39,6 +39,11 @@ $caption-text: #455b71 !default;
39
39
 
40
40
  $primary-a0: hsl($primary-h, 62%, 97%) !default;
41
41
 
42
+ // ALERT-BLOCK CUSTOM COLORS
43
+ $alert-danger: #a32219;
44
+ $alert-warning: #eb973f;
45
+ $alert-info: #f0c250;
46
+
42
47
  $argument-icon-color: $tertiary !default;
43
48
  $argument-icon-bg: #f5f6f7 !default;
44
49
  $external-link-fill-buttons: $tertiary-text !default;
@@ -1,9 +0,0 @@
1
- body.subsite.subsite-root {
2
- &,
3
- .public-ui {
4
- .documentFirstHeading,
5
- #briciole {
6
- display: none;
7
- }
8
- }
9
- }