@eeacms/volto-cca-policy 0.3.35 → 0.3.37

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,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
+ ### [0.3.37](https://github.com/eea/volto-cca-policy/compare/0.3.36...0.3.37) - 8 May 2025
8
+
9
+ #### :rocket: Dependency updates
10
+
11
+ - Release @eeacms/volto-globalsearch@2.1.0 [EEA Jenkins - [`29f59da`](https://github.com/eea/volto-cca-policy/commit/29f59dafc2417af5f95062d35700fd3da4b3c37d)]
12
+
13
+ #### :nail_care: Enhancements
14
+
15
+ - change: fetch tab labels from discodata [kreafox - [`eb2e40b`](https://github.com/eea/volto-cca-policy/commit/eb2e40b39d0db28abd15549bb80302a873879180)]
16
+
17
+ ### [0.3.36](https://github.com/eea/volto-cca-policy/compare/0.3.35...0.3.36) - 7 May 2025
18
+
19
+ #### :house: Internal changes
20
+
21
+ - style: Automated code fix [eea-jenkins - [`8c6a6ad`](https://github.com/eea/volto-cca-policy/commit/8c6a6adfb65e10eb4d2c85dc76883cfd64306063)]
22
+
23
+ #### :hammer_and_wrench: Others
24
+
25
+ - Remove defineMessages [Tiberiu Ichim - [`86aa49c`](https://github.com/eea/volto-cca-policy/commit/86aa49c7c56029108862a4210cad2e81b08cbf40)]
26
+ - Show a message in non-en country profiles [Tiberiu Ichim - [`8d6842b`](https://github.com/eea/volto-cca-policy/commit/8d6842b1043d13d739b25da119803c4fb359b8dd)]
7
27
  ### [0.3.35](https://github.com/eea/volto-cca-policy/compare/0.3.34...0.3.35) - 6 May 2025
8
28
 
9
29
  #### :house: Internal changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-cca-policy",
3
- "version": "0.3.35",
3
+ "version": "0.3.37",
4
4
  "description": "@eeacms/volto-cca-policy: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -32,7 +32,7 @@
32
32
  "@eeacms/volto-eea-design-system": "<=1.36.3",
33
33
  "@eeacms/volto-eea-website-theme": "^1.35.0",
34
34
  "@eeacms/volto-embed": "^9.1.1",
35
- "@eeacms/volto-globalsearch": "2.0.11",
35
+ "@eeacms/volto-globalsearch": "2.1.0",
36
36
  "@eeacms/volto-hero-block": "^7.1.0",
37
37
  "@eeacms/volto-openlayers-map": "*",
38
38
  "@eeacms/volto-searchlib": "2.0.16",
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- import { TabPane, Tab, Accordion, Icon } from 'semantic-ui-react';
2
+ import { Message, TabPane, Tab, Accordion, Icon } from 'semantic-ui-react';
3
3
  import CountryTabPane from './CountryTabPane';
4
+ import { FormattedMessage } from 'react-intl';
4
5
 
5
6
  import './styles.less';
6
7
 
@@ -10,6 +11,7 @@ export default function View(props) {
10
11
  // );
11
12
  const dataJson = props?.properties['@components']?.countryprofile?.html || {};
12
13
  const [activePanes, setActivePanes] = React.useState({});
14
+ const isNonEN = props?.properties?.language !== 'en';
13
15
 
14
16
  const panes = [];
15
17
  if (dataJson?.menu) {
@@ -32,6 +34,14 @@ export default function View(props) {
32
34
 
33
35
  return (
34
36
  <>
37
+ {isNonEN && (
38
+ <Message class="eea callout">
39
+ <FormattedMessage
40
+ id="officiallyInEnglish"
41
+ defaultMessage="Officially reported governmental information is only available in English"
42
+ />
43
+ </Message>
44
+ )}
35
45
  {dataJson.message_top ? (
36
46
  <div class="eea callout">{dataJson.message_top}</div>
37
47
  ) : null}
@@ -7,10 +7,12 @@ import { flattenToAppURL } from '@plone/volto/helpers';
7
7
  import config from '@plone/volto/registry';
8
8
  import { Header } from '@eeacms/volto-eea-design-system/ui';
9
9
  import cx from 'classnames';
10
+ import { FormattedMessage } from 'react-intl';
10
11
 
11
- import { selectedLanguageAtom } from '../../../state';
12
12
  import globeIcon from '@eeacms/volto-eea-design-system/../theme/themes/eea/assets/images/Header/global-line.svg';
13
13
 
14
+ import { selectedLanguageAtom } from '../../../state';
15
+
14
16
  export default function LanguageSwitch({ history }) {
15
17
  const { eea } = config.settings;
16
18
  const translations = useSelector(
@@ -43,6 +45,7 @@ export default function LanguageSwitch({ history }) {
43
45
  });
44
46
  };
45
47
 
48
+ // .filter((item) => eea.non_eu_langs.indexOf(item.code) !== -1)
46
49
  return (
47
50
  <Header.TopDropdownMenu
48
51
  id="language-switcher"
@@ -61,37 +64,79 @@ export default function LanguageSwitch({ history }) {
61
64
  role="listbox"
62
65
  aria-label="language switcher"
63
66
  >
64
- {eea.languages.map((item, index) => {
65
- const translated = (translations || []).some(
66
- (obj) => obj.language === item.code,
67
- );
68
- const active = item.code === currentLang;
69
- const disabled = !translated && !active;
67
+ {eea.languages
68
+ .filter((item) => eea.non_eu_langs.indexOf(item.code) === -1)
69
+ .map((item, index) => {
70
+ const translated = (translations || []).some(
71
+ (obj) => obj.language === item.code,
72
+ );
73
+ const active = item.code === currentLang;
74
+ const disabled = !translated && !active;
75
+
76
+ return (
77
+ <Dropdown.Item
78
+ className={cx({
79
+ disabled: disabled,
80
+ active: active,
81
+ })}
82
+ as="li"
83
+ key={index}
84
+ text={
85
+ <span>
86
+ <span className="country-code">
87
+ {item.code.toUpperCase()}
88
+ </span>{' '}
89
+ {item.name}
90
+ </span>
91
+ }
92
+ onClick={(e) =>
93
+ disabled || active
94
+ ? e.preventDefault()
95
+ : handlePageRedirect(item)
96
+ }
97
+ ></Dropdown.Item>
98
+ );
99
+ })}
100
+ <strong className="noneu-langs-label">
101
+ <FormattedMessage
102
+ id="Non-EU Languages"
103
+ defaultMessage="Non-EU Languages"
104
+ />
105
+ </strong>
106
+
107
+ {eea.languages
108
+ .filter((item) => eea.non_eu_langs.indexOf(item.code) !== -1)
109
+ .map((item, index) => {
110
+ const translated = (translations || []).some(
111
+ (obj) => obj.language === item.code,
112
+ );
113
+ const active = item.code === currentLang;
114
+ const disabled = !translated && !active;
70
115
 
71
- return (
72
- <Dropdown.Item
73
- className={cx({
74
- disabled: disabled,
75
- active: active,
76
- })}
77
- as="li"
78
- key={index}
79
- text={
80
- <span>
81
- {item.name}
82
- <span className="country-code">
83
- {item.code.toUpperCase()}
116
+ return (
117
+ <Dropdown.Item
118
+ className={cx({
119
+ disabled: disabled,
120
+ active: active,
121
+ })}
122
+ as="li"
123
+ key={index}
124
+ text={
125
+ <span>
126
+ <span className="country-code">
127
+ {item.code.toUpperCase()}
128
+ </span>{' '}
129
+ {item.name}
84
130
  </span>
85
- </span>
86
- }
87
- onClick={(e) =>
88
- disabled || active
89
- ? e.preventDefault()
90
- : handlePageRedirect(item)
91
- }
92
- ></Dropdown.Item>
93
- );
94
- })}
131
+ }
132
+ onClick={(e) =>
133
+ disabled || active
134
+ ? e.preventDefault()
135
+ : handlePageRedirect(item)
136
+ }
137
+ ></Dropdown.Item>
138
+ );
139
+ })}
95
140
  </ul>
96
141
  </Header.TopDropdownMenu>
97
142
  );
@@ -18,6 +18,9 @@ const MissionSignatoryProfileView = (props) => {
18
18
  const planning = result?.planning || {};
19
19
  const assessment = result?.assessment || {};
20
20
  const action = result?.action || {};
21
+ const tab_labels = result?.tab_labels || {};
22
+ const { Governance_Label, Assessment_Label, Planning_Label, Action_Label } =
23
+ tab_labels || {};
21
24
 
22
25
  const [activeIndex, setActiveIndex] = React.useState(0);
23
26
 
@@ -36,9 +39,6 @@ const MissionSignatoryProfileView = (props) => {
36
39
  }}
37
40
  />
38
41
  <div className="signatories-profile">
39
- {/* <h2>{planning?.planning_titles?.[0].Signatory}</h2> */}
40
- {/* <h2>{planning?.planning_titles?.[0].Id}</h2> */}
41
-
42
42
  <br />
43
43
 
44
44
  <Tab
@@ -53,19 +53,19 @@ const MissionSignatoryProfileView = (props) => {
53
53
  onTabChange={(e, { activeIndex }) => setActiveIndex(activeIndex)}
54
54
  panes={[
55
55
  {
56
- menuItem: 'Governance',
56
+ menuItem: Governance_Label || 'Governance',
57
57
  render: () => <GovernanceTab result={governance} />,
58
58
  },
59
59
  {
60
- menuItem: 'Assessment',
60
+ menuItem: Assessment_Label || 'Assessment',
61
61
  render: () => <AssessmentTab result={assessment} />,
62
62
  },
63
63
  {
64
- menuItem: 'Planning',
64
+ menuItem: Planning_Label || 'Planning',
65
65
  render: () => <PlanningTab result={planning} />,
66
66
  },
67
67
  {
68
- menuItem: 'Action',
68
+ menuItem: Action_Label || 'Action',
69
69
  render: () => <ActionPagesTab result={action} />,
70
70
  },
71
71
  ]}
package/src/constants.js CHANGED
@@ -21,31 +21,33 @@ export const download_fields = [
21
21
  ];
22
22
 
23
23
  export const eea_languages = [
24
- { name: 'English', code: 'en' },
25
24
  { name: 'български', code: 'bg' },
26
25
  { name: 'Español', code: 'es' },
27
- // { name: 'Čeština', code: 'cs' },
26
+ { name: 'Čeština', code: 'cs' },
28
27
  { name: 'Dansk', code: 'da' },
29
28
  { name: 'Deutsch', code: 'de' },
30
- // { name: 'Eesti keel', code: 'et' },
29
+ { name: 'Eesti keel', code: 'et' },
31
30
  { name: 'Ελληνικά', code: 'el' },
31
+ { name: 'English', code: 'en' },
32
32
  { name: 'Français', code: 'fr' },
33
- // { name: 'Gaeilge', code: 'ga' },
33
+ { name: 'Gaeilge', code: 'ga' },
34
34
  { name: 'Hrvatski', code: 'hr' },
35
35
  { name: 'Italiano', code: 'it' },
36
- // { name: 'Latviešu valoda', code: 'lv' },
37
- // { name: 'Lietuvių kalba', code: 'lt' },
38
- // { name: 'Magyar', code: 'hu' },
39
- // { name: 'Malti', code: 'mt' },
40
- // { name: 'Nederlands', code: 'nl' },
36
+ { name: 'Latviešu', code: 'lv' },
37
+ { name: 'Lietuvių', code: 'lt' },
38
+ { name: 'Magyar', code: 'hu' },
39
+ { name: 'Malti', code: 'mt' },
40
+ { name: 'Nederlands', code: 'nl' },
41
41
  { name: 'Polski', code: 'pl' },
42
42
  { name: 'Português', code: 'pt' },
43
43
  { name: 'Română', code: 'ro' },
44
- // { name: 'Slovenčina', code: 'sk' },
45
- // { name: 'Slovenščina', code: 'sl' },
44
+ { name: 'Slovenčina', code: 'sk' },
45
+ { name: 'Slovenščina', code: 'sl' },
46
46
  { name: 'Suomi', code: 'fi' },
47
47
  { name: 'Svenska', code: 'sv' },
48
48
  { name: 'Íslenska', code: 'is' },
49
49
  { name: 'Nynorsk', code: 'nn' },
50
- // { name: 'Türkçe', code: 'tr' },
50
+ { name: 'Türkçe', code: 'tr' },
51
51
  ];
52
+
53
+ export const non_eu_langs = ['is', 'nn', 'tr'];
package/src/index.js CHANGED
@@ -43,7 +43,7 @@ import eeaWhiteLogo from '@eeacms/volto-eea-design-system/../theme/themes/eea/as
43
43
  import './slate-styles.less';
44
44
  import BrokenLinks from './components/theme/Views/BrokenLinks';
45
45
 
46
- import { eea_languages } from './constants';
46
+ import { eea_languages, non_eu_langs } from './constants';
47
47
 
48
48
  const getEnv = () => (typeof window !== 'undefined' ? window.env : process.env);
49
49
 
@@ -109,13 +109,12 @@ const applyConfig = (config) => {
109
109
  config.settings.hasLanguageDropdown = true;
110
110
  config.settings.defaultLanguage = 'en';
111
111
  config.settings.supportedLanguages = [
112
- 'en',
113
-
114
112
  'bg', // bulgarian
115
113
  'es', // spanish
116
114
  'cs', // czech
117
115
  'da', // danish
118
116
  'de', // german
117
+ 'en',
119
118
  'et', // estonian
120
119
  'el', // greek
121
120
  'fr', // french
@@ -145,6 +144,7 @@ const applyConfig = (config) => {
145
144
  config.settings.eea = {
146
145
  ...(config.settings.eea || {}),
147
146
  languages: eea_languages,
147
+ non_eu_langs,
148
148
  headerOpts: {
149
149
  ...(config.settings.eea?.headerOpts || {}),
150
150
  logo: ccaLogo,
@@ -49,13 +49,13 @@ p.has--clear--both:empty {
49
49
  .ui.items > .item > .image > img {
50
50
  width: auto;
51
51
  }
52
- .ui.items > .item > .image + .content{
52
+ .ui.items > .item > .image + .content {
53
53
  padding-left: 1rem;
54
54
  }
55
55
 
56
56
  .ui.items > .item .ui.middle.aligned.image {
57
57
  display: flex;
58
-
58
+
59
59
  img {
60
60
  align-self: center;
61
61
  }
@@ -258,3 +258,68 @@ iframe {
258
258
  }
259
259
  }
260
260
  }
261
+
262
+ // language dropdown
263
+ .top.bar {
264
+ .ui.container {
265
+ .wrapper.language-list {
266
+ /* display: flex; */
267
+ /* flex-direction: column; */
268
+ margin: 0.25rem 0;
269
+ gap: 0.25rem;
270
+ white-space: pre-wrap;
271
+
272
+ display: grid;
273
+ grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
274
+ grid-auto-flow: column;
275
+ grid-auto-rows: auto;
276
+ grid-template-rows: repeat(10, auto);
277
+
278
+ .menu {
279
+ cursor: auto;
280
+ position: absolute;
281
+ display: none;
282
+ outline: none;
283
+ top: 100%;
284
+ min-width: -moz-max-content;
285
+ min-width: max-content;
286
+ margin: 0;
287
+ padding: 0;
288
+ background: #fff;
289
+ font-size: 1em;
290
+ text-shadow: none;
291
+ text-align: left;
292
+ box-shadow: 0 2px 3px 0 #e6e7e8;
293
+ border: 1px solid #e6e7e8;
294
+ border-radius: 0;
295
+ transition: opacity 0.1s ease;
296
+ z-index: 11;
297
+ will-change: transform, opacity;
298
+
299
+ max-width: 100%;
300
+ width: fit-content;
301
+ }
302
+ .item {
303
+ padding-left: 0.8em;
304
+ min-width: 10em;
305
+ }
306
+
307
+ .noneu-langs-label {
308
+ // border-bottom: 1px solid black;
309
+ }
310
+ }
311
+ }
312
+ }
313
+
314
+ #language-switcher .menu .wrapper .item {
315
+ justify-content: flex-start !important;
316
+ font-weight: 400;
317
+ }
318
+
319
+ @media (max-width: 768px) {
320
+ .top.bar .ui.dropdown .wrapper {
321
+ display: flex;
322
+ flex-direction: column;
323
+ }
324
+ }
325
+ // end language dropdown