@eeacms/volto-marine-policy 2.0.16 → 2.0.18

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,50 @@ 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
+ ### [2.0.18](https://github.com/eea/volto-marine-policy/compare/2.0.17...2.0.18) - 22 August 2025
8
+
9
+ #### :house: Internal changes
10
+
11
+ - style: Automated code fix [eea-jenkins - [`58ad0aa`](https://github.com/eea/volto-marine-policy/commit/58ad0aa67a4d13e03c1bf338e904eb07cef47dba)]
12
+ - style: Automated code fix [eea-jenkins - [`25f767c`](https://github.com/eea/volto-marine-policy/commit/25f767ce4e26f68cd3daeebee7e2d0f594e8afd5)]
13
+
14
+ #### :hammer_and_wrench: Others
15
+
16
+ - fix eslint [laszlocseh - [`f494ab2`](https://github.com/eea/volto-marine-policy/commit/f494ab287e04db2c75d413de398e73ae510f6f4c)]
17
+ - fix eslint [laszlocseh - [`0a94318`](https://github.com/eea/volto-marine-policy/commit/0a94318433bc0ae035efa9f3043d63b53645ab67)]
18
+ - WiP NIS listing [laszlocseh - [`eed0dcf`](https://github.com/eea/volto-marine-policy/commit/eed0dcf37c5047db6d85f12e0a14683c8e48884e)]
19
+ - Update Login.jsx [dobri1408 - [`668cbf6`](https://github.com/eea/volto-marine-policy/commit/668cbf619d63d51062f869c3e3b3d180e64f223e)]
20
+ - entraid [Dobricean Ioan Dorian - [`c573e9b`](https://github.com/eea/volto-marine-policy/commit/c573e9bcddba9dab7ddea558d935365ea905b282)]
21
+ ### [2.0.17](https://github.com/eea/volto-marine-policy/compare/2.0.16...2.0.17) - 8 August 2025
22
+
23
+ #### :rocket: Dependency updates
24
+
25
+ - Release @eeacms/volto-searchlib@2.1.8 [EEA Jenkins - [`1b2e062`](https://github.com/eea/volto-marine-policy/commit/1b2e0626e3611781312ca277b5957ea8972f08f1)]
26
+ - Release @eeacms/volto-searchlib@2.1.7 [EEA Jenkins - [`3eede38`](https://github.com/eea/volto-marine-policy/commit/3eede38464192fee6b4345abed30f88f71833d14)]
27
+ - Release @eeacms/volto-searchlib@2.1.6 [EEA Jenkins - [`01fcc56`](https://github.com/eea/volto-marine-policy/commit/01fcc56fb139709fe8acb93b578457d2081501a9)]
28
+ - Release @eeacms/volto-searchlib@2.1.5 [EEA Jenkins - [`49c7e7f`](https://github.com/eea/volto-marine-policy/commit/49c7e7fa2fdd94ad1f7d79a0a85ccf61cb1524ab)]
29
+ - Release @eeacms/volto-searchlib@2.1.4 [EEA Jenkins - [`3ae9f4a`](https://github.com/eea/volto-marine-policy/commit/3ae9f4aefe347140dc5131c9067e4dc7a9fc5767)]
30
+ - Release @eeacms/volto-searchlib@2.1.3 [EEA Jenkins - [`eb97433`](https://github.com/eea/volto-marine-policy/commit/eb97433cb35e4f581280b39cc2b75653433f49cc)]
31
+ - Release @eeacms/volto-searchlib@2.1.2 [EEA Jenkins - [`b5ded14`](https://github.com/eea/volto-marine-policy/commit/b5ded1460e823f94c4fea46efdb91d36e81d9ee9)]
32
+ - Release @eeacms/volto-searchlib@2.1.1 [EEA Jenkins - [`f7ab409`](https://github.com/eea/volto-marine-policy/commit/f7ab409191128f41205b1ef276320b49cef92d6b)]
33
+ - Release @eeacms/volto-searchlib@2.1.0 [EEA Jenkins - [`a048b09`](https://github.com/eea/volto-marine-policy/commit/a048b090cff0ceb103cafdaa6fbd3db842e032b2)]
34
+
35
+ #### :house: Internal changes
36
+
37
+ - style: Automated code fix [eea-jenkins - [`55e51fa`](https://github.com/eea/volto-marine-policy/commit/55e51fa06d4991cb3ac9949b431371a57e67e59e)]
38
+ - style: Automated code fix [eea-jenkins - [`fe2a258`](https://github.com/eea/volto-marine-policy/commit/fe2a258459e72935b0df977ba2002d09db598bc6)]
39
+ - style: Automated code fix [eea-jenkins - [`287b77c`](https://github.com/eea/volto-marine-policy/commit/287b77cd87ebbb1c21f710ca0837a6d743961f24)]
40
+ - style: Automated code fix [eea-jenkins - [`b4bdb34`](https://github.com/eea/volto-marine-policy/commit/b4bdb3434ae0413dbe5e7fbbe8c9547050a33113)]
41
+
42
+ #### :hammer_and_wrench: Others
43
+
44
+ - fix NIS workflow progress endpoint [laszlocseh - [`947cc35`](https://github.com/eea/volto-marine-policy/commit/947cc35cb6b5f678f655d18e53a42932b85e1b79)]
45
+ - fix eslint [laszlocseh - [`7123c4b`](https://github.com/eea/volto-marine-policy/commit/7123c4bb126f60ee5b45acb62ca5a3d4b8480ae9)]
46
+ - fix eslint [laszlocseh - [`bc216d1`](https://github.com/eea/volto-marine-policy/commit/bc216d14a1b2d0057b8db0185dbee58df114f22e)]
47
+ - WiP NIS workflow progress [laszlocseh - [`56669f0`](https://github.com/eea/volto-marine-policy/commit/56669f0736952381c5b52db88bde42dc8e309a3d)]
48
+ - NIS workflow progress [laszlocseh - [`57d82c5`](https://github.com/eea/volto-marine-policy/commit/57d82c5a3fd7b3fe278e1fca8b5de85796587e5c)]
49
+ - NIS edit page [laszlocseh - [`eabce65`](https://github.com/eea/volto-marine-policy/commit/eabce6569fe8d08b1761d0305a8eb49e971df8bb)]
50
+ - WiP NIS table listing [laszlocseh - [`d489f00`](https://github.com/eea/volto-marine-policy/commit/d489f0097cd3e644de04f2c8a978761fce5b0e58)]
7
51
  ### [2.0.16](https://github.com/eea/volto-marine-policy/compare/2.0.15...2.0.16) - 15 July 2025
8
52
 
9
53
  #### :rocket: Dependency updates
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-marine-policy",
3
- "version": "2.0.16",
3
+ "version": "2.0.18",
4
4
  "description": "@eeacms/volto-marine-policy: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -22,7 +22,10 @@
22
22
  "@eeacms/volto-embed",
23
23
  "@eeacms/volto-eea-design-system",
24
24
  "@eeacms/volto-eea-website-theme",
25
- "@eeacms/volto-globalsearch"
25
+ "@eeacms/volto-globalsearch",
26
+ "@eeacms/volto-metadata-block",
27
+ "@eeacms/volto-workflow-progress",
28
+ "@plone-collective/volto-authomatic"
26
29
  ],
27
30
  "resolutions": {
28
31
  "react-countup/countup.js": "2.5.0",
@@ -35,9 +38,12 @@
35
38
  "@eeacms/volto-eea-website-theme": "*",
36
39
  "@eeacms/volto-embed": "*",
37
40
  "@eeacms/volto-globalsearch": "2.1.2",
41
+ "@eeacms/volto-metadata-block": "*",
38
42
  "@eeacms/volto-openlayers-map": "1.0.1",
39
- "@eeacms/volto-searchlib": "2.0.16",
43
+ "@eeacms/volto-searchlib": "2.1.8",
40
44
  "@eeacms/volto-tabs-block": "*",
45
+ "@eeacms/volto-workflow-progress": "*",
46
+ "@plone-collective/volto-authomatic": "2.0.1",
41
47
  "axios": "0.30.0",
42
48
  "d3-array": "^2.12.1",
43
49
  "jquery": "3.6.0",
@@ -3,7 +3,6 @@ export StickyHeader from './theme/Header/StickyHeader';
3
3
  export HeroSectionView from './theme/View/HeroSectionView';
4
4
  export FullwidthView from './theme/View/FullwidthView';
5
5
  export MetadataListingView from './theme/MetadataListingView/MetadataListingView';
6
- export NISListingView from './theme/NISListingView/NISListingView';
7
6
  export ItemMetadata from './theme/ItemMetadata/ItemMetadata';
8
7
  export ItemTitle from './theme/ItemMetadata/ItemTitle';
9
8
  export MetadataHeader from './theme/MetadataListingView/MetadataHeader';
@@ -15,3 +14,5 @@ export TableauFullscreen from './theme/Tableau/TableauFullscreen';
15
14
  export ItemMetadataSnippet from './theme/ItemMetadata/ItemMetadataSnippet';
16
15
  export MapPreview from './theme/MetadataListingView/MapPreview';
17
16
  export DemoSitesExplorer from './Blocks/DemoSitesExplorer/DemoSitesExplorerView';
17
+ export NISListingView from './theme/NISListingView/NISListingView';
18
+ export NISMetadataSectionTableView from './theme/NISMetadataSectionTableView/NISMetadataSectionTableView';
@@ -1,37 +1,199 @@
1
- import { Link } from 'react-router-dom';
1
+ // import ProgressWorkflow from '@eeacms/volto-workflow-progress/ProgressWorkflow';
2
+ import ProgressWorkflow from '@eeacms/volto-marine-policy/components/theme/ProgressWorkflow/ProgressWorkflow';
3
+
4
+ // import { Link } from 'react-router-dom';
2
5
  import PropTypes from 'prop-types';
3
6
  import './style.less';
7
+ import { useState, useEffect } from 'react';
8
+ import { useSelector } from 'react-redux';
9
+ import { Checkbox } from 'semantic-ui-react';
10
+ import { Button, Select } from 'semantic-ui-react';
4
11
 
5
12
  const NISListingView = ({ items, isEditMode }) => {
13
+ // console.log(items);
14
+ const [selectedItems, setSelectedItems] = useState([]);
15
+ const [users, setUsers] = useState([]);
16
+ const [assignee, setAssignee] = useState(null);
17
+ const content = useSelector((state) => state.content.data);
18
+ const canEditPage = content?.['@components']?.actions?.object?.some(
19
+ (action) => action.id === 'edit',
20
+ );
21
+ // console.log('canEditPage', canEditPage);
22
+
23
+ const toggleSelection = (id) => {
24
+ setSelectedItems((prev) =>
25
+ prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id],
26
+ );
27
+ };
28
+
29
+ const handleBulkAssign = () => {
30
+ onBulkAssign(selectedItems, assignee);
31
+ setSelectedItems([]);
32
+ setAssignee(null);
33
+ };
34
+
35
+ const onBulkAssign = async (ids, assignee) => {
36
+ await fetch(`${window.location.origin}/++api++/@bulk-assign`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ Accept: 'application/json',
41
+ },
42
+ credentials: 'include',
43
+ body: JSON.stringify({
44
+ items: ids,
45
+ assigned_to: assignee,
46
+ }),
47
+ });
48
+
49
+ // const result = await res.json();
50
+ window.location.reload();
51
+ };
52
+
53
+ useEffect(() => {
54
+ const fetchUsers = async () => {
55
+ const res = await fetch(
56
+ `${window.location.origin}/++api++/@vocabularies/nis_experts_vocabulary`,
57
+ {
58
+ headers: {
59
+ Accept: 'application/json',
60
+ },
61
+ credentials: 'include',
62
+ },
63
+ );
64
+ const data = await res.json();
65
+ if (data?.items) {
66
+ setUsers(
67
+ data.items.map((u) => ({
68
+ key: u.token,
69
+ text: u.title,
70
+ value: u.token,
71
+ })),
72
+ );
73
+ }
74
+ };
75
+ fetchUsers();
76
+ }, []);
77
+
6
78
  return (
7
- <div className="items">
8
- {items.map((item, index) => (
9
- <div className="listing-item" key={item['@id']}>
10
- <div className="listing-body">
11
- <h3>
12
- <Link to={item['@id']}>{item.title}</Link>
13
- </h3>
14
- <div className="listing-metadata">
15
- {item.nis_species_name_accepted && (
16
- <div className="metadata-item">
17
- <b>Species name accepted:</b> {item.nis_species_name_accepted}
79
+ <>
80
+ <table className="ui table">
81
+ <thead>
82
+ <tr>
83
+ <th>Species name original</th>
84
+ <th>Species name accepted</th>
85
+ <th>Scientific name accepted</th>
86
+ <th>Region</th>
87
+ <th>Subregion</th>
88
+ <th>Status</th>
89
+ <th>Group</th>
90
+ <th>Assigned to</th>
91
+ <th>
92
+ {canEditPage && (
93
+ <div>
94
+ <a
95
+ href={`/++api++${window.location.pathname}/nis-export${window.location.search}`}
96
+ title="Download"
97
+ target="_blank"
98
+ rel="noopener"
99
+ className="ui button primary download-as-xls"
100
+ >
101
+ <i className="ri-file-download-line"></i>
102
+ Download
103
+ </a>
18
104
  </div>
19
105
  )}
20
- {item.nis_region && (
21
- <div className="metadata-item">
22
- <b>Region:</b> {item.nis_region}
106
+ </th>
107
+ </tr>
108
+ </thead>
109
+ <tbody>
110
+ {items.map((item, index) => (
111
+ <tr key={item['@id']}>
112
+ <td>{item.nis_species_name_original}</td>
113
+ <td>{item.nis_species_name_accepted}</td>
114
+ <td>{item.nis_scientificname_accepted}</td>
115
+ <td>{item.nis_region}</td>
116
+ <td>{item.nis_subregion}</td>
117
+ <td>{item.nis_status}</td>
118
+ <td>{item.nis_group}</td>
119
+ <td>
120
+ <div className="assigned-to-container">
121
+ <div>{item.nis_assigned_to}</div>
122
+ {canEditPage && (
123
+ <Checkbox
124
+ checked={selectedItems.includes(item['@id'])}
125
+ onChange={() => toggleSelection(item['@id'])}
126
+ />
127
+ )}
23
128
  </div>
24
- )}
25
- {item.nis_subregion && (
26
- <div className="metadata-item">
27
- <b>Subregion:</b> {item.nis_subregion}
129
+ </td>
130
+ <td>
131
+ <div className="workflow-actions">
132
+ <div className="action-buttons">
133
+ <a
134
+ className="ui button secondary mini"
135
+ href={`${item['@id']}`}
136
+ target="_blank"
137
+ rel="noopener"
138
+ >
139
+ View
140
+ </a>
141
+ <a
142
+ className="ui button primary mini"
143
+ href={`${item['@id']}/edit`}
144
+ target="_blank"
145
+ rel="noopener"
146
+ >
147
+ Edit
148
+ </a>
149
+ </div>
150
+ <div className="workflow-progress">
151
+ <ProgressWorkflow
152
+ content={item}
153
+ pathname={item['@id']}
154
+ token={123}
155
+ />
156
+ </div>
28
157
  </div>
29
- )}
30
- </div>
158
+ </td>
159
+ </tr>
160
+ ))}
161
+ </tbody>
162
+ </table>
163
+ {selectedItems.length > 0 && (
164
+ <div className="users-assign-container">
165
+ <h4>
166
+ Assign {selectedItems.length} item
167
+ {selectedItems.length > 1 ? 's' : ''}
168
+ </h4>
169
+ <Select
170
+ placeholder="Select expert"
171
+ options={users}
172
+ value={assignee}
173
+ onChange={(e, { value }) => setAssignee(value)}
174
+ />
175
+ <div style={{ marginTop: '10px', textAlign: 'right' }}>
176
+ <Button
177
+ className="tertiary"
178
+ size="small"
179
+ onClick={() => setSelectedItems([])}
180
+ style={{ marginRight: '5px' }}
181
+ >
182
+ Cancel
183
+ </Button>
184
+ <Button
185
+ className="primary"
186
+ size="small"
187
+ // color="green"
188
+ disabled={!assignee}
189
+ onClick={handleBulkAssign}
190
+ >
191
+ Assign
192
+ </Button>
31
193
  </div>
32
194
  </div>
33
- ))}
34
- </div>
195
+ )}{' '}
196
+ </>
35
197
  );
36
198
  };
37
199
 
@@ -6,6 +6,142 @@
6
6
 
7
7
  .metadata-item {
8
8
  align-items: baseline;
9
- padding: 8px 15px;
9
+ padding: 5px 10px;
10
10
  background-color: #ebebeb;
11
+ font-size: 0.9em;
12
+ }
13
+
14
+ .ui.table tr {
15
+ td,
16
+ th {
17
+ border-right: 1px solid #bcbec0 !important;
18
+
19
+ &:last-of-type {
20
+ border-right: none !important;
21
+ }
22
+ }
23
+ }
24
+
25
+ .ui.button.mini {
26
+ padding: 0.5em 0.8em;
27
+ vertical-align: middle;
28
+ }
29
+
30
+ .action-buttons {
31
+ display: flex;
32
+ flex-direction: column;
33
+ }
34
+
35
+ .workflow-select {
36
+ // min-width: 10em;
37
+ width: 80%;
38
+ margin: auto;
39
+
40
+ .react-select__control {
41
+ min-height: unset;
42
+
43
+ .react-select__value-container {
44
+ // padding: 0 !important;
45
+ }
46
+
47
+ .react-select__indicator {
48
+ padding: 0;
49
+ }
50
+ }
51
+
52
+ .react-select__option {
53
+ text-align: left;
54
+ }
55
+
56
+ .react-select__menu {
57
+ border: 1px solid #b8c6c8;
58
+ border-top: none;
59
+ border-top-left-radius: 0.25em !important;
60
+ border-top-right-radius: 0.25em !important;
61
+ }
62
+ }
63
+
64
+ .workflow-actions {
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: space-around;
68
+
69
+ .workflow-progress {
70
+ display: flex;
71
+ flex-direction: row;
72
+ align-items: center;
73
+ gap: 0.25rem;
74
+
75
+ .sidenav-ol {
76
+ position: fixed;
77
+ top: 40%;
78
+ right: 0;
79
+ left: unset;
80
+ overflow: visible;
81
+ border: 1px solid #eef2f3;
82
+ }
83
+ }
84
+
85
+ .toolbar-workflow-progress {
86
+ display: flex;
87
+ flex-direction: column;
88
+ align-items: center;
89
+ margin: 0 !important;
90
+ gap: 0.25em;
91
+ }
92
+
93
+ .circle-right-btn {
94
+ height: auto !important;
95
+ padding: 0.5em 0.8em;
96
+ border-width: 1px !important;
97
+ border-radius: 0 !important;
98
+ border-radius: 0.25em !important;
99
+ margin: 0 !important;
100
+ }
101
+
102
+ .review-state-text {
103
+ line-height: normal;
104
+ // text-align: left;
105
+ }
106
+ }
107
+
108
+ .review-state-draft {
109
+ border-color: #ed4033 !important;
110
+ color: #ed4033 !important;
111
+ }
112
+
113
+ .review-state-submitted {
114
+ border-color: #f6a808 !important;
115
+ color: #f6a808 !important;
116
+ }
117
+
118
+ .review-state-approved {
119
+ border-color: #3ca34a !important;
120
+ color: #3ca34a !important;
121
+ }
122
+
123
+ .users-assign-container {
124
+ position: fixed;
125
+ z-index: 1000;
126
+ top: 20px;
127
+ right: 20px;
128
+ padding: 16px;
129
+ border: 1px solid #ccc;
130
+ border-radius: 8px;
131
+ background: white;
132
+ box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.15);
133
+ }
134
+
135
+ .assigned-to-container {
136
+ display: flex;
137
+ align-items: center;
138
+ justify-content: space-between;
139
+ }
140
+
141
+ .ri-file-download-line {
142
+ margin-right: 5px;
143
+ }
144
+
145
+ .download-as-xls {
146
+ padding: 0.6em 0.5em !important;
11
147
  }
@@ -0,0 +1,12 @@
1
+ import { MetadataSectionTableView } from '@eeacms/volto-metadata-block/components';
2
+ import './style.less';
3
+
4
+ const NISMetadataSectionTableView = (props) => {
5
+ return (
6
+ <div className="nis-metadata-section-table-view">
7
+ <MetadataSectionTableView {...props} />
8
+ </div>
9
+ );
10
+ };
11
+
12
+ export default NISMetadataSectionTableView;
@@ -0,0 +1,18 @@
1
+ .nis-metadata-section-table-view {
2
+ .ui.table th.one.wide {
3
+ width: 25%;
4
+ }
5
+
6
+ .ui.table tr th {
7
+ border-right: 1px solid #0079cf;
8
+ border-bottom: 1px solid #bcbec0;
9
+ }
10
+
11
+ .ui.table tr:last-child th {
12
+ border-bottom: none;
13
+ }
14
+
15
+ td .block.metadata {
16
+ margin: 0;
17
+ }
18
+ }