design-comuni-plone-theme 11.25.3 → 11.26.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 (49) hide show
  1. package/.github/workflows/main.yml +1 -1
  2. package/.github/workflows/prs.yml +1 -1
  3. package/.github/workflows/release.yml +1 -1
  4. package/.yarn/cache/cross-spawn-npm-7.0.6-264bddf921-8d306efaca.zip +0 -0
  5. package/.yarn/cache/nanoid-npm-3.3.8-d22226208b-dfe0adbc0c.zip +0 -0
  6. package/.yarn/cache/{volto-blocks-widget-npm-3.4.1-c4d451e2c2-4f5c183698.zip → volto-blocks-widget-npm-3.4.3-d7e305af36-68490569a4.zip} +0 -0
  7. package/.yarn/cache/{volto-feedback-npm-0.3.2-ff5b075c7c-bfc7951ca5.zip → volto-feedback-npm-0.5.2-c3471099a1-48c0763678.zip} +0 -0
  8. package/.yarn/cache/volto-gdpr-privacy-npm-2.2.12-fbc24c3b6f-ba1b9c0127.zip +0 -0
  9. package/.yarn/install-state.gz +0 -0
  10. package/CHANGELOG.md +56 -0
  11. package/Makefile +1 -1
  12. package/RELEASE.md +19 -0
  13. package/locales/de/LC_MESSAGES/volto.po +5 -0
  14. package/locales/en/LC_MESSAGES/volto.po +5 -0
  15. package/locales/es/LC_MESSAGES/volto.po +5 -0
  16. package/locales/fr/LC_MESSAGES/volto.po +5 -0
  17. package/locales/it/LC_MESSAGES/volto.po +5 -0
  18. package/locales/volto.pot +6 -1
  19. package/package.json +5 -5
  20. package/publiccode.yml +2 -2
  21. package/src/components/ImageWithErrors/ImageWithErrors.jsx +11 -11
  22. package/src/components/ItaliaTheme/Blocks/Calendar/Body.jsx +1 -0
  23. package/src/components/ItaliaTheme/Blocks/Common/SearchFilters/SelectFilter.jsx +9 -3
  24. package/src/components/ItaliaTheme/Blocks/EventSearch/DefaultFilters.js +1 -0
  25. package/src/components/ItaliaTheme/Cards/CardCategory.jsx +2 -3
  26. package/src/components/ItaliaTheme/View/Commons/Dates.jsx +16 -16
  27. package/src/components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates.jsx +30 -8
  28. package/src/customizations/volto/actions/vocabularies/vocabularies.js +6 -2
  29. package/src/customizations/volto/components/manage/Blocks/Search/SearchBlockView.jsx +9 -15
  30. package/src/customizations/volto/components/manage/Blocks/Search/schema.js +16 -0
  31. package/src/customizations/volto/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +4 -7
  32. package/src/customizations/volto-form-block/components/View.jsx +11 -10
  33. package/src/helpers/dates.js +21 -1
  34. package/src/helpers/index.js +1 -0
  35. package/src/theme/ItaliaTheme/Blocks/_contacts.scss +5 -12
  36. package/src/theme/ItaliaTheme/Print/_all_pages.scss +98 -15
  37. package/src/theme/ItaliaTheme/Print/_blocks.scss +903 -8
  38. package/src/theme/ItaliaTheme/Print/_page.scss +0 -6
  39. package/src/theme/ItaliaTheme/_main.scss +3 -0
  40. package/src/theme/_cms-ui.scss +58 -0
  41. package/src/theme/bootstrap-override/bootstrap/_print.scss +1 -0
  42. package/src/theme/bootstrap-override/bootstrap-italia/_card.scss +12 -2
  43. package/src/theme/extras/_tables.scss +12 -13
  44. package/src/theme/site.scss +0 -2
  45. package/.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip +0 -0
  46. package/.yarn/cache/nanoid-npm-3.3.6-e6d6ae7e71-7d0eda6570.zip +0 -0
  47. package/.yarn/cache/volto-gdpr-privacy-npm-2.2.9-a1e4258e06-fe530fe8ee.zip +0 -0
  48. package/src/theme/ItaliaTheme/Print/_bandi.scss +0 -9
  49. package/src/theme/ItaliaTheme/Print/_news_items.scss +0 -19
@@ -31,7 +31,7 @@ jobs:
31
31
  build-args: |
32
32
  ADDON_NAME=design-comuni-plone-theme
33
33
  ADDON_PATH=design-comuni-plone-theme
34
- VOLTO_VERSION=17.19.0
34
+ VOLTO_VERSION=17.20.3
35
35
 
36
36
  - name: Deploy to rancher
37
37
  uses: redturtle/rancher-deploy-action@v0.2.0
@@ -34,4 +34,4 @@ jobs:
34
34
  build-args: |
35
35
  ADDON_NAME=design-comuni-plone-theme
36
36
  ADDON_PATH=design-comuni-plone-theme
37
- VOLTO_VERSION=17.19.0
37
+ VOLTO_VERSION=17.20.3
@@ -35,4 +35,4 @@ jobs:
35
35
  build-args: |
36
36
  ADDON_NAME=design-comuni-plone-theme
37
37
  ADDON_PATH=design-comuni-plone-theme
38
- VOLTO_VERSION=17.19.0
38
+ VOLTO_VERSION=17.20.3
Binary file
package/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
 
2
2
 
3
+ ## [11.26.0](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.25.4...v11.26.0) (2024-12-20)
4
+
5
+
6
+ ### Features
7
+
8
+ * added information on recurrence exception dates in event subtitle ([#830](https://github.com/RedTurtle/design-comuni-plone-theme/issues/830)) ([f9d7f09](https://github.com/RedTurtle/design-comuni-plone-theme/commit/f9d7f09f763ad6214bbd35fa5e890a4e192056a2))
9
+ * added usePloneRanking option in Search Block ([#820](https://github.com/RedTurtle/design-comuni-plone-theme/issues/820)) ([7b12ae3](https://github.com/RedTurtle/design-comuni-plone-theme/commit/7b12ae399db201acedbbd8321b3338a08e59722a))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * "ci: fix npm release script" ([ac69380](https://github.com/RedTurtle/design-comuni-plone-theme/commit/ac6938038a8341cae08a7cc45b1effc8c7afd37e))
15
+ * a11y in cms-ui and links color in cms-ui ([#840](https://github.com/RedTurtle/design-comuni-plone-theme/issues/840)) ([9965f50](https://github.com/RedTurtle/design-comuni-plone-theme/commit/9965f50f50a6df38aa8cd59bd646f2e2a2061f53))
16
+ * backport from https://github.com/collective/volto-form-block/pull/122 ([#834](https://github.com/RedTurtle/design-comuni-plone-theme/issues/834)) ([8312f5e](https://github.com/RedTurtle/design-comuni-plone-theme/commit/8312f5e60c695cfe2bf0ebc8aced4ec5a83a8055))
17
+ * cambiato colore del font per il pulsante creato con draftJS ([#836](https://github.com/RedTurtle/design-comuni-plone-theme/issues/836)) ([ef62472](https://github.com/RedTurtle/design-comuni-plone-theme/commit/ef62472607aee7aadba01f951ac1709193000e1e))
18
+ * changed conditions for date range in header subtitle for ct event ([#825](https://github.com/RedTurtle/design-comuni-plone-theme/issues/825)) ([bfc673d](https://github.com/RedTurtle/design-comuni-plone-theme/commit/bfc673df227d556e2e7d54d9bf36ed9a99c1b916))
19
+ * default sort for day-items in Calendar block ([#846](https://github.com/RedTurtle/design-comuni-plone-theme/issues/846)) ([be2f1df](https://github.com/RedTurtle/design-comuni-plone-theme/commit/be2f1df9efbe92b1c4703a1899392de76abf9307))
20
+ * default volto-blocks-widget text block if slate enabled ([#832](https://github.com/RedTurtle/design-comuni-plone-theme/issues/832)) ([43fc8f2](https://github.com/RedTurtle/design-comuni-plone-theme/commit/43fc8f298e154b5542228b579fe6b0062904b0c9))
21
+ * read waiting_list from right data structure ([#835](https://github.com/RedTurtle/design-comuni-plone-theme/issues/835)) ([ef05c69](https://github.com/RedTurtle/design-comuni-plone-theme/commit/ef05c6953979f70687389329a95090f90d276238))
22
+ * removed no_value option from recurrence widget ([#827](https://github.com/RedTurtle/design-comuni-plone-theme/issues/827)) ([0581d8b](https://github.com/RedTurtle/design-comuni-plone-theme/commit/0581d8b5289a5a1c42dd7601e64c194df6604e13))
23
+ * removed query b_size limit for event_location vocabulary ([#843](https://github.com/RedTurtle/design-comuni-plone-theme/issues/843)) ([0116482](https://github.com/RedTurtle/design-comuni-plone-theme/commit/0116482c3506169ed43c48a5e7bc624332d61602))
24
+ * set icon title in CardCategory with content-type name ([#831](https://github.com/RedTurtle/design-comuni-plone-theme/issues/831)) ([ea6e668](https://github.com/RedTurtle/design-comuni-plone-theme/commit/ea6e668f91dba25e43be1490c9ee8042640098f4))
25
+ * ssr conditional embed ([#839](https://github.com/RedTurtle/design-comuni-plone-theme/issues/839)) ([e369991](https://github.com/RedTurtle/design-comuni-plone-theme/commit/e369991fc3a161e6a5697f91c9b0e2c693fb88b7))
26
+ * start date in recurrences ([#845](https://github.com/RedTurtle/design-comuni-plone-theme/issues/845)) ([18777b4](https://github.com/RedTurtle/design-comuni-plone-theme/commit/18777b4580b94cb3ca72aff852b6d9b506314634))
27
+ * table styles in edit mode ([#826](https://github.com/RedTurtle/design-comuni-plone-theme/issues/826)) ([ebef417](https://github.com/RedTurtle/design-comuni-plone-theme/commit/ebef41700558395b5367740cbbdbd6770ea89216))
28
+ * updated print styles ([#838](https://github.com/RedTurtle/design-comuni-plone-theme/issues/838)) ([52fce57](https://github.com/RedTurtle/design-comuni-plone-theme/commit/52fce573fd521deea579744bb6e44f9060bf9d59))
29
+
30
+
31
+ ### Maintenance
32
+
33
+ * **deps:** bump cross-spawn from 7.0.3 to 7.0.6 ([#807](https://github.com/RedTurtle/design-comuni-plone-theme/issues/807)) ([0e4293d](https://github.com/RedTurtle/design-comuni-plone-theme/commit/0e4293d8b11c2c6a1bcdb529a037874e93068142))
34
+ * **deps:** bump nanoid from 3.3.6 to 3.3.8 ([#837](https://github.com/RedTurtle/design-comuni-plone-theme/issues/837)) ([0b2de95](https://github.com/RedTurtle/design-comuni-plone-theme/commit/0b2de959496f767fdf7dd9e80f3e23fd3774225d))
35
+
36
+
37
+ ### Documentation
38
+
39
+ * updated publiccode and release log ([ef94ad6](https://github.com/RedTurtle/design-comuni-plone-theme/commit/ef94ad6577531df4fefdd3e85a3b328dbfdeac26))
40
+
41
+ ## [11.25.4](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.25.3...v11.25.4) (2024-12-16)
42
+
43
+
44
+ ### Bug Fixes
45
+
46
+ * enable ImageWithErrors to return null value ([#841](https://github.com/RedTurtle/design-comuni-plone-theme/issues/841)) ([d7aacb9](https://github.com/RedTurtle/design-comuni-plone-theme/commit/d7aacb9ac906307e430cd50ec5843e07f638aec1))
47
+
48
+
49
+ ### Documentation
50
+
51
+ * updated publiccode ([f5dce8d](https://github.com/RedTurtle/design-comuni-plone-theme/commit/f5dce8d55ff6b9eea393fe07a6b0030e7f0ddbb7))
52
+
53
+
54
+ ### Maintenance
55
+
56
+ * fix npm release script ([1f71995](https://github.com/RedTurtle/design-comuni-plone-theme/commit/1f719950e75c0ef5f40093400c43f15520351973))
57
+ * upgrade to volto 17.20.3 ([2490838](https://github.com/RedTurtle/design-comuni-plone-theme/commit/2490838a0eec206e430c46bc94e1ebb6c40feba0))
58
+
3
59
  ## [11.25.3](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.25.2...v11.25.3) (2024-12-12)
4
60
 
5
61
 
package/Makefile CHANGED
@@ -27,7 +27,7 @@ CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
27
27
  # ADDON ?= "design-comuni-plone-theme"
28
28
 
29
29
  PLONE_VERSION=6
30
- VOLTO_VERSION=17.19.0
30
+ VOLTO_VERSION=17.20.3
31
31
 
32
32
  ADDON_NAME='design-comuni-plone-theme'
33
33
  ADDON_PATH='design-comuni-plone-theme'
package/RELEASE.md CHANGED
@@ -41,6 +41,25 @@
41
41
  - ...
42
42
  -->
43
43
 
44
+ ## Versione 11.26.0 (20/12/2024)
45
+
46
+ ### Migliorie
47
+
48
+ - Se vengono aggiunte o rimosse date dalla ricorrenza di un CT evento, nel sottotitolo viene aggiunta l'indicazione di controllare le eccezioni nella sezione apposita.
49
+ - Il sottotitolo del CT Evento mostra il range di date per tutti gli eventi con ricorrenza o con una data di fine diversa dalla data di inizio.
50
+ - Sistemata l'accessibilità riguardante il focus lato operatore.
51
+
52
+ ### Novità
53
+
54
+ - Nel blocco 'Cerca' è stata aggiunta l'opzione "Usa l'ordinamento dei risultati di Plone" nella sezione 'Controlli'.
55
+
56
+ ### Fix
57
+
58
+ - Il menu a tendina da cui è possibile filtrare i luoghi nel blocco Ricerca Eventi mostra tutti i luoghi collegati agli eventi presenti nel percorso selezionato dalla Sidebar, senza limitarne il numero.
59
+ - Risolto un problema con il colore del testo del bottone nell'editor.
60
+ - Rimossa l'opzione non selezionabile "nessun valore" dal widget ricorrenza.
61
+ - La pagina non dà più errore quando si imposta una ricorrenza con impostazione "Termina dopo tot. ricorrenze".
62
+
44
63
  ## Versione 11.25.3 (12/12/2024)
45
64
 
46
65
  ### Migliorie
@@ -1998,6 +1998,11 @@ msgstr ""
1998
1998
  msgid "exceeded_chars"
1999
1999
  msgstr ""
2000
2000
 
2001
+ #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
2002
+ # defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
2003
+ msgid "exceptionDates"
2004
+ msgstr ""
2005
+
2001
2006
  #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
2002
2007
  # defaultMessage: Scadenza
2003
2008
  msgid "expire"
@@ -1983,6 +1983,11 @@ msgstr "Read more"
1983
1983
  msgid "exceeded_chars"
1984
1984
  msgstr ""
1985
1985
 
1986
+ #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
1987
+ # defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
1988
+ msgid "exceptionDates"
1989
+ msgstr "with some exceptions. Please see the dedicated section for more information."
1990
+
1986
1991
  #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
1987
1992
  # defaultMessage: Scadenza
1988
1993
  msgid "expire"
@@ -1992,6 +1992,11 @@ msgstr ""
1992
1992
  msgid "exceeded_chars"
1993
1993
  msgstr "El texto excede la longitud recomendada"
1994
1994
 
1995
+ #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
1996
+ # defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
1997
+ msgid "exceptionDates"
1998
+ msgstr ""
1999
+
1995
2000
  #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
1996
2001
  # defaultMessage: Scadenza
1997
2002
  msgid "expire"
@@ -2000,6 +2000,11 @@ msgstr ""
2000
2000
  msgid "exceeded_chars"
2001
2001
  msgstr ""
2002
2002
 
2003
+ #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
2004
+ # defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
2005
+ msgid "exceptionDates"
2006
+ msgstr ""
2007
+
2003
2008
  #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
2004
2009
  # defaultMessage: Scadenza
2005
2010
  msgid "expire"
@@ -1983,6 +1983,11 @@ msgstr "Leggi di più"
1983
1983
  msgid "exceeded_chars"
1984
1984
  msgstr "Il testo supera la lunghezza consigliata perciò verrà tagliato."
1985
1985
 
1986
+ #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
1987
+ # defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
1988
+ msgid "exceptionDates"
1989
+ msgstr "con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata."
1990
+
1986
1991
  #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
1987
1992
  # defaultMessage: Scadenza
1988
1993
  msgid "expire"
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-11-25T14:46:11.571Z\n"
4
+ "POT-Creation-Date: 2024-12-12T10:58:07.184Z\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"
@@ -1985,6 +1985,11 @@ msgstr ""
1985
1985
  msgid "exceeded_chars"
1986
1986
  msgstr ""
1987
1987
 
1988
+ #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
1989
+ # defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
1990
+ msgid "exceptionDates"
1991
+ msgstr ""
1992
+
1988
1993
  #: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
1989
1994
  # defaultMessage: Scadenza
1990
1995
  msgid "expire"
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.25.3",
5
+ "version": "11.26.0",
6
6
  "main": "src/index.js",
7
7
  "repository": {
8
8
  "type": "git",
@@ -147,13 +147,13 @@
147
147
  "typeface-lora": "0.0.72",
148
148
  "typeface-roboto-mono": "0.0.75",
149
149
  "typeface-titillium-web": "0.0.72",
150
- "volto-blocks-widget": "3.4.1",
150
+ "volto-blocks-widget": "3.4.3",
151
151
  "volto-data-grid-widget": "2.3.1",
152
152
  "volto-dropdownmenu": "4.1.3",
153
153
  "volto-editablefooter": "5.1.7",
154
- "volto-feedback": "0.3.2",
154
+ "volto-feedback": "0.5.2",
155
155
  "volto-form-block": "3.10.0",
156
- "volto-gdpr-privacy": "2.2.9",
156
+ "volto-gdpr-privacy": "2.2.12",
157
157
  "volto-google-analytics": "2.0.0",
158
158
  "volto-multilingual-widget": "3.2.1",
159
159
  "volto-querywidget-with-browser": "0.4.2",
@@ -200,7 +200,7 @@
200
200
  "stylelint-prettier": "4.0.2"
201
201
  },
202
202
  "peerDependencies": {
203
- "@plone/volto": "17.20.2"
203
+ "@plone/volto": "17.20.3"
204
204
  },
205
205
  "packageManager": "yarn@3.2.3"
206
206
  }
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-12-12'
230
+ releaseDate: '2024-12-20'
231
231
  softwareType: standalone/web
232
- softwareVersion: 11.25.3
232
+ softwareVersion: 11.26.0
233
233
  url: 'https://github.com/italia/design-comuni-plone-theme'
234
234
  usedBy:
235
235
  - ASP Comuni Modenesi Area Nord
@@ -3,16 +3,16 @@ import React from 'react';
3
3
  import { Image } from '@plone/volto/components';
4
4
 
5
5
  const ImageWithErrors = (props) => {
6
- return (
7
- <Image
8
- {...props}
9
- onError={({ currentTarget }) => {
10
- currentTarget.onerror = null; // prevents looping
11
- currentTarget.src =
12
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8AAAAMcCAMAAACo9Dz9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEZDRUU0QjREQTIxMUU0ODAwMUVCOTYwMzA5MzE3NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEZDRUU0QzREQTIxMUU0ODAwMUVCOTYwMzA5MzE3NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRkNFRTQ5NERBMjExRTQ4MDAxRUI5NjAzMDkzMTc1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRkNFRTRBNERBMjExRTQ4MDAxRUI5NjAzMDkzMTc1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D7rN8gAAAMZQTFRFvL7A5+jpuLm7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';
13
- currentTarget.style = 'max-width: 200px;';
14
- }}
15
- />
16
- );
6
+ const RenderImage = Image({
7
+ ...props,
8
+ onError: ({ currentTarget }) => {
9
+ currentTarget.onerror = null; // prevents looping
10
+ currentTarget.src =
11
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8AAAAMcCAMAAACo9Dz9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEZDRUU0QjREQTIxMUU0ODAwMUVCOTYwMzA5MzE3NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEZDRUU0QzREQTIxMUU0ODAwMUVCOTYwMzA5MzE3NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRkNFRTQ5NERBMjExRTQ4MDAxRUI5NjAzMDkzMTc1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRkNFRTRBNERBMjExRTQ4MDAxRUI5NjAzMDkzMTc1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D7rN8gAAAMZQTFRFvL7A5+jpuLm7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';
12
+ currentTarget.style = 'max-width: 200px;';
13
+ },
14
+ });
15
+
16
+ return RenderImage;
17
17
  };
18
18
  export default ImageWithErrors;
@@ -123,6 +123,7 @@ const Body = ({ data, block, inEditMode, path, onChangeBlock, reactSlick }) => {
123
123
  const adaptedQuery = Object.assign(
124
124
  {
125
125
  fullobjects: 1,
126
+ sort_on: !Object.keys(_querystring).includes('sort_on') ? 'start' : null,
126
127
  },
127
128
  ...copyFields.map((name) =>
128
129
  Object.keys(_querystring).includes(name)
@@ -11,6 +11,7 @@ const SelectFilter = ({
11
11
  onChange,
12
12
  placeholder,
13
13
  isSearchable = false,
14
+ optionsQuerySize = 25,
14
15
  }) => {
15
16
  const dispatch = useDispatch();
16
17
 
@@ -52,15 +53,20 @@ const SelectFilter = ({
52
53
  );
53
54
  }
54
55
  } else if (options.vocabulary) {
55
- dispatch(getVocabulary({ vocabNameOrURL: options.vocabulary }));
56
+ dispatch(
57
+ getVocabulary({
58
+ vocabNameOrURL: options.vocabulary,
59
+ size: optionsQuerySize,
60
+ }),
61
+ );
56
62
  }
57
63
  }, []);
58
64
 
59
65
  const select_options = options?.choices
60
66
  ? options.choices
61
67
  : options?.vocabulary
62
- ? vocabularies?.[options.vocabulary]?.items
63
- : selectOptions;
68
+ ? vocabularies?.[options.vocabulary]?.items
69
+ : selectOptions;
64
70
 
65
71
  return (
66
72
  <div className="me-lg-3 my-2 my-lg-1 filter-wrapper select-filter">
@@ -72,6 +72,7 @@ const DefaultFilters = () => {
72
72
  vocabulary: 'design.plone.vocabularies.event_location',
73
73
  placeholder: intl.formatMessage(messages.venues),
74
74
  },
75
+ optionsQuerySize: -1,
75
76
  },
76
77
  },
77
78
  query: (value, query) => {
@@ -38,9 +38,8 @@ const CardCategory = (props) => {
38
38
  const categoryText = !href && children && (
39
39
  <span className="text">{children}</span>
40
40
  );
41
- const categoryIcon = iconName && (
42
- <Icon icon={iconName} title={intl.formatMessage(messages.categoryIcon)} />
43
- );
41
+ const iconTitle = rest.title || intl.formatMessage(messages.categoryIcon);
42
+ const categoryIcon = iconName && <Icon icon={iconName} title={iconTitle} />;
44
43
 
45
44
  return (
46
45
  <div className={classes} {...rest}>
@@ -4,7 +4,11 @@ import { rrulei18n } from '@plone/volto/components/manage/Widgets/RecurrenceWidg
4
4
  import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable';
5
5
  import { Card, CardTitle, CardBody } from 'design-react-kit';
6
6
  import PropTypes from 'prop-types';
7
- import { viewDate, getRealEventEnd } from 'design-comuni-plone-theme/helpers';
7
+ import {
8
+ viewDate,
9
+ getRealEventEnd,
10
+ getRecurrenceExceptionDates,
11
+ } from 'design-comuni-plone-theme/helpers';
8
12
 
9
13
  const messages = defineMessages({
10
14
  start: {
@@ -85,16 +89,12 @@ const Dates = ({ content, show_image, moment: momentlib, rrule }) => {
85
89
  const start = viewDate(intl.locale, content.start);
86
90
  // format and save date into new variable depending on recurrence of event
87
91
  const end = viewDate(intl.locale, actualEndDate);
92
+
88
93
  const openEnd = content?.open_end;
89
94
  const wholeDay = content?.whole_day;
90
- const rdates = rruleSet?.rdates() ?? [];
91
- const exdates = rruleSet?.exdates() ?? [];
92
- const additionalDates = rdates.reduce((acc, curr) => {
93
- const isExdate = exdates.some((b) => b.toString() === curr.toString());
94
- if (!isExdate) {
95
- return [...acc, curr];
96
- } else return acc;
97
- }, []);
95
+
96
+ const { additionalDates, removedDates } =
97
+ getRecurrenceExceptionDates(rruleSet);
98
98
 
99
99
  return content ? (
100
100
  <>
@@ -133,11 +133,11 @@ const Dates = ({ content, show_image, moment: momentlib, rrule }) => {
133
133
  <div className="point-list">
134
134
  <div className="point-list-aside point-list-warning">
135
135
  <span className="point-date font-monospace">
136
- {end.format('DD')}
136
+ {end?.format('DD')}
137
137
  </span>
138
- <span className="point-month">{end.format('MMMM')}</span>
139
- {!end.isSame(start, 'year') && (
140
- <span className="point-month">{end.format('YYYY')}</span>
138
+ <span className="point-month">{end?.format('MMMM')}</span>
139
+ {!end?.isSame(start, 'year') && (
140
+ <span className="point-month">{end?.format('YYYY')}</span>
141
141
  )}
142
142
  </div>
143
143
  <div className="point-list-content">
@@ -148,7 +148,7 @@ const Dates = ({ content, show_image, moment: momentlib, rrule }) => {
148
148
  >
149
149
  <CardBody tag="div" className={'card-body'}>
150
150
  <CardTitle tag="p">
151
- {!content.whole_day && `${end.format('HH:mm')} - `}
151
+ {!content.whole_day && `${end?.format('HH:mm')} - `}
152
152
  {intl.formatMessage(messages.end)}
153
153
  </CardTitle>
154
154
  </CardBody>
@@ -172,10 +172,10 @@ const Dates = ({ content, show_image, moment: momentlib, rrule }) => {
172
172
  ))}
173
173
  </div>
174
174
  )}
175
- {exdates.length > 0 && (
175
+ {removedDates.length > 0 && (
176
176
  <div className="mt-4">
177
177
  <h5>{intl.formatMessage(messages.excluded_dates)}</h5>
178
- {exdates.map((exDate) => (
178
+ {removedDates.map((exDate) => (
179
179
  <div className="font-serif">
180
180
  {viewDate(intl.locale, exDate, 'dddd DD MMMM YYYY')}
181
181
  </div>
@@ -4,13 +4,21 @@ import PropTypes from 'prop-types';
4
4
 
5
5
  import { rrulei18n } from '@plone/volto/components/manage/Widgets/RecurrenceWidget/Utils';
6
6
  import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable';
7
- import { getRealEventEnd } from 'design-comuni-plone-theme/helpers';
7
+ import {
8
+ getRealEventEnd,
9
+ getRecurrenceExceptionDates,
10
+ } from 'design-comuni-plone-theme/helpers';
8
11
 
9
12
  const messages = defineMessages({
10
13
  dateStart: {
11
14
  id: 'dal {dateStart} fino a conclusione',
12
15
  defaultMessage: 'dal {dateStart} fino a conclusione',
13
16
  },
17
+ exceptionDates: {
18
+ id: 'exceptionDates',
19
+ defaultMessage:
20
+ 'con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.',
21
+ },
14
22
  });
15
23
 
16
24
  /**
@@ -36,18 +44,20 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {
36
44
 
37
45
  const actualEndDate = getRealEventEnd(content, rruleSet);
38
46
 
39
- const wholeDay = content?.whole_day;
47
+ // const wholeDay = content?.whole_day;
40
48
  const openEnd = content?.open_end;
41
49
  // show only start when event starts and ends in same day or if a recurrence is set
42
50
  // because to set a recurrence, the event must have the same date as start and end date
43
51
  const renderOnlyStart =
44
52
  Moment(content.end).format('DD-MM-Y') ===
45
- Moment(content.start).format('DD-MM-Y') && !content.recurrence;
53
+ Moment(content.start).format('DD-MM-Y');
54
+
46
55
  let eventRecurrenceText = null;
47
56
 
48
57
  if (content['@type'] === 'Event') {
49
58
  if (content.recurrence) {
50
59
  const isRecurrenceByDay = content.recurrence.includes('BYDAY=+');
60
+ const isRecurrenceByMonthDay = content.recurrence.includes('BYMONTHDAY=');
51
61
  const isWeekdaySunday = content.recurrence
52
62
  .split('BYDAY')[1]
53
63
  ?.includes('SU');
@@ -55,7 +65,10 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {
55
65
  const RRULE_LANGUAGE = rrulei18n(intl, Moment);
56
66
  eventRecurrenceText = rruleSet.rrules()[0]?.toText(
57
67
  (t) => {
58
- if (Moment.locale(intl.locale) === 'it' && isRecurrenceByDay) {
68
+ if (
69
+ Moment.locale(intl.locale) === 'it' &&
70
+ (isRecurrenceByDay || isRecurrenceByMonthDay)
71
+ ) {
59
72
  RRULE_LANGUAGE.strings.th = '°';
60
73
  RRULE_LANGUAGE.strings.nd = '°';
61
74
  RRULE_LANGUAGE.strings.rd = '°';
@@ -77,13 +90,17 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {
77
90
  // format and save date into new variable depending on recurrence of event
78
91
  const endDate = Moment(actualEndDate).format('DD-MM-Y');
79
92
 
93
+ // check if there are exception dates added to the recurrence to add info
94
+ const { additionalDates, removedDates } =
95
+ getRecurrenceExceptionDates(rruleSet);
96
+
80
97
  return content['@type'] === 'Event' ? (
81
98
  <p className="h4 py-2">
82
- {!Moment(content.end).isSame(actualEndDate) &&
99
+ {(content.recurrence || !renderOnlyStart) &&
83
100
  !openEnd &&
84
- !renderOnlyStart &&
85
101
  `dal ${Moment(content.start).format('DD-MM-Y')} al ${endDate}`}
86
- {(renderOnlyStart || Moment(content.end).isSame(actualEndDate)) &&
102
+ {!content.recurrence &&
103
+ renderOnlyStart &&
87
104
  !openEnd &&
88
105
  `${Moment(content.start).format('DD-MM-Y')}`}
89
106
  {openEnd &&
@@ -91,7 +108,12 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {
91
108
  dateStart: `${Moment(content.start).format('DD-MM-Y')}`,
92
109
  })}
93
110
  {eventRecurrenceText && (
94
- <div className="recurrence small">{eventRecurrenceText}</div>
111
+ <div className="recurrence small">
112
+ <span>{eventRecurrenceText}</span>
113
+ {(additionalDates.length > 0 || removedDates.length > 0) && (
114
+ <span> {intl.formatMessage(messages.exceptionDates)}</span>
115
+ )}
116
+ </div>
95
117
  )}
96
118
  </p>
97
119
  ) : null;
@@ -36,7 +36,9 @@ export function getVocabulary({
36
36
  const vocabulary = getVocabName(vocabNameOrURL);
37
37
  const contextualVocabularies = config.settings.contextualVocabularies;
38
38
  const vocabPath =
39
- contextualVocabularies && contextualVocabularies.includes(vocabulary) && vocabulary !== vocabNameOrURL
39
+ contextualVocabularies &&
40
+ contextualVocabularies.includes(vocabulary) &&
41
+ vocabulary !== vocabNameOrURL
40
42
  ? flattenToAppURL(vocabNameOrURL)
41
43
  : `/@vocabularies/${vocabulary}`;
42
44
  let queryString = `b_start=${start}${size ? '&b_size=' + size : ''}`;
@@ -74,7 +76,9 @@ export function getVocabularyTokenTitle({
74
76
  const vocabulary = getVocabName(vocabNameOrURL);
75
77
  const contextualVocabularies = config.settings.contextualVocabularies;
76
78
  const vocabPath =
77
- contextualVocabularies && contextualVocabularies.includes(vocabulary) && vocabulary !== vocabNameOrURL
79
+ contextualVocabularies &&
80
+ contextualVocabularies.includes(vocabulary) &&
81
+ vocabulary !== vocabNameOrURL
78
82
  ? flattenToAppURL(vocabNameOrURL)
79
83
  : `/@vocabularies/${vocabulary}`;
80
84
  const queryString = {