@eeacms/volto-eea-website-policy 3.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.eslintrc.js CHANGED
@@ -16,16 +16,16 @@ if (configFile) {
16
16
  voltoPath = `./${jsConfig.baseUrl}/${pathsConfig['@plone/volto'][0]}`;
17
17
  }
18
18
 
19
- const AddonConfigurationRegistry = require(`${voltoPath}/addon-registry.js`);
20
- const reg = new AddonConfigurationRegistry(projectRootPath);
19
+ const { AddonRegistry } = require('@plone/registry/addon-registry');
20
+ const { registry } = AddonRegistry.init(projectRootPath);
21
21
 
22
22
  // Extends ESlint configuration for adding the aliases to `src` directories in Volto addons
23
- const addonAliases = Object.keys(reg.packages).map((o) => [
23
+ const addonAliases = Object.keys(registry.packages).map((o) => [
24
24
  o,
25
- reg.packages[o].modulePath,
25
+ registry.packages[o].modulePath,
26
26
  ]);
27
27
 
28
- const addonExtenders = reg.getEslintExtenders().map((m) => require(m));
28
+ const addonExtenders = registry.getEslintExtenders().map((m) => require(m));
29
29
 
30
30
  const defaultConfig = {
31
31
  extends: `${voltoPath}/.eslintrc`,
@@ -34,7 +34,7 @@ const defaultConfig = {
34
34
  alias: {
35
35
  map: [
36
36
  ['@plone/volto', '@plone/volto/src'],
37
- ['@plone/volto-slate', '@plone/volto/packages/volto-slate/src'],
37
+ ['@plone/volto-slate', '@plone/volto-slate/src'],
38
38
  ...addonAliases,
39
39
  ['@package', `${__dirname}/src`],
40
40
  ['@root', `${__dirname}/src`],
package/CHANGELOG.md CHANGED
@@ -4,7 +4,26 @@ 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
- ### [3.0.0](https://github.com/eea/volto-eea-website-policy/compare/2.8.0...3.0.0) - 23 December 2025
7
+ ### [4.0.1](https://github.com/eea/volto-eea-website-policy/compare/4.0.0...4.0.1) - 8 April 2026
8
+
9
+ #### :bug: Bug Fixes
10
+
11
+ - fix: make test [Alin V. (Claudiu) - [`d052416`](https://github.com/eea/volto-eea-website-policy/commit/d052416ff062c97e5ef9324bb776bdad0526fce7)]
12
+
13
+ #### :hammer_and_wrench: Others
14
+
15
+ ## [4.0.0](https://github.com/eea/volto-eea-website-policy/compare/3.0.0...4.0.0) - 25 March 2026
16
+
17
+ #### :rocket: New Features
18
+
19
+ - feat: Volto 18 support - refs #287700 [Alin Voinea - [`840b51d`](https://github.com/eea/volto-eea-website-policy/commit/840b51dbaf2b8fb2be9659647ebd5208531d403a)]
20
+
21
+ #### :house: Internal changes
22
+
23
+
24
+ #### :hammer_and_wrench: Others
25
+
26
+ ## [3.0.0](https://github.com/eea/volto-eea-website-policy/compare/2.8.0...3.0.0) - 23 December 2025
8
27
 
9
28
  #### :rocket: New Features
10
29
 
package/DEVELOP.md CHANGED
@@ -26,21 +26,20 @@
26
26
 
27
27
  ### Or add @eeacms/volto-eea-website-policy to your Volto project
28
28
 
29
- Before starting make sure your development environment is properly set. See [Volto Developer Documentation](https://docs.voltocms.com/getting-started/install/)
29
+ Before starting make sure your development environment is properly set. See the official Plone documentation for [creating a project with Cookieplone](https://6.docs.plone.org/install/create-project-cookieplone.html) and [installing an add-on in development mode in Volto 18 and 19](https://6.docs.plone.org/volto/development/add-ons/install-an-add-on-dev-18.html).
30
30
 
31
- 1. Make sure you have installed `yo`, `@plone/generator-volto` and `mrs-developer`
31
+ For new Volto 18+ projects, use Cookieplone. It includes `mrs-developer` by default.
32
32
 
33
- npm install -g yo @plone/generator-volto mrs-developer
33
+ 1. Create a new Volto project with Cookieplone
34
34
 
35
- 1. Create new volto app
36
-
37
- yo @plone/volto my-volto-project --addon @eeacms/volto-eea-website-policy --skip-install
38
- cd my-volto-project
35
+ uvx cookieplone project
36
+ cd project-title
39
37
 
40
38
  1. Add the following to `mrs.developer.json`:
41
39
 
42
40
  {
43
41
  "volto-eea-website-policy": {
42
+ "output": "packages",
44
43
  "url": "https://github.com/eea/volto-eea-website-policy.git",
45
44
  "package": "@eeacms/volto-eea-website-policy",
46
45
  "branch": "develop",
@@ -48,28 +47,31 @@ Before starting make sure your development environment is properly set. See [Vol
48
47
  }
49
48
  }
50
49
 
51
- 1. Install
50
+ 1. Add `@eeacms/volto-eea-website-policy` to the `addons` key in your project `volto.config.js`
51
+
52
+ 1. Install or refresh the project setup
52
53
 
53
- make develop
54
- yarn
54
+ make install
55
55
 
56
- 1. Start backend
56
+ 1. Start backend in one terminal
57
57
 
58
- docker run --pull always -it --rm --name plone -p 8080:8080 -e SITE=Plone plone/plone-backend
58
+ make backend-start
59
59
 
60
- ...wait for backend to setup and start - `Ready to handle requests`:
60
+ ...wait for backend to setup and start, ending with `Ready to handle requests`
61
61
 
62
62
  ...you can also check http://localhost:8080/Plone
63
63
 
64
- 1. Start frontend
64
+ 1. Start frontend in a second terminal
65
65
 
66
- yarn start
66
+ make frontend-start
67
67
 
68
68
  1. Go to http://localhost:3000
69
69
 
70
70
  1. Happy hacking!
71
71
 
72
- cd src/addons/volto-eea-website-policy/
72
+ cd packages/volto-eea-website-policy
73
+
74
+ For legacy Volto 17 projects, keep using the yarn-based workflow from the Volto 17 documentation.
73
75
 
74
76
  ## Cypress
75
77
 
@@ -81,7 +83,7 @@ project where you added `volto-eea-website-policy` to `mrs.developer.json`
81
83
  Go to:
82
84
 
83
85
  ```BASH
84
- cd src/addons/volto-eea-website-policy/
86
+ cd packages/volto-eea-website-policy/
85
87
  ```
86
88
 
87
89
  Start:
package/README.md CHANGED
@@ -3,16 +3,16 @@
3
3
  [![Releases](https://img.shields.io/github/v/release/eea/volto-eea-website-policy)](https://github.com/eea/volto-eea-website-policy/releases)
4
4
 
5
5
  [![Pipeline](https://ci.eionet.europa.eu/buildStatus/icon?job=volto-addons%2Fvolto-eea-website-policy%2Fmaster&subject=master)](https://ci.eionet.europa.eu/view/Github/job/volto-addons/job/volto-eea-website-policy/job/master/display/redirect)
6
- [![Lines of Code](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy-master&metric=ncloc)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy-master)
7
- [![Coverage](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy-master&metric=coverage)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy-master)
8
- [![Bugs](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy-master&metric=bugs)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy-master)
9
- [![Duplicated Lines (%)](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy-master&metric=duplicated_lines_density)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy-master)
6
+ [![Lines of Code](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy&metric=ncloc)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy)
7
+ [![Coverage](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy&metric=coverage)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy)
8
+ [![Bugs](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy&metric=bugs)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy)
9
+ [![Duplicated Lines (%)](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy&metric=duplicated_lines_density)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy)
10
10
 
11
11
  [![Pipeline](https://ci.eionet.europa.eu/buildStatus/icon?job=volto-addons%2Fvolto-eea-website-policy%2Fdevelop&subject=develop)](https://ci.eionet.europa.eu/view/Github/job/volto-addons/job/volto-eea-website-policy/job/develop/display/redirect)
12
- [![Lines of Code](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy-develop&metric=ncloc)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy-develop)
13
- [![Coverage](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy-develop&metric=coverage)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy-develop)
14
- [![Bugs](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy-develop&metric=bugs)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy-develop)
15
- [![Duplicated Lines (%)](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy-develop&metric=duplicated_lines_density)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy-develop)
12
+ [![Lines of Code](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy&branch=develop&metric=ncloc)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy&branch=develop)
13
+ [![Coverage](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy&branch=develop&metric=coverage)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy&branch=develop)
14
+ [![Bugs](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy&branch=develop&metric=bugs)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy&branch=develop)
15
+ [![Duplicated Lines (%)](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-website-policy&branch=develop&metric=duplicated_lines_density)](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-website-policy&branch=develop)
16
16
 
17
17
 
18
18
  EEA Main Website (Plone 6) [Volto](https://github.com/plone/volto) Frontend Policy
@@ -32,6 +32,11 @@ EEA Main Website (Plone 6) [Volto](https://github.com/plone/volto) Frontend Poli
32
32
 
33
33
  Go to http://localhost:3000
34
34
 
35
+ `make start` now defaults to Volto 18. To run the same setup against Volto 17, use:
36
+
37
+ VOLTO_VERSION=17 make
38
+ VOLTO_VERSION=17 make start
39
+
35
40
  ### Add volto-eea-website-policy to your Volto project
36
41
 
37
42
  1. Make sure you have a [Plone backend](https://plone.org/download) up-and-running at http://localhost:8080/Plone
@@ -45,30 +50,39 @@ Go to http://localhost:3000
45
50
  * If you already have a volto project, just update `package.json`:
46
51
 
47
52
  ```JSON
48
- "addons": [
49
- "@eeacms/volto-eea-website-policy"
50
- ],
51
-
52
53
  "dependencies": {
53
54
  "@eeacms/volto-eea-website-policy": "*"
54
55
  }
55
56
  ```
56
57
 
57
- * If not, create one:
58
+ and `volto.config.js`:
59
+
60
+ ```JavaScript
61
+ const addons = ['@eeacms/volto-eea-website-policy'];
62
+ ```
63
+
64
+ * If not, create one with Cookieplone, as recommended by the official Plone documentation for Volto 18+:
58
65
 
59
66
  ```
60
- npm install -g yo @plone/generator-volto
61
- yo @plone/volto my-volto-project --canary --addon @eeacms/volto-eea-website-policy
62
- cd my-volto-project
67
+ uvx cookieplone project
68
+ cd project-title
63
69
  ```
64
70
 
65
- 1. Install new add-ons and restart Volto:
71
+ 1. Install or update dependencies, then start the project:
66
72
 
67
73
  ```
68
- yarn
69
- yarn start
74
+ make install
70
75
  ```
71
76
 
77
+ For a Cookieplone project, start the backend and frontend in separate terminals:
78
+
79
+ ```
80
+ make backend-start
81
+ make frontend-start
82
+ ```
83
+
84
+ For a legacy Volto 17 project, install the package with `yarn` and restart the frontend as usual.
85
+
72
86
  1. Go to http://localhost:3000
73
87
 
74
88
  1. Happy editing!
@@ -15,7 +15,7 @@ services:
15
15
  args:
16
16
  ADDON_NAME: "${ADDON_NAME}"
17
17
  ADDON_PATH: "${ADDON_PATH}"
18
- VOLTO_VERSION: ${VOLTO_VERSION:-16}
18
+ VOLTO_VERSION: ${VOLTO_VERSION:-18-yarn}
19
19
  ports:
20
20
  - "3000:3000"
21
21
  - "3001:3001"
@@ -1,5 +1,24 @@
1
1
  require('dotenv').config({ path: __dirname + '/.env' });
2
2
 
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ // Volto 18 exposes @plone/volto-slate as a top-level package.
7
+ const voltoSlatePath = fs.existsSync(
8
+ path.join(
9
+ __dirname,
10
+ '..',
11
+ '..',
12
+ '..',
13
+ 'node_modules',
14
+ '@plone',
15
+ 'volto-slate',
16
+ 'src',
17
+ ),
18
+ )
19
+ ? '<rootDir>/node_modules/@plone/volto-slate/src'
20
+ : '<rootDir>/node_modules/@plone/volto/packages/volto-slate/src';
21
+
3
22
  module.exports = {
4
23
  testMatch: ['**/src/addons/**/?(*.)+(spec|test).[jt]s?(x)'],
5
24
  collectCoverageFrom: [
@@ -19,10 +38,8 @@ module.exports = {
19
38
  '@eeacms/search/(.*)$': '<rootDir>/src/addons/volto-searchlib/searchlib/$1',
20
39
  '@eeacms/search': '<rootDir>/src/addons/volto-searchlib/searchlib',
21
40
  '@eeacms/(.*?)/(.*)$': '<rootDir>/node_modules/@eeacms/$1/src/$2',
22
- '@plone/volto-slate$':
23
- '<rootDir>/node_modules/@plone/volto/packages/volto-slate/src',
24
- '@plone/volto-slate/(.*)$':
25
- '<rootDir>/node_modules/@plone/volto/packages/volto-slate/src/$1',
41
+ '@plone/volto-slate$': voltoSlatePath,
42
+ '@plone/volto-slate/(.*)$': `${voltoSlatePath}/$1`,
26
43
  '~/(.*)$': '<rootDir>/src/$1',
27
44
  'load-volto-addons':
28
45
  '<rootDir>/node_modules/@plone/volto/jest-addons-loader.js',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-eea-website-policy",
3
- "version": "3.0.0",
3
+ "version": "4.0.1",
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",
@@ -3,7 +3,7 @@ import cx from 'classnames';
3
3
 
4
4
  export const FrequencyOfDissemination = ({ value, children, className }) => {
5
5
  if (!value) {
6
- return '';
6
+ return null;
7
7
  }
8
8
 
9
9
  const text = value > 1 ? `Every ${value} years` : 'Once a year';
@@ -24,6 +24,6 @@ describe('FrequencyOfDissemination', () => {
24
24
 
25
25
  it('renders nothing when value is falsy', () => {
26
26
  const { container } = render(<FrequencyOfDissemination value={0} />);
27
- expect(container.firstChild).toMatchSnapshot();
27
+ expect(container.firstChild).toBeNull();
28
28
  });
29
29
  });
@@ -9,9 +9,9 @@ import PropTypes from 'prop-types';
9
9
  import { Button, Popup } from 'semantic-ui-react';
10
10
  import { defineMessages, injectIntl } from 'react-intl';
11
11
  import loadable from '@loadable/component';
12
- import { isEqual } from 'lodash';
12
+ import isEqual from 'lodash/isEqual';
13
13
 
14
- import { Icon } from '@plone/volto/components';
14
+ import Icon from '@plone/volto/components/theme/Icon/Icon';
15
15
  import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable';
16
16
  import showSVG from '@plone/volto/icons/show.svg';
17
17
  // import clearSVG from '@plone/volto/icons/clear.svg';
package/src/helpers.js CHANGED
@@ -1,7 +1,7 @@
1
- import { isArray } from 'lodash';
1
+ import isArray from 'lodash/isArray';
2
2
  import config from '@plone/volto/registry';
3
- import { getContent } from '@plone/volto/actions';
4
- import { flattenToAppURL } from '@plone/volto/helpers';
3
+ import { getContent } from '@plone/volto/actions/content/content';
4
+ import { flattenToAppURL } from '@plone/volto/helpers/Url/Url';
5
5
  import { serializeNodes } from '@plone/volto-slate/editor/render';
6
6
 
7
7
  export const createSlateParagraph = (text) => {
@@ -1,8 +1,8 @@
1
1
  import * as helpers from './helpers';
2
2
  import config from '@plone/volto/registry';
3
3
  import { serializeNodes } from '@plone/volto-slate/editor/render';
4
- import { isArray } from 'lodash';
5
- import '@testing-library/jest-dom/extend-expect';
4
+ import isArray from 'lodash/isArray';
5
+ import '@testing-library/jest-dom';
6
6
 
7
7
  jest.mock('@plone/volto/registry', () => ({
8
8
  settings: {