@eeacms/volto-cca-policy 0.3.14 → 0.3.16
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 +21 -0
- package/package.json +3 -3
- package/src/components/manage/Blocks/CountryProfileDetail/View.js +1 -2
- package/src/components/manage/Blocks/MissionSignatoriesProfile/MissionSignatoriesProfileEdit.js +28 -0
- package/src/components/manage/Blocks/MissionSignatoriesProfile/MissionSignatoriesProfileView.js +149 -0
- package/src/components/manage/Blocks/MissionSignatoriesProfile/MissionSignatoriesProfileView.test.jsx +43 -0
- package/src/components/manage/Blocks/MissionSignatoriesProfile/index.js +25 -0
- package/src/components/manage/Blocks/MissionSignatoriesProfile/schema.js +18 -0
- package/src/components/manage/Blocks/index.js +2 -0
- package/src/utils.js +1 -1
- package/theme/globals/mission.less +16 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@ 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.16](https://github.com/eea/volto-cca-policy/compare/0.3.15...0.3.16) - 17 March 2025
|
|
8
|
+
|
|
9
|
+
#### :rocket: New Features
|
|
10
|
+
|
|
11
|
+
- feat(block): add mission signatories profile block [kreafox - [`818f2ee`](https://github.com/eea/volto-cca-policy/commit/818f2eee63310c8d461fefc0d973882768a71fdb)]
|
|
12
|
+
|
|
13
|
+
#### :bug: Bug Fixes
|
|
14
|
+
|
|
15
|
+
- fix: multiple semantic-ui-react imports [kreafox - [`b73246f`](https://github.com/eea/volto-cca-policy/commit/b73246f05a49c94ff8cf6063c28fb597ee4e73b9)]
|
|
16
|
+
|
|
17
|
+
#### :hammer_and_wrench: Others
|
|
18
|
+
|
|
19
|
+
- test: increase coverage [kreafox - [`7c501ed`](https://github.com/eea/volto-cca-policy/commit/7c501ed316d845b17b1787bd124bf89a44495c9a)]
|
|
20
|
+
- make block available on mission [kreafox - [`2059222`](https://github.com/eea/volto-cca-policy/commit/2059222f1ff962bc8c8c84e8b06c6018fd058d47)]
|
|
21
|
+
### [0.3.15](https://github.com/eea/volto-cca-policy/compare/0.3.14...0.3.15) - 6 March 2025
|
|
22
|
+
|
|
23
|
+
#### :rocket: Dependency updates
|
|
24
|
+
|
|
25
|
+
- Release @eeacms/volto-globalsearch@2.0.9 [EEA Jenkins - [`4ec7cea`](https://github.com/eea/volto-cca-policy/commit/4ec7ceaad21b2fc3a7ce9474f91142934350a63e)]
|
|
26
|
+
- Release @eeacms/volto-searchlib@2.0.13 [EEA Jenkins - [`37a98dd`](https://github.com/eea/volto-cca-policy/commit/37a98ddb1709bc7925124d2b841f99659e729b21)]
|
|
27
|
+
|
|
7
28
|
### [0.3.14](https://github.com/eea/volto-cca-policy/compare/0.3.13...0.3.14) - 6 March 2025
|
|
8
29
|
|
|
9
30
|
#### :nail_care: Enhancements
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eeacms/volto-cca-policy",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.16",
|
|
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,10 +32,10 @@
|
|
|
32
32
|
"@eeacms/volto-eea-design-system": "*",
|
|
33
33
|
"@eeacms/volto-eea-website-theme": "^1.35.0",
|
|
34
34
|
"@eeacms/volto-embed": "^9.1.1",
|
|
35
|
-
"@eeacms/volto-globalsearch": "2.0.
|
|
35
|
+
"@eeacms/volto-globalsearch": "2.0.9",
|
|
36
36
|
"@eeacms/volto-hero-block": "^7.1.0",
|
|
37
37
|
"@eeacms/volto-openlayers-map": "*",
|
|
38
|
-
"@eeacms/volto-searchlib": "2.0.
|
|
38
|
+
"@eeacms/volto-searchlib": "2.0.13",
|
|
39
39
|
"@eeacms/volto-slate-label": "^0.6.0",
|
|
40
40
|
"@eeacms/volto-tabs-block": "^7.5.1",
|
|
41
41
|
"@elastic/search-ui": "1.21.2",
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { TabPane, Tab } from 'semantic-ui-react';
|
|
3
|
-
import { Accordion, Icon } from 'semantic-ui-react';
|
|
2
|
+
import { TabPane, Tab, Accordion, Icon } from 'semantic-ui-react';
|
|
4
3
|
import CountryTabPane from './CountryTabPane';
|
|
5
4
|
|
|
6
5
|
import './styles.less';
|
package/src/components/manage/Blocks/MissionSignatoriesProfile/MissionSignatoriesProfileEdit.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SidebarPortal } from '@plone/volto/components';
|
|
2
|
+
import BlockDataForm from '@plone/volto/components/manage/Form/BlockDataForm';
|
|
3
|
+
import MissionSignatoriesProfile from './MissionSignatoriesProfileView';
|
|
4
|
+
import schema from './schema';
|
|
5
|
+
|
|
6
|
+
export default function Edit(props) {
|
|
7
|
+
const { block, data, onChangeBlock, selected } = props;
|
|
8
|
+
return (
|
|
9
|
+
<>
|
|
10
|
+
<MissionSignatoriesProfile {...props} mode="edit" />
|
|
11
|
+
<SidebarPortal selected={selected}>
|
|
12
|
+
<BlockDataForm
|
|
13
|
+
block={block}
|
|
14
|
+
title={schema.title}
|
|
15
|
+
schema={schema}
|
|
16
|
+
onChangeField={(id, value) => {
|
|
17
|
+
onChangeBlock(block, {
|
|
18
|
+
...data,
|
|
19
|
+
[id]: value,
|
|
20
|
+
});
|
|
21
|
+
}}
|
|
22
|
+
onChangeBlock={onChangeBlock}
|
|
23
|
+
formData={data}
|
|
24
|
+
/>
|
|
25
|
+
</SidebarPortal>
|
|
26
|
+
</>
|
|
27
|
+
);
|
|
28
|
+
}
|
package/src/components/manage/Blocks/MissionSignatoriesProfile/MissionSignatoriesProfileView.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Tab,
|
|
4
|
+
AccordionTitle,
|
|
5
|
+
AccordionContent,
|
|
6
|
+
Accordion,
|
|
7
|
+
Icon,
|
|
8
|
+
} from 'semantic-ui-react';
|
|
9
|
+
import { Callout } from '@eeacms/volto-eea-design-system/ui';
|
|
10
|
+
|
|
11
|
+
export default function MissionSignatoriesProfileView(props) {
|
|
12
|
+
const { data } = props;
|
|
13
|
+
const result = data?._v_results?.[0] || {};
|
|
14
|
+
// const dataJson = JSON.parse(result?.Cooperation_Experience);
|
|
15
|
+
|
|
16
|
+
const [activeAccIndex, setActiveAccIndex] = React.useState(-1);
|
|
17
|
+
|
|
18
|
+
function handleAccClick(e, titleProps) {
|
|
19
|
+
const { index } = titleProps;
|
|
20
|
+
const newIndex = activeAccIndex === index ? -1 : index;
|
|
21
|
+
|
|
22
|
+
setActiveAccIndex(newIndex);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<>
|
|
27
|
+
<div>
|
|
28
|
+
{/* {
|
|
29
|
+
dataJson['Cooperation_Experience'][0][
|
|
30
|
+
'DescribeDetailCooperationEnhance'
|
|
31
|
+
]
|
|
32
|
+
} */}
|
|
33
|
+
<h1>{result?.Signatory}</h1>
|
|
34
|
+
<Tab
|
|
35
|
+
menu={{
|
|
36
|
+
fluid: true,
|
|
37
|
+
className: 'secondary',
|
|
38
|
+
vertical: true,
|
|
39
|
+
pointing: true,
|
|
40
|
+
}}
|
|
41
|
+
grid={{ paneWidth: 9, tabWidth: 3, stackable: true }}
|
|
42
|
+
onTabChange={() => {}}
|
|
43
|
+
panes={[
|
|
44
|
+
{
|
|
45
|
+
menuItem: 'Introduction',
|
|
46
|
+
render: () => (
|
|
47
|
+
<Tab.Pane>
|
|
48
|
+
<h2>Introduction</h2>
|
|
49
|
+
<p>
|
|
50
|
+
Nullam quis arcu in magna pulvinar tincidunt. Lorem ipsum
|
|
51
|
+
dolor sit amet, consectetur adipiscing elit. Nam hendrerit
|
|
52
|
+
nulla ut cursus laoreet. Nullam elementum lorem vel
|
|
53
|
+
facilisis laoreet. Cras ac turpis vel erat vehicula
|
|
54
|
+
venenatis.
|
|
55
|
+
</p>
|
|
56
|
+
</Tab.Pane>
|
|
57
|
+
),
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
menuItem: 'Governance',
|
|
61
|
+
render: () => (
|
|
62
|
+
<Tab.Pane>
|
|
63
|
+
<h2>Governance</h2>
|
|
64
|
+
<Callout>
|
|
65
|
+
<p>
|
|
66
|
+
Etiam id velit feugiat, scelerisque velit a, scelerisque
|
|
67
|
+
nunc. Vestibulum ante ipsum primis in faucibus orci luctus
|
|
68
|
+
et ultrices posuere cubilia curae; Integer dignissim risus
|
|
69
|
+
non nibh scelerisque, sit amet tincidunt sapien rutrum.
|
|
70
|
+
</p>
|
|
71
|
+
</Callout>
|
|
72
|
+
|
|
73
|
+
<h3>Opportunities and benefits of climate action</h3>
|
|
74
|
+
<p>{result?.Describe}</p>
|
|
75
|
+
|
|
76
|
+
<Accordion>
|
|
77
|
+
<AccordionTitle
|
|
78
|
+
active={activeAccIndex === 0}
|
|
79
|
+
index={0}
|
|
80
|
+
onClick={handleAccClick}
|
|
81
|
+
>
|
|
82
|
+
<Icon
|
|
83
|
+
name={
|
|
84
|
+
activeAccIndex
|
|
85
|
+
? 'ri-arrow-down-s-line'
|
|
86
|
+
: 'ri-arrow-up-s-line'
|
|
87
|
+
}
|
|
88
|
+
/>
|
|
89
|
+
Further details and evidence
|
|
90
|
+
</AccordionTitle>
|
|
91
|
+
<AccordionContent active={activeAccIndex === 0}>
|
|
92
|
+
<p>{result?.Provide}</p>
|
|
93
|
+
</AccordionContent>
|
|
94
|
+
</Accordion>
|
|
95
|
+
</Tab.Pane>
|
|
96
|
+
),
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
menuItem: 'Assessment',
|
|
100
|
+
render: () => (
|
|
101
|
+
<Tab.Pane>
|
|
102
|
+
<h2>Assessment</h2>
|
|
103
|
+
<p>
|
|
104
|
+
Etiam accumsan urna a mauris dapibus, nec aliquet nunc
|
|
105
|
+
convallis. Phasellus eget justo et libero ultrices posuere.
|
|
106
|
+
Cras euismod, arcu nec congue convallis, ipsum nunc cursus
|
|
107
|
+
nibh, vel condimentum sapien orci non libero. Integer
|
|
108
|
+
ullamcorper felis sit amet felis placerat, eu convallis
|
|
109
|
+
lorem iaculis.
|
|
110
|
+
</p>
|
|
111
|
+
</Tab.Pane>
|
|
112
|
+
),
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
menuItem: 'Planning',
|
|
116
|
+
render: () => (
|
|
117
|
+
<Tab.Pane>
|
|
118
|
+
<h2>Planning</h2>
|
|
119
|
+
<p>
|
|
120
|
+
Suspendisse potenti. Vivamus non arcu tincidunt, congue
|
|
121
|
+
massa at, porttitor velit. Curabitur lacinia nisl ut turpis
|
|
122
|
+
convallis, at dictum urna aliquet. Nullam non urna eget
|
|
123
|
+
felis interdum feugiat. Morbi vel neque elit. Nullam a
|
|
124
|
+
luctus leo. Integer maximus sapien in bibendum scelerisque.
|
|
125
|
+
</p>
|
|
126
|
+
</Tab.Pane>
|
|
127
|
+
),
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
menuItem: 'Action Pages',
|
|
131
|
+
render: () => (
|
|
132
|
+
<Tab.Pane>
|
|
133
|
+
<h2>Action PAges</h2>
|
|
134
|
+
<p>
|
|
135
|
+
Phasellus ac eros at urna condimentum lacinia. Pellentesque
|
|
136
|
+
habitant morbi tristique senectus et netus et malesuada
|
|
137
|
+
fames ac turpis egestas. Sed bibendum, sapien a venenatis
|
|
138
|
+
fermentum, mauris augue cursus turpis, vitae elementum massa
|
|
139
|
+
orci sit amet massa. In hac habitasse platea dictumst.
|
|
140
|
+
</p>
|
|
141
|
+
</Tab.Pane>
|
|
142
|
+
),
|
|
143
|
+
},
|
|
144
|
+
]}
|
|
145
|
+
/>
|
|
146
|
+
</div>
|
|
147
|
+
</>
|
|
148
|
+
);
|
|
149
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
3
|
+
import { render, fireEvent } from '@testing-library/react';
|
|
4
|
+
import MissionSignatoriesProfileView from './MissionSignatoriesProfileView';
|
|
5
|
+
|
|
6
|
+
describe('MissionSignatoriesProfileView', () => {
|
|
7
|
+
it('should render the component with data', () => {
|
|
8
|
+
const data = {
|
|
9
|
+
_v_results: [
|
|
10
|
+
{
|
|
11
|
+
Signatory: 'Test Signatory',
|
|
12
|
+
Describe: 'Test description',
|
|
13
|
+
Provide: 'Test evidence',
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const { getByText } = render(<MissionSignatoriesProfileView data={data} />);
|
|
19
|
+
|
|
20
|
+
expect(getByText('Test Signatory')).toBeInTheDocument();
|
|
21
|
+
expect(getByText('Governance')).toBeInTheDocument();
|
|
22
|
+
expect(getByText('Assessment')).toBeInTheDocument();
|
|
23
|
+
expect(getByText('Planning')).toBeInTheDocument();
|
|
24
|
+
expect(getByText('Action Pages')).toBeInTheDocument();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('should render tabs and switch content', () => {
|
|
28
|
+
const data = {
|
|
29
|
+
_v_results: [
|
|
30
|
+
{
|
|
31
|
+
Signatory: 'Test Signatory',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const { getByText } = render(<MissionSignatoriesProfileView data={data} />);
|
|
37
|
+
const governanceTab = getByText('Governance');
|
|
38
|
+
fireEvent.click(governanceTab);
|
|
39
|
+
expect(
|
|
40
|
+
getByText('Opportunities and benefits of climate action'),
|
|
41
|
+
).toBeInTheDocument();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import MissionSignatoriesProfileEdit from './MissionSignatoriesProfileEdit';
|
|
2
|
+
import MissionSignatoriesProfileView from './MissionSignatoriesProfileView';
|
|
3
|
+
import { blockAvailableInMission } from '@eeacms/volto-cca-policy/utils';
|
|
4
|
+
import worldSVG from '@plone/volto/icons/world.svg';
|
|
5
|
+
|
|
6
|
+
export default function installMissionSignatoriesProfileBlock(config) {
|
|
7
|
+
config.blocks.blocksConfig.missionSignatoriesProfile = {
|
|
8
|
+
id: 'missionSignatoriesProfile',
|
|
9
|
+
title: 'Mission Signatories Profile',
|
|
10
|
+
icon: worldSVG,
|
|
11
|
+
group: 'site',
|
|
12
|
+
edit: MissionSignatoriesProfileEdit,
|
|
13
|
+
view: MissionSignatoriesProfileView,
|
|
14
|
+
sidebarTab: 1,
|
|
15
|
+
security: {
|
|
16
|
+
addPermission: [],
|
|
17
|
+
view: [],
|
|
18
|
+
},
|
|
19
|
+
restricted: ({ properties, block }) => {
|
|
20
|
+
return blockAvailableInMission(properties, block);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
return config;
|
|
25
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
title: 'Mission Signatories Profile',
|
|
3
|
+
fieldsets: [
|
|
4
|
+
{
|
|
5
|
+
id: 'default',
|
|
6
|
+
title: 'Default',
|
|
7
|
+
fields: ['profile_id'],
|
|
8
|
+
},
|
|
9
|
+
],
|
|
10
|
+
properties: {
|
|
11
|
+
profile_id: {
|
|
12
|
+
title: 'Profile ID',
|
|
13
|
+
type: 'number',
|
|
14
|
+
default: '54403',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: [],
|
|
18
|
+
};
|
|
@@ -22,6 +22,7 @@ import installTabsBlock from './TabsBlock';
|
|
|
22
22
|
import installRedirectBlock from './RedirectBlock';
|
|
23
23
|
import installContentLinks from './ContentLinks';
|
|
24
24
|
import installASTNavigation from './ASTNavigation';
|
|
25
|
+
import installMissionSignatoriesProfileBlock from './MissionSignatoriesProfile';
|
|
25
26
|
|
|
26
27
|
export default function installBlocks(config) {
|
|
27
28
|
config.blocks.blocksConfig.title.restricted = false;
|
|
@@ -53,5 +54,6 @@ export default function installBlocks(config) {
|
|
|
53
54
|
installRedirectBlock,
|
|
54
55
|
installContentLinks,
|
|
55
56
|
installASTNavigation,
|
|
57
|
+
installMissionSignatoriesProfileBlock,
|
|
56
58
|
)(config);
|
|
57
59
|
}
|
package/src/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { flattenToAppURL } from '@plone/volto/helpers';
|
|
2
2
|
|
|
3
3
|
export const blockAvailableInMission = (properties, block) => {
|
|
4
|
-
const missionBlocks = ['mkh_map', 'rastBlock'];
|
|
4
|
+
const missionBlocks = ['mkh_map', 'rastBlock', 'missionSignatoriesProfile'];
|
|
5
5
|
const id = properties?.['@id'];
|
|
6
6
|
|
|
7
7
|
if (!id) {
|
|
@@ -35,6 +35,13 @@ body.view-viewview.contenttype-subsite.section-mission
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
body.subsite-mkh {
|
|
38
|
+
--text-color-secondary: @green-5;
|
|
39
|
+
--border-color-secondary: @green-5;
|
|
40
|
+
|
|
41
|
+
.column > .ui.segment {
|
|
42
|
+
background-color: transparent;
|
|
43
|
+
}
|
|
44
|
+
|
|
38
45
|
&.subsite-root {
|
|
39
46
|
.content-area {
|
|
40
47
|
padding: 0 !important;
|
|
@@ -86,6 +93,15 @@ body.subsite-mkh {
|
|
|
86
93
|
background: @green-1;
|
|
87
94
|
}
|
|
88
95
|
|
|
96
|
+
.ui.statistics:not(.inverted) .ui.statistic .slate.secondary {
|
|
97
|
+
color: @green-5;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.ui.secondary.pointing.menu .active.item {
|
|
101
|
+
color: @green-5;
|
|
102
|
+
border-color: @green-5;
|
|
103
|
+
}
|
|
104
|
+
|
|
89
105
|
#mega-menu {
|
|
90
106
|
.ui.accordion .title i,
|
|
91
107
|
.ui.accordion button.title i {
|