design-comuni-plone-theme 11.11.2 → 11.12.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 (41) hide show
  1. package/.github/workflows/npm.yml +5 -0
  2. 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
  3. package/.yarn/install-state.gz +0 -0
  4. package/CHANGELOG.md +51 -0
  5. package/RELEASE.md +23 -0
  6. package/locales/de/LC_MESSAGES/volto.po +15 -0
  7. package/locales/en/LC_MESSAGES/volto.po +15 -0
  8. package/locales/es/LC_MESSAGES/volto.po +15 -0
  9. package/locales/fr/LC_MESSAGES/volto.po +15 -0
  10. package/locales/it/LC_MESSAGES/volto.po +16 -1
  11. package/locales/volto.pot +16 -1
  12. package/package.json +6 -2
  13. package/publiccode.yml +2 -2
  14. package/src/components/ItaliaTheme/Blocks/IconBlocks/Block/ViewBlock.jsx +1 -2
  15. package/src/components/ItaliaTheme/Blocks/Listing/Commons/ListingImage.jsx +8 -4
  16. package/src/components/ItaliaTheme/Blocks/Listing/SmallBlockLinksTemplate.jsx +1 -0
  17. package/src/components/ItaliaTheme/Breadcrumbs/Breadcrumbs.jsx +13 -7
  18. package/src/components/ItaliaTheme/Header/HeaderSlim/TertiaryMenu.jsx +1 -1
  19. package/src/components/ItaliaTheme/Icons/FontAwesomeIcon.jsx +4 -4
  20. package/src/components/ItaliaTheme/Pagination/Pagination.jsx +5 -0
  21. package/src/components/ItaliaTheme/Pagination/PaginationItem.jsx +15 -1
  22. package/src/components/ItaliaTheme/Slider/SingleSlideWrapper.jsx +2 -0
  23. package/src/components/ItaliaTheme/View/Commons/PageHeader/PageHeaderBando.jsx +3 -0
  24. package/src/components/ItaliaTheme/View/Commons/PageHeader/PageHeaderTassonomiaArgomenti.jsx +4 -5
  25. package/src/components/ItaliaTheme/View/DocumentoView/DocumentoAccedereServizio.jsx +5 -8
  26. package/src/components/ItaliaTheme/View/FAQ/FaqFolder/SearchBar.jsx +5 -0
  27. package/src/components/ItaliaTheme/View/PersonaView/PersonaDocumenti.jsx +0 -1
  28. package/src/components/ItaliaTheme/View/ServizioView/ServizioCondizioni.jsx +5 -1
  29. package/src/components/ItaliaTheme/View/UOView/UOServices.jsx +38 -2
  30. package/src/config/italiaConfig.js +2 -2
  31. package/src/customizations/volto/components/manage/Blocks/Search/components/DateRangeFacet.jsx +16 -2
  32. package/src/customizations/volto/components/manage/UniversalLink/UniversalLink.jsx +3 -1
  33. package/src/customizations/volto-form-block/components/FormResult.jsx +78 -0
  34. package/src/customizations/volto-form-block/components/FormView.jsx +79 -66
  35. package/src/customizations/volto-form-block/components/Widget/Button.jsx +50 -0
  36. package/src/overrideTranslations.jsx +8 -0
  37. package/src/theme/ItaliaTheme/Blocks/_gridBlock.scss +5 -0
  38. package/src/theme/ItaliaTheme/Components/_pager.scss +10 -0
  39. package/src/theme/ItaliaTheme/Views/_slider.scss +1 -0
  40. package/src/theme/_site-variables.scss +1 -1
  41. package/src/theme/extras/_search.scss +5 -0
@@ -6,6 +6,9 @@ on:
6
6
  jobs:
7
7
  release_to_npm:
8
8
  runs-on: ubuntu-latest
9
+ permissions:
10
+ contents: read
11
+ id-token: write
9
12
  steps:
10
13
  - uses: actions/checkout@v4
11
14
 
@@ -14,6 +17,8 @@ jobs:
14
17
  node-version: '18.x'
15
18
  registry-url: 'https://registry.npmjs.org'
16
19
 
20
+ - run: npm install -g npm
21
+
17
22
  - run: yarn
18
23
 
19
24
  - name: Release to npm
Binary file
package/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
 
2
2
 
3
+ ## [11.12.1](https://github.com/redturtle/design-comuni-plone-theme/compare/v11.12.0...v11.12.1) (2024-05-21)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * use UniversalLink in PageHeaderTassonomiaArgomenti ([690da33](https://github.com/redturtle/design-comuni-plone-theme/commit/690da33a5f568b177a9ac748af5a85da7520e314))
9
+
10
+
11
+ ### Maintenance
12
+
13
+ * fix npm release script ([bb652d7](https://github.com/redturtle/design-comuni-plone-theme/commit/bb652d717558f1541ad9c4d5250effe3adcd7f0a))
14
+
15
+
16
+ ### Documentation
17
+
18
+ * updated publiccode and release log ([1b3b3a9](https://github.com/redturtle/design-comuni-plone-theme/commit/1b3b3a9a28fb7ec31124fab06fec984000ad67ce))
19
+
20
+ ## [11.12.0](https://github.com/redturtle/design-comuni-plone-theme/compare/v11.11.2...v11.12.0) (2024-05-21)
21
+
22
+
23
+ ### Features
24
+
25
+ * added link to cardWithImage image ([#682](https://github.com/redturtle/design-comuni-plone-theme/issues/682)) ([a223f33](https://github.com/redturtle/design-comuni-plone-theme/commit/a223f334dd4e1d19fb7e84958631778fc4d4bcff))
26
+ * added pagination to servizio cards in UO ([#678](https://github.com/redturtle/design-comuni-plone-theme/issues/678)) ([4abefd5](https://github.com/redturtle/design-comuni-plone-theme/commit/4abefd5859b66cb923c01951dcdfc63778875e8e))
27
+ * otp code in volto-form-block for bcc email fields ([#652](https://github.com/redturtle/design-comuni-plone-theme/issues/652)) ([c2a9a8c](https://github.com/redturtle/design-comuni-plone-theme/commit/c2a9a8cb50ca00b63c81040baab4426fd9b7f1f8))
28
+
29
+
30
+ ### Bug Fixes
31
+
32
+ * accessibility fixes after bootstrap-italia upgrade ([#679](https://github.com/redturtle/design-comuni-plone-theme/issues/679)) ([449875d](https://github.com/redturtle/design-comuni-plone-theme/commit/449875d85dd15c5b7af366309fd3982db3b33926))
33
+ * added a11y params for lisingImage ([#684](https://github.com/redturtle/design-comuni-plone-theme/issues/684)) ([da1110b](https://github.com/redturtle/design-comuni-plone-theme/commit/da1110bd58db54f4274558446bb5d452ba40383c))
34
+ * alignment of imgs in grid block ([#681](https://github.com/redturtle/design-comuni-plone-theme/issues/681)) ([aa3a243](https://github.com/redturtle/design-comuni-plone-theme/commit/aa3a243741d7407f8d7226b01a904545f90f5100))
35
+ * avoid unnecessary [@breadcrumbs](https://github.com/breadcrumbs) call ([#677](https://github.com/redturtle/design-comuni-plone-theme/issues/677)) ([25938aa](https://github.com/redturtle/design-comuni-plone-theme/commit/25938aa789a53b3eb87c47a18c935a9add2e1c3f))
36
+ * changed img layout in grid block ([#675](https://github.com/redturtle/design-comuni-plone-theme/issues/675)) ([1fa5557](https://github.com/redturtle/design-comuni-plone-theme/commit/1fa55574551f6cb0f34b88d3e7f1bc8b5e69db34))
37
+ * changed layout and styles of highlighted words in search page ([#683](https://github.com/redturtle/design-comuni-plone-theme/issues/683)) ([d8f4d09](https://github.com/redturtle/design-comuni-plone-theme/commit/d8f4d090286469d4efdbb42bf30505abaa48cab8))
38
+ * it translation for rrule ([#676](https://github.com/redturtle/design-comuni-plone-theme/issues/676)) ([d9a74eb](https://github.com/redturtle/design-comuni-plone-theme/commit/d9a74ebd58a17c10bceef9fbf558d7e74ec16c99))
39
+ * prevent xss in form block reading sent data from BE response ([#651](https://github.com/redturtle/design-comuni-plone-theme/issues/651)) ([81a5a9e](https://github.com/redturtle/design-comuni-plone-theme/commit/81a5a9edd9cfa9072d2f746b607b04d30fc1845b))
40
+ * removed unnecessary text - documento accedi al servizio ([#663](https://github.com/redturtle/design-comuni-plone-theme/issues/663)) ([fad9abb](https://github.com/redturtle/design-comuni-plone-theme/commit/fad9abb65989b18de1d7fc75ae61c208f1e62da9))
41
+ * translation for rrule_on ([#680](https://github.com/redturtle/design-comuni-plone-theme/issues/680)) ([009c72a](https://github.com/redturtle/design-comuni-plone-theme/commit/009c72af463f5748a64f2c9c0afe0567ca192c26))
42
+ * update volto-form-block to 3.8.3 ([46c55fe](https://github.com/redturtle/design-comuni-plone-theme/commit/46c55fe71ab533d66b4ec75374d7332a2539699d))
43
+
44
+
45
+ ### Maintenance
46
+
47
+ * fix npm release script ([fcdce81](https://github.com/redturtle/design-comuni-plone-theme/commit/fcdce81c3fcfd5f46dd495dace84d662ffa7d307))
48
+
49
+
50
+ ### Documentation
51
+
52
+ * updated publiccode and release log ([61e1da3](https://github.com/redturtle/design-comuni-plone-theme/commit/61e1da376c3f64569d36144be21da1fcf00dff90))
53
+
3
54
  ## [11.11.2](https://github.com/redturtle/design-comuni-plone-theme/compare/v11.11.1...v11.11.2) (2024-05-02)
4
55
 
5
56
 
package/RELEASE.md CHANGED
@@ -41,6 +41,29 @@
41
41
  - ...
42
42
  -->
43
43
 
44
+ ## Versione 11.12.1 (21/05/2024)
45
+
46
+ ### Migliorie
47
+
48
+ - Migliorate le performance di navigazione per alcuni link agli argomenti nella testata delle pagine.
49
+
50
+ ## Versione 11.12.0 (21/05/2024)
51
+
52
+ ### Migliorie
53
+
54
+ - Se una Unità Organizzativa è collegata a più di 4 servizi, le card dei servizi collegati verranno divise in diverse pagine navigabili da uno strumento di paginazione per rendere lo scorrimento della pagina più semplice.
55
+ - Cambiato il layout delle immagini all'interno del blocco Griglia.
56
+ - Migliorata la visualizzazione delle parole evidenziate nella pagina di Ricerca.
57
+ - Rinominato il contenitore "Altri allegati" dentro i contenuti di tipo Persona in "Altri documenti".
58
+
59
+ ### Novità
60
+
61
+ - Le immagini delle Card con Immagine del blocco Elenco sono ora cliccabili. Cliccandole si apre il contenuto della Card.
62
+
63
+ ### Fix
64
+
65
+ - Corretto il testo per la ricorrenza eventi nel CT Eventi.
66
+
44
67
  ## Versione 11.11.1 (02/05/2024)
45
68
 
46
69
  ### Migliorie
@@ -119,6 +119,11 @@ msgstr ""
119
119
  msgid "Cerca per parola chiave"
120
120
  msgstr ""
121
121
 
122
+ #: overrideTranslations
123
+ # defaultMessage: Pulisci i campi
124
+ msgid "Clear dates"
125
+ msgstr ""
126
+
122
127
  #: helpers/Translations/searchBlockExtendedTranslations
123
128
  # defaultMessage: Clear filters
124
129
  msgid "Clear filters"
@@ -3007,6 +3012,11 @@ msgstr ""
3007
3012
  msgid "rrule_nd"
3008
3013
  msgstr ""
3009
3014
 
3015
+ #: overrideTranslations
3016
+ # defaultMessage: di
3017
+ msgid "rrule_on"
3018
+ msgstr ""
3019
+
3010
3020
  #: overrideTranslations
3011
3021
  # defaultMessage: di
3012
3022
  msgid "rrule_on the"
@@ -3297,6 +3307,11 @@ msgstr ""
3297
3307
  msgid "search_endDate"
3298
3308
  msgstr ""
3299
3309
 
3310
+ #: components/ItaliaTheme/View/FAQ/FaqFolder/SearchBar
3311
+ # defaultMessage: Search icon
3312
+ msgid "search_icon"
3313
+ msgstr ""
3314
+
3300
3315
  #: components/ItaliaTheme/Blocks/SearchSections/SideBar
3301
3316
  # defaultMessage: Dove cercare
3302
3317
  msgid "search_sections"
@@ -104,6 +104,11 @@ msgstr "Search by topic"
104
104
  msgid "Cerca per parola chiave"
105
105
  msgstr "Search by keyword"
106
106
 
107
+ #: overrideTranslations
108
+ # defaultMessage: Pulisci i campi
109
+ msgid "Clear dates"
110
+ msgstr ""
111
+
107
112
  #: helpers/Translations/searchBlockExtendedTranslations
108
113
  # defaultMessage: Clear filters
109
114
  msgid "Clear filters"
@@ -2992,6 +2997,11 @@ msgstr "in"
2992
2997
  msgid "rrule_nd"
2993
2998
  msgstr "nd"
2994
2999
 
3000
+ #: overrideTranslations
3001
+ # defaultMessage: di
3002
+ msgid "rrule_on"
3003
+ msgstr "on"
3004
+
2995
3005
  #: overrideTranslations
2996
3006
  # defaultMessage: di
2997
3007
  msgid "rrule_on the"
@@ -3282,6 +3292,11 @@ msgstr "Types"
3282
3292
  msgid "search_endDate"
3283
3293
  msgstr ""
3284
3294
 
3295
+ #: components/ItaliaTheme/View/FAQ/FaqFolder/SearchBar
3296
+ # defaultMessage: Search icon
3297
+ msgid "search_icon"
3298
+ msgstr ""
3299
+
3285
3300
  #: components/ItaliaTheme/Blocks/SearchSections/SideBar
3286
3301
  # defaultMessage: Dove cercare
3287
3302
  msgid "search_sections"
@@ -113,6 +113,11 @@ msgstr "Buscar por tema"
113
113
  msgid "Cerca per parola chiave"
114
114
  msgstr "Buscar por palabra clave"
115
115
 
116
+ #: overrideTranslations
117
+ # defaultMessage: Pulisci i campi
118
+ msgid "Clear dates"
119
+ msgstr ""
120
+
116
121
  #: helpers/Translations/searchBlockExtendedTranslations
117
122
  # defaultMessage: Clear filters
118
123
  msgid "Clear filters"
@@ -3001,6 +3006,11 @@ msgstr ""
3001
3006
  msgid "rrule_nd"
3002
3007
  msgstr ""
3003
3008
 
3009
+ #: overrideTranslations
3010
+ # defaultMessage: di
3011
+ msgid "rrule_on"
3012
+ msgstr ""
3013
+
3004
3014
  #: overrideTranslations
3005
3015
  # defaultMessage: di
3006
3016
  msgid "rrule_on the"
@@ -3291,6 +3301,11 @@ msgstr "Tipo de elementos"
3291
3301
  msgid "search_endDate"
3292
3302
  msgstr "Fecha de fin"
3293
3303
 
3304
+ #: components/ItaliaTheme/View/FAQ/FaqFolder/SearchBar
3305
+ # defaultMessage: Search icon
3306
+ msgid "search_icon"
3307
+ msgstr ""
3308
+
3294
3309
  #: components/ItaliaTheme/Blocks/SearchSections/SideBar
3295
3310
  # defaultMessage: Dove cercare
3296
3311
  msgid "search_sections"
@@ -121,6 +121,11 @@ msgstr "Recherche par sujet"
121
121
  msgid "Cerca per parola chiave"
122
122
  msgstr "Recherche par mots-clés"
123
123
 
124
+ #: overrideTranslations
125
+ # defaultMessage: Pulisci i campi
126
+ msgid "Clear dates"
127
+ msgstr ""
128
+
124
129
  #: helpers/Translations/searchBlockExtendedTranslations
125
130
  # defaultMessage: Clear filters
126
131
  msgid "Clear filters"
@@ -3009,6 +3014,11 @@ msgstr ""
3009
3014
  msgid "rrule_nd"
3010
3015
  msgstr ""
3011
3016
 
3017
+ #: overrideTranslations
3018
+ # defaultMessage: di
3019
+ msgid "rrule_on"
3020
+ msgstr ""
3021
+
3012
3022
  #: overrideTranslations
3013
3023
  # defaultMessage: di
3014
3024
  msgid "rrule_on the"
@@ -3299,6 +3309,11 @@ msgstr "Type d'éléments"
3299
3309
  msgid "search_endDate"
3300
3310
  msgstr "Date de fin"
3301
3311
 
3312
+ #: components/ItaliaTheme/View/FAQ/FaqFolder/SearchBar
3313
+ # defaultMessage: Search icon
3314
+ msgid "search_icon"
3315
+ msgstr ""
3316
+
3302
3317
  #: components/ItaliaTheme/Blocks/SearchSections/SideBar
3303
3318
  # defaultMessage: Dove cercare
3304
3319
  msgid "search_sections"
@@ -104,6 +104,11 @@ msgstr "Cerca per argomento"
104
104
  msgid "Cerca per parola chiave"
105
105
  msgstr "Cerca per parola chiave"
106
106
 
107
+ #: overrideTranslations
108
+ # defaultMessage: Pulisci i campi
109
+ msgid "Clear dates"
110
+ msgstr ""
111
+
107
112
  #: helpers/Translations/searchBlockExtendedTranslations
108
113
  # defaultMessage: Clear filters
109
114
  msgid "Clear filters"
@@ -2992,10 +2997,15 @@ msgstr "il giorno"
2992
2997
  msgid "rrule_nd"
2993
2998
  msgstr " "
2994
2999
 
3000
+ #: overrideTranslations
3001
+ # defaultMessage: di
3002
+ msgid "rrule_on"
3003
+ msgstr "di"
3004
+
2995
3005
  #: overrideTranslations
2996
3006
  # defaultMessage: di
2997
3007
  msgid "rrule_on the"
2998
- msgstr "il giorno"
3008
+ msgstr "di"
2999
3009
 
3000
3010
  #: overrideTranslations
3001
3011
  # defaultMessage: _
@@ -3282,6 +3292,11 @@ msgstr "Tipologia"
3282
3292
  msgid "search_endDate"
3283
3293
  msgstr "Data fine"
3284
3294
 
3295
+ #: components/ItaliaTheme/View/FAQ/FaqFolder/SearchBar
3296
+ # defaultMessage: Search icon
3297
+ msgid "search_icon"
3298
+ msgstr "Icona cerca"
3299
+
3285
3300
  #: components/ItaliaTheme/Blocks/SearchSections/SideBar
3286
3301
  # defaultMessage: Dove cercare
3287
3302
  msgid "search_sections"
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,8 +2,12 @@
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.2",
5
+ "version": "11.12.1",
6
6
  "main": "src/index.js",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/RedTurtle/design-comuni-plone-theme"
10
+ },
7
11
  "keywords": [
8
12
  "volto-addon",
9
13
  "volto",
@@ -147,7 +151,7 @@
147
151
  "volto-dropdownmenu": "4.1.1",
148
152
  "volto-editablefooter": "5.1.1",
149
153
  "volto-feedback": "0.3.0",
150
- "volto-form-block": "3.7.2",
154
+ "volto-form-block": "3.8.3",
151
155
  "volto-gdpr-privacy": "2.2.5",
152
156
  "volto-google-analytics": "2.0.0",
153
157
  "volto-multilingual-widget": "3.2.1",
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.2
232
+ softwareVersion: 11.12.1
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}
@@ -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} />
@@ -3,7 +3,7 @@ import { defineMessages, useIntl } from 'react-intl';
3
3
  import PropTypes from 'prop-types';
4
4
  import { Chip, ChipLabel } from 'design-react-kit';
5
5
 
6
- import { flattenToAppURL } from '@plone/volto/helpers';
6
+ import { UniversalLink } from '@plone/volto/components';
7
7
 
8
8
  /**
9
9
  * PageHeaderTassonomiaArgomenti view component class.
@@ -28,17 +28,16 @@ const PageHeaderTassonomiaArgomenti = ({ content }) => {
28
28
  <small>{intl.formatMessage(messages.topics)}</small>
29
29
  </h5>
30
30
  {content.tassonomia_argomenti.map((item, i) => (
31
- <a
32
- href={flattenToAppURL(item['@id'])}
31
+ <UniversalLink
32
+ item={item}
33
33
  key={item['@id']}
34
- title={item.title}
35
34
  className="text-decoration-none me-2 d-inline-block"
36
35
  data-element="service-topic"
37
36
  >
38
37
  <Chip color="primary" disabled={false} large={false} simple tag="div">
39
38
  <ChipLabel tag="span">{item.title}</ChipLabel>
40
39
  </Chip>
41
- </a>
40
+ </UniversalLink>
42
41
  ))}
43
42
  </div>
44
43
  ) : null;
@@ -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
  };
@@ -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;
@@ -5,19 +5,17 @@
5
5
  */
6
6
  import React from 'react';
7
7
  import { useIntl, defineMessages } from 'react-intl';
8
- import {
9
- Card,
10
- CardBody,
11
- Row,
12
- Col,
13
- Button,
14
- Alert,
15
- Progress,
16
- } from 'design-react-kit';
8
+ import { Card, CardBody, Row, Col, Alert, Progress } from 'design-react-kit';
17
9
  // eslint-disable-next-line import/no-unresolved
18
10
  import { getFieldName } from 'volto-form-block/components/utils';
19
11
  // eslint-disable-next-line import/no-unresolved
20
12
  import Field from 'volto-form-block/components/Field';
13
+ import {
14
+ OTPWidget,
15
+ OTP_FIELDNAME_EXTENDER,
16
+ Button,
17
+ } from 'volto-form-block/components/Widget';
18
+ import { FormResult } from 'volto-form-block/components';
21
19
  // eslint-disable-next-line import/no-unresolved
22
20
  import config from '@plone/volto/registry';
23
21
 
@@ -64,6 +62,8 @@ const FormView = ({
64
62
  captcha,
65
63
  id,
66
64
  getErrorMessage,
65
+ path,
66
+ block_id,
67
67
  }) => {
68
68
  const intl = useIntl();
69
69
  const alertTransition = {
@@ -86,23 +86,6 @@ const FormView = ({
86
86
  return formErrors?.filter((e) => e.field === field).length === 0;
87
87
  };
88
88
 
89
- /* Function that replaces variables from the user customized message */
90
- const replaceMessage = (text) => {
91
- let i = 0;
92
- while (i < data.subblocks.length) {
93
- let idField = getFieldName(
94
- data.subblocks[i].label,
95
- data.subblocks[i].field_id,
96
- );
97
- text = text.replaceAll(
98
- '${' + idField + '}',
99
- formData[idField]?.value || '',
100
- );
101
- i++;
102
- }
103
- return text;
104
- };
105
-
106
89
  var FieldSchema = config.blocks.blocksConfig.form.fieldSchema;
107
90
  var fieldSchemaProperties = FieldSchema()?.properties;
108
91
  var fields_to_send = [];
@@ -117,6 +100,26 @@ const FormView = ({
117
100
  onSubmit(e);
118
101
  };
119
102
 
103
+ const getFieldsToSendWithValue = (subblock) => {
104
+ var fields_to_send = [];
105
+ var fieldSchemaProperties = FieldSchema(subblock)?.properties;
106
+ for (var key in fieldSchemaProperties) {
107
+ if (fieldSchemaProperties[key].send_to_backend) {
108
+ fields_to_send.push(key);
109
+ }
110
+ }
111
+
112
+ var fields_to_send_with_value = Object.assign(
113
+ {},
114
+ ...fields_to_send.map((field) => {
115
+ return {
116
+ [field]: subblock[field],
117
+ };
118
+ }),
119
+ );
120
+ return fields_to_send_with_value;
121
+ };
122
+
120
123
  return (
121
124
  <div className="block form">
122
125
  <div className="public-ui">
@@ -128,38 +131,11 @@ const FormView = ({
128
131
  <Card className="card-bg rounded py-3" noWrapper={false} tag="div">
129
132
  <CardBody tag="div">
130
133
  {formState.result ? (
131
- <Alert
132
- color="success"
133
- fade
134
- isOpen
135
- tag="div"
136
- transition={alertTransition}
137
- >
138
- <h4>{intl.formatMessage(messages.success)}</h4>
139
- <br />
140
- {/* Custom message */}
141
- {data.send_message && (
142
- <>
143
- <p
144
- dangerouslySetInnerHTML={{
145
- __html: replaceMessage(data.send_message),
146
- }}
147
- />
148
- <br />
149
- </>
150
- )}
151
- <Button
152
- color="primary"
153
- outline
154
- onClick={(e) => {
155
- e.preventDefault();
156
- e.stopPropagation();
157
- resetFormState();
158
- }}
159
- >
160
- {intl.formatMessage(messages.reset)}
161
- </Button>
162
- </Alert>
134
+ <FormResult
135
+ formState={formState}
136
+ data={data}
137
+ resetFormState={resetFormState}
138
+ />
163
139
  ) : (
164
140
  <form
165
141
  onSubmit={submit}
@@ -201,14 +177,8 @@ const FormView = ({
201
177
  )}
202
178
  {data.subblocks.map((subblock, index) => {
203
179
  let name = getFieldName(subblock.label, subblock.id);
204
- var fields_to_send_with_value = Object.assign(
205
- {},
206
- ...fields_to_send.map((field) => {
207
- return {
208
- [field]: subblock[field],
209
- };
210
- }),
211
- );
180
+ const fields_to_send_with_value =
181
+ getFieldsToSendWithValue(subblock);
212
182
 
213
183
  return (
214
184
  <Row key={'row' + index}>
@@ -238,6 +208,49 @@ const FormView = ({
238
208
  );
239
209
  })}
240
210
 
211
+ {/*OTP*/}
212
+ {data.subblocks
213
+ .filter((subblock) => subblock.use_as_bcc)
214
+ .map((subblock, index) => {
215
+ const fieldName = getFieldName(
216
+ subblock.label,
217
+ subblock.id,
218
+ );
219
+ const name = fieldName + OTP_FIELDNAME_EXTENDER;
220
+ const fieldValue = formData[fieldName]?.value;
221
+ const value = formData[fieldName]?.otp;
222
+ const fields_to_send_with_value =
223
+ getFieldsToSendWithValue(subblock);
224
+
225
+ return (
226
+ <Row key={'row_otp' + index}>
227
+ <Col className="py-2">
228
+ <OTPWidget
229
+ {...subblock}
230
+ fieldValue={fieldValue}
231
+ onChange={(field, value) => {
232
+ onChangeFormData(
233
+ subblock.id,
234
+ fieldName,
235
+ fieldValue,
236
+ {
237
+ ...fields_to_send_with_value,
238
+ otp: value,
239
+ },
240
+ );
241
+ }}
242
+ value={value}
243
+ valid={isValidField(name)}
244
+ errorMessage={getErrorMessage(name)}
245
+ formHasErrors={formErrors?.length > 0}
246
+ path={path}
247
+ block_id={block_id}
248
+ />
249
+ </Col>
250
+ </Row>
251
+ );
252
+ })}
253
+
241
254
  {enableCaptcha && <>{captcha.render()}</>}
242
255
 
243
256
  {formErrors.length > 0 && (
@@ -0,0 +1,50 @@
1
+ /**
2
+ * customizations:
3
+ * used design-react-kit button
4
+ *
5
+ *
6
+ * Button component.
7
+ * This is a wrapper for Buttons, to eventually customize Button component if you don't like to use semantic-ui, for example.
8
+ * @module components/Widget/OTPWidget
9
+ */
10
+
11
+ import { Button as DesignButton } from 'design-react-kit';
12
+
13
+ const Button = (props) => {
14
+ let _props = { ...props };
15
+ if (props.primary) {
16
+ _props.color = 'primary';
17
+ delete _props.primary;
18
+ }
19
+ if (props.secondary) {
20
+ _props.color = 'secondary';
21
+ delete _props.secondary;
22
+ }
23
+ if (props.basic) {
24
+ _props.outline = true;
25
+ delete _props.basic;
26
+ }
27
+ if (props.size) {
28
+ switch (props.size) {
29
+ case 'mini':
30
+ case 'tiny':
31
+ case 'small':
32
+ _props.size = 'xs';
33
+ break;
34
+ case 'medium':
35
+ case 'large':
36
+ _props.size = 'sm';
37
+ break;
38
+ case 'big':
39
+ case 'huge':
40
+ case 'massive':
41
+ _props.size = 'lg';
42
+ break;
43
+ default:
44
+ break;
45
+ }
46
+ }
47
+ return <DesignButton {..._props} />;
48
+ };
49
+
50
+ export default Button;
@@ -21,6 +21,10 @@ defineMessages({
21
21
  id: 'rrule_in',
22
22
  defaultMessage: 'il giorno',
23
23
  },
24
+ rrule_on: {
25
+ id: 'rrule_on',
26
+ defaultMessage: 'di',
27
+ },
24
28
  rrule_on_the: {
25
29
  id: 'rrule_on the',
26
30
  defaultMessage: 'di',
@@ -60,4 +64,8 @@ defineMessages({
60
64
  id: 'toggleMenu_close',
61
65
  defaultMessage: 'Chiudi',
62
66
  },
67
+ clearDates: {
68
+ id: 'Clear dates',
69
+ defaultMessage: 'Pulisci i campi',
70
+ },
63
71
  });
@@ -52,6 +52,11 @@
52
52
  }
53
53
  }
54
54
  }
55
+
56
+ &.image img {
57
+ object-fit: contain;
58
+ object-position: center;
59
+ }
55
60
  }
56
61
 
57
62
  //in edit (cms-ui)
@@ -19,3 +19,13 @@
19
19
  }
20
20
  }
21
21
  }
22
+
23
+ .pagination-wrapper {
24
+ li.page-item {
25
+ button.page-link {
26
+ .icon.icon-primary.disabled {
27
+ fill: $gray-600 !important;
28
+ }
29
+ }
30
+ }
31
+ }
@@ -12,6 +12,7 @@
12
12
  &:focus {
13
13
  border: 1px solid;
14
14
  }
15
+
15
16
  figure {
16
17
  a {
17
18
  display: block;
@@ -16,7 +16,7 @@ $primary-text: #fff !default;
16
16
  $secondary-text: #fff !default;
17
17
  $tertiary: #be2816 !default;
18
18
  $tertiary-text: #fff !default;
19
- $highlight-search: #ff0 !default;
19
+ $highlight-search: #ffff00 !default;
20
20
  $font-family-monospace-light: Roboto Mono Light !default;
21
21
 
22
22
  // Per abilitare l'header bianco impostare a true
@@ -89,6 +89,7 @@ body.search-modal-opened {
89
89
 
90
90
  .search-results-wrapper {
91
91
  mark.highlighted-text {
92
+ padding: 0em 0.1875em;
92
93
  background-color: $highlight-search;
93
94
  }
94
95
 
@@ -103,6 +104,10 @@ body.search-modal-opened {
103
104
  content: none;
104
105
  }
105
106
  }
107
+
108
+ .card-title {
109
+ line-height: 1.3em;
110
+ }
106
111
  }
107
112
  }
108
113