@eeacms/volto-eea-website-policy 2.7.0 → 2.8.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. Dates are d
4
4
 
5
5
  Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
6
6
 
7
+ ### [2.8.0](https://github.com/eea/volto-eea-website-policy/compare/2.7.0...2.8.0) - 4 December 2025
8
+
9
+ #### :rocket: New Features
10
+
11
+ - feat: Custom ErrorView - refs #291209 [Nilesh - [`842a21b`](https://github.com/eea/volto-eea-website-policy/commit/842a21b2ae439c61ef30c12a6636feb09a8ddd2e)]
12
+
13
+ #### :hammer_and_wrench: Others
14
+
15
+ - Release 2.8.0 [Alin Voinea - [`1b2d223`](https://github.com/eea/volto-eea-website-policy/commit/1b2d22315096d7f6cf908e1ca5f0fd34c82ff9ed)]
7
16
  ### [2.7.0](https://github.com/eea/volto-eea-website-policy/compare/2.6.0...2.7.0) - 3 December 2025
8
17
 
9
18
  #### :rocket: New Features
@@ -12,7 +21,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
12
21
 
13
22
  #### :hammer_and_wrench: Others
14
23
 
15
- - Release 2.7.0 [Alin Voinea - [`351d759`](https://github.com/eea/volto-eea-website-policy/commit/351d75995c0327e4f8e59e447d4ec6ceaf15de7b)]
16
24
  ### [2.6.0](https://github.com/eea/volto-eea-website-policy/compare/2.5.1...2.6.0) - 6 August 2025
17
25
 
18
26
  #### :nail_care: Enhancements
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-eea-website-policy",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "description": "@eeacms/volto-eea-website-policy: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -0,0 +1,191 @@
1
+ import { FormattedMessage } from 'react-intl';
2
+ import { Container } from 'semantic-ui-react';
3
+
4
+ /**
5
+ * @function ErrorView
6
+ * @returns {string} Static Markup of the Error page.
7
+ */
8
+ const ErrorView = ({ name, error }) => {
9
+ return (
10
+ <Container
11
+ className="view-wrapper"
12
+ style={{
13
+ fontFamily: 'Helvetica, sans-serif',
14
+ fontSize: '20px',
15
+ display: 'flex',
16
+ flexDirection: 'column',
17
+ justifyContent: 'center',
18
+ alignItems: 'center',
19
+ backgroundColor: '#006699',
20
+ minHeight: '100vh',
21
+ width: '100vw',
22
+ margin: 0,
23
+ padding: 0,
24
+ position: 'fixed',
25
+ top: 0,
26
+ left: 0,
27
+ right: 0,
28
+ bottom: 0,
29
+ }}
30
+ >
31
+ {__DEVELOPMENT__ && (
32
+ <>
33
+ {error && (
34
+ <div
35
+ style={{
36
+ backgroundColor: '#f8f8f8',
37
+ border: '1px solid #ddd',
38
+ borderRadius: '4px',
39
+ padding: '20px',
40
+ margin: '20px 0',
41
+ maxWidth: '90%',
42
+ overflow: 'auto',
43
+ textAlign: 'center',
44
+ }}
45
+ >
46
+ <h3 style={{ marginTop: 0, color: '#d32f2f' }}>
47
+ Error Details (Development Mode)
48
+ </h3>
49
+ {error.name && (
50
+ <p>
51
+ <strong>Error Name:</strong> {error.name}
52
+ </p>
53
+ )}
54
+ {error.message && (
55
+ <p>
56
+ <strong>Error Message:</strong> {error.message}
57
+ </p>
58
+ )}
59
+ {error.status && (
60
+ <p>
61
+ <strong>Status:</strong> {error.status}
62
+ </p>
63
+ )}
64
+ {error.stack && (
65
+ <>
66
+ <p>
67
+ <strong>Stack Trace:</strong>
68
+ </p>
69
+ <pre
70
+ style={{
71
+ backgroundColor: '#f0f0f0',
72
+ padding: '10px',
73
+ borderRadius: '4px',
74
+ fontSize: '12px',
75
+ lineHeight: '1.4',
76
+ overflow: 'auto',
77
+ whiteSpace: 'pre-wrap',
78
+ wordBreak: 'break-word',
79
+ }}
80
+ >
81
+ {error.stack}
82
+ </pre>
83
+ </>
84
+ )}
85
+ {name && (
86
+ <p>
87
+ <strong>Component Name:</strong> {name}
88
+ </p>
89
+ )}
90
+ </div>
91
+ )}
92
+ </>
93
+ )}
94
+ {!__DEVELOPMENT__ && (
95
+ <div
96
+ style={{
97
+ display: 'flex',
98
+ flexDirection: 'column',
99
+ justifyContent: 'center',
100
+ alignItems: 'center',
101
+ textAlign: 'center',
102
+ width: '100%',
103
+ color: 'white',
104
+ }}
105
+ >
106
+ <div>
107
+ <h1
108
+ style={{
109
+ fontSize: '18px',
110
+ fontWeight: 'normal',
111
+ margin: '0 0 10px 0',
112
+ color: 'white',
113
+ }}
114
+ >
115
+ European Environment Agency (EEA)
116
+ </h1>
117
+ <a
118
+ href="https://www.eea.europa.eu"
119
+ style={{
120
+ color: 'white',
121
+ textDecoration: 'underline',
122
+ fontSize: '16px',
123
+ }}
124
+ >
125
+ www.eea.europa.eu
126
+ </a>
127
+ </div>
128
+
129
+ <div
130
+ style={{
131
+ borderTop: '1px solid rgba(255, 255, 255, 0.3)',
132
+ borderBottom: '1px solid rgba(255, 255, 255, 0.3)',
133
+ padding: '30px 0',
134
+ margin: '20px 0',
135
+ width: '600px',
136
+ maxWidth: '90%',
137
+ }}
138
+ >
139
+ <h2
140
+ style={{
141
+ fontSize: '24px',
142
+ fontWeight: 'bold',
143
+ margin: '0',
144
+ color: 'white',
145
+ lineHeight: '1.4',
146
+ }}
147
+ >
148
+ <FormattedMessage
149
+ id="Our apologies, our website is not available at the moment."
150
+ defaultMessage="Our apologies, our website is not available at the moment."
151
+ />
152
+ </h2>
153
+ </div>
154
+
155
+ <div>
156
+ <p
157
+ style={{
158
+ fontSize: '16px',
159
+ fontStyle: 'italic',
160
+ margin: '0 0 20px 0',
161
+ color: 'white',
162
+ }}
163
+ >
164
+ <FormattedMessage
165
+ id="If this problem persists Contact EEA Web Team (web.helpdesk at eea.europa.eu)"
166
+ defaultMessage="If this problem persists Contact EEA Web Team (web.helpdesk at eea.europa.eu)"
167
+ />
168
+ </p>
169
+ <p
170
+ style={{
171
+ fontSize: '14px',
172
+ margin: '0',
173
+ color: 'white',
174
+ lineHeight: '1.4',
175
+ }}
176
+ >
177
+ <span style={{ textDecoration: 'underline' }}>
178
+ European Environment Agency
179
+ </span>
180
+ , Kongens Nytorv 6, 1050
181
+ <br />
182
+ Copenhagen K, Denmark - Phone: +45 3336 7100
183
+ </p>
184
+ </div>
185
+ </div>
186
+ )}
187
+ </Container>
188
+ );
189
+ };
190
+
191
+ export default ErrorView;
package/src/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { runtimeConfig } from '@plone/volto/runtime_config';
2
2
  import { appendGroup, getAsyncData } from './helpers';
3
3
  import { FrequencyOfDissemination } from '@eeacms/volto-eea-website-policy/components/Widgets/FrequencyOfDissemination';
4
+ import ErrorView from '@eeacms/volto-eea-website-policy/components/ErrorView/ErrorView';
4
5
 
5
6
  const restrictedBlocks = [
6
7
  'imagecards',
@@ -63,6 +64,12 @@ const applyConfig = (config) => {
63
64
  };
64
65
  }
65
66
 
67
+ //This only works if the component is wrapped in ErrorBoundary from volto
68
+ config.registerComponent({
69
+ name: 'ErrorBoundary',
70
+ component: ErrorView,
71
+ });
72
+
66
73
  // #137187 Keycloak integration
67
74
  if (runtimeConfig['RAZZLE_KEYCLOAK'] === 'Yes') {
68
75
  config.settings.externalRoutes = [