@eeacms/volto-eea-design-system 1.12.1 → 1.13.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/CHANGELOG.md CHANGED
@@ -4,6 +4,45 @@ 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.13.1](https://github.com/eea/volto-eea-design-system/compare/1.13.0...1.13.1) - 12 June 2023
8
+
9
+ #### :rocket: New Features
10
+
11
+ - feat: a11y accessibility footer logos - refs #254122 [dobri1408 - [`1e40f36`](https://github.com/eea/volto-eea-design-system/commit/1e40f364aab3208d2ccfbbd5f1d51a1b12f5be0d)]
12
+
13
+ #### :hammer_and_wrench: Others
14
+
15
+ - test: jest should look for addons in node_modules Refs #253277 [valentinab25 - [`7b011a9`](https://github.com/eea/volto-eea-design-system/commit/7b011a9e883db93fc7a24ac4db3e6e28068171c3)]
16
+ ### [1.13.0](https://github.com/eea/volto-eea-design-system/compare/1.12.1...1.13.0) - 8 June 2023
17
+
18
+ #### :boom: Breaking Change
19
+
20
+ - breaking(footer): use url parameter instead of link for footer actions [David Ichim - [`5b9cc2c`](https://github.com/eea/volto-eea-design-system/commit/5b9cc2c8a2979f3d49d69841a57684b3f80d5ea2)]
21
+ - breaking(footer): renamed contact-block to contact-wrapper [David Ichim - [`2fbb7df`](https://github.com/eea/volto-eea-design-system/commit/2fbb7df66eb37e17ab5391feb46d7ce2cfdfcbf3)]
22
+
23
+ #### :rocket: New Features
24
+
25
+ - feat(search): added matchpath to specify search location #352 from eea/searchpopup_update [ichim-david - [`7c236d5`](https://github.com/eea/volto-eea-design-system/commit/7c236d52f5de620f77b820387181fe1d902247d3)]
26
+
27
+ #### :nail_care: Enhancements
28
+
29
+ - change(footer): add dedicated classes for theme sites logos [David Ichim - [`adebd04`](https://github.com/eea/volto-eea-design-system/commit/adebd04bcf5dc5b28b90db540816384fc60b4073)]
30
+ - change(footer): header can now be added anywhere in the footer section [David Ichim - [`6ae4872`](https://github.com/eea/volto-eea-design-system/commit/6ae48728dd961d783c6a8120c8a88dc38f63eed6)]
31
+
32
+ #### :house: Internal changes
33
+
34
+ - chore: [JENKINS] Deprecate circularity website [valentinab25 - [`fb2b166`](https://github.com/eea/volto-eea-design-system/commit/fb2b166d64f95a1c183901abfe0fe0254d1bbc7a)]
35
+
36
+ #### :house: Documentation changes
37
+
38
+ - docs: Update and rename Corporate-site-templates to 2-corporate-site-templates.md [Antonio De Marinis - [`41ffc55`](https://github.com/eea/volto-eea-design-system/commit/41ffc5545def9034e3955bf967a2b0b947023528)]
39
+
40
+ #### :hammer_and_wrench: Others
41
+
42
+ - test: Fix test config, coverage Refs #253277 [valentinab25 - [`12f31a2`](https://github.com/eea/volto-eea-design-system/commit/12f31a2018d8c73173fc7ff091c5c3ddd3b29f64)]
43
+ - bump package version due to breaking changes [David Ichim - [`75c83f0`](https://github.com/eea/volto-eea-design-system/commit/75c83f024dc40388086faeaec449f04da68c0d9b)]
44
+ - Rename to eea-storybook Refs #251478 [valentinab25 - [`bc4e753`](https://github.com/eea/volto-eea-design-system/commit/bc4e753a8e604ab323a32a1315c46fc5827aadbd)]
45
+ - added matchpath, we can independently specify on which location to apply a rule for the search popup [Zoltan Szabo - [`f4a40e0`](https://github.com/eea/volto-eea-design-system/commit/f4a40e04f50e87f5b0383a1b28d3459a2b91199b)]
7
46
  ### [1.12.1](https://github.com/eea/volto-eea-design-system/compare/1.12.0...1.12.1) - 24 May 2023
8
47
 
9
48
  #### :bug: Bug Fixes
@@ -5,19 +5,19 @@ module.exports = {
5
5
  '!src/**/*.d.ts',
6
6
  ],
7
7
  moduleNameMapper: {
8
+ '\\.(css|less|scss|sass)$': 'identity-obj-proxy',
8
9
  '@plone/volto/cypress': '<rootDir>/node_modules/@plone/volto/cypress',
9
10
  '@plone/volto/babel': '<rootDir>/node_modules/@plone/volto/babel',
10
11
  '@plone/volto/(.*)$': '<rootDir>/node_modules/@plone/volto/src/$1',
11
12
  '@package/(.*)$': '<rootDir>/src/$1',
12
13
  '@root/(.*)$': '<rootDir>/src/$1',
13
14
  '@plone/volto-quanta/(.*)$': '<rootDir>/src/addons/volto-quanta/src/$1',
14
- '@eeacms/(.*?)/(.*)$': '<rootDir>/src/addons/$1/src/$2',
15
+ '@eeacms/(.*?)/(.*)$': '<rootDir>/node_modules/@eeacms/$1/src/$2',
15
16
  '@plone/volto-slate':
16
17
  '<rootDir>/node_modules/@plone/volto/packages/volto-slate/src',
17
18
  '~/(.*)$': '<rootDir>/src/$1',
18
19
  'load-volto-addons':
19
20
  '<rootDir>/node_modules/@plone/volto/jest-addons-loader.js',
20
- '\\.(css|less|scss|sass)$': 'identity-obj-proxy',
21
21
  },
22
22
  transform: {
23
23
  '^.+\\.js(x)?$': 'babel-jest',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-eea-design-system",
3
- "version": "1.12.1",
3
+ "version": "1.13.1",
4
4
  "description": "@eeacms/volto-eea-design-system: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -8,16 +8,16 @@ const Contact = ({ children, contacts }) =>
8
8
  children?.length ? (
9
9
  children
10
10
  ) : (
11
- <div className="contact-block">
11
+ <div className="contact-wrapper">
12
12
  {contacts?.map((contact, index) => (
13
13
  <div className="contact" key={index}>
14
- {isInternalURL(contact.link) ? (
15
- <Link to={contact.link} className="bold">
14
+ {isInternalURL(contact.url) ? (
15
+ <Link to={contact.url} className="bold">
16
16
  {contact.text}
17
17
  </Link>
18
18
  ) : (
19
19
  <a
20
- href={contact.link}
20
+ href={contact.url}
21
21
  target={'_blank'}
22
22
  rel="noopener noreferrer"
23
23
  className={'bold'}
@@ -28,21 +28,21 @@ const Contact = ({ children, contacts }) =>
28
28
  {contact.children && (
29
29
  <div className="subcontact">
30
30
  {contact.children.map((child, index) => (
31
- <>
32
- {isInternalURL(child.link) ? (
33
- <Link to={child.link} key={index}>
31
+ <React.Fragment key={index}>
32
+ {isInternalURL(child.url) ? (
33
+ <Link to={child.url} key={index}>
34
34
  {child.text}
35
35
  </Link>
36
36
  ) : (
37
37
  <a
38
- href={child.link}
38
+ href={child.url}
39
39
  target={'_blank'}
40
40
  rel="noopener noreferrer"
41
41
  >
42
42
  {child.text}
43
43
  </a>
44
44
  )}
45
- </>
45
+ </React.Fragment>
46
46
  ))}
47
47
  </div>
48
48
  )}
@@ -33,64 +33,82 @@ Default.args = {
33
33
  header: 'Environmental information systems',
34
34
  description: '',
35
35
  actions: [
36
- { link: '/privacy', title: 'Privacy' },
37
- { link: '/sitemap', title: 'Sitemap' },
38
- { link: 'https://www.eea.europa.eu/en/login', title: 'CMS Login' },
36
+ { url: '/privacy', title: 'Privacy' },
37
+ { url: '/sitemap', title: 'Sitemap' },
38
+ { url: 'https://www.eea.europa.eu/en/login', title: 'CMS Login' },
39
39
  ],
40
40
  copyright: [
41
- { link: 'https://status.eea.europa.eu/', title: 'System status' },
41
+ { url: 'https://status.eea.europa.eu/', title: 'System status' },
42
42
  {
43
- link: '/copyright',
43
+ url: '/copyright',
44
44
  title: '© Copyright 2023 EEA',
45
45
  },
46
46
  ],
47
47
  sites: [
48
- { link: 'https://water.europa.eu/marine', src: Marine, alt: 'WISE marine' },
49
48
  {
50
- link: 'https://water.europa.eu/freshwater',
49
+ url: 'https://water.europa.eu/marine',
50
+ src: Marine,
51
+ alt: 'WISE marine',
52
+ className: 'marine logo',
53
+ },
54
+ {
55
+ url: 'https://water.europa.eu/freshwater',
51
56
  src: Freshwater,
52
57
  alt: 'WISE freshwater',
58
+ className: 'freshwater logo',
59
+ },
60
+ {
61
+ url: 'https://biodiversity.europa.eu/',
62
+ src: Bise,
63
+ alt: 'Biodiversity',
64
+ className: 'biodiversity logo',
53
65
  },
54
- { link: 'https://biodiversity.europa.eu/', src: Bise, alt: 'Biodiversity' },
55
66
  {
56
- link: 'https://forest.eea.europa.eu/',
67
+ url: 'https://forest.eea.europa.eu/',
57
68
  src: Fise,
58
69
  alt: 'Forest information system for europe',
70
+ className: 'fise logo',
59
71
  },
60
72
  {
61
- link: 'https://climate-adapt.eea.europa.eu/observatory',
73
+ url: 'https://climate-adapt.eea.europa.eu/observatory',
62
74
  src: ClimateHealth,
63
75
  alt: 'Information platform for chemical monitoring',
76
+ className: 'climate logo',
64
77
  },
65
78
  {
66
- link: 'https://climate-adapt.eea.europa.eu/',
79
+ url: 'https://climate-adapt.eea.europa.eu/',
67
80
  src: Cca,
68
81
  alt: 'Climate adapt',
82
+ className: 'cca logo',
69
83
  },
70
84
  {
71
- link: 'https://industry.eea.europa.eu/',
85
+ url: 'https://industry.eea.europa.eu/',
72
86
  src: Industry,
73
87
  alt: 'European industrial emissions portal',
88
+ className: 'industry logo',
74
89
  },
75
90
  {
76
- link: 'https://climate-energy.eea.europa.eu/',
91
+ url: 'https://climate-energy.eea.europa.eu/',
77
92
  src: Energy,
78
93
  alt: 'Climate and energy in the EU',
94
+ className: 'energy logo',
79
95
  },
80
96
  {
81
- link: 'https://land.copernicus.eu/',
97
+ url: 'https://land.copernicus.eu/',
82
98
  src: Copernicus,
83
99
  alt: 'Copernicus land monitoring service',
100
+ className: 'copernicus logo',
84
101
  },
85
102
  {
86
- link: 'https://insitu.copernicus.eu/',
103
+ url: 'https://insitu.copernicus.eu/',
87
104
  src: Insitu,
88
105
  alt: 'Copernicus in situ',
106
+ className: 'insitu logo',
89
107
  },
90
108
  ],
91
109
  managedBy: [
92
110
  {
93
- link: 'https://www.eea.europa.eu/',
111
+ url: 'https://www.eea.europa.eu/',
94
112
  src: EEA,
95
113
  alt: 'EEA Logo',
96
114
  className: 'site logo',
@@ -101,7 +119,7 @@ Default.args = {
101
119
  },
102
120
  },
103
121
  {
104
- link: 'https://www.eionet.europa.eu/',
122
+ url: 'https://www.eionet.europa.eu/',
105
123
  src: Eionet,
106
124
  alt: 'EIONET Logo',
107
125
  className: 'eionet logo',
@@ -116,40 +134,40 @@ Default.args = {
116
134
  {
117
135
  name: 'twitter',
118
136
  icon: 'ri-twitter-fill',
119
- link: 'https://twitter.com/euenvironment',
137
+ url: 'https://twitter.com/euenvironment',
120
138
  },
121
139
  {
122
140
  name: 'facebook',
123
141
  icon: 'ri-facebook-box-fill',
124
- link: 'https://www.facebook.com/European.Environment.Agency',
142
+ url: 'https://www.facebook.com/European.Environment.Agency',
125
143
  },
126
144
  {
127
145
  name: 'linkedin',
128
146
  icon: 'ri-linkedin-fill',
129
- link: 'https://www.linkedin.com/company/european-environment-agency',
147
+ url: 'https://www.linkedin.com/company/european-environment-agency',
130
148
  },
131
149
  {
132
150
  name: 'youtube',
133
151
  icon: 'ri-youtube-fill',
134
- link: 'https://www.youtube.com/user/EEAvideos',
152
+ url: 'https://www.youtube.com/user/EEAvideos',
135
153
  },
136
154
  {
137
155
  name: 'instagram',
138
156
  icon: 'ri-instagram-fill',
139
- link: 'https://www.instagram.com/ourplanet_eu',
157
+ url: 'https://www.instagram.com/ourplanet_eu',
140
158
  },
141
- { name: 'rss', icon: 'ri-rss-fill', link: '/subscription/news-feeds' },
159
+ { name: 'rss', icon: 'ri-rss-fill', url: '/subscription/news-feeds' },
142
160
  ],
143
161
  contacts: [
144
162
  {
145
163
  text: 'About us',
146
- link: '/about',
164
+ url: '/about',
147
165
  children: [
148
- { text: 'FAQs', link: 'http://external.site' },
149
- { text: 'Careers', link: '/careers' },
166
+ { text: 'FAQs', url: 'http://external.site' },
167
+ { text: 'Careers', url: '/careers' },
150
168
  ],
151
169
  },
152
- { text: 'Contact us', link: '/contact-us' },
153
- { text: 'Sign up to our newsletter', link: '/newsletter' },
170
+ { text: 'Contact us', url: '/contact-us' },
171
+ { text: 'Sign up to our newsletter', url: '/newsletter' },
154
172
  ],
155
173
  };
@@ -15,13 +15,13 @@ const FooterActions = (props) => {
15
15
  <div className="actions">
16
16
  {props.actions &&
17
17
  props.actions.map((action, index) =>
18
- isInternalURL(action.link) ? (
19
- <Link to={action.link} key={index}>
18
+ isInternalURL(action.url) ? (
19
+ <Link to={action.url} key={index}>
20
20
  {action.title}
21
21
  </Link>
22
22
  ) : (
23
23
  <a
24
- href={action.link}
24
+ href={action.url}
25
25
  key={index}
26
26
  target={'_blank'}
27
27
  rel={'noreferrer'}
@@ -37,13 +37,13 @@ const FooterActions = (props) => {
37
37
  <div className="copyright">
38
38
  {props.copyright &&
39
39
  props.copyright.map((copyright, index) =>
40
- isInternalURL(copyright.link) ? (
41
- <Link to={copyright.link} key={index}>
40
+ isInternalURL(copyright.url) ? (
41
+ <Link to={copyright.url} key={index}>
42
42
  {copyright.title}
43
43
  </Link>
44
44
  ) : (
45
45
  <a
46
- href={copyright.link}
46
+ href={copyright.url}
47
47
  key={index}
48
48
  target={'_blank'}
49
49
  rel={'noreferrer'}
@@ -1,10 +1,8 @@
1
1
  import React from 'react';
2
2
 
3
3
  const FooterHeader = (props) => {
4
- return (
5
- <div className="theme-sites">
6
- <h3 className="header text-center">{props.children}</h3>
7
- </div>
8
- );
4
+ return props.children ? (
5
+ <h2 className="footer-header text-center">{props.children}</h2>
6
+ ) : null;
9
7
  };
10
8
  export default FooterHeader;
@@ -12,14 +12,22 @@ const Sites = (props) => {
12
12
  const nextItem = logos[i + 1];
13
13
  column.push(
14
14
  <Grid.Column className="logo" key={i}>
15
- <a className="logo" href={item.link}>
15
+ <a className="logo" href={item.url}>
16
16
  <LazyLoadComponent>
17
- <Image src={item.src} alt={item.alt}></Image>
17
+ <Image
18
+ className={item.className}
19
+ src={item.src}
20
+ alt={item.alt}
21
+ ></Image>
18
22
  </LazyLoadComponent>
19
23
  </a>
20
- <a className="logo" href={nextItem.link}>
24
+ <a className="logo" href={nextItem.url}>
21
25
  <LazyLoadComponent>
22
- <Image src={nextItem.src} alt={nextItem.alt}></Image>
26
+ <Image
27
+ className={nextItem.className}
28
+ src={nextItem.src}
29
+ alt={nextItem.alt}
30
+ ></Image>
23
31
  </LazyLoadComponent>
24
32
  </a>
25
33
  </Grid.Column>,
@@ -11,7 +11,7 @@ const Social = (props) => {
11
11
  <Grid.Row>
12
12
  <div className="social">
13
13
  {props.social?.map((item, index) => (
14
- <a href={item.link} aria-label={`${item.name} link`} key={index}>
14
+ <a href={item.url} aria-label={`${item.name} link`} key={index}>
15
15
  <Icon className={item.icon}></Icon>
16
16
  </a>
17
17
  ))}
@@ -23,7 +23,7 @@ const SubFooter = (props) => {
23
23
  >
24
24
  <div className="item">
25
25
  <div className={manager.className}>
26
- <a href={manager.link}>
26
+ <a href={manager.url}>
27
27
  <LazyLoadComponent>
28
28
  <Image src={manager.src} alt={manager.alt}></Image>
29
29
  </LazyLoadComponent>
@@ -55,7 +55,7 @@ const SubFooter = (props) => {
55
55
  >
56
56
  <div className="item">
57
57
  <div className={manager.className}>
58
- <a href={manager.link}>
58
+ <a href={manager.url}>
59
59
  <LazyLoadComponent>
60
60
  <Image src={manager.src} alt={manager.alt}></Image>
61
61
  </LazyLoadComponent>
@@ -23,7 +23,7 @@ function HeaderSearchPopUp({
23
23
  const headerSearchViews = headerSearchBox || [];
24
24
  const defaultView = headerSearchViews.filter((v) => v.isDefault);
25
25
  const localView = headerSearchViews.filter((v) =>
26
- location.pathname.includes(v.path),
26
+ location.pathname.match(v.matchpath ? v.matchpath : v.path),
27
27
  );
28
28
  const activeView = localView.length > 0 ? localView[0] : defaultView[0];
29
29
 
@@ -37,16 +37,37 @@ footer .theme-sites {
37
37
  .logos .logo img {
38
38
  margin: @mobileThemeSitesLogoMargin;
39
39
  }
40
-
41
- .header {
42
- font-size: @mobileFooterTitleFontSize;
40
+ .logos .logo:focus-visible {
41
+ outline: @outlineBorder;
42
+ outline: @outlineBorderWebkit;
43
+ }
44
+ }
45
+ footer .footer-header {
46
+ font-size: @mobileFooterTitleFontSize;
47
+ .logo:focus-visible {
48
+ outline: @outlineBorder;
49
+ outline: @outlineBorderWebkit;
43
50
  }
44
51
  }
45
52
 
53
+ .theme-sites .logo.freshwater {
54
+ max-width: @freshwaterLogoMaxWidth;
55
+ }
56
+ .subfooter .item {
57
+ display: @subFooterItemDisplay;
58
+ justify-content: @subFooterItemJustifyContent;
59
+ width: @subFooterItemWidth;
60
+ height: @subFooterItemHeight;
61
+ align-items: @subFooterItemAlignItems;
62
+ }
46
63
  .subfooter .item .ui.grid {
47
64
  align-items: center;
48
65
  }
49
66
 
67
+ .subfooter .logo a:focus-visible {
68
+ outline: @outlineBorder !important;
69
+ outline: @outlineBorderWebkit !important;
70
+ }
50
71
  .subfooter .item {
51
72
  .header {
52
73
  margin-bottom: @mobileItemHeaderMarginBottom;
@@ -54,11 +75,11 @@ footer .theme-sites {
54
75
  }
55
76
  }
56
77
 
57
- .subfooter .contact-block {
78
+ .subfooter .contact-wrapper {
58
79
  margin-bottom: @tabletContactBlockMarginBottom;
59
80
  }
60
81
 
61
- .contact-block .subcontact a {
82
+ .contact-wrapper .subcontact a {
62
83
  font-size: @computerSubContactIconFontSize;
63
84
  margin-right: @computerSubContactIconMarginRight;
64
85
  font-weight: @computerSubContactIconFontWeight;
@@ -149,7 +170,7 @@ footer .footer-wrapper .menu {
149
170
  font-weight: @mobileMenuCopyrightFontWeight;
150
171
  }
151
172
 
152
- .contact-block .subcontact {
173
+ .contact-wrapper .subcontact {
153
174
  margin-top: @mobileSubcontactBlockMarginTop;
154
175
  }
155
176
  }
@@ -159,7 +180,7 @@ footer .footer-wrapper .menu {
159
180
  background: @computerFooterBackgroundGradient;
160
181
  }
161
182
 
162
- footer .theme-sites .header {
183
+ footer .footer-header {
163
184
  font-size: @tabletFooterTitleFontSize;
164
185
  }
165
186
 
@@ -167,14 +188,6 @@ footer .footer-wrapper .menu {
167
188
  .logo img {
168
189
  max-height: 100px;
169
190
  }
170
-
171
- .site.logo img {
172
- padding-right: @siteLogoPaddingRight;
173
- }
174
-
175
- .contact-block {
176
- padding-left: @siteLogoPaddingRight;
177
- }
178
191
  }
179
192
 
180
193
  .subfooter .contact {
@@ -184,11 +197,11 @@ footer .footer-wrapper .menu {
184
197
  gap: @tabletContactGap;
185
198
  }
186
199
 
187
- .subfooter .contact-block {
200
+ .subfooter .contact-wrapper {
188
201
  margin-inline: @tabletContactBlockMarginInline;
189
202
  }
190
203
 
191
- .contact-block .subcontact a {
204
+ .contact-wrapper .subcontact a {
192
205
  font-size: @tabletSubContactIconFontSize;
193
206
  margin-right: @tabletSubContactIconMarginRight;
194
207
  }
@@ -239,7 +252,7 @@ footer .footer-wrapper .menu {
239
252
  }
240
253
  }
241
254
 
242
- .contact-block .subcontact a {
255
+ .contact-wrapper .subcontact a {
243
256
  font-size: @computerSubContactIconFontSize;
244
257
  margin-right: @computerSubContactIconMarginRight;
245
258
  }
@@ -23,15 +23,22 @@
23
23
  @computerThemeSitesLogoMargin : 0 auto @rem-space-10;
24
24
  @mobileFooterTitleFontSize : @mobileH4;
25
25
  @tabletFooterTitleFontSize : @h3;
26
+ @freshwaterLogoMaxWidth : 122px;
27
+
28
+ /* Sub-footer Item */
29
+ @subFooterItemDisplay: flex;
30
+ @subFooterItemJustifyContent: center;
31
+ @subFooterItemAlignItems: center;
32
+ @subFooterItemWidth: 100%;
33
+ @subFooterItemHeight: 100%;
34
+ @outlineBorder: 1px dotted #212121;
35
+ @outlineBorderWebkit: 5px auto -webkit-focus-ring-color;
26
36
 
27
37
  /* Sub-footer Item Header */
28
38
  @mobileItemHeaderMarginBottom : @space-5;
29
39
  @computerItemHeaderMarginBottom : @space-12;
30
40
  @computerLogoHeaderMarginLeft : -50px;
31
41
 
32
- /* Site Logo */
33
- @siteLogoPaddingRight : 20%;
34
-
35
42
  /* Contact Info */
36
43
  @tabletContactBlockMarginInline : 0;
37
44
  @tabletContactBlockMarginBottom : @space-4;