@eeacms/volto-eea-design-system 1.40.3 → 1.50.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 +30 -16
- package/CHANGELOG.md +26 -0
- package/DEVELOP.md +19 -17
- package/README.md +33 -19
- package/docker-compose.yml +1 -1
- package/jest-addon.config.js +8 -4
- package/package.json +1 -1
- package/src/helpers/useFirstVisited.js +4 -2
- package/src/ui/Accordion/Accordion.stories.test.js +1 -1
- package/src/ui/Banner/Banner.test.jsx +1 -1
- package/src/ui/CallToAction/CallToAction.stories.test.jsx +1 -1
- package/src/ui/Card/Card.stories.test.jsx +1 -1
- package/src/ui/Card/IconCard/IconCard.stories.test.jsx +1 -1
- package/src/ui/Card/RelatedContent/RelatedContent.stories.test.jsx +1 -1
- package/src/ui/Confirm/Confirm.stories.test.js +1 -1
- package/src/ui/ContextNavigation/ContextNavigation.stories.test.jsx +1 -1
- package/src/ui/Divider/Divider.stories.test.jsx +1 -1
- package/src/ui/DownloadLabeledIcon/DownloadLabeledIcon.stories.test.jsx +1 -1
- package/src/ui/Footer/Description.test.jsx +1 -1
- package/src/ui/Footer/Footer.stories.test.js +1 -1
- package/src/ui/Footer/FooterActions.jsx +1 -1
- package/src/ui/Footer/FooterSitesButton.jsx +1 -1
- package/src/ui/Footer/Social.test.jsx +1 -1
- package/src/ui/Footer/SubFooter.jsx +2 -2
- package/src/ui/Form/Button/Button.stories.test.jsx +1 -1
- package/src/ui/Form/Checkbox.stories.test.js +1 -1
- package/src/ui/Form/Dropdown.stories.test.js +1 -1
- package/src/ui/Form/Radio.stories.test.js +1 -1
- package/src/ui/Form/Textarea.stories.test.js +1 -1
- package/src/ui/Form/input.stories.test.js +1 -1
- package/src/ui/Grid/ComponentGrid.stories.js +2 -2
- package/src/ui/Grid/ComponentGrid.stories.test.js +1 -1
- package/src/ui/Header/Header.jsx +4 -4
- package/src/ui/Header/Header.stories.test.js +1 -1
- package/src/ui/Header/Header.test.jsx +2 -2
- package/src/ui/Header/HeaderMenuPopUp.js +2 -1
- package/src/ui/Header/HeaderMenuPopUp.test.js +1 -1
- package/src/ui/Header/HeaderSearchPopUp.test.js +1 -1
- package/src/ui/Hero/Hero.stories.jsx +2 -4
- package/src/ui/Hero/Hero.stories.test.jsx +1 -1
- package/src/ui/InpageNavigation/InpageNavigation.jsx +1 -1
- package/src/ui/InpageNavigation/InpageNavigation.stories.test.jsx +1 -1
- package/src/ui/InpageNavigation/InpageNavigation.test.jsx +1 -1
- package/src/ui/Item/Item.stories.test.js +1 -1
- package/src/ui/Item/ItemGroupWithIcons.stories.test.js +1 -1
- package/src/ui/Label/Label.stories.test.js +1 -1
- package/src/ui/LabeledIconGroup/LabeledIconGroup.stories.test.jsx +1 -1
- package/src/ui/LanguageLabeledIcon/LanguangeLabeledIcon.test.jsx +1 -1
- package/src/ui/Loader/Loader.stories.test.jsx +1 -1
- package/src/ui/Logo/Logo.stories.test.jsx +1 -1
- package/src/ui/Media/Image.stories.test.js +1 -1
- package/src/ui/Message/Message.stories.test.js +1 -1
- package/src/ui/Modal/Modal.stories.test.js +1 -1
- package/src/ui/Popup/Popup.test.jsx +1 -1
- package/src/ui/Progress/Progress.stories.test.js +1 -1
- package/src/ui/Quote/Testimonial/Testimonial.stories.test.jsx +1 -1
- package/src/ui/Statistic/Statistic.stories.js +12 -4
- package/src/ui/Statistic/Statistic.stories.test.js +1 -1
- package/src/ui/Tab/Tab.stories.test.js +1 -1
- package/src/ui/Table/Table.stories.js +2 -2
- package/src/ui/Table/Table.stories.test.js +1 -1
- package/src/ui/Tag/Tag.jsx +1 -1
- package/src/ui/Timeline/Timeline.stories.test.jsx +1 -1
- package/src/ui/Video/Video.jsx +1 -1
- package/theme/themes/eea/assets/images/Header/ai-search.svg +6 -0
- package/theme/themes/eea/extras/header.less +1 -0
package/.eslintrc.js
CHANGED
|
@@ -4,37 +4,43 @@ const path = require('path');
|
|
|
4
4
|
const projectRootPath = fs.existsSync('./project')
|
|
5
5
|
? fs.realpathSync('./project')
|
|
6
6
|
: fs.realpathSync(__dirname + '/../../../');
|
|
7
|
-
const jsConfig = require(
|
|
8
|
-
path.join(projectRootPath, 'jsconfig.json'),
|
|
9
|
-
).compilerOptions;
|
|
10
|
-
|
|
11
|
-
const pathsConfig = jsConfig.paths;
|
|
12
7
|
|
|
13
8
|
let voltoPath = path.join(projectRootPath, 'node_modules/@plone/volto');
|
|
9
|
+
let configFile;
|
|
10
|
+
if (fs.existsSync(`${projectRootPath}/tsconfig.json`))
|
|
11
|
+
configFile = `${projectRootPath}/tsconfig.json`;
|
|
12
|
+
else if (fs.existsSync(`${projectRootPath}/jsconfig.json`))
|
|
13
|
+
configFile = `${projectRootPath}/jsconfig.json`;
|
|
14
|
+
|
|
15
|
+
if (configFile) {
|
|
16
|
+
const jsConfig = require(configFile).compilerOptions;
|
|
17
|
+
const pathsConfig = jsConfig.paths;
|
|
18
|
+
if (pathsConfig['@plone/volto'])
|
|
19
|
+
voltoPath = `./${jsConfig.baseUrl}/${pathsConfig['@plone/volto'][0]}`;
|
|
20
|
+
}
|
|
14
21
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
voltoPath = `./${jsConfig.baseUrl}/${pathsConfig[pkg][0]}`;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
const AddonConfigurationRegistry = require(`${voltoPath}/addon-registry.js`);
|
|
21
|
-
const reg = new AddonConfigurationRegistry(projectRootPath);
|
|
22
|
+
const { AddonRegistry } = require('@plone/registry/addon-registry');
|
|
23
|
+
const { registry } = AddonRegistry.init(projectRootPath);
|
|
22
24
|
|
|
23
25
|
// Extends ESlint configuration for adding the aliases to `src` directories in Volto addons
|
|
24
|
-
const addonAliases = Object.keys(
|
|
26
|
+
const addonAliases = Object.keys(registry.packages).map((o) => [
|
|
25
27
|
o,
|
|
26
|
-
|
|
28
|
+
registry.packages[o].modulePath,
|
|
27
29
|
]);
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
const addonExtenders = registry.getEslintExtenders().map((m) => require(m));
|
|
32
|
+
|
|
33
|
+
const defaultConfig = {
|
|
34
|
+
extends: `${voltoPath}/.eslintrc`,
|
|
31
35
|
settings: {
|
|
32
36
|
'import/resolver': {
|
|
33
37
|
alias: {
|
|
34
38
|
map: [
|
|
35
39
|
['@plone/volto', '@plone/volto/src'],
|
|
40
|
+
['@plone/volto-slate', '@plone/volto-slate/src'],
|
|
36
41
|
...addonAliases,
|
|
37
42
|
['@package', `${__dirname}/src`],
|
|
43
|
+
['@root', `${__dirname}/src`],
|
|
38
44
|
['~', `${__dirname}/src`],
|
|
39
45
|
],
|
|
40
46
|
extensions: ['.js', '.jsx', '.json'],
|
|
@@ -45,6 +51,14 @@ module.exports = {
|
|
|
45
51
|
},
|
|
46
52
|
},
|
|
47
53
|
rules: {
|
|
54
|
+
'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }],
|
|
48
55
|
'react/jsx-no-target-blank': 'off',
|
|
49
56
|
},
|
|
50
57
|
};
|
|
58
|
+
|
|
59
|
+
const config = addonExtenders.reduce(
|
|
60
|
+
(acc, extender) => extender.modify(acc),
|
|
61
|
+
defaultConfig,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
module.exports = config;
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,32 @@ 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
|
+
### [1.50.1](https://github.com/eea/volto-eea-design-system/compare/1.50.0...1.50.1) - 7 April 2026
|
|
8
|
+
|
|
9
|
+
#### :bug: Bug Fixes
|
|
10
|
+
|
|
11
|
+
- fix: megamenu breaking columns - refs #302209 [Teodor Voicu - [`5dd05ba`](https://github.com/eea/volto-eea-design-system/commit/5dd05ba4925e96c37ed0801df5376185c821d0ed)]
|
|
12
|
+
- fix: make test [Alin V. (Claudiu) - [`98dc41b`](https://github.com/eea/volto-eea-design-system/commit/98dc41b32de9bab9680105e4549e7b68c2116072)]
|
|
13
|
+
|
|
14
|
+
#### :house: Internal changes
|
|
15
|
+
|
|
16
|
+
- chore: Volto 18 eslint update - refs #301881 [Teodor Voicu - [`0446edb`](https://github.com/eea/volto-eea-design-system/commit/0446edbb5552608f7658f61fbe4a5d58f71b62b4)]
|
|
17
|
+
|
|
18
|
+
### [1.50.0](https://github.com/eea/volto-eea-design-system/compare/1.40.3...1.50.0) - 25 March 2026
|
|
19
|
+
|
|
20
|
+
#### :rocket: New Features
|
|
21
|
+
|
|
22
|
+
- feat: Volto 18 support - refs #287700 [Alin Voinea - [`6d4f49c`](https://github.com/eea/volto-eea-design-system/commit/6d4f49c3c2a2bfae2ff1b01df6c9e1ec3b13efc5)]
|
|
23
|
+
- feat(Header): replace search icon with ai variant [Miu Razvan - [`af211a9`](https://github.com/eea/volto-eea-design-system/commit/af211a933bb5499036b7be24b75a2949fa791cea)]
|
|
24
|
+
|
|
25
|
+
#### :house: Internal changes
|
|
26
|
+
|
|
27
|
+
- chore: [JENKINSFILE] add package version in sonarqube [valentinab25 - [`a2500ee`](https://github.com/eea/volto-eea-design-system/commit/a2500ee91c3d926183403b7e55ef717f697eb736)]
|
|
28
|
+
- chore: [JENKINSFILE] use sonarqube branches [EEA Jenkins - [`79058be`](https://github.com/eea/volto-eea-design-system/commit/79058be6ad228970127ee388bbc78ad69b92465b)]
|
|
29
|
+
|
|
30
|
+
#### :hammer_and_wrench: Others
|
|
31
|
+
|
|
32
|
+
- tests: Fix Sonar Qube tags - refs #297339 [Alin Voinea - [`248553d`](https://github.com/eea/volto-eea-design-system/commit/248553d47d053514f512178793f64d382711c57e)]
|
|
7
33
|
### [1.40.3](https://github.com/eea/volto-eea-design-system/compare/1.40.2...1.40.3) - 11 February 2026
|
|
8
34
|
|
|
9
35
|
#### :bug: Bug Fixes
|
package/DEVELOP.md
CHANGED
|
@@ -26,21 +26,20 @@
|
|
|
26
26
|
|
|
27
27
|
### Or add @eeacms/volto-eea-design-system to your Volto project
|
|
28
28
|
|
|
29
|
-
Before starting make sure your development environment is properly set. See [Volto
|
|
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
|
-
|
|
31
|
+
For new Volto 18+ projects, use Cookieplone. It includes `mrs-developer` by default.
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
1. Create a new Volto project with Cookieplone
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
yo @plone/volto my-volto-project --addon @eeacms/volto-eea-design-system --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-design-system": {
|
|
42
|
+
"output": "packages",
|
|
44
43
|
"url": "https://github.com/eea/volto-eea-design-system.git",
|
|
45
44
|
"package": "@eeacms/volto-eea-design-system",
|
|
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.
|
|
50
|
+
1. Add `@eeacms/volto-eea-design-system` to the `addons` key in your project `volto.config.js`
|
|
51
|
+
|
|
52
|
+
1. Install or refresh the project setup
|
|
52
53
|
|
|
53
|
-
make
|
|
54
|
-
yarn
|
|
54
|
+
make install
|
|
55
55
|
|
|
56
|
-
1. Start backend
|
|
56
|
+
1. Start backend in one terminal
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
make backend-start
|
|
59
59
|
|
|
60
|
-
...wait for backend to setup and start
|
|
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
|
-
|
|
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
|
|
72
|
+
cd packages/volto-eea-design-system
|
|
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-design-system` to `mrs.developer.json`
|
|
|
81
83
|
Go to:
|
|
82
84
|
|
|
83
85
|
```BASH
|
|
84
|
-
cd
|
|
86
|
+
cd packages/volto-eea-design-system/
|
|
85
87
|
```
|
|
86
88
|
|
|
87
89
|
Start:
|
package/README.md
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
[](https://github.com/eea/volto-eea-design-system/releases)
|
|
4
4
|
|
|
5
5
|
[](https://ci.eionet.europa.eu/view/Github/job/volto-addons/job/volto-eea-design-system/job/master/display/redirect)
|
|
6
|
-
[](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-design-system
|
|
6
|
+
[](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-design-system)
|
|
7
|
+
[](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-design-system)
|
|
8
|
+
[](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-design-system)
|
|
9
|
+
[](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-design-system)
|
|
10
10
|
|
|
11
11
|
[](https://ci.eionet.europa.eu/view/Github/job/volto-addons/job/volto-eea-design-system/job/develop/display/redirect)
|
|
12
|
-
[](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-eea-design-system
|
|
12
|
+
[](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-design-system&branch=develop)
|
|
13
|
+
[](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-design-system&branch=develop)
|
|
14
|
+
[](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-design-system&branch=develop)
|
|
15
|
+
[](https://sonarqube.eea.europa.eu/dashboard?id=volto-eea-design-system&branch=develop)
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
[Volto](https://github.com/plone/volto) EEA Design System
|
|
@@ -52,6 +52,11 @@ See [Storybook](https://eea.github.io/eea-storybook/).
|
|
|
52
52
|
|
|
53
53
|
Go to http://localhost:3000
|
|
54
54
|
|
|
55
|
+
`make start` now defaults to Volto 18. To run the same setup against Volto 17, use:
|
|
56
|
+
|
|
57
|
+
VOLTO_VERSION=17 make
|
|
58
|
+
VOLTO_VERSION=17 make start
|
|
59
|
+
|
|
55
60
|
### Add volto-eea-design-system to your Volto project
|
|
56
61
|
|
|
57
62
|
1. Make sure you have a [Plone backend](https://plone.org/download) up-and-running at http://localhost:8080/Plone
|
|
@@ -65,30 +70,39 @@ Go to http://localhost:3000
|
|
|
65
70
|
* If you already have a volto project, just update `package.json`:
|
|
66
71
|
|
|
67
72
|
```JSON
|
|
68
|
-
"addons": [
|
|
69
|
-
"@eeacms/volto-eea-design-system"
|
|
70
|
-
],
|
|
71
|
-
|
|
72
73
|
"dependencies": {
|
|
73
74
|
"@eeacms/volto-eea-design-system": "*"
|
|
74
75
|
}
|
|
75
76
|
```
|
|
76
77
|
|
|
77
|
-
|
|
78
|
+
and `volto.config.js`:
|
|
79
|
+
|
|
80
|
+
```JavaScript
|
|
81
|
+
const addons = ['@eeacms/volto-eea-design-system'];
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
* If not, create one with Cookieplone, as recommended by the official Plone documentation for Volto 18+:
|
|
78
85
|
|
|
79
86
|
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
cd my-volto-project
|
|
87
|
+
uvx cookieplone project
|
|
88
|
+
cd project-title
|
|
83
89
|
```
|
|
84
90
|
|
|
85
|
-
1. Install
|
|
91
|
+
1. Install or update dependencies, then start the project:
|
|
86
92
|
|
|
87
93
|
```
|
|
88
|
-
|
|
89
|
-
yarn start
|
|
94
|
+
make install
|
|
90
95
|
```
|
|
91
96
|
|
|
97
|
+
For a Cookieplone project, start the backend and frontend in separate terminals:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
make backend-start
|
|
101
|
+
make frontend-start
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
For a legacy Volto 17 project, install the package with `yarn` and restart the frontend as usual.
|
|
105
|
+
|
|
92
106
|
1. Go to http://localhost:3000
|
|
93
107
|
|
|
94
108
|
1. Happy editing!
|
package/docker-compose.yml
CHANGED
package/jest-addon.config.js
CHANGED
|
@@ -19,6 +19,12 @@ const path = require('path');
|
|
|
19
19
|
const fs = require('fs');
|
|
20
20
|
const fg = require('fast-glob');
|
|
21
21
|
|
|
22
|
+
const voltoSlatePath = fs.existsSync(
|
|
23
|
+
path.join(__dirname, '../../../node_modules/@plone/volto-slate/src'),
|
|
24
|
+
)
|
|
25
|
+
? '<rootDir>/node_modules/@plone/volto-slate/src'
|
|
26
|
+
: '<rootDir>/node_modules/@plone/volto/packages/volto-slate/src';
|
|
27
|
+
|
|
22
28
|
// Get the addon name from the current file path
|
|
23
29
|
const pathParts = __filename.split(path.sep);
|
|
24
30
|
const addonsIdx = pathParts.lastIndexOf('addons');
|
|
@@ -424,10 +430,8 @@ module.exports = {
|
|
|
424
430
|
'@eeacms/countup': '<rootDir>/node_modules/@eeacms/countup/lib',
|
|
425
431
|
'@eeacms/(.*?)/(.*)$': '<rootDir>/node_modules/@eeacms/$1/src/$2',
|
|
426
432
|
'@eeacms/(.*?)$': '<rootDir>/node_modules/@eeacms/$1/src',
|
|
427
|
-
'@plone/volto-slate$':
|
|
428
|
-
|
|
429
|
-
'@plone/volto-slate/(.*)$':
|
|
430
|
-
'<rootDir>/node_modules/@plone/volto/packages/volto-slate/src/$1',
|
|
433
|
+
'@plone/volto-slate$': voltoSlatePath,
|
|
434
|
+
'@plone/volto-slate/(.*)$': `${voltoSlatePath}/$1`,
|
|
431
435
|
'~/(.*)$': '<rootDir>/src/$1',
|
|
432
436
|
'load-volto-addons':
|
|
433
437
|
'<rootDir>/node_modules/@plone/volto/jest-addons-loader.js',
|
package/package.json
CHANGED
|
@@ -20,10 +20,12 @@ function useFirstVisited(ref, rootMargin = '0px') {
|
|
|
20
20
|
observer.observe(ref.current);
|
|
21
21
|
}
|
|
22
22
|
return () => {
|
|
23
|
-
if (ref?.current) {
|
|
23
|
+
if (ref?.current && typeof observer.unobserve === 'function') {
|
|
24
24
|
observer.unobserve(ref.current);
|
|
25
25
|
}
|
|
26
|
-
observer.disconnect
|
|
26
|
+
if (typeof observer.disconnect === 'function') {
|
|
27
|
+
observer.disconnect();
|
|
28
|
+
}
|
|
27
29
|
};
|
|
28
30
|
}, [ref, rootMargin, intersected]);
|
|
29
31
|
return intersected;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import { Default } from './Accordion.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Default component', () => {
|
|
7
7
|
it('renders correctly and fires keyDown Enter events', () => {
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import Banner from './Banner';
|
|
4
4
|
import { sharePage, getImageSource } from './Banner';
|
|
5
|
-
import '@testing-library/jest-dom
|
|
5
|
+
import '@testing-library/jest-dom';
|
|
6
6
|
|
|
7
7
|
describe('Banner', () => {
|
|
8
8
|
it('renders without errors', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Default, Inverted, Link, Labeled } from './CallToAction.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Link', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { GridIconCard, Default } from './IconCard.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('GridIconCard component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import { Default } from './Confirm.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Default component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { DividerWithContent, Default } from './Divider.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('DividerWithContent component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Default } from './DownloadLabeledIcon.stories';
|
|
4
4
|
import DownloadLabeledIcon from './DownloadLabeledIcon';
|
|
5
|
-
import '@testing-library/jest-dom
|
|
5
|
+
import '@testing-library/jest-dom';
|
|
6
6
|
|
|
7
7
|
describe('Default component', () => {
|
|
8
8
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import Description from './Description';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Description component', () => {
|
|
7
7
|
it('renders corectly with children', () => {
|
|
@@ -5,7 +5,7 @@ import { Router } from 'react-router-dom';
|
|
|
5
5
|
import { Default } from './Footer.stories';
|
|
6
6
|
import { Provider } from 'react-redux';
|
|
7
7
|
import Footer from './Footer';
|
|
8
|
-
import '@testing-library/jest-dom
|
|
8
|
+
import '@testing-library/jest-dom';
|
|
9
9
|
import configureStore from 'redux-mock-store';
|
|
10
10
|
|
|
11
11
|
describe('Default', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Link } from 'react-router-dom';
|
|
3
3
|
import { Grid } from 'semantic-ui-react';
|
|
4
|
-
import { isInternalURL } from '@plone/volto/helpers';
|
|
4
|
+
import { isInternalURL } from '@plone/volto/helpers/Url/Url';
|
|
5
5
|
|
|
6
6
|
const FooterActions = (props) => {
|
|
7
7
|
if (props.children) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import Social from './Social';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Social component', () => {
|
|
7
7
|
it('renders corectly with children', () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import
|
|
2
|
+
import Contact from './Contact';
|
|
3
3
|
|
|
4
4
|
import { Grid, Image } from 'semantic-ui-react';
|
|
5
5
|
|
|
@@ -39,7 +39,7 @@ const SubFooter = (props) => {
|
|
|
39
39
|
{props.contacts?.length > 0 && (
|
|
40
40
|
<Grid.Column mobile={12} tablet={12} computer={4}>
|
|
41
41
|
<div className="item">
|
|
42
|
-
<
|
|
42
|
+
<Contact contacts={props.contacts} />
|
|
43
43
|
</div>
|
|
44
44
|
</Grid.Column>
|
|
45
45
|
)}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { ErrorDropdown, Default } from './Dropdown.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('ErrorDropdown component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import { Default, invalid as Invalid, BinaryRadio } from './Radio.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('BinaryRadio component', () => {
|
|
7
7
|
it('renders corectly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { ErrorTextArea, LabeledTextArea, Default } from './Textarea.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('ErrorTextArea component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import times from 'lodash/times';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { Grid, Container } from 'semantic-ui-react';
|
|
4
4
|
|
|
@@ -9,7 +9,7 @@ export default {
|
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
const getColumns = (number, text) => {
|
|
12
|
-
const columns =
|
|
12
|
+
const columns = times(number, (i) => (
|
|
13
13
|
<Grid.Column key={i}>
|
|
14
14
|
<div className="col-example">{text}</div>
|
|
15
15
|
</Grid.Column>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { GridExamples, Basic12 } from './ComponentGrid.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('GridExamples component', () => {
|
|
7
7
|
it('renders corectly', () => {
|
package/src/ui/Header/Header.jsx
CHANGED
|
@@ -9,15 +9,15 @@ import cx from 'classnames';
|
|
|
9
9
|
import { Container, Image, Menu, Grid, Dropdown } from 'semantic-ui-react'; // Dropdown,
|
|
10
10
|
|
|
11
11
|
import closeIcon from '@eeacms/volto-eea-design-system/../theme/themes/eea/assets/images/Header/close-line.svg';
|
|
12
|
-
import searchIcon from '@eeacms/volto-eea-design-system/../theme/themes/eea/assets/images/Header/search
|
|
12
|
+
import searchIcon from '@eeacms/volto-eea-design-system/../theme/themes/eea/assets/images/Header/ai-search.svg';
|
|
13
13
|
import burgerIcon from '@eeacms/volto-eea-design-system/../theme/themes/eea/assets/images/Header/menu-line.svg';
|
|
14
14
|
|
|
15
15
|
import HeaderSearchPopUp from './HeaderSearchPopUp';
|
|
16
16
|
import HeaderMenuPopUp from './HeaderMenuPopUp';
|
|
17
17
|
import { findBestMatchingMenuItem, isMenuItemActive } from './utils';
|
|
18
18
|
import PropTypes from 'prop-types';
|
|
19
|
-
import
|
|
20
|
-
import { isInternalURL } from '@plone/volto/helpers';
|
|
19
|
+
import omit from 'lodash/omit';
|
|
20
|
+
import { isInternalURL } from '@plone/volto/helpers/Url/Url';
|
|
21
21
|
import config from '@plone/volto/registry';
|
|
22
22
|
|
|
23
23
|
Header.propTypes = {
|
|
@@ -390,7 +390,7 @@ const BurgerAction = React.forwardRef((props, ref) => (
|
|
|
390
390
|
<button
|
|
391
391
|
ref={ref}
|
|
392
392
|
className={`burger-action ${props.className}`}
|
|
393
|
-
{...
|
|
393
|
+
{...omit(props, ['onClick', 'children', 'className', 'ref'])}
|
|
394
394
|
onClick={props.onClick}
|
|
395
395
|
>
|
|
396
396
|
{props.children}
|
|
@@ -3,7 +3,7 @@ import { createMemoryHistory } from 'history';
|
|
|
3
3
|
import { Router } from 'react-router-dom';
|
|
4
4
|
import { render, fireEvent, act } from '@testing-library/react';
|
|
5
5
|
import { Default } from './Header.stories';
|
|
6
|
-
import '@testing-library/jest-dom
|
|
6
|
+
import '@testing-library/jest-dom';
|
|
7
7
|
|
|
8
8
|
global.ResizeObserver = require('resize-observer-polyfill');
|
|
9
9
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
|
|
3
|
-
import '@testing-library/jest-dom
|
|
3
|
+
import '@testing-library/jest-dom';
|
|
4
4
|
|
|
5
5
|
import { createMemoryHistory } from 'history';
|
|
6
6
|
import { Router } from 'react-router-dom';
|
|
7
|
-
import '@testing-library/jest-dom
|
|
7
|
+
import '@testing-library/jest-dom';
|
|
8
8
|
|
|
9
9
|
// Mock subcomponents that pull in ESM helpers not transformed by Jest here
|
|
10
10
|
jest.doMock('./HeaderSearchPopUp', () => () => null);
|
|
@@ -8,7 +8,8 @@ import {
|
|
|
8
8
|
Transition,
|
|
9
9
|
} from 'semantic-ui-react';
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
12
|
+
import kebabCase from 'lodash/kebabCase';
|
|
12
13
|
|
|
13
14
|
import { useClickOutside } from '@eeacms/volto-eea-design-system/helpers';
|
|
14
15
|
import { numbersToMenuItemColumns } from '../Header/utils';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
|
|
3
|
-
import '@testing-library/jest-dom
|
|
3
|
+
import '@testing-library/jest-dom';
|
|
4
4
|
import { createMemoryHistory } from 'history';
|
|
5
5
|
import { Router } from 'react-router-dom';
|
|
6
6
|
import HeaderMenuPopUp, { StandardMegaMenuGrid } from './HeaderMenuPopUp';
|
|
@@ -3,7 +3,7 @@ import { render, screen, fireEvent } from '@testing-library/react';
|
|
|
3
3
|
import { createMemoryHistory } from 'history';
|
|
4
4
|
import { Router } from 'react-router-dom';
|
|
5
5
|
import HeaderSearchPopUp from './HeaderSearchPopUp';
|
|
6
|
-
import '@testing-library/jest-dom
|
|
6
|
+
import '@testing-library/jest-dom';
|
|
7
7
|
|
|
8
8
|
describe('HeaderSearchPopUp', () => {
|
|
9
9
|
let history;
|
|
@@ -120,8 +120,7 @@ Default.args = {
|
|
|
120
120
|
fullHeight: true,
|
|
121
121
|
image: true,
|
|
122
122
|
quoted: true,
|
|
123
|
-
text:
|
|
124
|
-
'Forests are a key part of the solution to combat climate change and biodiversity loss.',
|
|
123
|
+
text: 'Forests are a key part of the solution to combat climate change and biodiversity loss.',
|
|
125
124
|
textVariant: 'tertiary',
|
|
126
125
|
textAlign: 'left',
|
|
127
126
|
metaAlign: 'left',
|
|
@@ -158,8 +157,7 @@ Playground.args = {
|
|
|
158
157
|
fullHeight: true,
|
|
159
158
|
image: true,
|
|
160
159
|
quoted: false,
|
|
161
|
-
text:
|
|
162
|
-
'Forests are a key part of the solution to combat climate change and biodiversity loss.',
|
|
160
|
+
text: 'Forests are a key part of the solution to combat climate change and biodiversity loss.',
|
|
163
161
|
textVariant: 'tertiary',
|
|
164
162
|
textAlign: 'left',
|
|
165
163
|
metaAlign: 'left',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Playground, Default } from './Hero.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Playground component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Default } from './InpageNavigation.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Default component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import InpageNavigation from './InpageNavigation';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('InpageNavigation', () => {
|
|
7
7
|
let scrollToMock;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { DefaultGroup, DefaultItem, Default } from './Item.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('DefaultGroup Component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Default, Basic, Corner, Ribbon } from './Label.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Basic component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Default } from './LabeledIconGroup.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Default component', () => {
|
|
7
7
|
it('renders corectly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import LanguageLabeledIcon from './LanguageLabeledIcon';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
jest.mock('semantic-ui-react', () => {
|
|
7
7
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { FullPageLoader, Default } from './Loader.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('FullPageLoader component', () => {
|
|
7
7
|
it('renders corectly', () => {
|
|
@@ -3,7 +3,7 @@ import { render } from '@testing-library/react';
|
|
|
3
3
|
import { Logo } from './Logo.stories';
|
|
4
4
|
import { createMemoryHistory } from 'history';
|
|
5
5
|
import { Router } from 'react-router-dom';
|
|
6
|
-
import '@testing-library/jest-dom
|
|
6
|
+
import '@testing-library/jest-dom';
|
|
7
7
|
|
|
8
8
|
describe('FluidGrid component', () => {
|
|
9
9
|
let history;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Playground, Link, Default } from './Image.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Playground component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { render, fireEvent } from '@testing-library/react';
|
|
2
2
|
import { Default } from './Modal.stories';
|
|
3
3
|
import { Button } from 'semantic-ui-react';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Default component', () => {
|
|
7
7
|
it('renders corectly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import Popup from './Popup';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
jest.mock('@popperjs/core', () => {
|
|
7
7
|
const originalModule = jest.requireActual('@popperjs/core');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Default, ProgressWithValue, CustomColor } from './Progress.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('CustomColor component', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Inline } from './Testimonial.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Inline component', () => {
|
|
7
7
|
it('renders corectly', () => {
|
|
@@ -227,8 +227,12 @@ const CustomTemplate = (args) => (
|
|
|
227
227
|
<Container>
|
|
228
228
|
<Statistic.Group {...args}>
|
|
229
229
|
{args.elements &&
|
|
230
|
-
args.elements.map((element) => (
|
|
231
|
-
<a
|
|
230
|
+
args.elements.map((element, index) => (
|
|
231
|
+
<a
|
|
232
|
+
key={element.href ?? `${element.label}-${index}`}
|
|
233
|
+
href={element.href}
|
|
234
|
+
className="ui small statistic"
|
|
235
|
+
>
|
|
232
236
|
<div className={`value ${args.valueVariation}`}>
|
|
233
237
|
{element.value}
|
|
234
238
|
</div>
|
|
@@ -429,8 +433,12 @@ const CountUpStatistics = (args) => (
|
|
|
429
433
|
<Container>
|
|
430
434
|
<Statistic.Group id="counter" {...args}>
|
|
431
435
|
{args.elements &&
|
|
432
|
-
args.elements.map((element) => (
|
|
433
|
-
<a
|
|
436
|
+
args.elements.map((element, index) => (
|
|
437
|
+
<a
|
|
438
|
+
key={element.href ?? `${element.label}-${index}`}
|
|
439
|
+
href={element.href}
|
|
440
|
+
className="ui small statistic"
|
|
441
|
+
>
|
|
434
442
|
<div className={`value ${args.valueVariation}`}>
|
|
435
443
|
<CountUp end={element.value} isCounting={true} />
|
|
436
444
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { Default } from './Tab.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('It renderes corectly', () => {
|
|
7
7
|
it('renders corectly', () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Table, Container } from 'semantic-ui-react';
|
|
3
|
-
import
|
|
3
|
+
import sortBy from 'lodash/sortBy';
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
6
|
title: 'Components/Table',
|
|
@@ -224,7 +224,7 @@ function reducer(state, action) {
|
|
|
224
224
|
|
|
225
225
|
return {
|
|
226
226
|
column: action.column,
|
|
227
|
-
data:
|
|
227
|
+
data: sortBy(state.data, [action.column]),
|
|
228
228
|
direction: 'ascending',
|
|
229
229
|
};
|
|
230
230
|
default:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import { Default, Sortable, Responsive } from './Table.stories';
|
|
4
|
-
import '@testing-library/jest-dom
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
describe('Responsive component', () => {
|
|
7
7
|
it('renders corectly', () => {
|
package/src/ui/Tag/Tag.jsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Icon } from 'semantic-ui-react';
|
|
3
|
-
import
|
|
3
|
+
import ConditionalLink from '@plone/volto/components/manage/ConditionalLink/ConditionalLink';
|
|
4
4
|
import { getFieldURL } from '@plone/volto/helpers/Url/Url';
|
|
5
5
|
|
|
6
6
|
function Tag({ href, children }) {
|
package/src/ui/Video/Video.jsx
CHANGED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="20px" viewBox="0 -960 960 960" width="20px">
|
|
2
|
+
<path
|
|
3
|
+
d="M740-560q-1 0-8-6-16-61-60.5-105.5T566-732q-2-1-6-8 0-2 6-8 61-16 105.5-60.5T732-914q1-2 8-6 2 0 8 6 17 61 61 105.5T914-748q2 0 6 8 0 1-6 8-61 16-105.5 60.5T748-566q0 2-8 6Zm44 440L532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q29 0 57 6t53 18l-10 87q-22-15-47-23t-53-8q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400q66 0 115.5-42.5T557-555l72 50q-7 22-17.5 41T588-428l252 252-56 56Z"
|
|
4
|
+
fill="rgba(255,255,255,1)">
|
|
5
|
+
</path>
|
|
6
|
+
</svg>
|