design-comuni-plone-theme 11.26.1 → 11.26.3

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.
Binary file
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
 
2
2
 
3
+ ## [11.26.3](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.26.2...v11.26.3) (2025-01-15)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * image with error on error loop, customizable fallback image in site properties ([#852](https://github.com/RedTurtle/design-comuni-plone-theme/issues/852)) ([7187e5f](https://github.com/RedTurtle/design-comuni-plone-theme/commit/7187e5f74a3eadcf9ff2d38000386cb3f0792696))
9
+ * remove file upload restraint from contents modal if modules are allowed ([#854](https://github.com/RedTurtle/design-comuni-plone-theme/issues/854)) ([46357ae](https://github.com/RedTurtle/design-comuni-plone-theme/commit/46357aee85f05782fc6d1374a23a7e9d9cd89232))
10
+
11
+
12
+ ### Documentation
13
+
14
+ * updated publiccode and release log ([004915b](https://github.com/RedTurtle/design-comuni-plone-theme/commit/004915b0aee731b88b2d77e93a3c5c2f7ab56330))
15
+
16
+ ## [11.26.2](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.26.1...v11.26.2) (2024-12-27)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * theme build bug due to print styles desync ([2aacb6a](https://github.com/RedTurtle/design-comuni-plone-theme/commit/2aacb6a78d6d4c93ef24a4d3b89ff6b587baa698))
22
+
23
+
24
+ ### Documentation
25
+
26
+ * updated publiccode ([ba2e5c8](https://github.com/RedTurtle/design-comuni-plone-theme/commit/ba2e5c85bfbc0de260a0d0dc8839b2286500656d))
27
+
3
28
  ## [11.26.1](https://github.com/RedTurtle/design-comuni-plone-theme/compare/v11.26.0...v11.26.1) (2024-12-27)
4
29
 
5
30
 
package/RELEASE.md CHANGED
@@ -41,6 +41,12 @@
41
41
  - ...
42
42
  -->
43
43
 
44
+ ## Versione 11.26.3 (15/01/2025)
45
+
46
+ ### Fix
47
+
48
+ - E' possibile caricare moduli in maniera massiva nei documenti all'interno delle aree corrette dentro Documenti e Dati > Modulistica
49
+
44
50
  ## Versione 11.26.1 (27/12/2024)
45
51
 
46
52
  ### Fix
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.26.1",
5
+ "version": "11.26.3",
6
6
  "main": "src/index.js",
7
7
  "repository": {
8
8
  "type": "git",
package/publiccode.yml CHANGED
@@ -227,9 +227,9 @@ maintenance:
227
227
  name: io-Comune - Il sito AgID per Comuni ed Enti Pubblici
228
228
  platforms:
229
229
  - web
230
- releaseDate: '2024-12-27'
230
+ releaseDate: '2025-01-15'
231
231
  softwareType: standalone/web
232
- softwareVersion: 11.26.1
232
+ softwareVersion: 11.26.3
233
233
  url: 'https://github.com/italia/design-comuni-plone-theme'
234
234
  usedBy:
235
235
  - ASP Comuni Modenesi Area Nord
@@ -1,18 +1,31 @@
1
1
  import React from 'react';
2
-
3
2
  import { Image } from '@plone/volto/components';
3
+ import { useFallbackImageSrc } from 'design-comuni-plone-theme/helpers';
4
4
 
5
- const ImageWithErrors = (props) => {
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+jpuLm7vL3A6Ojpu72/6enqury+6err3d7fv8HD4+TlwcPF0tPV5ufo5ebny8zO6uvsycvMxMbIubu92dvcxcfJ2tzdvb/BvsDCwMLE5OXmwcLE0dPU19jaxsjK3t/g0NLT0NHTw8XH3uDhxcbI3N3e2Nnb4eLj1tfZ29ze09TW4OHizs/R1NXXysvN4uPkzM7Q3+DhwsTGy83Pz9DS1dfYx8nLyMrM1NbXzc/Q2drbt7e4uru86+zsubq8uLq87O3tYNDmNgAAF6BJREFUeNrt3Vlb20q6gFHVUVVJTHYCgdjMM0kgCZmnM/7/P3Uueu/dGcC2jAyyWe9t9xMbt1d/JVlSFf/5H5LmteJ/Cklz23/4CCSAJQEsCWAJYEkASwJYEsASwJIAlgSwBLAkgCUBLAlgCWBJAEsCWBLAEsCSAJYEsASwJIAlASwJYAlgSQBLAlgSwBLAkgCWBLAEsCSAJQEsCWAJYEkASwJYAlgSwJIAlgSwBLAkgCUBLAlgCWBJAEsCWAJYEsCSAJYEsASwJIAlASwJYAlgSQBLAlgCWBLAkgCWBLAEsCSAJQEsCWAJYEkASwJYAlgSwJIAlgSwBLAkgCUBLAEsCWBJAEsCWAJYEsCSAJYEsASwJIAlASwBLAlgSQBLAlgCWBLAkgCWBLAEsCSAJQEsASwJYEkASwJYAlgSwJIAlgSwBLAkgCUBLAEsCWBJAEsCWAJYEsCSAJYAlgSwJIAlASwBLAlgSQBLAlgCWBLAkgCWAJYEsCSAJQEsASwJYEkASwJYAlgSwJIAlgCWBLAkgCUBLAEsCWBJAGtEZZnKv0tl6QMBWHNTqsrtD0+O32xubm5eXH46WB2mimGANR/Dt1p9+/l9yDnHGGPMOffP974OEQZYczB9y43PL2Idw8/lp73D4+2EMMDq9vRNZ/v9nMMfxTpfH21XPiGA1eHxu7zWzzHcXKxffHQ6C2B19+D3y2l9G98QQsjxYjf5nABWN5fPn/o5jCzWV1uW0QCri36LtRjDuPLKE4IBVvf8Dl7W4/2GkHsEA6zOlb7lMFGx/5ZggNWtqtdh0uLKljNZAKtT8/drP08suH6/TTDA6pDf7avJ/YZQv/SRAazuVH6uG/gNMa4bwQCrMwP4Sy+GRoJPhz41gNWVAbyZQ7PysTPRAKsbVV8bDuAQ8tW2q6IBVje6qBv6DTG/M4IBVicW0Ks7oXH5+cAIBlhdAPw6hyk6cSIaYHWg9CpO4Td/AhhgdWAAb69MAzg+t4QGWB0YwG/7UwG+9tEBrIevOp7Gb4g7Z9bQAOvBe/b56VSA+28BBlgP32YdphLsYiyA9eCVg1cAA6xHB/jp52c+PYA1t4BfAgyw5hZwbQIDrDk+Bj5yDAywHhxw+ePpdIA/AQywHjy/AwOsOW76K7FcDA2wHn4NvT7dtdArA58dwHp4wLvuRgJYcyz4fKr7gb8DDLC6APh4qt+RNgAGWF0APM0zserNAmCA1QXAxX7zH5LyOz8iAaxOlL4Gz4UGWPMr+HnTo2A7MwCs7iyiDxpuzZDfL/vUAFZnRvC3ZiPY7oQAq0uAl9832h/4c+kIGGB1SPCX/uSC68NdAxhgdUrw5Lc0ZA+UBVidE3w54QiOPQfAAKtrlcV+nmQI595HfgFW9wSntRgnWD8/8QswwOqi4PL12DNZ+cWW+QuwHnaxfOtx8MH7PIpwzvvb/AKsB/U74iKqNLxcufWSjlhffSz5BVgPWdo4PylH/ccXvXzDsXCMeWVve8Thb3q35+oOgDVrvx9ePL0YBS0VJ99WQv3zGekY69y/er2bRozftHtdHyWCAdZM/S4v5RhGnkguU9r+uH+4U9d1zjnn+mm4Pn/zpRitM32rQz4CGGDN0u/2eQ4hvx9zKqpM1fbW20+XFz9+bH5ee/1lY1CNOfatvoYYQjSDAdYs/S7lEELI+2PPRZWpSmUxGAyKsqrGsix3r3IIIeY9ggHWjP2GEN9NejVGOdl/6cdf567zkTNZAGsmVdvn9T/XUx20eT1VOv77vHWMH12oBbBmM3/rn66oavGOwGr93w/0iH2XWgKsWfg9//kiq/rVcltr3XT289YOsWfTM4DVut/B5q+XWNUXg3agVRsvfrn8MpvBAKvlysHL3y+RzPutPJr9d78hRDccAqyW/X7+8xLnvN/CDP7Tbwix94RggNXm/L3pZv18sXzXxW519iLfdNP/W6togDW79fNfx8FLH+42KtP6Sr558+ADggFWO36Ll7fd5Fu/OKimPxBO5afbHgifCQZYs/YbQu4dD6f+l3dHPEWLYIDVit/h51G7LuR6fdoRnF6O2tQwrxw4kwWw7uo3rY162GTMb6aewOWHkds55JWDZz5/gHWn0t6oJ03GfHmHmw+qk5XRgj0AD2Ddaf6WRyMfFVvf7WKOtDVa8PUJwQDrDuvno5EPa683B3e7GGuM4Pp0lWCAdYf5O/Ihz5vDu/qqxszg01W3BwOsaefvrP2On8GHZjDAms7W3sjj31b8EgywZlN1nMPs/RZFdbAzchV9aBUNsJq7ehJGn78atnZD/9ueGQywWvbbi/cxf4uiKNKTMYJtqASwmpoaOX+Xlltc15ZjBOe7/lolgB/d/L3XX3fG/f9Fm/NeAC/+/O2PXD8f7qb2XzHfzxG3AF78+Tva7+lumsH/Z4yewT8IBliTWsr37bcoqndxzFWbVtEAawJJ6/c/f4uiKNPeff1uJYAX2O+4q5N3ZzQJyzFXftX7Nj4DWHf0+353ZivZcYLzGxufAazRx78HY+6xP5nhk6rKtBZHP/0DYIA1av4ePOgzMspyzAy+NIMB1h38zvhJkWPOZJnBAGvE+nnr4Z9RVX4b9QzMGC8JBlid9VuUxX4dnMkCWI39fnjxsOvnvwW/zCOfg3nkge8A60+/q4fdeMZrWeyPfJJA73VlBgOsP/zWHXlG85gZnAPBAOs3NGPmb2/9Hq9ELov9kbtBhNdW0QDrZzIbL/6vvr2nvSf3OvPK4uXTUW+nPvI/GcD6N5jB3tLzEb16e893AqXh/qtR72fzxCIaYP0k5tnI7v9Ovmrk+3EQDLAkgCWAJQEsCWBJAEsASwJYEsCSAJYAlgSwJIAlgCUBLAlgSQBLAEsCWBLAkgBuVlnpvvLIPIBb97uxpvvpcm+XYIBbLn0MUfdS7m0ADHDbgJ/0gu6l2AcYYIABBlgAAwwwwAIYYIABFsAAAwwwwAIYYIAFMMAAAwywAAYYYIAFMMAAAyyAAQYYYAEMMMAAC2CAAQZYAAMMMMAAC2CAARbAAAMMMMACGGCAARbAAAMMsAAGGGCAARbAAAMsgAEGGGABDDDAAAMsgAEGWAADDDDAAAtggAEGWAADDDDAAhhggAEGWAADDLAABrh7gLNuC2CAOw945/B8STd1/h5ggLsOOB+uDpd1U4OvNcAAdx3w0jCVuqnqDGCAuw942bfvlo9wC2CAAQZYAAMMMMAAAwwwwAADDDDAAAMMsAAGGGCABTDAAAMsgAEGGGCAAQYYYIABBhhggAEWwAADDDDAAAMMMMAAAwwwwAADLIABBhhgAQzwYwJclmX6V2VZAiyA5whwmapiefXk4OOTj19OVpeLqioBFsDzAbisBl8+vTzt//UU9P7h/vHBYIEIAwzwAgNOafd4aaeuc/z7e5zremdpbzclgAVwtwGX1Ye1nfgP3n++yznv7K2mEmAB3GHAaXi0Usebv871ytEgASyAOws4bSzlePsXOp9vLMIQBhjghQRcpo/90Rv35f67BRAMMMCLCLgs1npx3Hc6rM3/r8IAA7yAgMvyW47jv9T5zdwLBhjgBQSc1ibwuxCCAQZ48QCn7yFO9rWOnxLAArhTgNNWbzK/IcT+QQJYAHcIcLl8msOk5cNhCbAA7g7gtFaHycuXCWAB3BnA6awfGwCO/Y0EsADuDOCXOTQp7wMsgLsCuNzoxUaAY/+kBFgAdwNw9abZAA4hf6sAFsCdAFwuv68bAq7fb5cAC+AuAK6ehNgQcAxvK4AFcBcAp7WnoWlP35jAArgLgMvhq9wYcF6a34s5AAZ4oQDvrsTGgOPOLsACuAOA01kdmldvJYAFcAcAv81TAM5PTGAB3AXA36cCfASwAO7CMfDlVID3ABbAXQC81hHAZQIYYIDnFXD6cFYCDDDATQEfdwJwWT6/vp/rMwEGeKFOYn2cCvDHlr/c6XvOnxPAAAPcEPCXqQB/aRdbOtuJ93SFNcAALxTgD70pAMcPrX65y+F5HUI+XC4BBhjgRsfAy6dTXErZ8v2E6bIOIYT6Pp62BTDAiwS4KF82v5ay3m/3r/r611/Vu4crNAEGeKEAV1NcilV/f9bmH7V99ddbyKezv8sJYIAXCnDaaHw7Ulxp9bmUP60B8loCGGCAmzwTK202fibWZptf7fTuJzW9me/7ADDACwZ4vfEEXm9RWVpdyT/v+zAoAQYY4Ca/yCw1fC70Upvr58Fmfa/7PgAM8IIBbnpLcG5zAFfHv+5rmvtbFcAAAzz5t68cNDoKzs9bXOWmrd+3dcnns11EAwzwoi2hG22OFHdaPAVdDg//eOV8XAEMMMBN/tnXDbYXbXOH7+qyvkHOWQIYYICbTML9SQXnixa/1mn9pofK169muYgGGOAFBLy8NNnj3fPhdosL6NXrG5fu8SgBDDDATf7h1Yl2SKoPd1u0VV7Ut9iZ4SIaYIAXEHBRrh7GOH7+tvlA9/T6tlfM57O7JhpggBcRcFEuX+TRgmP+0eYNu+nk9ouw81EFMMAANxJcHvdGfbfr/l6rT44cnOcRt0ucJIABBriR4PTl/NYhHPPSQWr1Hoa9PPJ+CRMYYICb/vODd1ex/tNwrOPVu2GrM7E6GH3xSH6dAAYY4KZDePj6Vb/+ZQ7H/LS/9H2Y2n2Izvb70b8851ktogEGeHEBF0VRFQd7z3dyzjHGGHPOO6/2vhRtn1Mqv41jVG8WJcAAA9zYVpWGq1uv1/Y3Nzf3116frQ5TVbb/d4z/zWo2i2iAAV5swEVRlGUq/y6V7X+P04eV8Zduxp2ZLKIBBnjhAc+4svwxyaXXeSaLaIABBvhuVZ8mu3Uif68ABhjgrvnd2pns9uN4vVoCDDDA3VpADyd+Bld9ATDAAHfsb3gz8VYQMb5LAAMMcJf+hK9Nnr91vZoABhjg7iyg/9lH5YEW0QADDPAdAO8320ut9UU0wAADPP0f8LHhNhD5+kMCGGCAZzpWJ37/H3aa7uNS77d8GwXAAAP8a5M+KKscPG+8l2kM6wlggAGeWdXR1dlkl0ylo+Z7EYf8YrsEGGCAZ3ZY23t6OtEMTlu92BxwqD8ngAEGeEZv6aAfQ700weMqy+HpNH5DDE8qgAEGeCbvaGMlhxDq8/EzuMElWL8vopdLgAEGeAZv6MPpvw5r66VxWzaktyGGKQW3uIgGGGCA/70qPv+bQ30+WnC5ez2t3xDCegUwwAC37bf4aWfhMTO43Kyn95uvWjsTDTDAAP9lsvz28+Yo9aidv2/fR2WyM9FvEsAAA9zuu/ntyRr1xeA2Zulk5y5+Q+h9SQADDHCLVe9+PytV798yg8vBUr6T35BPW/qLAAYY4KIoivS1n/+8++9mwWntjn5DyC0togEGGOCiKKqNmxbF9UVxg7PqSy/eFXDsHVQAAwxwS+9k9eYb8+uLwZ8L6OXTOw/gEGI7i2iAAQa4SNu3HdTml3+8cvrcgt8Q8psKYIABbqFycPuvunnttxt4q3exDb8h9r5UAAMMcAu9HLE5d9z75TA4fbhuZQCHkE+HJcAAA3zX+Tt6c+4Q936awWVxl0uwfvuz9hLAAAN8x559z3H045x/WkVXR7ktvyH2txLAAAN8p6q3434UinEt/eNlJ7YGONRLd15EAwzw4wZcbe3kSRa7ZVE02kdlsj/sKAEMMMB3eAsnk5yTiuFdVRRFUV226jeE3lkCGGCApz6BtXo4EcnYe1c13EdlMldLgxJggAGe0u/w+YTnlGPvXapWX+S2Bee9CmCAAZ7Ob3Ex+daCvXfVfh1aH8H9uy2iAQb4EQN+0+CUcty5CDMovzKBAQZ4qpf/1OgnoZjDTAQfJ4ABBrhx1ccQw8MXdzYSwAAD3NTv150u+A2hfl6UAAMMcLPXPlmpQzfKnyqAAQa40UvvXuWO+A1xZ3pcAAP8GAGn4Xln/I55gi3AAAP8W23eFPiwZ6IBBvjxAS7Lb7lLfkNcOSkBBhjgCV/3KMdOAQ71D4ABBnjCl+3GD8C/3nL8vQIYYIAnqFrvdc1vCHnlQwIYYIDH+z1byaF75R8mMMAAj3/NGdwT2I7gqRbRAAP8qACn7cNu+g3xeppFNMAAPybA5fBHR/2GUG9OcU00wAA/IsBl8bIOnS0+SQADDPDtftNlDh0GfL2dAAYY4Ftf73WIHQYc8n5ZAgwwwLe8XBd/AP5FWXhSAQwwwDdWfdnJodvlF7slwAADfNOLnbzout8Q8n4CGGCAb3it5fd1mIMaLqIBBvhRAE7D87nwm1/sJoABBvjXylF7eM/zmWiAAX4EgMv0bU78hhC+JoABBviXFzqOcV785qvtEmCAAf7ldebGbwj5WyoBBhjgf17moD9HfkMMXyuAAQb471fp5h38I7BdLQMMMMB/vcjufPwA/OsiGmCAAS6KoigHS3nO/IYY1iuAAQa4KMrhxdz5DSG/X04AAwxwUb7Jcf4Ah/oSYIABLtLeHM7fEELsHSSAAX7kgMv0PcS5BBzqw8n+ZIABXlzA1df+fA7gEEK9lgAG+FEDrrZW4rz6nXQRDTDAiwq4Orma2/kbQsiHwxJggB8t4LS9VId5bqIz0QADvJiAy8Hz+fYbYn+CRTTAAC8k4LL4POd+Q8inJjDAjxRwWpt7vyHkowQwwI8RcPUpLEC5f1YBDPDjA1y97cWFEPxq3JlogAFePMDVwUoOC1F9VAEM8CMDnE6uF8RviDsbCWCAHxXgtHtah0WpXhokgAF+RIDL4avF8RtiPgYY4EcEuCx/5LBAxf5ZAhjgxwK4LC4Xym8I9XMTGODHArhMn3JcLMAhfq8ABviRTOBP9dN6wfrv/lYJMMCPAXC5vP9qc+F69doEBviRTODq2QKWAAb4sZyFfmwfIcAAAwywAAYYYIABBhhggAEGGGCAAQYYYAEMMMAAC2CAAQZYAAMMMMAAAwwwwAADDDDAAAMsgAEGGGCAAQYYYIABBhhggAEGWAADDDDAAhhggAEWwAADDDDAAAMMMMAAAwwwwAADrFYBnxfPKt3U/24ADHDXAcerJ+u6sa/HGWCAOw44xPqpbm7CzcwBBvgBAevu+4QDDDDAAAMsgAEGGGABDDDAAAtggAEGGGABDDDAAhhggAEGWAADDDDAAhhggAHW2P7LRwAwwHP8tfQRAAwwwAALYIABFsAAAwwwwAIYYIABFsAAAwywAAYYYIABFsAAAyyAAQYYYIAFMMAAAyyAAQYYYAEMMMAAC2CAAQZYAAMMMMACGGCAAQZYAAMMsAAGGGCAARbAAAMMsAAGuGOAQ9S9lHsAA9z6J7V+vaL76cUJwAC33XBV99XA1w3g1it1X/myASwBLAlgSQBLAlgCWBLAkgCWAJYEsCSAJQEsASwJYEkASwJYAlgSwJIAlgCWBLAkgCUBLAEsCWBJAEsCWAJYEsCSAJYAlgSwJIAlASwBLAlgSQBLAEsCWBLAkgCWAJYEsCSAJQEsASwJYEkASwBLAlgSwJIAlgCWBLAkgCUBLAEsCWBJAEsASwJYEsCSAJYAlgSwJIAlgCUBLAlgSQBLAEsCWBLAkgCWAJYEsCSAJYAlASwJYEkASwBLAlgSwJIAlgCWBLAkgCWAJQEsCWBJAEsASwJYEsCSAJYAlgSwJIAlgCUBLAlgSQBLAEsCWBLAEsCSAJYEsCSAJYAlASwJYEkASwBLAlgSwBLAkgCWBLAkgCWAJQEsCWBJAEsASwJYEsASwJIAlgSwJIAlgCUBLAlgSQBLAEsCWBLAEsCSAJYEsCSAJYAlASwJYAlgSQBLAlgSwBLAkgCWBLAkgCWAJQEsCWAJYEkASwJYEsASwJIAlgSwJIAlgCUBLAlgCWBJAEsCWBLAEsCSAJYEsASwj0ACWBLAkgCWAJYEsCSAJQEsASwJYEkASwBLAlgSwJIAlgCWBLAkgCUBLAEsCWBJAEsASwJYEsCSAJYAlgSwJIAlASwBLAlgSQBLAEsCWBLAkgCWAJYEsCSAJYAlASwJYEkASwBLAlgSwJIAlgCWBLAkgCWAJQEsCWBJAEsASwJYEsCSAJYAlgSwJIAlgCUBLAlgSQBLAEsCWBLAkgCWAJb0MJU+Amlu+38MX/XOo4IBUwAAAABJRU5ErkJggg==';
12
- currentTarget.style = 'max-width: 200px;';
13
- },
14
- });
5
+ const ImageWithErrors = ({ src, fallbackSrc = '', ...rest }) => {
6
+ const { className, sizes } = rest;
7
+ const { currentSrc, handleError, getFallbackImageStyle } =
8
+ useFallbackImageSrc({
9
+ src,
10
+ customFallbackSrc: fallbackSrc,
11
+ className,
12
+ sizes,
13
+ });
15
14
 
16
- return RenderImage;
15
+ let commonProps = { ...rest };
16
+ const fallbackStyle = getFallbackImageStyle({
17
+ src,
18
+ customFallbackSrc: fallbackSrc,
19
+ className,
20
+ sizes,
21
+ });
22
+ if (fallbackStyle) {
23
+ commonProps = {
24
+ ...commonProps,
25
+ style: { ...commonProps.style, ...fallbackStyle },
26
+ };
27
+ }
28
+ return <Image {...commonProps} src={currentSrc} onError={handleError} />;
17
29
  };
30
+
18
31
  export default ImageWithErrors;
@@ -67,9 +67,13 @@ import gdprPrivacyPanelConfig from 'design-comuni-plone-theme/config/volto-gdpr-
67
67
  import { schemaListing } from 'design-comuni-plone-theme/components/ItaliaTheme/Blocks/Listing/schema.js';
68
68
 
69
69
  import reducers from 'design-comuni-plone-theme/reducers';
70
+ import {
71
+ FALLBACK_IMAGE_SRC,
72
+ FALLBACK_IMAGE_SRC_MAX_W,
73
+ } from 'design-comuni-plone-theme/helpers/images';
70
74
 
71
- const ReleaseLog = loadable(
72
- () => import('design-comuni-plone-theme/components/ReleaseLog/ReleaseLog'),
75
+ const ReleaseLog = loadable(() =>
76
+ import('design-comuni-plone-theme/components/ReleaseLog/ReleaseLog'),
73
77
  );
74
78
 
75
79
  const messages = defineMessages({
@@ -287,6 +291,8 @@ export default function applyConfig(voltoConfig) {
287
291
  markSpecialLinks: true, // se impostato a false, non marca con icona i link esterni
288
292
  markFooterLinks: true, // se impostato a true, viene aggiunta un'icona ai link del footer per renderli riconoscibili
289
293
  showContentDateInListingFor: ['Modulo', 'Documento'], // elenco dei content types per i quali mostrare la data di pubblicazione/modifica in listing
294
+ fallbackImageSrc: FALLBACK_IMAGE_SRC,
295
+ fallbackImageSrcMaxW: FALLBACK_IMAGE_SRC_MAX_W,
290
296
  },
291
297
  apiExpanders: [
292
298
  ...config.settings.apiExpanders,
@@ -196,10 +196,12 @@ class ContentsUploadModal extends Component {
196
196
  // as per agid guidelines, files cannot be uploaded in modulistica folder inside ct servizio
197
197
  // show restraint and hide upload button when page is called modulistica and when there's a restraint
198
198
  // this is enough to identify this only case bc even if another page is called 'modulistica', it will have 'File'
199
- // as addable type
199
+ // and "Modulo" as addable type
200
200
  const showFileRestraint =
201
- this.props.pathname.includes('modulistica') &&
202
- !this.props.types.some((type) => type.id === 'File');
201
+ getBaseUrl(this.props.pathname).match(/\/servizi\/.*\/modulistica\/?$/) &&
202
+ !this.props.types.some(
203
+ (type) => type.id === 'File' || type.id === 'Modulo',
204
+ );
203
205
 
204
206
  return (
205
207
  this.props.open && (
@@ -0,0 +1,53 @@
1
+ import { useState, useEffect } from 'react';
2
+ import {
3
+ isResolveUID,
4
+ getSiteProperty,
5
+ } from 'design-comuni-plone-theme/helpers';
6
+
7
+ const FALLBACK_IMAGE_SRC =
8
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8AAAAMcCAMAAACo9Dz9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEZDRUU0QjREQTIxMUU0ODAwMUVCOTYwMzA5MzE3NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEZDRUU0QzREQTIxMUU0ODAwMUVCOTYwMzA5MzE3NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRkNFRTQ5NERBMjExRTQ4MDAxRUI5NjAzMDkzMTc1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRkNFRTRBNERBMjExRTQ4MDAxRUI5NjAzMDkzMTc1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D7rN8gAAAMZQTFRFvL7A5+jpuLm7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';
9
+
10
+ const FALLBACK_IMAGE_SRC_MAX_W = 200;
11
+
12
+ const getFallbackImageStyle = ({
13
+ src,
14
+ customFallbackSrc,
15
+ className,
16
+ sizes,
17
+ }) => {
18
+ const fallbackSrc = customFallbackSrc || getSiteProperty('fallbackImageSrc');
19
+ if (src === fallbackSrc) {
20
+ if (!className && sizes) return { maxWidth: sizes };
21
+ else if (!className && !sizes)
22
+ return { maxWidth: getSiteProperty('fallbackImageSrcMaxW') };
23
+ }
24
+ };
25
+
26
+ /*
27
+ Hook per l'utilizzo di immagini con fallback per immagini rotte.
28
+ NB: il backend a volte torna ./resolveuid/xxxxx se non trova il brain
29
+ dell'immagine nella property per la src. Siamo tutti d'accordo a
30
+ classificarlo come immagine rotta in questo caso.
31
+ */
32
+ const useFallbackImageSrc = ({
33
+ src,
34
+ customFallbackSrc = '',
35
+ className,
36
+ sizes,
37
+ }) => {
38
+ const [currentSrc, setCurrentSrc] = useState(
39
+ !isResolveUID(src)
40
+ ? src
41
+ : customFallbackSrc || getSiteProperty('fallbackImageSrc'),
42
+ );
43
+ useEffect(() => {
44
+ setCurrentSrc(src); // Reset the source if props change
45
+ }, [src]);
46
+
47
+ const handleError = () => {
48
+ setCurrentSrc(getSiteProperty('fallbackImageSrc'));
49
+ };
50
+ return { currentSrc, handleError, getFallbackImageStyle };
51
+ };
52
+
53
+ export { FALLBACK_IMAGE_SRC, FALLBACK_IMAGE_SRC_MAX_W, useFallbackImageSrc };
@@ -54,5 +54,9 @@ export {
54
54
  export { commonSearchBlockMessages } from 'design-comuni-plone-theme/helpers/Translations/searchBlockExtendedTranslations';
55
55
 
56
56
  export { getComponentWithFallback } from 'design-comuni-plone-theme/helpers/registry';
57
- export { useHomePath } from 'design-comuni-plone-theme/helpers/url';
57
+ export {
58
+ useHomePath,
59
+ isResolveUID,
60
+ } from 'design-comuni-plone-theme/helpers/url';
58
61
  export { usePaginatedItemsSection } from 'design-comuni-plone-theme/helpers/usePaginatedItemsSection.hook.ts';
62
+ export { useFallbackImageSrc } from 'design-comuni-plone-theme/helpers/images';
@@ -13,3 +13,10 @@ export const useHomePath = () => {
13
13
  }, [locale]);
14
14
  return path;
15
15
  };
16
+
17
+ const RESOLVEUID_RE = /^[./]*resolve[Uu]id\/([^/]*)\/?(.*)$/;
18
+
19
+ export function isResolveUID(url) {
20
+ const match = url?.match(RESOLVEUID_RE);
21
+ return Boolean(match);
22
+ }
@@ -187,6 +187,16 @@
187
187
  }
188
188
  }
189
189
 
190
+ .block.image-text-block {
191
+ .image-text-card-wrapper {
192
+ page-break-inside: avoid;
193
+
194
+ h2 {
195
+ page-break-after: avoid;
196
+ }
197
+ }
198
+ }
199
+
190
200
  .block.accordion {
191
201
  .public-ui {
192
202
  width: 100%;
@@ -219,6 +229,7 @@
219
229
  }
220
230
  }
221
231
  }
232
+ }
222
233
 
223
234
  .block.numbersBlock {
224
235
  color: #000;
@@ -344,6 +355,7 @@
344
355
  }
345
356
  }
346
357
 
358
+ // listing variations
347
359
  div.block.listing {
348
360
  page-break-inside: avoid;
349
361