design-comuni-plone-theme 11.22.1 → 11.23.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 (40) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/CHANGELOG.md +36 -0
  3. package/RELEASE.md +21 -0
  4. package/locales/de/LC_MESSAGES/volto.po +2 -0
  5. package/locales/en/LC_MESSAGES/volto.po +2 -0
  6. package/locales/es/LC_MESSAGES/volto.po +2 -0
  7. package/locales/fr/LC_MESSAGES/volto.po +2 -0
  8. package/locales/it/LC_MESSAGES/volto.po +2 -0
  9. package/locales/volto.pot +3 -1
  10. package/package.json +1 -1
  11. package/publiccode.yml +2 -2
  12. package/src/components/ItaliaTheme/Blocks/Accordion/Edit.jsx +44 -0
  13. package/src/components/ItaliaTheme/Blocks/Accordion/View.jsx +23 -0
  14. package/src/components/ItaliaTheme/Blocks/ArgumentsInEvidence/BottomBody.jsx +2 -2
  15. package/src/components/ItaliaTheme/Blocks/BandiSearch/Body.jsx +4 -0
  16. package/src/components/ItaliaTheme/Blocks/Common/SearchFilters/DateFilter.jsx +3 -2
  17. package/src/components/ItaliaTheme/Blocks/Common/SearchFilters/TextFilter.jsx +1 -0
  18. package/src/components/ItaliaTheme/Blocks/EventSearch/Body.jsx +9 -0
  19. package/src/components/ItaliaTheme/Blocks/SearchSections/Body.jsx +1 -0
  20. package/src/components/ItaliaTheme/Blocks/UOSearch/Body.jsx +1 -0
  21. package/src/components/ItaliaTheme/CustomerSatisfaction/Steps/AnswersStep.jsx +1 -0
  22. package/src/components/ItaliaTheme/CustomerSatisfaction/Steps/CommentsStep.jsx +1 -0
  23. package/src/components/ItaliaTheme/Footer/FooterInfos.jsx +2 -2
  24. package/src/components/ItaliaTheme/View/Commons/Gallery.jsx +35 -28
  25. package/src/components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates.jsx +2 -2
  26. package/src/components/ItaliaTheme/View/Commons/RelatedItems.jsx +6 -2
  27. package/src/components/ItaliaTheme/View/Commons/SideMenu.jsx +1 -1
  28. package/src/components/ItaliaTheme/View/PuntoDiContattoView/PuntoDiContattoView.jsx +2 -2
  29. package/src/components/ItaliaTheme/View/VenueView/VenueWhere.jsx +1 -1
  30. package/src/config/Blocks/ListingOptions/cardWithSlideUpTextTemplate.js +6 -1
  31. package/src/theme/ItaliaTheme/Addons/volto-gdpr-privacy.scss +0 -18
  32. package/src/theme/ItaliaTheme/Blocks/_accordion.scss +12 -0
  33. package/src/theme/ItaliaTheme/Blocks/_form.scss +38 -32
  34. package/src/theme/ItaliaTheme/Blocks/common/_searchBlockFilters.scss +4 -2
  35. package/src/theme/ItaliaTheme/Views/_common.scss +27 -0
  36. package/src/theme/ItaliaTheme/Widgets/_reactSelect.scss +2 -1
  37. package/src/theme/ItaliaTheme/_common.scss +2 -5
  38. package/src/theme/_site-variables.scss +4 -5
  39. package/src/theme/bootstrap-override/bootstrap-italia/_focus.scss +6 -0
  40. package/src/theme/bootstrap-override/bootstrap-italia/_headercenter.scss +3 -2
Binary file
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
 
2
2
 
3
+ ## [11.23.1](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.23.0...v11.23.1) (2024-09-19)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **a11y:** used p with h classname to ensure correct heading order ([#770](https://github.com/RedTurtle/design-comuni-plone-theme/issues/770)) ([2ab487e](https://github.com/RedTurtle/design-comuni-plone-theme/commit/2ab487e1a799e48fbbb98e89ca7d195ed37b3ea6))
9
+ * changed focus color ([#772](https://github.com/RedTurtle/design-comuni-plone-theme/issues/772)) ([e3c4e45](https://github.com/RedTurtle/design-comuni-plone-theme/commit/e3c4e45cc06e18c10ae1c51327e4762d0197f767))
10
+
11
+
12
+ ### Documentation
13
+
14
+ * updated publiccode and release log ([de02c1e](https://github.com/RedTurtle/design-comuni-plone-theme/commit/de02c1e5ad7f71ecdd8f1dbd6b97dfe7bdec67d2))
15
+
16
+ ## [11.23.0](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.22.1...v11.23.0) (2024-09-19)
17
+
18
+
19
+ ### Features
20
+
21
+ * title and description for block accordion - v11 ([#765](https://github.com/RedTurtle/design-comuni-plone-theme/issues/765)) ([93e4926](https://github.com/RedTurtle/design-comuni-plone-theme/commit/93e49267e1d896ea08b99ad1860b479f4b7bcd89))
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * added autocomplete attribute in search and customer satisfaction fields ([#768](https://github.com/RedTurtle/design-comuni-plone-theme/issues/768)) ([8de28b9](https://github.com/RedTurtle/design-comuni-plone-theme/commit/8de28b9325ffba67e47431d948f035556e100649))
27
+ * added block id to date ids to ensure unique field ids ([#771](https://github.com/RedTurtle/design-comuni-plone-theme/issues/771)) ([4c9f6c1](https://github.com/RedTurtle/design-comuni-plone-theme/commit/4c9f6c1cead8f6185effd7d287823bb6d8cdaa0c))
28
+ * added filter for eventi rassegne in Event Search ([#774](https://github.com/RedTurtle/design-comuni-plone-theme/issues/774)) ([2f6c69c](https://github.com/RedTurtle/design-comuni-plone-theme/commit/2f6c69c20326568350d32d540a75da28bf017b70))
29
+ * added max-width attribute to row to fit elements within page when zoomed in ([#773](https://github.com/RedTurtle/design-comuni-plone-theme/issues/773)) ([92ab586](https://github.com/RedTurtle/design-comuni-plone-theme/commit/92ab5867ee677280e326b9af2af14decbc163cc8))
30
+ * added submit type attribute to search submit buttons ([#769](https://github.com/RedTurtle/design-comuni-plone-theme/issues/769)) ([bf5a9a6](https://github.com/RedTurtle/design-comuni-plone-theme/commit/bf5a9a6f03bbb27322816743b4b8d1e2cbcafdb1))
31
+ * removed id_lighthouse field in cardWithSlideUpTextTemplate ([#762](https://github.com/RedTurtle/design-comuni-plone-theme/issues/762)) ([aa4fe58](https://github.com/RedTurtle/design-comuni-plone-theme/commit/aa4fe58d6db372a2848efe429e78fceb1203f54d))
32
+ * slider styles + arrows in ct gallery ([#764](https://github.com/RedTurtle/design-comuni-plone-theme/issues/764)) ([c1bbdb9](https://github.com/RedTurtle/design-comuni-plone-theme/commit/c1bbdb998a145c608e0fc8da5d23223ddaa0ac12))
33
+
34
+
35
+ ### Documentation
36
+
37
+ * updated publiccode and release log ([f43b737](https://github.com/RedTurtle/design-comuni-plone-theme/commit/f43b737e4ef0438182f371f46d30002d1459d21d))
38
+
3
39
  ## [11.22.1](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.22.0...v11.22.1) (2024-09-09)
4
40
 
5
41
 
package/RELEASE.md CHANGED
@@ -41,6 +41,27 @@
41
41
  - ...
42
42
  -->
43
43
 
44
+ ## Versione 11.23.1 (19/09/2024)
45
+
46
+ ### Migliorie
47
+
48
+ - Il colore del focus da tastiera sugli elementi della pagina è ora bianco e nero per garantire sempre un contrasto ottimale su tutti gli sfondi.
49
+
50
+ ## Versione 11.23.0 (19/09/2024)
51
+
52
+ ### Migliorie
53
+
54
+ - Migliorato il layout della galleria immagini nei CT.
55
+ - Nel blocco Cerca Evento, nel caso di un Evento Rassegna, tra i risultati vengono ora visualizzati solo gli appuntamenti della rassegna e non l'evento contenitore.
56
+
57
+ ### Novità
58
+
59
+ - Aggiunto campo per l'inserimento del titolo e della descrizione nel blocco Accordion.
60
+
61
+ ### Fix
62
+
63
+ - Rimosso il campo "ID lighthouse" dal blocco elenco con variazione Card con Testo Animato perchè entra in contrasto con asseveratore. Pianificato evento per ripristinarlo.
64
+
44
65
  ## Versione 11.22.0 (05/09/2024)
45
66
 
46
67
  ### Migliorie
@@ -191,6 +191,7 @@ msgstr ""
191
191
  msgid "Description"
192
192
  msgstr ""
193
193
 
194
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
194
195
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
195
196
  #: components/ItaliaTheme/Blocks/NumbersBlock/Block/EditBlock
196
197
  # defaultMessage: Descrizione...
@@ -595,6 +596,7 @@ msgstr ""
595
596
  msgid "Thank you."
596
597
  msgstr ""
597
598
 
599
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
598
600
  #: components/ItaliaTheme/Blocks/ContactsBlock/Edit
599
601
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
600
602
  #: components/ItaliaTheme/Blocks/VideoGallery/Edit
@@ -176,6 +176,7 @@ msgstr "Between {start} and {end}"
176
176
  msgid "Description"
177
177
  msgstr ""
178
178
 
179
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
179
180
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
180
181
  #: components/ItaliaTheme/Blocks/NumbersBlock/Block/EditBlock
181
182
  # defaultMessage: Descrizione...
@@ -580,6 +581,7 @@ msgstr ""
580
581
  msgid "Thank you."
581
582
  msgstr ""
582
583
 
584
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
583
585
  #: components/ItaliaTheme/Blocks/ContactsBlock/Edit
584
586
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
585
587
  #: components/ItaliaTheme/Blocks/VideoGallery/Edit
@@ -185,6 +185,7 @@ msgstr ""
185
185
  msgid "Description"
186
186
  msgstr "Descripción..."
187
187
 
188
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
188
189
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
189
190
  #: components/ItaliaTheme/Blocks/NumbersBlock/Block/EditBlock
190
191
  # defaultMessage: Descrizione...
@@ -589,6 +590,7 @@ msgstr "Texto..."
589
590
  msgid "Thank you."
590
591
  msgstr "Gracias."
591
592
 
593
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
592
594
  #: components/ItaliaTheme/Blocks/ContactsBlock/Edit
593
595
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
594
596
  #: components/ItaliaTheme/Blocks/VideoGallery/Edit
@@ -193,6 +193,7 @@ msgstr ""
193
193
  msgid "Description"
194
194
  msgstr ""
195
195
 
196
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
196
197
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
197
198
  #: components/ItaliaTheme/Blocks/NumbersBlock/Block/EditBlock
198
199
  # defaultMessage: Descrizione...
@@ -597,6 +598,7 @@ msgstr ""
597
598
  msgid "Thank you."
598
599
  msgstr "Merci."
599
600
 
601
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
600
602
  #: components/ItaliaTheme/Blocks/ContactsBlock/Edit
601
603
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
602
604
  #: components/ItaliaTheme/Blocks/VideoGallery/Edit
@@ -176,6 +176,7 @@ msgstr "Dal {start} al {end}"
176
176
  msgid "Description"
177
177
  msgstr "Descrizione"
178
178
 
179
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
179
180
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
180
181
  #: components/ItaliaTheme/Blocks/NumbersBlock/Block/EditBlock
181
182
  # defaultMessage: Descrizione...
@@ -580,6 +581,7 @@ msgstr "Testo..."
580
581
  msgid "Thank you."
581
582
  msgstr "Grazie."
582
583
 
584
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
583
585
  #: components/ItaliaTheme/Blocks/ContactsBlock/Edit
584
586
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
585
587
  #: components/ItaliaTheme/Blocks/VideoGallery/Edit
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-09-05T11:07:39.844Z\n"
4
+ "POT-Creation-Date: 2024-09-10T12:46:37.907Z\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"
@@ -178,6 +178,7 @@ msgstr ""
178
178
  msgid "Description"
179
179
  msgstr ""
180
180
 
181
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
181
182
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
182
183
  #: components/ItaliaTheme/Blocks/NumbersBlock/Block/EditBlock
183
184
  # defaultMessage: Descrizione...
@@ -582,6 +583,7 @@ msgstr ""
582
583
  msgid "Thank you."
583
584
  msgstr ""
584
585
 
586
+ #: components/ItaliaTheme/Blocks/Accordion/Edit
585
587
  #: components/ItaliaTheme/Blocks/ContactsBlock/Edit
586
588
  #: components/ItaliaTheme/Blocks/IconBlocks/Edit
587
589
  #: components/ItaliaTheme/Blocks/VideoGallery/Edit
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.22.1",
5
+ "version": "11.23.1",
6
6
  "main": "src/index.js",
7
7
  "repository": {
8
8
  "type": "git",
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-09-05'
230
+ releaseDate: '2024-09-19'
231
231
  softwareType: standalone/web
232
- softwareVersion: 11.22.0
232
+ softwareVersion: 11.23.1
233
233
  url: 'https://github.com/italia/design-comuni-plone-theme'
234
234
  usedBy:
235
235
  - ASP Comuni Modenesi Area Nord
@@ -18,11 +18,21 @@ import Sidebar from './Sidebar.jsx';
18
18
 
19
19
  import { defineMessages } from 'react-intl';
20
20
 
21
+ import { TextEditorWidget } from 'design-comuni-plone-theme/components/ItaliaTheme';
22
+
21
23
  const messages = defineMessages({
22
24
  addItem: {
23
25
  id: 'Add accordion item',
24
26
  defaultMessage: 'Aggiungi elemento',
25
27
  },
28
+ title: {
29
+ id: 'Title',
30
+ defaultMessage: 'Titolo...',
31
+ },
32
+ description: {
33
+ id: 'Description placeholder',
34
+ defaultMessage: 'Descrizione...',
35
+ },
26
36
  });
27
37
  /**
28
38
  * Edit Accordion block class.
@@ -45,6 +55,40 @@ class Edit extends SubblocksEdit {
45
55
  <Container className="px-md-4">
46
56
  <Card className="card-bg rounded" noWrapper={false} space tag="div">
47
57
  <CardBody tag="div">
58
+ <TextEditorWidget
59
+ data={this.props.data}
60
+ fieldName="title"
61
+ selected={this.state.selectedField === 'title'}
62
+ block={this.props.block}
63
+ onChangeBlock={(data) => {
64
+ this.props.onChangeBlock(this.props.block, {
65
+ ...data,
66
+ });
67
+ }}
68
+ placeholder={this.props.intl.formatMessage(messages.title)}
69
+ showToolbar={false}
70
+ onSelectBlock={() => {}}
71
+ onAddBlock={() => {
72
+ this.setState({ selectedField: 'description' });
73
+ }}
74
+ />
75
+ <TextEditorWidget
76
+ data={this.props.data}
77
+ fieldName="description"
78
+ selected={this.state.selectedField === 'description'}
79
+ block={this.props.block}
80
+ onChangeBlock={(data) =>
81
+ this.props.onChangeBlock(this.props.block, {
82
+ ...data,
83
+ })
84
+ }
85
+ placeholder={this.props.intl.formatMessage(
86
+ messages.description,
87
+ )}
88
+ showToolbar={true}
89
+ onSelectBlock={() => {}}
90
+ onAddBlock={() => {}}
91
+ />
48
92
  <SubblocksWrapper node={this.node}>
49
93
  {this.state.subblocks.map((subblock, subindex) => (
50
94
  <div className="accordion-item" key={subblock.id}>
@@ -7,6 +7,9 @@ import React, { useState } from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import ViewBlock from './Block/ViewBlock';
9
9
  import { Container, Card, CardBody } from 'design-react-kit';
10
+ import redraft from 'redraft';
11
+ import config from '@plone/volto/registry';
12
+ import { checkRedraftHasContent } from 'design-comuni-plone-theme/helpers';
10
13
 
11
14
  /**
12
15
  * View Accordion block class.
@@ -25,6 +28,26 @@ const AccordionView = ({ data, block }) => {
25
28
  <div className="full-width section section-muted section-inset-shadow py-5">
26
29
  <Container className="px-md-4">
27
30
  <Card className="card-bg rounded" noWrapper={false} space tag="div">
31
+ <div className="block-header">
32
+ {checkRedraftHasContent(data.title) && (
33
+ <div className="title">
34
+ {redraft(
35
+ data.title,
36
+ config.settings.richtextViewSettings.ToHTMLRenderers,
37
+ config.settings.richtextViewSettings.ToHTMLOptions,
38
+ )}
39
+ </div>
40
+ )}
41
+ {checkRedraftHasContent(data.description) && (
42
+ <div className="description">
43
+ {redraft(
44
+ data.description,
45
+ config.settings.richtextViewSettings.ToHTMLRenderers,
46
+ config.settings.richtextViewSettings.ToHTMLOptions,
47
+ )}
48
+ </div>
49
+ )}
50
+ </div>
28
51
  <CardBody tag="div">
29
52
  {data.subblocks.map((subblock, index) => (
30
53
  <ViewBlock
@@ -26,9 +26,9 @@ const BottomBody = ({ data, intl, hasArguments }) => {
26
26
  <div
27
27
  className={data?.centerAlignment ? 'col-lg-12 mb-3' : 'col-lg-auto'}
28
28
  >
29
- <h6 className="text-uppercase text-center mt-1">
29
+ <p className="h6 text-uppercase text-center mt-1">
30
30
  {intl?.formatMessage(messages.otherArguments)}
31
- </h6>
31
+ </p>
32
32
  </div>
33
33
  <div className={data?.centerAlignment ? 'col-lg-12' : 'col-lg-auto'}>
34
34
  {data?.arguments?.map((argument, index) => (
@@ -167,6 +167,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
167
167
  <>
168
168
  {React.createElement(filterOne.widget.component, {
169
169
  ...filterOne.widget?.props,
170
+ blockID: id,
170
171
  id: 'filterOne',
171
172
  onChange: (filter, value) => {
172
173
  dispatchFilter({
@@ -180,6 +181,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
180
181
  {filterTwo &&
181
182
  React.createElement(filterTwo.widget?.component, {
182
183
  ...filterTwo.widget?.props,
184
+ blockID: id,
183
185
  id: 'filterTwo',
184
186
  onChange: (filter, value) =>
185
187
  dispatchFilter({
@@ -190,6 +192,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
190
192
  {filterThree &&
191
193
  React.createElement(filterThree.widget?.component, {
192
194
  ...filterThree.widget?.props,
195
+ blockID: id,
193
196
  id: 'filterThree',
194
197
  onChange: (filter, value) =>
195
198
  dispatchFilter({
@@ -203,6 +206,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
203
206
  icon={false}
204
207
  tag="button"
205
208
  className="my-2 my-lg-1"
209
+ type="submit"
206
210
  >
207
211
  {intl.formatMessage(messages.find)}
208
212
  </Button>
@@ -188,6 +188,7 @@ const DateFilter = (props) => {
188
188
  endLabel,
189
189
  defaultStart,
190
190
  defaultEnd,
191
+ blockID,
191
192
  ...rest
192
193
  } = props;
193
194
  const { DateRangePicker } = reactDates;
@@ -230,12 +231,12 @@ const DateFilter = (props) => {
230
231
  <DateRangePicker
231
232
  {...rest}
232
233
  startDate={value?.startDate || defaultStart}
233
- startDateId="start-date-filter"
234
+ startDateId={`start-date-filter-${blockID}`}
234
235
  startDatePlaceholderText={
235
236
  startLabel ?? intl.formatMessage(messages.eventSearchStartDate)
236
237
  }
237
238
  endDate={value?.endDate || defaultEnd}
238
- endDateId="end-date-filter"
239
+ endDateId={`end-date-filter-${blockID}`}
239
240
  endDatePlaceholderText={
240
241
  endLabel ?? intl.formatMessage(messages.eventSearchEndDate)
241
242
  }
@@ -21,6 +21,7 @@ const TextFilter = ({ value, id, onChange, placeholder }) => {
21
21
  onChange={(e, data) => {
22
22
  onChange(id, e.target.value ?? '');
23
23
  }}
24
+ autocomplete="off"
24
25
  />
25
26
  </div>
26
27
  );
@@ -75,6 +75,11 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
75
75
  o: 'plone.app.querystring.operation.selection.any',
76
76
  v: ['Event'],
77
77
  },
78
+ {
79
+ i: 'rassegna',
80
+ o: 'plone.app.querystring.operation.boolean.isFalse',
81
+ v: '',
82
+ },
78
83
  ];
79
84
 
80
85
  [filterOne, filterTwo, filterThree].forEach((f) => {
@@ -177,6 +182,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
177
182
  <>
178
183
  {React.createElement(filterOne.widget.component, {
179
184
  ...filterOne.widget?.props,
185
+ blockID: id,
180
186
  id: 'filterOne',
181
187
  onChange: (filter, value) => {
182
188
  dispatchFilter({
@@ -190,6 +196,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
190
196
  {filterTwo &&
191
197
  React.createElement(filterTwo.widget?.component, {
192
198
  ...filterTwo.widget?.props,
199
+ blockID: id,
193
200
  id: 'filterTwo',
194
201
  onChange: (filter, value) =>
195
202
  dispatchFilter({
@@ -200,6 +207,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
200
207
  {filterThree &&
201
208
  React.createElement(filterThree.widget?.component, {
202
209
  ...filterThree.widget?.props,
210
+ blockID: id,
203
211
  id: 'filterThree',
204
212
  onChange: (filter, value) =>
205
213
  dispatchFilter({
@@ -213,6 +221,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
213
221
  icon={false}
214
222
  tag="button"
215
223
  className="my-2 my-lg-1"
224
+ type="submit"
216
225
  >
217
226
  {intl.formatMessage(messages.find)}
218
227
  </Button>
@@ -77,6 +77,7 @@ const Body = ({ block, sections }) => {
77
77
  e.key === 'Enter' ? navigate(inputText, searchFilters()) : null
78
78
  }
79
79
  aria-label={block.placeholder}
80
+ autocomplete="off"
80
81
  ></input>
81
82
  </div>
82
83
  <div className="buttonsContainer mt-2 d-flex">
@@ -198,6 +198,7 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock }) => {
198
198
  icon={false}
199
199
  tag="button"
200
200
  className="my-2 my-lg-1"
201
+ type="submit"
201
202
  >
202
203
  {intl.formatMessage(messages.find)}
203
204
  </Button>
@@ -95,6 +95,7 @@ const AnswersStep = ({
95
95
  checked={s === selectedAnswer}
96
96
  value={s}
97
97
  onChange={handleAnswerChange}
98
+ autocomplete="off"
98
99
  />
99
100
  <Label
100
101
  for={'positive-' + s}
@@ -80,6 +80,7 @@ const CommentsStep = ({
80
80
  invalid={invalid}
81
81
  className="mt-1"
82
82
  data-element="feedback-input-text"
83
+ autoComplete="off"
83
84
  />
84
85
  </FormGroup>
85
86
  </Form>
@@ -62,7 +62,7 @@ const FooterInfos = () => {
62
62
  widths={['xs', 'sm', 'md', 'lg', 'xl']}
63
63
  key={index}
64
64
  >
65
- <h4>
65
+ <p className="h4">
66
66
  {column?.title && (
67
67
  <ConditionalLink
68
68
  condition={column.titleLink?.length > 0}
@@ -75,7 +75,7 @@ const FooterInfos = () => {
75
75
  {column.title}
76
76
  </ConditionalLink>
77
77
  )}
78
- </h4>
78
+ </p>
79
79
  {column.showSocial && <FooterSocials />}
80
80
 
81
81
  <div
@@ -13,6 +13,7 @@ import {
13
13
  SingleSlideWrapper,
14
14
  CarouselWrapper,
15
15
  } from 'design-comuni-plone-theme/components/ItaliaTheme';
16
+ import { useSlider } from 'design-comuni-plone-theme/components/ItaliaTheme/Slider/slider';
16
17
  import PropTypes from 'prop-types';
17
18
  import { contentFolderHasItems } from 'design-comuni-plone-theme/helpers';
18
19
  import { UniversalLink } from '@plone/volto/components';
@@ -50,6 +51,7 @@ const Gallery = ({
50
51
  reactSlick,
51
52
  }) => {
52
53
  const Slider = reactSlick.default;
54
+ const { SliderNextArrow, SliderPrevArrow } = useSlider();
53
55
  const Image = config.getComponent({ name: 'Image' }).component;
54
56
  const getSettings = (nItems, slideToScroll) => {
55
57
  return {
@@ -58,6 +60,8 @@ const Gallery = ({
58
60
  speed: 500,
59
61
  slidesToShow: nItems < 3 ? nItems : 3,
60
62
  slidesToScroll: slideToScroll ?? 3,
63
+ nextArrow: <SliderNextArrow intl={intl} />,
64
+ prevArrow: <SliderPrevArrow intl={intl} />,
61
65
  responsive: [
62
66
  {
63
67
  breakpoint: 1024,
@@ -154,37 +158,40 @@ const Gallery = ({
154
158
  <Slider {...getSettings(images.length)}>
155
159
  {images.map((item, i) => (
156
160
  <SingleSlideWrapper key={item['@id']} index={i}>
157
- <figure>
158
- <UniversalLink
159
- item={item}
160
- onClick={(e) => {
161
- e.preventDefault();
162
- e.stopPropagation();
163
- setViewImageIndex(i);
164
- }}
165
- onKeyDown={(e) => {
166
- if (e.keyCode === 13) {
161
+ <div className={'slide-wrapper'} role="presentation">
162
+ <figure className="img-wrapper">
163
+ <UniversalLink
164
+ item={item}
165
+ onClick={(e) => {
167
166
  e.preventDefault();
168
167
  e.stopPropagation();
169
168
  setViewImageIndex(i);
170
- }
171
- }}
172
- aria-label={`${intl.formatMessage(
173
- messages.viewPreview,
174
- )} ${item.title}`}
175
- >
176
- <Image
177
- item={item}
178
- alt={item.title}
179
- className="img-fluid"
180
- loading="lazy"
181
- sizes={`(max-width:320px) 300px, (max-width:425px) 400px, ${default_width_image}`}
182
- />
183
- </UniversalLink>
184
- <figcaption className="figure-caption mt-2">
185
- {item.title}
186
- </figcaption>
187
- </figure>
169
+ }}
170
+ onKeyDown={(e) => {
171
+ if (e.keyCode === 13) {
172
+ e.preventDefault();
173
+ e.stopPropagation();
174
+ setViewImageIndex(i);
175
+ }
176
+ }}
177
+ aria-label={`${intl.formatMessage(
178
+ messages.viewPreview,
179
+ )} ${item.title}`}
180
+ className="img-wrapper"
181
+ >
182
+ <Image
183
+ item={item}
184
+ alt={item.title}
185
+ className="img-fluid"
186
+ loading="lazy"
187
+ sizes={`(max-width:320px) 300px, (max-width:425px) 400px, ${default_width_image}`}
188
+ />
189
+ </UniversalLink>
190
+ <figcaption className="figure-caption mt-2">
191
+ {item.title}
192
+ </figcaption>
193
+ </figure>
194
+ </div>
188
195
  </SingleSlideWrapper>
189
196
  ))}
190
197
  </Slider>
@@ -63,7 +63,7 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {
63
63
  }
64
64
  }
65
65
  return content['@type'] === 'Event' ? (
66
- <h4 className="py-2">
66
+ <p className="h4 py-2">
67
67
  {!wholeDay &&
68
68
  !openEnd &&
69
69
  !renderOnlyStart &&
@@ -80,7 +80,7 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {
80
80
  {eventRecurrenceText && (
81
81
  <div className="recurrence small">{eventRecurrenceText}</div>
82
82
  )}
83
- </h4>
83
+ </p>
84
84
  ) : null;
85
85
  };
86
86
 
@@ -82,7 +82,9 @@ const RelatedItems = ({
82
82
  <>
83
83
  <Row>
84
84
  <Col className="text-center">
85
- <h3>{intl.formatMessage(messages.related_items)}</h3>
85
+ <h2 className="h3">
86
+ {intl.formatMessage(messages.related_items)} ???
87
+ </h2>
86
88
  </Col>
87
89
  </Row>
88
90
  <Row className="mt-lg-4">
@@ -131,7 +133,9 @@ const RelatedItems = ({
131
133
  <>
132
134
  <Row>
133
135
  <Col className="text-center">
134
- <h3>{intl.formatMessage(messages.related_items)}</h3>
136
+ <h2 className="h3">
137
+ {intl.formatMessage(messages.related_items)}
138
+ </h2>
135
139
  </Col>
136
140
  </Row>
137
141
  <Row className="mt-lg-4">
@@ -163,7 +163,7 @@ const SideMenu = ({ data, content_uid }) => {
163
163
  }}
164
164
  aria-controls="side-menu-body"
165
165
  >
166
- <h3>{intl.formatMessage(messages.index)}</h3>
166
+ <h2 className="h3">{intl.formatMessage(messages.index)}</h2>
167
167
  </AccordionHeader>
168
168
  <div className="mb-3">
169
169
  <Progress
@@ -105,7 +105,7 @@ const PuntoDiContattoView = (props) => {
105
105
  {content?.value_punto_contatto?.map((pdc, i) => {
106
106
  return (
107
107
  <div className="my-2" key={i}>
108
- <h5 className="h6">
108
+ <p className="h6">
109
109
  {messages[pdc?.pdc_type] === undefined
110
110
  ? pdc?.pdc_type
111
111
  : intl.formatMessage(messages[pdc.pdc_type])}
@@ -113,7 +113,7 @@ const PuntoDiContattoView = (props) => {
113
113
  <span className="ms-1">
114
114
  {renderPDCItemValue(pdc, intl)}
115
115
  </span>
116
- </h5>
116
+ </p>
117
117
  </div>
118
118
  );
119
119
  })}
@@ -39,7 +39,7 @@ const VenueWhere = ({ content }) => {
39
39
  <Card className="card card-teaser border-left-card preview-image-card card-big-io-comune shadow mt-3 rounded mb-4">
40
40
  <CardBody>
41
41
  <CardTitle>
42
- <h5 className="card-title">{content.title}</h5>
42
+ <h3 className="h5 card-title">{content.title}</h3>
43
43
  </CardTitle>
44
44
  <CardText>
45
45
  <p>
@@ -13,7 +13,12 @@ export const addCardWithSlideUpTextTemplateOptions = (
13
13
  ) => {
14
14
  let pos = position;
15
15
 
16
- pos = addLighthouseField(schema, intl, pos);
16
+ // hidden to avoid use of lighthouse on this block
17
+ // which creates problems with asseverazione
18
+ // 1. clients instructed not to use this variation when data-element is needed
19
+ // 2. planned intervention to change structure of variation to allow use of
20
+ // data element without wrapping entire card in link
21
+ // pos = addLighthouseField(schema, intl, pos);
17
22
 
18
23
  pos = addDefaultOptions(schema, formData, intl, pos);
19
24
 
@@ -49,11 +49,6 @@
49
49
  outline: none;
50
50
  vertical-align: baseline;
51
51
 
52
- input:focus ~ label::before {
53
- box-shadow: $gdpr-focus-shadow !important;
54
- outline: none !important;
55
- }
56
-
57
52
  label {
58
53
  position: relative;
59
54
  display: block;
@@ -240,19 +235,6 @@ body.has-toolbar-collapsed {
240
235
  }
241
236
  }
242
237
 
243
- .gdpr-privacy-banner
244
- .gdpr-privacy-content-wrapper
245
- .gdpr-privacy-content
246
- .buttons
247
- button.gdpr-privacy-banner-button:focus,
248
- .gdpr-privacy-banner
249
- .gdpr-privacy-content-wrapper
250
- .gdpr-privacy-content
251
- a:focus {
252
- box-shadow: $gdpr-focus-shadow;
253
- outline: none !important;
254
- }
255
-
256
238
  .gdpr-privacy-banner
257
239
  .gdpr-privacy-content-wrapper
258
240
  .gdpr-privacy-content
@@ -3,6 +3,18 @@ $accordion-icon-color: #7fb2e5;
3
3
  .block.accordion {
4
4
  .section.full-width {
5
5
  height: auto;
6
+ .title {
7
+ font-size: 2.35rem !important;
8
+ font-weight: bold;
9
+ line-height: 3rem;
10
+
11
+ .DraftEditor-root {
12
+ .public-DraftEditorPlaceholder-root {
13
+ width: 100%;
14
+ font-size: 2.35rem;
15
+ }
16
+ }
17
+ }
6
18
 
7
19
  @media (max-width: #{map-get($grid-breakpoints, md)}) {
8
20
  padding: 0.5em;
@@ -1,45 +1,50 @@
1
1
  .public-ui {
2
2
  .block.form {
3
- @media (max-width: #{map-get($grid-breakpoints, md)}) {
4
- .form-group {
5
- display: flex;
6
- flex-direction: column;
7
-
8
- label {
9
- position: relative;
10
- order: 1;
11
- font-size: 0.777rem;
12
- line-height: 1.375rem;
13
- transform: none;
14
- transform: none;
15
- white-space: normal;
16
-
17
- &.active {
3
+ .row {
4
+ max-width: 100%;
5
+
6
+ @media (max-width: #{map-get($grid-breakpoints, md)}) {
7
+ .form-group {
8
+ display: flex;
9
+ flex-direction: column;
10
+ max-width: 100%;
11
+
12
+ label {
13
+ position: relative;
14
+ order: 1;
18
15
  font-size: 0.777rem;
16
+ line-height: 1.375rem;
17
+ transform: none;
19
18
  transform: none;
19
+ white-space: normal;
20
+
21
+ &.active {
22
+ font-size: 0.777rem;
23
+ transform: none;
24
+ }
20
25
  }
21
- }
22
26
 
23
- input,
24
- textarea,
25
- .form-input-file {
26
- order: 2;
27
- }
27
+ input,
28
+ textarea,
29
+ .form-input-file {
30
+ order: 2;
31
+ }
28
32
 
29
- input[type='date'] ~ label {
30
- font-size: 0.777rem;
31
- transform: none;
32
- }
33
+ input[type='date'] ~ label {
34
+ font-size: 0.777rem;
35
+ transform: none;
36
+ }
33
37
 
34
- small.form-text {
35
- position: relative;
36
- order: 3;
38
+ small.form-text {
39
+ position: relative;
40
+ order: 3;
41
+ }
37
42
  }
38
- }
39
43
 
40
- .form-input-file {
41
- .dropzone-placeholder {
42
- margin-top: 0;
44
+ .form-input-file {
45
+ .dropzone-placeholder {
46
+ margin-top: 0;
47
+ }
43
48
  }
44
49
  }
45
50
  }
@@ -65,6 +70,7 @@
65
70
  &,
66
71
  .volto-subblocks-wrapper,
67
72
  .form-field {
73
+ max-width: 100%;
68
74
  .single-block {
69
75
  .dragsubblock {
70
76
  top: 0.3rem;
@@ -15,7 +15,8 @@
15
15
  min-width: 150px;
16
16
 
17
17
  &:focus-within {
18
- box-shadow: 0 0 0 2px $focus-outline-color;
18
+ border: 2px solid $inner-focus-border !important;
19
+ box-shadow: 0 0 0 2px $outer-focus-outline !important;
19
20
  }
20
21
 
21
22
  .react-select__control {
@@ -57,7 +58,8 @@
57
58
  }
58
59
 
59
60
  &.DateInput_input__focused {
60
- box-shadow: 0 0 0 2px $focus-outline-color;
61
+ border: 2px solid $inner-focus-border !important;
62
+ box-shadow: 0 0 0 2px $outer-focus-outline !important;
61
63
  }
62
64
  }
63
65
 
@@ -367,3 +367,30 @@ dl.trasparenza-fields {
367
367
  @include rem-size(font-size, 16px);
368
368
  @include rem-size(line-height, 24px);
369
369
  }
370
+
371
+ // CT gallery slider
372
+ .it-carousel-wrapper {
373
+ .slider-container {
374
+ .slick-list .slick-track {
375
+ .slick-slide {
376
+ position: relative;
377
+ margin: 0 auto;
378
+
379
+ a {
380
+ height: 150px;
381
+ &.img-wrapper {
382
+ position: relative;
383
+ overflow: hidden;
384
+ width: 100%;
385
+ margin: 0;
386
+
387
+ img {
388
+ min-height: 150px;
389
+ object-fit: cover;
390
+ }
391
+ }
392
+ }
393
+ }
394
+ }
395
+ }
396
+ }
@@ -20,6 +20,7 @@
20
20
  .react-select__control,
21
21
  .react-select__control:hover {
22
22
  &.react-select__control--is-focused {
23
- box-shadow: 0 0 0 2px $focus-outline-color !important;
23
+ border: 2px solid $inner-focus-border !important;
24
+ box-shadow: 0 0 0 2px $outer-focus-outline !important;
24
25
  }
25
26
  }
@@ -7,11 +7,8 @@
7
7
  button.btn,
8
8
  button.rounded-right {
9
9
  &:focus {
10
- border-color: $focus-outline-color !important;
11
- box-shadow:
12
- inset 0 1px 0 $focus-outline-color,
13
- 0 1px 1px $focus-outline-color,
14
- 0 0 0 0.2rem $focus-outline-color !important;
10
+ border: 2px solid $inner-focus-border !important;
11
+ box-shadow: 0 0 0 2px $outer-focus-outline !important;
15
12
  outline: none;
16
13
  }
17
14
  }
@@ -30,12 +30,7 @@ $gdpr-accept-all: #005700 !default;
30
30
  $gdpr-toggle-checked: #005700 !default;
31
31
  $gdpr-toggle: #b22515 !default;
32
32
  $gdpr-toggle-border: #000 !default;
33
- $gdpr-focus-color: #ff9800 !default;
34
33
  $gdpr-link-color: #004285 !default;
35
- $gdpr-focus-shadow:
36
- inset 0 1px 0 rgba(255, 255, 255, 0.15),
37
- 0 1px 1px rgba(0, 0, 0, 0.075),
38
- 0 0 0 0.2rem $gdpr-focus-color !default;
39
34
 
40
35
  $caption-text: #455b71 !default;
41
36
 
@@ -63,3 +58,7 @@ $dvt-navigation-v-padding: 15px !default;
63
58
  $spacer: 16px;
64
59
  $ribbon-spacing-h: calc($spacer * 3);
65
60
  $ribbon-width: calc($spacer * 2);
61
+
62
+ // accessible focus colors
63
+ $outer-focus-outline: #000 !default;
64
+ $inner-focus-border: #fff !default;
@@ -1,3 +1,9 @@
1
+ :focus:not(.focus--mouse),
2
+ %focus {
3
+ box-shadow: 0 0 0 2px $outer-focus-outline !important;
4
+ border: 2px solid $inner-focus-border !important;
5
+ }
6
+
1
7
  .skiplinks a:focus:not(.focus--mouse) {
2
8
  border: 2px solid;
3
9
  }
@@ -15,10 +15,11 @@
15
15
 
16
16
  .it-search-wrapper {
17
17
  a.search-link {
18
- outline: $header-center-bg-color 2px solid !important;
18
+ border: $header-center-bg-color 2px solid !important;
19
19
 
20
20
  &:focus {
21
- box-shadow: 0 0 0 5px $focus-outline-color !important;
21
+ outline: 2.5px solid $inner-focus-border !important;
22
+ box-shadow: 0 0 0 5px $outer-focus-outline !important;
22
23
  }
23
24
  }
24
25
  }