@eeacms/volto-clms-theme 1.0.82 → 1.0.83

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,8 +4,39 @@ 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.0.83](https://github.com/eea/volto-clms-theme/compare/1.0.82...1.0.83)
8
+
9
+ - new widget to edit the component controlpanel [`#237`](https://github.com/eea/volto-clms-theme/pull/237)
10
+ - use volto-react-table widget [`#238`](https://github.com/eea/volto-clms-theme/pull/238)
11
+ - Bugs n improvements [`#235`](https://github.com/eea/volto-clms-theme/pull/235)
12
+ - Develop [`#234`](https://github.com/eea/volto-clms-theme/pull/234)
13
+ - remove duplicated [`0739aef`](https://github.com/eea/volto-clms-theme/commit/0739aef163cac91233a936c49f488fbc9daec5be)
14
+ - add volto-react-table-widget [`f4b1e99`](https://github.com/eea/volto-clms-theme/commit/f4b1e998e38f31a63b475760d0bf2157451f9af4)
15
+ - fix packages.json [`44848a0`](https://github.com/eea/volto-clms-theme/commit/44848a0e07a0a960dc17ee6d0c08febac320688d)
16
+ - remove unneeded code [`e37e121`](https://github.com/eea/volto-clms-theme/commit/e37e121ca910b4fbaf2f9da80393fc577a6923c7)
17
+ - adjust dependnecies [`a7f67fe`](https://github.com/eea/volto-clms-theme/commit/a7f67fec4c56d09b038ce052e88b04a601da6db3)
18
+ - adjust import [`66bb59a`](https://github.com/eea/volto-clms-theme/commit/66bb59a22a1b623bc6dcf13996c98572b14526db)
19
+ - add VOLTO version to addon tests execution [`a94a491`](https://github.com/eea/volto-clms-theme/commit/a94a4918413aa5a2a75eea14ab837338d24d2e32)
20
+ - fix cart type selector [`47046b0`](https://github.com/eea/volto-clms-theme/commit/47046b0ba02400c572aee981cc52ad481d560b77)
21
+ - reorder cart modal buttons and remove duplicates of dataset titles from modal [`03171f2`](https://github.com/eea/volto-clms-theme/commit/03171f2e7b85878d1fac186130af2dc8a8813937)
22
+ - ESLint fix [`6e4faad`](https://github.com/eea/volto-clms-theme/commit/6e4faad26bbf412a691e827333541e6e8d302590)
23
+ - use ReactTableWidget [`18d8777`](https://github.com/eea/volto-clms-theme/commit/18d8777cc134a6d13ed0ab1324d38c2edc5f5426)
24
+ - Modal homogenization [`33d41b5`](https://github.com/eea/volto-clms-theme/commit/33d41b5d90094addf6d3e4301225727e801c45b5)
25
+ - use datset title instead of dataResourceTitle [`4a9dc98`](https://github.com/eea/volto-clms-theme/commit/4a9dc98c965d96d1d796a81b94ccf5c0283309d7)
26
+ - get header from schema [`8851314`](https://github.com/eea/volto-clms-theme/commit/8851314f92b1798428790dc4db02fd7688fbc5af)
27
+ - use onBlur [`bdfcc7e`](https://github.com/eea/volto-clms-theme/commit/bdfcc7ecc28c48d0c84261166b824ac20e746d4f)
28
+ - implement search and filtering [`8b748eb`](https://github.com/eea/volto-clms-theme/commit/8b748ebc17a3edbbf1e6b2d24df016f8bb86a333)
29
+ - use react-papaparse to import/export CSV files [`d07fe9d`](https://github.com/eea/volto-clms-theme/commit/d07fe9d17ef963b839bb98b22a008921b83f9f3d)
30
+ - add CSV export [`8bd1ea5`](https://github.com/eea/volto-clms-theme/commit/8bd1ea5451e2b2e8ce8ea1521a13acc1bfcfc7bb)
31
+ - modify the data in the props so Volto keeps its value [`6d5b19a`](https://github.com/eea/volto-clms-theme/commit/6d5b19a081a2487d2680696ba7c993ef8f3bd50e)
32
+ - remove styles [`c677afe`](https://github.com/eea/volto-clms-theme/commit/c677afe47ec10b0274311252941639d1ab3d326b)
33
+ - initial demo using react-table to edit downloadable files. right now without edit functionality [`dafa015`](https://github.com/eea/volto-clms-theme/commit/dafa015e43272101c141456200c75a4c0d65d3dc)
34
+
7
35
  #### [1.0.82](https://github.com/eea/volto-clms-theme/compare/1.0.81...1.0.82)
8
36
 
37
+ > 11 March 2022
38
+
39
+ - Develop [`#233`](https://github.com/eea/volto-clms-theme/pull/233)
9
40
  - add new field in prepackaged downloadable files [`#232`](https://github.com/eea/volto-clms-theme/pull/232)
10
41
 
11
42
  #### [1.0.81](https://github.com/eea/volto-clms-theme/compare/1.0.80...1.0.81)
package/Jenkinsfile CHANGED
@@ -6,6 +6,7 @@ pipeline {
6
6
  NAMESPACE = "@eeacms"
7
7
  SONARQUBE_TAGS = "clms.land.copernicus.eu,volto.eea.europa.eu"
8
8
  DEPENDENCIES = ""
9
+ VOLTO = "14.10.0"
9
10
  }
10
11
 
11
12
  stages {
@@ -77,7 +78,7 @@ pipeline {
77
78
  script {
78
79
  try {
79
80
  sh '''docker pull plone/volto-addon-ci'''
80
- sh '''docker run -i --name="$BUILD_TAG-volto" -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" plone/volto-addon-ci'''
81
+ sh '''docker run -i --name="$BUILD_TAG-volto" -e NAMESPACE="$NAMESPACE" -e VOLTO=$VOLTO -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" plone/volto-addon-ci'''
81
82
  sh '''rm -rf xunit-reports'''
82
83
  sh '''mkdir -p xunit-reports'''
83
84
  sh '''docker cp $BUILD_TAG-volto:/opt/frontend/my-volto-project/coverage xunit-reports/'''
@@ -125,7 +126,7 @@ pipeline {
125
126
  script {
126
127
  try {
127
128
  sh '''docker pull plone; docker run -d --rm --name="$BUILD_TAG-plone" -e SITE="Plone" -e PROFILES="profile-plone.restapi:blocks" plone fg'''
128
- sh '''docker pull plone/volto-addon-ci; docker run -i --name="$BUILD_TAG-cypress" --link $BUILD_TAG-plone:plone -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e DEPENDENCIES="$DEPENDENCIES" -e NODE_ENV=test plone/volto-addon-ci cypress'''
129
+ sh '''docker pull plone/volto-addon-ci; docker run -i --name="$BUILD_TAG-cypress" --link $BUILD_TAG-plone:plone -e VOLTO=$VOLTO -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e DEPENDENCIES="$DEPENDENCIES" -e NODE_ENV=test plone/volto-addon-ci cypress'''
129
130
  } finally {
130
131
  try {
131
132
  sh '''rm -rf cypress-reports cypress-results cypress-coverage'''
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-clms-theme",
3
- "version": "1.0.82",
3
+ "version": "1.0.83",
4
4
  "description": "volto-clms-theme: Volto theme for CLMS site",
5
5
  "main": "src/index.js",
6
6
  "author": "CodeSyntax for the European Environment Agency",
@@ -26,6 +26,7 @@
26
26
  "@eeacms/volto-resize-helper",
27
27
  "@eeacms/volto-tabs-block",
28
28
  "@eeacms/volto-clms-utils",
29
+ "@eeacms/volto-react-table-widget",
29
30
  "volto-form-block",
30
31
  "@eeacms/volto-taxonomy"
31
32
  ],
@@ -35,6 +36,7 @@
35
36
  "@eeacms/volto-clms-utils": "0.1.6",
36
37
  "@eeacms/volto-columns-block": "4.4.3",
37
38
  "@eeacms/volto-metadata-block": "^2.1.0",
39
+ "@eeacms/volto-react-table-widget": "0.1.1",
38
40
  "@eeacms/volto-resize-helper": "0.2.1",
39
41
  "@eeacms/volto-tabs-block": "1.2.7",
40
42
  "@eeacms/volto-taxonomy": "^1.0.0",
@@ -4,7 +4,7 @@
4
4
  * @module components/CLMSDownloadCartView/CLMSCartContent
5
5
  */
6
6
 
7
- import { Checkbox, Grid, Modal, Segment, Select } from 'semantic-ui-react';
7
+ import { Checkbox, Modal, Segment, Select } from 'semantic-ui-react';
8
8
  import React, { useEffect, useState } from 'react';
9
9
  import {
10
10
  getCartObjectFromMapviewer,
@@ -226,7 +226,11 @@ const CLMSCartContent = (props) => {
226
226
  return (
227
227
  <Select
228
228
  placeholder="Select type"
229
- value={item.type_options.length > 0 && item.type_options[0].id}
229
+ value={
230
+ item.type
231
+ ? item.type
232
+ : item.type_options.length > 0 && item.type_options[0].id
233
+ }
230
234
  options={item.type_options.map((option) => {
231
235
  return { key: option.id, value: option.id, text: option.name };
232
236
  })}
@@ -436,36 +440,32 @@ const CLMSCartContent = (props) => {
436
440
  <br />
437
441
  <strong>Map viewer selection:</strong>
438
442
  <ul>
439
- {getSelectedCartItems()
440
- .filter((item) => item.area)
441
- .map((item, key) => (
442
- <li key={key}>{item.name}</li>
443
- ))}
443
+ {[
444
+ ...new Set(
445
+ getSelectedCartItems()
446
+ .filter((item) => !item.file_id)
447
+ .map((item) => item.name),
448
+ ),
449
+ ].map((item, key) => (
450
+ <li key={key}>{item}</li>
451
+ ))}
444
452
  </ul>
445
453
  </div>
446
454
  </div>
447
455
  </Modal.Content>
448
456
  <Modal.Actions>
449
- <Grid columns={2} stackable textAlign="center">
450
- <Grid.Row verticalAlign="middle">
451
- <Grid.Column>
452
- <CclButton
453
- mode={'filled'}
454
- onClick={() => {
455
- setOpenedModal(false);
456
- startDownloading();
457
- }}
458
- >
459
- Accept
460
- </CclButton>
461
- </Grid.Column>
462
- <Grid.Column>
463
- <CclButton onClick={() => setOpenedModal(false)}>
464
- Cancel
465
- </CclButton>
466
- </Grid.Column>
467
- </Grid.Row>
468
- </Grid>
457
+ <div className="modal-buttons">
458
+ <CclButton
459
+ mode={'filled'}
460
+ onClick={() => {
461
+ setOpenedModal(false);
462
+ startDownloading();
463
+ }}
464
+ >
465
+ Accept
466
+ </CclButton>
467
+ <CclButton onClick={() => setOpenedModal(false)}>Cancel</CclButton>
468
+ </div>
469
469
  </Modal.Actions>
470
470
  </Modal>
471
471
  </>
@@ -70,7 +70,7 @@ export const getCartObjectFromMapviewer = (
70
70
  });
71
71
  }
72
72
  return {
73
- name: dataset_data.dataResourceTitle || '-',
73
+ name: dataset_data.title || '-',
74
74
  area: area || '-',
75
75
  format:
76
76
  dataset_data.dataset_full_format?.token ||
@@ -45,33 +45,39 @@ function CclLoginModal() {
45
45
  size="tiny"
46
46
  modalStatus={modalStatus}
47
47
  >
48
- <div className="modal-login-title">Registration / Login</div>
49
- <div className="modal-login-text">
50
- <p>
51
- This site uses EU Login to handle user registration and login. You can
52
- read more about this service in the{' '}
53
- <a href="https://ecas.ec.europa.eu/cas/about.html">
54
- EU Login site help
48
+ <div className="content">
49
+ <div className="modal-login-title">Registration / Login</div>
50
+ <div className="modal-login-text">
51
+ <p>
52
+ This site uses EU Login to handle user registration and login. You
53
+ can read more about this service in the{' '}
54
+ <a href="https://ecas.ec.europa.eu/cas/about.html">
55
+ EU Login site help
56
+ </a>
57
+ .
58
+ </p>
59
+ <p>
60
+ {' '}
61
+ When you clik on the following link, you will be sent to EU Login
62
+ and after a successful login there you will be redirected back to
63
+ this site.
64
+ </p>
65
+ <p>
66
+ If you have any issues or questions, please contact us using the
67
+ <a href="/en/contact-service-helpdesk"> helpdesk</a>.
68
+ </p>
69
+ </div>
70
+ </div>
71
+ <div className="actions">
72
+ <div className="modal-buttons">
73
+ <a
74
+ href={toPublicURL(loginUrl) || '#'}
75
+ className="ccl-button ccl-button-green"
76
+ >
77
+ Login using EU Login
55
78
  </a>
56
- .
57
- </p>
58
- <p>
59
- {' '}
60
- When you clik on the following link, you will be sent to EU Login and
61
- after a successful login there you will be redirected back to this
62
- site.
63
- </p>
64
- <p>
65
- If you have any issues or questions, please contact us using the
66
- <a href="/en/contact-service-helpdesk"> helpdesk</a>.
67
- </p>
79
+ </div>
68
80
  </div>
69
- <a
70
- href={toPublicURL(loginUrl) || '#'}
71
- className="ccl-button ccl-button-green"
72
- >
73
- Login using EU Login
74
- </a>
75
81
  </CclModal>
76
82
  );
77
83
  }
@@ -30,21 +30,17 @@ function CclModal(props) {
30
30
  className={'modal-clms'}
31
31
  size={size}
32
32
  >
33
- <div className={'modal-clms-background'}>
34
- <div className={'modal-clms-container'}>
35
- <div className={'modal-close modal-clms-close'}>
36
- <span
37
- className="ccl-icon-close"
38
- aria-label="Close"
39
- onClick={() => closeModal()}
40
- onKeyDown={() => closeModal()}
41
- tabIndex="0"
42
- role="button"
43
- ></span>
44
- </div>
45
- {children}
46
- </div>
33
+ <div className={'modal-close modal-clms-close'}>
34
+ <span
35
+ className="ccl-icon-close"
36
+ aria-label="Close"
37
+ onClick={() => closeModal()}
38
+ onKeyDown={() => closeModal()}
39
+ tabIndex="0"
40
+ role="button"
41
+ ></span>
47
42
  </div>
43
+ {children}
48
44
  </Modal>
49
45
  );
50
46
  }
@@ -99,11 +99,6 @@
99
99
  text-align: right;
100
100
  }
101
101
 
102
- .modal-clms .ccl-button {
103
- width: 60%;
104
- margin: 2rem auto 0;
105
- }
106
-
107
102
  .modal-clms hr {
108
103
  height: 1px;
109
104
  padding: 0;
@@ -116,6 +111,28 @@
116
111
  line-height: 1.5rem;
117
112
  }
118
113
 
114
+ .modal-buttons {
115
+ display: flex;
116
+ justify-content: space-between;
117
+ margin: 0 1rem;
118
+ }
119
+
120
+ .modal-buttons .ccl-button {
121
+ width: auto;
122
+ margin: 0;
123
+ }
124
+
125
+ .modal-buttons .ccl-button:only-child {
126
+ margin: 0 auto;
127
+ }
128
+
129
+ @media only screen and (max-width: 767px) {
130
+ .modal-clms.ui.modal > .content,
131
+ .modal-clms.ui.modal > .actions {
132
+ padding: 1.5rem !important;
133
+ }
134
+ }
135
+
119
136
  /* Language modal */
120
137
  .modals.dimmer .ui.scrolling.modal.modal-clms {
121
138
  margin-top: 0;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import ObjectListWidget from '@plone/volto/components/manage/Widgets/ObjectListWidget';
2
+ import { ReactTableWidget } from '@eeacms/volto-react-table-widget';
3
3
 
4
4
  const ItemSchema = () => ({
5
5
  title: 'Downloadable File',
@@ -18,6 +18,7 @@ const ItemSchema = () => ({
18
18
  title: 'Year',
19
19
  description: 'Enter the year of this file.',
20
20
  type: 'number',
21
+ minimum: 1900,
21
22
  },
22
23
  version: {
23
24
  title: 'Version',
@@ -36,8 +37,6 @@ const ItemSchema = () => ({
36
37
  ['Raster', 'Raster'],
37
38
  ['Vector', 'Vector'],
38
39
  ],
39
- // type: 'string',
40
- // controlled vocabulary: 'raster' or 'vector'
41
40
  },
42
41
  format: {
43
42
  title: 'Format',
@@ -84,15 +83,17 @@ const ItemSchema = () => ({
84
83
  required: [],
85
84
  });
86
85
 
87
- const DownloadableFilesWidget = (props) => {
86
+ const DownloadableFilesTableWidget = (props) => {
88
87
  return (
89
- <ObjectListWidget
88
+ <ReactTableWidget
90
89
  schema={ItemSchema()}
91
90
  {...props}
91
+ csvexport={true}
92
+ csvimport={true}
92
93
  value={props.value?.items || props.default?.items || []}
93
94
  onChange={(id, value) => props.onChange(id, { items: value })}
94
95
  />
95
96
  );
96
97
  };
97
98
 
98
- export default DownloadableFilesWidget;
99
+ export default DownloadableFilesTableWidget;
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import ObjectListWidget from '@plone/volto/components/manage/Widgets/ObjectListWidget';
3
+
4
+ const ItemSchema = () => ({
5
+ title: 'Product component',
6
+ properties: {
7
+ name: {
8
+ title: 'Name',
9
+ description: 'Enter the name of this component.',
10
+ type: 'string',
11
+ },
12
+ description: {
13
+ title: 'Description',
14
+ description: 'Enter the description of this component.',
15
+ type: 'text',
16
+ },
17
+ },
18
+ fieldsets: [
19
+ {
20
+ id: 'default',
21
+ title: 'Component',
22
+ fields: ['name', 'description'],
23
+ },
24
+ ],
25
+ required: [],
26
+ });
27
+
28
+ const ProductComponentsWidget = (props) => {
29
+ return (
30
+ <ObjectListWidget
31
+ schema={ItemSchema()}
32
+ {...props}
33
+ value={props.value?.items || props.default?.items || []}
34
+ onChange={(id, value) => props.onChange(id, { items: value })}
35
+ />
36
+ );
37
+ };
38
+
39
+ export default ProductComponentsWidget;
package/src/index.js CHANGED
@@ -1,12 +1,11 @@
1
- // COMPONENTS FOR ROUTES
2
- import { ContactForm, Search, Sitemap } from '@plone/volto/components';
3
- // CUSTOMIZED BLOCKS IMPORTS
4
1
  import customBlocks, {
5
2
  customGroupBlocksOrder,
6
3
  } from '@eeacms/volto-clms-theme/components/Blocks/customBlocks';
7
4
 
8
- import BoundingWidget from './components/Widgets/BoundingWidget';
9
- // VIEWS IMPORTS
5
+ // ROUTE VIEWS
6
+ import { ContactForm, Search, Sitemap } from '@plone/volto/components';
7
+
8
+ // VIEWS
10
9
  import CLMSDatasetDetailView from '@eeacms/volto-clms-theme/components/CLMSDatasetDetailView/CLMSDatasetDetailView';
11
10
  import CLMSDownloadCartView from './components/CLMSDownloadCartView/CLMSDownloadCartView';
12
11
  import CLMSDownloadableFileView from '@eeacms/volto-clms-theme/components/CLMSDownloadableFileView/CLMSDownloadableFileView';
@@ -21,17 +20,21 @@ import CLMSNewsItemView from '@eeacms/volto-clms-theme/components/CLMSNewsItemVi
21
20
  import ConfirmSubscriptionView from './components/CLMSSubscriptionView/ConfirmSubscriptionView';
22
21
  import ProfileView from './components/CLMSProfileView/CLMSProfileView';
23
22
  import SubscriptionView from './components/CLMSSubscriptionView/SubscriptionView';
24
- // WIDGET IMPORTS
25
- import TabsWidget from './components/Blocks/CustomTemplates/VoltoTabsBlock/TabsWidget';
26
- import TextLinkWidget from './components/Widgets/TextLinkWidget';
23
+
24
+ // WIDGET
25
+ import BoundingWidget from './components/Widgets/BoundingWidget';
27
26
  import ContactWidget from './components/Widgets/ContactWidget';
27
+ import DatasetDownloadInformationWidget from './components/Widgets/DatasetDownloadInformationWidget';
28
28
  import DistributionInfoWidget from './components/Widgets/DistributionInfoWidget';
29
- import DownloadableFilesWidget from './components/Widgets/DownloadableFilesWidget';
29
+ import DownloadableFilesTableWidget from './components/Widgets/DownloadableFilesTableWidget';
30
30
  import GeonetworkIdentifiersWidget from './components/Widgets/GeonetworkIdentifiersWidget';
31
31
  import MapLayersWidget from './components/Widgets/MapLayersWidget';
32
+ import TabsWidget from './components/Blocks/CustomTemplates/VoltoTabsBlock/TabsWidget';
32
33
  import TaxonomyWidget from './components/Widgets/TaxonomyWidget';
33
- import DatasetDownloadInformationWidget from './components/Widgets/DatasetDownloadInformationWidget';
34
+ import ProductComponentsWidget from './components/Widgets/ProductComponentsWidget';
34
35
  // CUSTOM REDUCERS IMPORT
36
+ import TextLinkWidget from './components/Widgets/TextLinkWidget';
37
+
35
38
  import reducers from './reducers';
36
39
 
37
40
  const applyConfig = (config) => {
@@ -63,7 +66,7 @@ const applyConfig = (config) => {
63
66
  ...config.widgets.widget,
64
67
  bounding_widget: BoundingWidget,
65
68
  layer_widget: MapLayersWidget,
66
- downloadable_files_widget: DownloadableFilesWidget,
69
+ downloadable_files_widget: DownloadableFilesTableWidget,
67
70
  contact_widget: ContactWidget,
68
71
  distribution_info_widget: DistributionInfoWidget,
69
72
  geonetwork_identifiers_widget: GeonetworkIdentifiersWidget,
@@ -73,6 +76,7 @@ const applyConfig = (config) => {
73
76
  config.widgets.id = {
74
77
  ...config.widgets.id,
75
78
  taxonomy_technical_library_categorization: TaxonomyWidget,
79
+ product_components: ProductComponentsWidget,
76
80
  };
77
81
  config.settings = {
78
82
  ...config.settings,
@@ -1,5 +0,0 @@
1
- describe('Initial test', () => {
2
- it('Initial test', () => {
3
- expect(1).toBe(1);
4
- });
5
- });