design-comuni-plone-theme 11.30.4 → 11.31.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 (25) hide show
  1. package/.yarn/cache/brace-expansion-npm-1.1.12-329e9ad7a1-12cb6d6310.zip +0 -0
  2. package/.yarn/cache/{volto-form-block-npm-3.10.0-8cd1c7a976-8ddce2c624.zip → volto-form-block-npm-3.12.0-0e050cb6bf-878c6f6af8.zip} +0 -0
  3. package/.yarn/install-state.gz +0 -0
  4. package/CHANGELOG.md +26 -0
  5. package/RELEASE.md +14 -0
  6. package/locales/de/LC_MESSAGES/volto.po +50 -0
  7. package/locales/en/LC_MESSAGES/volto.po +50 -0
  8. package/locales/es/LC_MESSAGES/volto.po +50 -0
  9. package/locales/fr/LC_MESSAGES/volto.po +50 -0
  10. package/locales/it/LC_MESSAGES/volto.po +50 -0
  11. package/locales/volto.pot +51 -1
  12. package/package.json +2 -2
  13. package/publiccode.yml +31 -7
  14. package/src/components/ItaliaTheme/Blocks/Listing/BandiInEvidenceTemplate.jsx +131 -126
  15. package/src/components/ItaliaTheme/Blocks/Listing/PhotogalleryTemplate.jsx +3 -2
  16. package/src/components/ItaliaTheme/Blocks/Listing/SliderTemplate.jsx +1 -0
  17. package/src/components/ItaliaTheme/Blocks/VideoGallery/Body.jsx +1 -0
  18. package/src/components/ItaliaTheme/View/Commons/Gallery.jsx +1 -0
  19. package/src/customizations/volto-form-block/components/FormView.jsx +34 -28
  20. package/src/customizations/volto-form-block/components/Sidebar.jsx +9 -0
  21. package/src/customizations/volto-form-block/fieldSchema.js +11 -0
  22. package/src/overrideTranslations.jsx +30 -3
  23. package/src/theme/ItaliaTheme/Blocks/_bandiInEvidenceTemplate.scss +4 -54
  24. package/src/theme/ItaliaTheme/Blocks/_form.scss +18 -1
  25. package/.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip +0 -0
Binary file
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
 
2
2
 
3
+ ## [11.31.0](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.30.4...v11.31.0) (2025-06-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * added new feature of volto-form-block, conditions to show or hide fields ([#946](https://github.com/RedTurtle/design-comuni-plone-theme/issues/946)) ([b7c1d37](https://github.com/RedTurtle/design-comuni-plone-theme/commit/b7c1d377d0bb16f2b32cee44704c273084fcef15))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * card width of bandi template ([#955](https://github.com/RedTurtle/design-comuni-plone-theme/issues/955)) ([c3ee303](https://github.com/RedTurtle/design-comuni-plone-theme/commit/c3ee303f780924a4e232be53686e1e4427ee42e2))
14
+
15
+
16
+ ### Maintenance
17
+
18
+ * **deps:** bump brace-expansion from 1.1.11 to 1.1.12 ([#958](https://github.com/RedTurtle/design-comuni-plone-theme/issues/958)) ([101dac1](https://github.com/RedTurtle/design-comuni-plone-theme/commit/101dac16f2efb0d3eebd17baaf4eabbf218f01ef))
19
+ * lazyloading images in all slick slider ([#959](https://github.com/RedTurtle/design-comuni-plone-theme/issues/959)) ([0df0b28](https://github.com/RedTurtle/design-comuni-plone-theme/commit/0df0b28602606a8a54be40be009ef90e697d2d18))
20
+
21
+
22
+ ### Documentation
23
+
24
+ * nuovo logo ([#208](https://github.com/RedTurtle/design-comuni-plone-theme/issues/208)) ([64ba7d4](https://github.com/RedTurtle/design-comuni-plone-theme/commit/64ba7d4ed182b19a7389cd24c07cf729a8ae356d))
25
+ * **publiccode:** update usedBy ([#207](https://github.com/RedTurtle/design-comuni-plone-theme/issues/207)) ([484c174](https://github.com/RedTurtle/design-comuni-plone-theme/commit/484c17409acb76f52fa81d7e847e94d445136118))
26
+ * updated publiccode ([bee5b60](https://github.com/RedTurtle/design-comuni-plone-theme/commit/bee5b60dca1775db94ad4c33b837be040bb58f95))
27
+ * updated publiccode and release log ([6bdbb36](https://github.com/RedTurtle/design-comuni-plone-theme/commit/6bdbb36cf85f21d989c1128849f00ae16152cb64))
28
+
3
29
  ## [11.30.4](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.30.3...v11.30.4) (2025-05-22)
4
30
 
5
31
 
package/RELEASE.md CHANGED
@@ -41,6 +41,20 @@
41
41
  - ...
42
42
  -->
43
43
 
44
+ ## Versione 11.31.0 (17/06/2025)
45
+
46
+ ### Migliorie
47
+
48
+ - Le immagini negli slider vengono ora caricate in modalità 'lazy', in modo da alleggerire il caricamento iniziale della pagina.
49
+
50
+ ### Novità
51
+
52
+ - Blocco form aggiornato, ora è possibile rendere visibili i vari campi solo quando vengono soddisfatte determinate condizioni create dal redattore.
53
+
54
+ ### Fix
55
+
56
+ - Sistemata la dimensione delle card nella variazione Bandi del blocco elenco.
57
+
44
58
  ## Versione 11.30.4 (22/05/2025)
45
59
 
46
60
  ### Fix
@@ -1383,6 +1383,56 @@ msgstr ""
1383
1383
  msgid "competenze"
1384
1384
  msgstr ""
1385
1385
 
1386
+ #: overrideTranslations
1387
+ # defaultMessage: Contiene
1388
+ msgid "condition_contains"
1389
+ msgstr ""
1390
+
1391
+ #: overrideTranslations
1392
+ # defaultMessage: È maggiore o uguale
1393
+ msgid "condition_greater_or_equal"
1394
+ msgstr ""
1395
+
1396
+ #: overrideTranslations
1397
+ # defaultMessage: È maggiore di
1398
+ msgid "condition_greater_than"
1399
+ msgstr ""
1400
+
1401
+ #: overrideTranslations
1402
+ # defaultMessage: È vuoto
1403
+ msgid "condition_is_empty"
1404
+ msgstr ""
1405
+
1406
+ #: overrideTranslations
1407
+ # defaultMessage: È uguale a
1408
+ msgid "condition_is_equal_to"
1409
+ msgstr ""
1410
+
1411
+ #: overrideTranslations
1412
+ # defaultMessage: Non è vuoto
1413
+ msgid "condition_is_not_empty"
1414
+ msgstr ""
1415
+
1416
+ #: overrideTranslations
1417
+ # defaultMessage: Non è uguale a
1418
+ msgid "condition_is_not_equal_to"
1419
+ msgstr ""
1420
+
1421
+ #: overrideTranslations
1422
+ # defaultMessage: È minore o uguale
1423
+ msgid "condition_less_or_equal"
1424
+ msgstr ""
1425
+
1426
+ #: overrideTranslations
1427
+ # defaultMessage: È minore di
1428
+ msgid "condition_less_than"
1429
+ msgstr ""
1430
+
1431
+ #: overrideTranslations
1432
+ # defaultMessage: Non contiene
1433
+ msgid "condition_not_contains"
1434
+ msgstr ""
1435
+
1386
1436
  #: components/ItaliaTheme/View/PersonaView/PersonaContatti
1387
1437
  # defaultMessage: Contatti
1388
1438
  msgid "contacts"
@@ -1368,6 +1368,56 @@ msgstr "Remunerations"
1368
1368
  msgid "competenze"
1369
1369
  msgstr "Skills"
1370
1370
 
1371
+ #: overrideTranslations
1372
+ # defaultMessage: Contiene
1373
+ msgid "condition_contains"
1374
+ msgstr "Contains"
1375
+
1376
+ #: overrideTranslations
1377
+ # defaultMessage: È maggiore o uguale
1378
+ msgid "condition_greater_or_equal"
1379
+ msgstr "Greater or equal"
1380
+
1381
+ #: overrideTranslations
1382
+ # defaultMessage: È maggiore di
1383
+ msgid "condition_greater_than"
1384
+ msgstr "Greater than"
1385
+
1386
+ #: overrideTranslations
1387
+ # defaultMessage: È vuoto
1388
+ msgid "condition_is_empty"
1389
+ msgstr "Is empty"
1390
+
1391
+ #: overrideTranslations
1392
+ # defaultMessage: È uguale a
1393
+ msgid "condition_is_equal_to"
1394
+ msgstr "Is equal to"
1395
+
1396
+ #: overrideTranslations
1397
+ # defaultMessage: Non è vuoto
1398
+ msgid "condition_is_not_empty"
1399
+ msgstr "Is not empty"
1400
+
1401
+ #: overrideTranslations
1402
+ # defaultMessage: Non è uguale a
1403
+ msgid "condition_is_not_equal_to"
1404
+ msgstr "Is not equal to"
1405
+
1406
+ #: overrideTranslations
1407
+ # defaultMessage: È minore o uguale
1408
+ msgid "condition_less_or_equal"
1409
+ msgstr "Less or equal"
1410
+
1411
+ #: overrideTranslations
1412
+ # defaultMessage: È minore di
1413
+ msgid "condition_less_than"
1414
+ msgstr "Less than"
1415
+
1416
+ #: overrideTranslations
1417
+ # defaultMessage: Non contiene
1418
+ msgid "condition_not_contains"
1419
+ msgstr "Not contains"
1420
+
1371
1421
  #: components/ItaliaTheme/View/PersonaView/PersonaContatti
1372
1422
  # defaultMessage: Contatti
1373
1423
  msgid "contacts"
@@ -1377,6 +1377,56 @@ msgstr "Compensaciones"
1377
1377
  msgid "competenze"
1378
1378
  msgstr "Habilidades"
1379
1379
 
1380
+ #: overrideTranslations
1381
+ # defaultMessage: Contiene
1382
+ msgid "condition_contains"
1383
+ msgstr "Contiene"
1384
+
1385
+ #: overrideTranslations
1386
+ # defaultMessage: È maggiore o uguale
1387
+ msgid "condition_greater_or_equal"
1388
+ msgstr "Es mayor o igual a"
1389
+
1390
+ #: overrideTranslations
1391
+ # defaultMessage: È maggiore di
1392
+ msgid "condition_greater_than"
1393
+ msgstr "Es mayor que"
1394
+
1395
+ #: overrideTranslations
1396
+ # defaultMessage: È vuoto
1397
+ msgid "condition_is_empty"
1398
+ msgstr "Esta vacio"
1399
+
1400
+ #: overrideTranslations
1401
+ # defaultMessage: È uguale a
1402
+ msgid "condition_is_equal_to"
1403
+ msgstr "Es lo mismo que"
1404
+
1405
+ #: overrideTranslations
1406
+ # defaultMessage: Non è vuoto
1407
+ msgid "condition_is_not_empty"
1408
+ msgstr "No está vacío"
1409
+
1410
+ #: overrideTranslations
1411
+ # defaultMessage: Non è uguale a
1412
+ msgid "condition_is_not_equal_to"
1413
+ msgstr "No es lo mismo que"
1414
+
1415
+ #: overrideTranslations
1416
+ # defaultMessage: È minore o uguale
1417
+ msgid "condition_less_or_equal"
1418
+ msgstr "Es menor o igual a"
1419
+
1420
+ #: overrideTranslations
1421
+ # defaultMessage: È minore di
1422
+ msgid "condition_less_than"
1423
+ msgstr "Es menos que"
1424
+
1425
+ #: overrideTranslations
1426
+ # defaultMessage: Non contiene
1427
+ msgid "condition_not_contains"
1428
+ msgstr "No contiene"
1429
+
1380
1430
  #: components/ItaliaTheme/View/PersonaView/PersonaContatti
1381
1431
  # defaultMessage: Contatti
1382
1432
  msgid "contacts"
@@ -1385,6 +1385,56 @@ msgstr "Compensations"
1385
1385
  msgid "competenze"
1386
1386
  msgstr "Compétences"
1387
1387
 
1388
+ #: overrideTranslations
1389
+ # defaultMessage: Contiene
1390
+ msgid "condition_contains"
1391
+ msgstr "Contient"
1392
+
1393
+ #: overrideTranslations
1394
+ # defaultMessage: È maggiore o uguale
1395
+ msgid "condition_greater_or_equal"
1396
+ msgstr "Il est supérieur ou égal à"
1397
+
1398
+ #: overrideTranslations
1399
+ # defaultMessage: È maggiore di
1400
+ msgid "condition_greater_than"
1401
+ msgstr "C'est plus grand que"
1402
+
1403
+ #: overrideTranslations
1404
+ # defaultMessage: È vuoto
1405
+ msgid "condition_is_empty"
1406
+ msgstr "C'est vide"
1407
+
1408
+ #: overrideTranslations
1409
+ # defaultMessage: È uguale a
1410
+ msgid "condition_is_equal_to"
1411
+ msgstr "C'est la même chose que"
1412
+
1413
+ #: overrideTranslations
1414
+ # defaultMessage: Non è vuoto
1415
+ msgid "condition_is_not_empty"
1416
+ msgstr "Ce n'est pas vide"
1417
+
1418
+ #: overrideTranslations
1419
+ # defaultMessage: Non è uguale a
1420
+ msgid "condition_is_not_equal_to"
1421
+ msgstr "Ce n'est pas la même chose que"
1422
+
1423
+ #: overrideTranslations
1424
+ # defaultMessage: È minore o uguale
1425
+ msgid "condition_less_or_equal"
1426
+ msgstr "Il est inférieur ou égal à"
1427
+
1428
+ #: overrideTranslations
1429
+ # defaultMessage: È minore di
1430
+ msgid "condition_less_than"
1431
+ msgstr "C'est moins que"
1432
+
1433
+ #: overrideTranslations
1434
+ # defaultMessage: Non contiene
1435
+ msgid "condition_not_contains"
1436
+ msgstr "Ne contient pas"
1437
+
1388
1438
  #: components/ItaliaTheme/View/PersonaView/PersonaContatti
1389
1439
  # defaultMessage: Contatti
1390
1440
  msgid "contacts"
@@ -1368,6 +1368,56 @@ msgstr "Compensi"
1368
1368
  msgid "competenze"
1369
1369
  msgstr "Competenze"
1370
1370
 
1371
+ #: overrideTranslations
1372
+ # defaultMessage: Contiene
1373
+ msgid "condition_contains"
1374
+ msgstr ""
1375
+
1376
+ #: overrideTranslations
1377
+ # defaultMessage: È maggiore o uguale
1378
+ msgid "condition_greater_or_equal"
1379
+ msgstr ""
1380
+
1381
+ #: overrideTranslations
1382
+ # defaultMessage: È maggiore di
1383
+ msgid "condition_greater_than"
1384
+ msgstr ""
1385
+
1386
+ #: overrideTranslations
1387
+ # defaultMessage: È vuoto
1388
+ msgid "condition_is_empty"
1389
+ msgstr ""
1390
+
1391
+ #: overrideTranslations
1392
+ # defaultMessage: È uguale a
1393
+ msgid "condition_is_equal_to"
1394
+ msgstr ""
1395
+
1396
+ #: overrideTranslations
1397
+ # defaultMessage: Non è vuoto
1398
+ msgid "condition_is_not_empty"
1399
+ msgstr ""
1400
+
1401
+ #: overrideTranslations
1402
+ # defaultMessage: Non è uguale a
1403
+ msgid "condition_is_not_equal_to"
1404
+ msgstr ""
1405
+
1406
+ #: overrideTranslations
1407
+ # defaultMessage: È minore o uguale
1408
+ msgid "condition_less_or_equal"
1409
+ msgstr ""
1410
+
1411
+ #: overrideTranslations
1412
+ # defaultMessage: È minore di
1413
+ msgid "condition_less_than"
1414
+ msgstr ""
1415
+
1416
+ #: overrideTranslations
1417
+ # defaultMessage: Non contiene
1418
+ msgid "condition_not_contains"
1419
+ msgstr ""
1420
+
1371
1421
  #: components/ItaliaTheme/View/PersonaView/PersonaContatti
1372
1422
  # defaultMessage: Contatti
1373
1423
  msgid "contacts"
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: 2025-04-04T13:47:56.109Z\n"
4
+ "POT-Creation-Date: 2025-04-29T19:12:18.732Z\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"
@@ -1370,6 +1370,56 @@ msgstr ""
1370
1370
  msgid "competenze"
1371
1371
  msgstr ""
1372
1372
 
1373
+ #: overrideTranslations
1374
+ # defaultMessage: Contiene
1375
+ msgid "condition_contains"
1376
+ msgstr ""
1377
+
1378
+ #: overrideTranslations
1379
+ # defaultMessage: È maggiore o uguale
1380
+ msgid "condition_greater_or_equal"
1381
+ msgstr ""
1382
+
1383
+ #: overrideTranslations
1384
+ # defaultMessage: È maggiore di
1385
+ msgid "condition_greater_than"
1386
+ msgstr ""
1387
+
1388
+ #: overrideTranslations
1389
+ # defaultMessage: È vuoto
1390
+ msgid "condition_is_empty"
1391
+ msgstr ""
1392
+
1393
+ #: overrideTranslations
1394
+ # defaultMessage: È uguale a
1395
+ msgid "condition_is_equal_to"
1396
+ msgstr ""
1397
+
1398
+ #: overrideTranslations
1399
+ # defaultMessage: Non è vuoto
1400
+ msgid "condition_is_not_empty"
1401
+ msgstr ""
1402
+
1403
+ #: overrideTranslations
1404
+ # defaultMessage: Non è uguale a
1405
+ msgid "condition_is_not_equal_to"
1406
+ msgstr ""
1407
+
1408
+ #: overrideTranslations
1409
+ # defaultMessage: È minore o uguale
1410
+ msgid "condition_less_or_equal"
1411
+ msgstr ""
1412
+
1413
+ #: overrideTranslations
1414
+ # defaultMessage: È minore di
1415
+ msgid "condition_less_than"
1416
+ msgstr ""
1417
+
1418
+ #: overrideTranslations
1419
+ # defaultMessage: Non contiene
1420
+ msgid "condition_not_contains"
1421
+ msgstr ""
1422
+
1373
1423
  #: components/ItaliaTheme/View/PersonaView/PersonaContatti
1374
1424
  # defaultMessage: Contatti
1375
1425
  msgid "contacts"
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.30.4",
5
+ "version": "11.31.0",
6
6
  "main": "src/index.js",
7
7
  "repository": {
8
8
  "type": "git",
@@ -152,7 +152,7 @@
152
152
  "volto-dropdownmenu": "4.1.3",
153
153
  "volto-editablefooter": "5.1.7",
154
154
  "volto-feedback": "0.6.1",
155
- "volto-form-block": "3.10.0",
155
+ "volto-form-block": "3.12.0",
156
156
  "volto-gdpr-privacy": "2.2.12",
157
157
  "volto-google-analytics": "2.0.0",
158
158
  "volto-multilingual-widget": "3.2.1",
package/publiccode.yml CHANGED
@@ -10,9 +10,9 @@ categories:
10
10
  dependsOn:
11
11
  open:
12
12
  - name: nodejs
13
- versionMin: '16'
13
+ versionMin: '20'
14
14
  - name: Python
15
- versionMin: '3.8'
15
+ versionMin: '3.11'
16
16
  - name: Docker
17
17
  versionMin: '18.03'
18
18
  optional: true
@@ -227,24 +227,28 @@ maintenance:
227
227
  name: io-Comune - Il sito AgID per Comuni ed Enti Pubblici
228
228
  platforms:
229
229
  - web
230
- releaseDate: '2025-05-22'
230
+ releaseDate: '2025-06-17'
231
231
  softwareType: standalone/web
232
- softwareVersion: 11.30.4
232
+ softwareVersion: 11.31.0
233
233
  url: 'https://github.com/italia/design-comuni-plone-theme'
234
234
  usedBy:
235
235
  - ASP Comuni Modenesi Area Nord
236
236
  - Azienda Ospedaliero-Universitaria di Ferrara
237
- - Azienda USL di Ferrara
237
+ - Azienda Speciale Cavriago Servizi
238
238
  - Biblioteche Pianura Est
239
239
  - ASP Comuni Modenesi Area Nord
240
+ - ASP Circondario Imolese
240
241
  - Azienda Ospedaliero-Universitaria di Ferrara
241
- - Azienda USL di Ferrara
242
+ - AUSL Romagna
242
243
  - Biblioteca comunale di Imola
243
244
  - Biblioteche Pianura Est
244
245
  - Camera di Commercio dell'Umbria
245
- - Camera di Commercio di Reggio Emilia
246
+ - Camera di Commercio di Padova
247
+ - Camera di Commercio dell'Emilia
246
248
  - Comune della Spezia
249
+ - Comune di Bastiglia
247
250
  - Comune di Bibbiano
251
+ - Comune di Bomporto
248
252
  - Comune di Borgo Tossignano
249
253
  - Comune di Campegine
250
254
  - Comune di Camposanto
@@ -253,8 +257,11 @@ usedBy:
253
257
  - Comune di Casalfiumanese
254
258
  - Comune di Castel del Rio
255
259
  - Comune di Castel Guelfo di Bologna
260
+ - Comune di Castelfranco Emilia
256
261
  - Comune di Cavezzo
257
262
  - Comune di Cavriago
263
+ - Comune di Cavriago - Centro culturale Mavarta
264
+ - Comune di Cavriago - Centro culturale Multiplo
258
265
  - Comune di Concordia sul Secchia
259
266
  - Comune di Dozza
260
267
  - Comune di Gattatico
@@ -264,22 +271,32 @@ usedBy:
264
271
  - Comune di Formigine
265
272
  - Comune di Frassinoro
266
273
  - Comune di Imola
274
+ - Comune di Imola - siti tematici della rete civica
275
+ - Comune di Lignano Sabbiadoro
267
276
  - Comune di Maranello
268
277
  - Comune di Medolla
269
278
  - Comune di Mirandola
279
+ - Comune di Mirandola - Centro la Raganella
270
280
  - Comune di Modena
281
+ - Comune di Modena - siti tematici della rete civica
271
282
  - Comune di Montecchio Emilia
272
283
  - Comune di Montefiorino
273
284
  - Comune di Mordano
285
+ - Comune di Nonantola
274
286
  - Comune di Novellara
275
287
  - Comune di Palagano
276
288
  - Comune di Parma
289
+ - Comune di Parma - siti tematici del Comune di Parma
277
290
  - Comune di Piacenza
278
291
  - Comune di Prignano
292
+ - Comune di Ravarino
279
293
  - Comune di Reggio Emilia
280
294
  - Comune di Rolo
295
+ - Comune di San Cesario sul Panaro
281
296
  - Comune di San Felice sul Panaro
282
297
  - Comune di San Lazzaro di Savena
298
+ - Comune di San Lazzaro di Savena - Mediateca
299
+ - Comune di San Lazzaro di Savena - Sportello Sociale
283
300
  - Comune di San Polo d'Enza
284
301
  - Comune di San Possidonio
285
302
  - Comune di San Prospero
@@ -288,12 +305,19 @@ usedBy:
288
305
  - Comune di Toscolano Maderno
289
306
  - Comune di Vaiano
290
307
  - Comune di Vernio
308
+ - Comune di Vibo Valentia
291
309
  - Comando Generale della Guardia di Finanza
292
310
  - NNB Ispra Ambiente
293
311
  - Nuovo Circondario Imolese
312
+ - Ospedali Galliera
294
313
  - Ospedali Galliera - Bilancio Sociale
295
314
  - Provincia di Pisa
315
+ - Provincia di Varese
316
+ - Regione Emilia-Romagna
317
+ - Regione Liguria - S3 Monitoraggio
318
+ - Unione Bassa Reggiana
296
319
  - Unione Comuni Distretto Ceramico
297
320
  - UCMAN (Unione dei Comuni Modenesi Area Nord)
321
+ - Unione Comuni del Sorbara
298
322
  - Unione Val d'Enza
299
323
  - Unione Val di Bisenzio
@@ -84,155 +84,160 @@ const BandiInEvidenceTemplate = ({
84
84
  </Col>
85
85
  </Row>
86
86
  )}
87
- <div className="bandi-in-evidence-cards-wrapper mt-2 mb-4">
87
+
88
+ <Row className={cx({ 'pb-3': show_block_bg })}>
88
89
  {items.map((item, index) => {
89
90
  const listingText = <ListingText item={item} />;
90
91
  return (
91
- <Card key={index} className="listing-item card-bg mt-2">
92
- <CardBody>
93
- <CardTitle tag="h3" className="title">
94
- <UniversalLink
95
- className="bando-title"
96
- item={!isEditMode ? item : null}
97
- href={isEditMode ? '#' : null}
98
- >
99
- {item.title || item.id}
100
- </UniversalLink>
101
- </CardTitle>
102
-
103
- {show_description && listingText && (
104
- <div className="bando-description">{listingText}</div>
105
- )}
106
- <div className="bando-lower-section">
107
- <div className="bando-dati mb-2">
108
- {/* Ente */}
109
- {show_ente && item.ente_bando?.length > 0 && (
110
- <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
111
- <div className="bando-dati-label me-2">
112
- {intl.formatMessage(messages.ente)}:
113
- </div>
114
- <span className="bando-dati-date">
115
- {item.ente_bando.map((ente, i) => (
116
- <span>
117
- {ente}
118
- {i < item.ente_bando.length - 1 ? ', ' : ''}
119
- </span>
120
- ))}
121
- </span>
122
- </span>
123
- )}
92
+ <Col lg={4} sm={6} xs={12} key={index} className="pb-3">
93
+ <Card key={index} className="listing-item card-bg mt-2">
94
+ <CardBody>
95
+ <CardTitle tag="h3" className="title">
96
+ <UniversalLink
97
+ className="bando-title"
98
+ item={!isEditMode ? item : null}
99
+ href={isEditMode ? '#' : null}
100
+ >
101
+ {item.title || item.id}
102
+ </UniversalLink>
103
+ </CardTitle>
124
104
 
125
- {/* Tipologia */}
126
- {show_tipologia && item?.tipologia_bando && (
127
- <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
128
- <div className="bando-dati-label me-2">
129
- {intl.formatMessage(messages.tipologia)}:
130
- </div>
131
- <span className="bando-dati-date">
132
- {item.tipologia_bando}
105
+ {show_description && listingText && (
106
+ <div className="bando-description">{listingText}</div>
107
+ )}
108
+ <div className="bando-lower-section">
109
+ <div className="bando-dati mb-2">
110
+ {/* Ente */}
111
+ {show_ente && item.ente_bando?.length > 0 && (
112
+ <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
113
+ <div className="bando-dati-label me-2">
114
+ {intl.formatMessage(messages.ente)}:
115
+ </div>
116
+ <span className="bando-dati-date">
117
+ {item.ente_bando.map((ente, i) => (
118
+ <span>
119
+ {ente}
120
+ {i < item.ente_bando.length - 1 ? ', ' : ''}
121
+ </span>
122
+ ))}
123
+ </span>
133
124
  </span>
134
- </span>
135
- )}
125
+ )}
136
126
 
137
- {/* Pubblicazione */}
138
- {item.effective && (
139
- <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
140
- <div className="bando-dati-label me-2">
141
- {intl.formatMessage(messages.pubblicazione)}:
142
- </div>
143
- <span className="bando-dati-date">
144
- {viewDate(
145
- intl.locale,
146
- item.effective,
147
- 'DD-MM-YYYY',
148
- )}
127
+ {/* Tipologia */}
128
+ {show_tipologia && item?.tipologia_bando && (
129
+ <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
130
+ <div className="bando-dati-label me-2">
131
+ {intl.formatMessage(messages.tipologia)}:
132
+ </div>
133
+ <span className="bando-dati-date">
134
+ {item.tipologia_bando}
135
+ </span>
149
136
  </span>
150
- </span>
151
- )}
137
+ )}
152
138
 
153
- {/* Scadenza */}
154
- {item.scadenza_bando && (
155
- <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
156
- <div className="bando-dati-label me-2">
157
- {intl.formatMessage(messages.scadenza)}:
158
- </div>
159
- <span className="bando-dati-date">
160
- {item.scadenza_bando &&
161
- viewDate(
139
+ {/* Pubblicazione */}
140
+ {item.effective && (
141
+ <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
142
+ <div className="bando-dati-label me-2">
143
+ {intl.formatMessage(messages.pubblicazione)}:
144
+ </div>
145
+ <span className="bando-dati-date">
146
+ {viewDate(
162
147
  intl.locale,
163
- item.scadenza_bando,
148
+ item.effective,
164
149
  'DD-MM-YYYY',
165
150
  )}
151
+ </span>
166
152
  </span>
167
- </span>
168
- )}
153
+ )}
169
154
 
170
- {/* Chiusura procedimento */}
171
- {item.chiusura_procedimento_bando && (
172
- <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
173
- <div className="bando-dati-label me-2">
174
- {intl.formatMessage(messages.chiusura_procedimento)}
175
- :
176
- </div>
177
- <span className="bando-dati-date">
178
- {item.chiusura_procedimento_bando &&
179
- viewDate(
180
- intl.locale,
181
- item.chiusura_procedimento_bando,
182
- 'DD-MM-YYYY',
183
- )}
155
+ {/* Scadenza */}
156
+ {item.scadenza_bando && (
157
+ <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
158
+ <div className="bando-dati-label me-2">
159
+ {intl.formatMessage(messages.scadenza)}:
160
+ </div>
161
+ <span className="bando-dati-date">
162
+ {item.scadenza_bando &&
163
+ viewDate(
164
+ intl.locale,
165
+ item.scadenza_bando,
166
+ 'DD-MM-YYYY',
167
+ )}
168
+ </span>
184
169
  </span>
185
- </span>
186
- )}
187
-
188
- {/* Stato */}
189
- {item?.bando_state?.length > 0 && (
190
- <span className="d-flex align-items-baseline bando-dati-info">
191
- <div className="bando-dati-label me-3">
192
- {intl.formatMessage(messages.stato)}:
193
- </div>
170
+ )}
194
171
 
195
- <span className="bando-dati-date">
196
- <div
197
- className={cx('bando-state', {
198
- open: item.bando_state?.includes('open'),
199
- closed: item.bando_state?.includes('closed'),
200
- scheduled:
201
- item.bando_state?.includes('scheduled'),
202
- 'in-progress':
203
- item.bando_state?.includes('inProgress'),
204
- })}
205
- >
206
- <BandoStatus content={item} />
172
+ {/* Chiusura procedimento */}
173
+ {item.chiusura_procedimento_bando && (
174
+ <span className="d-flex flex-wrap align-items-baseline bando-dati-info">
175
+ <div className="bando-dati-label me-2">
176
+ {intl.formatMessage(
177
+ messages.chiusura_procedimento,
178
+ )}
179
+ :
207
180
  </div>
181
+ <span className="bando-dati-date">
182
+ {item.chiusura_procedimento_bando &&
183
+ viewDate(
184
+ intl.locale,
185
+ item.chiusura_procedimento_bando,
186
+ 'DD-MM-YYYY',
187
+ )}
188
+ </span>
208
189
  </span>
209
- </span>
210
- )}
190
+ )}
211
191
 
212
- {/* Note aggiornamenti */}
213
- {item.update_note &&
214
- (item.bando_state?.includes('open') ||
215
- item.bando_state?.includes('inProgress')) && (
216
- <span className="d-flex bando-note">
217
- <strong>{item.update_note}</strong>
192
+ {/* Stato */}
193
+ {item?.bando_state?.length > 0 && (
194
+ <span className="d-flex align-items-baseline bando-dati-info">
195
+ <div className="bando-dati-label me-3">
196
+ {intl.formatMessage(messages.stato)}:
197
+ </div>
198
+
199
+ <span className="bando-dati-date">
200
+ <div
201
+ className={cx('bando-state', {
202
+ open: item.bando_state?.includes('open'),
203
+ closed: item.bando_state?.includes('closed'),
204
+ scheduled:
205
+ item.bando_state?.includes('scheduled'),
206
+ 'in-progress':
207
+ item.bando_state?.includes('inProgress'),
208
+ })}
209
+ >
210
+ <BandoStatus content={item} />
211
+ </div>
212
+ </span>
218
213
  </span>
219
214
  )}
215
+
216
+ {/* Note aggiornamenti */}
217
+ {item.update_note &&
218
+ (item.bando_state?.includes('open') ||
219
+ item.bando_state?.includes('inProgress')) && (
220
+ <span className="d-flex bando-note">
221
+ <strong>{item.update_note}</strong>
222
+ </span>
223
+ )}
224
+ </div>
225
+ <div className="read-more">
226
+ <CardReadMore
227
+ iconName="it-arrow-right"
228
+ tag={UniversalLink}
229
+ item={!isEditMode ? item : null}
230
+ href={isEditMode ? '#' : null}
231
+ text={intl.formatMessage(messages.vedi)}
232
+ />
233
+ </div>
220
234
  </div>
221
- <div className="read-more">
222
- <CardReadMore
223
- iconName="it-arrow-right"
224
- tag={UniversalLink}
225
- item={!isEditMode ? item : null}
226
- href={isEditMode ? '#' : null}
227
- text={intl.formatMessage(messages.vedi)}
228
- />
229
- </div>
230
- </div>
231
- </CardBody>
232
- </Card>
235
+ </CardBody>
236
+ </Card>
237
+ </Col>
233
238
  );
234
239
  })}
235
- </div>
240
+ </Row>
236
241
 
237
242
  <ListingLinkMore
238
243
  title={linkTitle}
@@ -69,6 +69,7 @@ const PhotogalleryTemplate = ({
69
69
  const settings = {
70
70
  dots: true,
71
71
  infinite: true,
72
+ lazyLoad: true,
72
73
  autoplay: autoplay,
73
74
  speed: 500,
74
75
  slidesToShow: items.length < 3 ? items.length : 3,
@@ -160,8 +161,8 @@ const PhotogalleryTemplate = ({
160
161
  items.length === 1
161
162
  ? '1300'
162
163
  : items.length === 2
163
- ? '650'
164
- : '450'
164
+ ? '650'
165
+ : '450'
165
166
  }px`,
166
167
  noWrapLink: true,
167
168
  showDefault: true,
@@ -160,6 +160,7 @@ const SliderTemplate = ({
160
160
  infinite: true,
161
161
  autoplay: autoplay,
162
162
  speed: 500,
163
+ lazyLoad: true,
163
164
  slidesToShow: nSlidesToShow,
164
165
  slidesToScroll: nSlidesToShow,
165
166
  autoplaySpeed: autoplay_speed * 1000,
@@ -32,6 +32,7 @@ const Body = ({ data, children, nItems = 0, reactSlick }) => {
32
32
  prevArrow: <PrevArrow />,
33
33
  infinite: true,
34
34
  speed: 500,
35
+ lazyLoad: true,
35
36
  slidesToShow: nItems < 3 ? nItems : 3,
36
37
  slidesToScroll: 1,
37
38
  responsive: [
@@ -58,6 +58,7 @@ const Gallery = ({
58
58
  dots: true,
59
59
  infinite: true,
60
60
  speed: 500,
61
+ lazyLoad: true,
61
62
  slidesToShow: nItems < 3 ? nItems : 3,
62
63
  slidesToScroll: slideToScroll ?? 3,
63
64
  nextArrow: <SliderNextArrow intl={intl} />,
@@ -6,18 +6,19 @@
6
6
  import React from 'react';
7
7
  import { useIntl, defineMessages } from 'react-intl';
8
8
  import { Card, CardBody, Row, Col, Alert, Progress } from 'design-react-kit';
9
- // eslint-disable-next-line import/no-unresolved
10
9
  import { getFieldName } from 'volto-form-block/components/utils';
11
- // eslint-disable-next-line import/no-unresolved
12
10
  import Field from 'volto-form-block/components/Field';
13
11
  import {
14
12
  OTPWidget,
15
13
  OTP_FIELDNAME_EXTENDER,
16
14
  Button,
17
15
  } from 'volto-form-block/components/Widget';
18
- import { FormResult } from 'volto-form-block/components';
19
- // eslint-disable-next-line import/no-unresolved
20
16
  import config from '@plone/volto/registry';
17
+ import { FormResult } from 'volto-form-block/components';
18
+ import { evaluateAllConditions } from 'volto-form-block/helpers/conditions-list';
19
+
20
+ /* Style */
21
+ import 'volto-form-block/components/FormView.css';
21
22
 
22
23
  const messages = defineMessages({
23
24
  default_submit_label: {
@@ -181,30 +182,35 @@ const FormView = ({
181
182
  getFieldsToSendWithValue(subblock);
182
183
 
183
184
  return (
184
- <Row key={'row' + index}>
185
- <Col className="py-2">
186
- <Field
187
- {...subblock}
188
- name={name}
189
- onChange={(field, value) =>
190
- onChangeFormData(
191
- subblock.id,
192
- field,
193
- value,
194
- fields_to_send_with_value,
195
- )
196
- }
197
- value={
198
- subblock.field_type === 'static_text'
199
- ? subblock.value
200
- : formData[name]?.value
201
- }
202
- valid={isValidField(name)}
203
- errorMessage={getErrorMessage(name)}
204
- formHasErrors={formErrors.length > 0}
205
- />
206
- </Col>
207
- </Row>
185
+ evaluateAllConditions(
186
+ subblock?.visibility_conditions,
187
+ formData,
188
+ ) && (
189
+ <Row key={'row' + index}>
190
+ <Col className="py-2">
191
+ <Field
192
+ {...subblock}
193
+ name={name}
194
+ onChange={(field, value) =>
195
+ onChangeFormData(
196
+ subblock.id,
197
+ field,
198
+ value,
199
+ fields_to_send_with_value,
200
+ )
201
+ }
202
+ value={
203
+ subblock.field_type === 'static_text'
204
+ ? subblock.value
205
+ : formData[name]?.value
206
+ }
207
+ valid={isValidField(name)}
208
+ errorMessage={getErrorMessage(name)}
209
+ formHasErrors={formErrors.length > 0}
210
+ />
211
+ </Col>
212
+ </Row>
213
+ )
208
214
  );
209
215
  })}
210
216
 
@@ -29,6 +29,7 @@ import {
29
29
  getFormData,
30
30
  exportCsvFormData,
31
31
  clearFormData,
32
+ setSubblocksIDList,
32
33
  } from 'volto-form-block/actions';
33
34
 
34
35
  import { BlockDataForm } from '@plone/volto/components';
@@ -119,6 +120,14 @@ const Sidebar = ({
119
120
  var FormSchema = config.blocks.blocksConfig.form.formSchema;
120
121
  var FieldSchema = config.blocks.blocksConfig.form.fieldSchema;
121
122
 
123
+ // update list of fields ID
124
+ useEffect(() => {
125
+ if (data.subblocks?.length > 0) {
126
+ dispatch(setSubblocksIDList(data.subblocks));
127
+ }
128
+ // eslint-disable-next-line react-hooks/exhaustive-deps
129
+ }, [data]);
130
+
122
131
  return (
123
132
  <Form>
124
133
  <Segment.Group raised>
@@ -18,6 +18,11 @@ const messages = defineMessages({
18
18
  id: 'form_field_required',
19
19
  defaultMessage: 'Required',
20
20
  },
21
+ field_required_info_text: {
22
+ id: 'form_field_required_info_text',
23
+ defaultMessage:
24
+ 'If visibility conditions have been added to the field, it is advisable not to apply the requirement.',
25
+ },
21
26
  field_type: {
22
27
  id: 'form_field_type',
23
28
  defaultMessage: 'Field type',
@@ -453,6 +458,7 @@ export default (props) => {
453
458
  : []),
454
459
  ...(props?.field_type === 'static_text' ? [] : ['required']),
455
460
  'unique',
461
+ 'visibility_conditions',
456
462
  ],
457
463
  },
458
464
  ],
@@ -499,6 +505,7 @@ export default (props) => {
499
505
  title: intl.formatMessage(messages.field_required),
500
506
  type: 'boolean',
501
507
  default: false,
508
+ description: intl.formatMessage(messages.field_required_info_text),
502
509
  },
503
510
  unique: {
504
511
  title: intl.formatMessage(messages.field_unique_title),
@@ -507,6 +514,10 @@ export default (props) => {
507
514
  default: false,
508
515
  send_to_backend: true,
509
516
  },
517
+ visibility_conditions: {
518
+ title: 'Scelte visibili se',
519
+ widget: 'visibility_conditions_widget',
520
+ },
510
521
  ...schemaExtenderValues.properties,
511
522
  },
512
523
  required: [
@@ -37,21 +37,48 @@ defineMessages({
37
37
  id: 'rrule_weekday',
38
38
  defaultMessage: 'giorno feriale',
39
39
  },
40
+ //---- Volto-form-block ----//
40
41
  reset: {
41
- //volto-form-block
42
42
  id: 'form_reset',
43
43
  defaultMessage: 'Ricomincia',
44
44
  },
45
45
  legend_required: {
46
- //volto-form-block
47
46
  id: 'legend_required',
48
47
  defaultMessage: 'I campi contrassegnati da (*) sono obbligatori.',
49
48
  },
50
49
  default_cancel_label: {
51
- //volto-form-block
52
50
  id: 'form_default_cancel_label',
53
51
  defaultMessage: 'Annulla',
54
52
  },
53
+ is_empty: { id: 'condition_is_empty', defaultMessage: 'È vuoto' },
54
+ is_not_empty: {
55
+ id: 'condition_is_not_empty',
56
+ defaultMessage: 'Non è vuoto',
57
+ },
58
+ is_equal_to: { id: 'condition_is_equal_to', defaultMessage: 'È uguale a' },
59
+ is_not_equal_to: {
60
+ id: 'condition_is_not_equal_to',
61
+ defaultMessage: 'Non è uguale a',
62
+ },
63
+ contains: { id: 'condition_contains', defaultMessage: 'Contiene' },
64
+ not_contains: {
65
+ id: 'condition_not_contains',
66
+ defaultMessage: 'Non contiene',
67
+ },
68
+ greater_than: {
69
+ id: 'condition_greater_than',
70
+ defaultMessage: 'È maggiore di',
71
+ },
72
+ less_than: { id: 'condition_less_than', defaultMessage: 'È minore di' },
73
+ greater_or_equal: {
74
+ id: 'condition_greater_or_equal',
75
+ defaultMessage: 'È maggiore o uguale',
76
+ },
77
+ less_or_equal: {
78
+ id: 'condition_less_or_equal',
79
+ defaultMessage: 'È minore o uguale',
80
+ },
81
+ //---- end Volto-form-block ----//
55
82
  toggleMenu: {
56
83
  id: 'toggle-menu',
57
84
  defaultMessage: '{action} il menu',
@@ -1,24 +1,7 @@
1
1
  .bandi-in-evidence {
2
- .bandi-in-evidence-cards-wrapper {
3
- display: -ms-grid;
4
- display: grid;
5
- gap: 1.3rem;
6
- -ms-grid-columns: 1fr 1.3rem 1fr 1.3rem 1fr;
7
- grid-template-columns: 1fr 1fr 1fr;
8
-
9
- .read-more a.read-more {
10
- flex-direction: row;
11
- }
12
- }
13
-
14
2
  .card-wrapper {
15
3
  min-height: 340px;
16
4
 
17
- &:first-child {
18
- grid-column: 1;
19
- grid-row: 1;
20
- }
21
-
22
5
  .listing-item {
23
6
  align-items: normal;
24
7
  .card-body {
@@ -27,6 +10,7 @@
27
10
  justify-content: space-between;
28
11
  padding: 2.5rem;
29
12
  padding-bottom: 0rem;
13
+ word-break: break-word;
30
14
  }
31
15
  }
32
16
  }
@@ -45,33 +29,6 @@
45
29
  }
46
30
  }
47
31
 
48
- // smartphone
49
- @media (max-width: #{map-get($grid-breakpoints, sm)}) {
50
- .bandi-in-evidence-cards-wrapper {
51
- .card-wrapper {
52
- width: 100%;
53
- margin: 0px;
54
- }
55
- display: block;
56
- height: 100%;
57
- }
58
- }
59
-
60
- // tablet
61
- .bandi-in-evidence-cards-wrapper {
62
- @media (min-width: #{map-get($grid-breakpoints, md)}) and (max-width: #{map-get($grid-breakpoints, xl)}) {
63
- grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
64
- }
65
-
66
- @media (min-width: #{map-get($grid-breakpoints, md)}) and (max-width: #{map-get($grid-breakpoints, lg)}) {
67
- gap: 1rem;
68
- }
69
-
70
- @media (min-width: #{map-get($grid-breakpoints, sm)}) and (max-width: #{map-get($grid-breakpoints, md)}) {
71
- display: block !important;
72
- }
73
- }
74
-
75
32
  .bando-description {
76
33
  flex-grow: 1;
77
34
  margin-top: 0.5rem;
@@ -122,18 +79,11 @@
122
79
  bottom: 0;
123
80
  padding-top: 0.75rem;
124
81
 
125
- @media (max-width: #{map-get($grid-breakpoints, sm)}) {
126
- display: flex;
127
- align-items: center;
128
- font-size: 0.77778rem;
129
- font-weight: bold;
130
- letter-spacing: 0.9px;
131
- text-transform: uppercase;
82
+ @media (max-width: #{map-get($grid-breakpoints, md)}) {
83
+ display: block;
84
+ text-align: right;
132
85
  }
133
86
  }
134
- @media (max-width: #{map-get($grid-breakpoints, sm)}) {
135
- margin-top: 0;
136
- }
137
87
  }
138
88
 
139
89
  .bando-state {
@@ -6,8 +6,8 @@
6
6
  @media (max-width: #{map-get($grid-breakpoints, md)}) {
7
7
  .form-group {
8
8
  display: flex;
9
- flex-direction: column;
10
9
  max-width: 100%;
10
+ flex-direction: column;
11
11
 
12
12
  label {
13
13
  position: relative;
@@ -71,6 +71,7 @@
71
71
  .volto-subblocks-wrapper,
72
72
  .form-field {
73
73
  max-width: 100%;
74
+
74
75
  .single-block {
75
76
  .dragsubblock {
76
77
  top: 0.3rem;
@@ -278,6 +279,22 @@
278
279
  @extend .active;
279
280
  }
280
281
 
282
+ .cms-ui .ui.modal.modal_visibility_conditions {
283
+ .column.choice-actions {
284
+ padding-right: 0;
285
+ padding-left: 0;
286
+ }
287
+ }
288
+
289
+ .cms-ui .ui.page.modals.dimmer {
290
+ .ui.modal.modal_visibility_conditions {
291
+ .content {
292
+ min-height: 50vh;
293
+ overflow-y: auto;
294
+ }
295
+ }
296
+ }
297
+
281
298
  .grecaptcha-badge {
282
299
  bottom: 115px !important;
283
300
  }