@eeacms/volto-clms-theme 1.0.41 → 1.0.45

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.
Files changed (60) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/Jenkinsfile +17 -19
  3. package/package.json +5 -3
  4. package/src/actions/geonetwork/import_geonetwork.js +21 -0
  5. package/src/actions/index.js +16 -0
  6. package/src/actions/registry/registry.js +21 -0
  7. package/src/actions/userschema/userschema.js +17 -0
  8. package/src/components/Blocks/CclHomeBgImageBlock/CclGreenBgView.jsx +32 -8
  9. package/src/components/Blocks/CclHomeBgImageBlock/CclHomeBgImageBlockEdit.jsx +5 -1
  10. package/src/components/Blocks/CclHomeBgImageBlock/CclHomeBgImageSchema.js +36 -7
  11. package/src/components/Blocks/CclRelatedListingBlock/CclRelatedListingEdit.jsx +95 -0
  12. package/src/components/Blocks/CclRelatedListingBlock/CclRelatedListingView.jsx +67 -0
  13. package/src/components/Blocks/CclRelatedListingBlock/schema.js +34 -0
  14. package/src/components/Blocks/CclTextLinkCarouselBlock/CclTextLinkCarouselEdit.jsx +38 -0
  15. package/src/components/Blocks/CclTextLinkCarouselBlock/CclTextLinkCarouselView.jsx +41 -0
  16. package/src/components/Blocks/CclTextLinkCarouselBlock/TextLinkCarouselSchema.js +18 -0
  17. package/src/components/Blocks/CustomTemplates/VoltoListingBlock/CclListingWorkOpportunities.jsx +5 -15
  18. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/CclCarouselView.jsx +39 -13
  19. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/CclProductTabsView.jsx +6 -1
  20. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/CclVerticalFaqTabsView.jsx +19 -60
  21. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/FixTemplates.jsx +19 -0
  22. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/custom.less +55 -1
  23. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/index.js +2 -0
  24. package/src/components/Blocks/customBlocks.js +97 -26
  25. package/src/components/CLMSDatasetDetailView/CLMSDatasetDetailView.jsx +175 -15
  26. package/src/components/CLMSDatasetDetailView/DataSetInfoContent.jsx +20 -13
  27. package/src/components/CLMSDatasetDetailView/MetadataContent.jsx +26 -7
  28. package/src/components/CLMSDownloadCartView/CLMSDownloadCartView.jsx +5 -1
  29. package/src/components/CLMSProfileView/CLMSApiTokensView.jsx +55 -33
  30. package/src/components/CLMSProfileView/CLMSProfileView.jsx +28 -15
  31. package/src/components/CLMSProfileView/CLMSUserProfileView.jsx +37 -64
  32. package/src/components/CclCard/CclCard.jsx +1 -7
  33. package/src/components/CclCard/cards.less +1 -1
  34. package/src/components/CclLoginModal/CclLoginModal.jsx +83 -0
  35. package/src/components/CclLoginModal/ccl-login-modal.css +3 -0
  36. package/src/components/CclModal/CclModal.jsx +20 -5
  37. package/src/components/Widgets/ContactWidget.jsx +91 -0
  38. package/src/components/Widgets/DistributionInfoWidget.jsx +40 -0
  39. package/src/components/Widgets/GeonetworkIdentifiersWidget.jsx +48 -0
  40. package/src/components/Widgets/TextLinkWidget.jsx +41 -0
  41. package/src/constants/ActionTypes.js +1 -0
  42. package/src/customizations/volto/components/theme/Header/Header.jsx +31 -31
  43. package/src/customizations/volto/components/theme/SearchWidget/SearchWidget.jsx +11 -3
  44. package/src/index.js +13 -8
  45. package/src/reducers/geonetwork/import_geonetwork_reducer.js +45 -0
  46. package/src/reducers/index.js +9 -3
  47. package/src/reducers/registry/registry.js +46 -0
  48. package/src/reducers/tokens/tokens.js +14 -10
  49. package/src/reducers/userschema/userschema.js +48 -0
  50. package/theme/clms/css/breadcrumbs.css +1 -0
  51. package/theme/clms/css/carousel.css +109 -11
  52. package/theme/clms/css/forms.css +6 -1
  53. package/theme/clms/css/home.css +29 -4
  54. package/theme/clms/css/maps.css +4 -0
  55. package/theme/clms/css/maps.less +4 -0
  56. package/theme/clms/css/styles.less +12 -3
  57. package/src/components/Blocks/CclTechnicalLibrariesList/CclTechnicalLibrariesListEdit.jsx +0 -63
  58. package/src/components/Blocks/CclTechnicalLibrariesList/CclTechnicalLibrariesListView.jsx +0 -43
  59. package/src/components/Blocks/CclTechnicalLibrariesList/TechnicalLibrariesListSchema.js +0 -17
  60. package/src/components/CLMSServiceDeskView/CLMSServiceDeskView.jsx +0 -113
@@ -1,4 +1,13 @@
1
1
  /* Slider */
2
+
3
+ .tabs-block .slick-arrows .slick-prev:before,
4
+ .tabs-block .slick-arrows .slick-next:before {
5
+ display: block;
6
+ font-size: 2.2222222222rem;
7
+ font-weight: 900;
8
+ opacity: 1;
9
+ }
10
+
2
11
  .slick-slider {
3
12
  position: relative;
4
13
 
@@ -113,8 +122,13 @@
113
122
  }
114
123
 
115
124
  /* Arrows */
116
- .slick-prev,
117
- .slick-next {
125
+ .slick-slider .slick-prev,
126
+ .slick-slider .slick-next {
127
+ display: none !important;
128
+ }
129
+
130
+ .slick-arrows .slick-prev,
131
+ .slick-arrows .slick-next {
118
132
  position: absolute;
119
133
  top: 50%;
120
134
 
@@ -212,14 +226,9 @@
212
226
  }
213
227
 
214
228
  .slick-dots {
215
- position: relative;
216
- bottom: -25px;
217
- display: block;
218
- width: 100%;
219
- padding: 0;
220
- margin: 0;
221
- list-style: none;
222
- text-align: center;
229
+ position: absolute;
230
+ z-index: 1;
231
+ bottom: 1.75rem;
223
232
  }
224
233
 
225
234
  .slick-dots li {
@@ -305,11 +314,46 @@
305
314
  padding-bottom: 2.5rem;
306
315
  padding-left: 2rem;
307
316
  }
308
- @media (max-width: 600px) {
317
+ @media (max-width: 820px) {
309
318
  .ccl-list-carousel {
310
319
  padding-right: 0;
311
320
  padding-left: 0;
312
321
  }
322
+
323
+ .slick-prev,
324
+ .slick-next {
325
+ position: absolute !important;
326
+ top: 50% !important;
327
+
328
+ display: block !important;
329
+
330
+ width: 20px !important;
331
+ height: 20px !important;
332
+ padding: 0 !important;
333
+ border: none !important;
334
+ background: transparent !important;
335
+
336
+ color: transparent !important;
337
+
338
+ cursor: pointer !important;
339
+ font-size: 0 !important;
340
+ line-height: 0 !important;
341
+ outline: none !important;
342
+ -webkit-transform: translate(0, -50%) !important;
343
+ -ms-transform: translate(0, -50%) !important;
344
+ transform: translate(0, -50%) !important;
345
+ }
346
+
347
+ .slick-prev {
348
+ left: 0 !important;
349
+ }
350
+
351
+ .slick-next {
352
+ right: 20px !important;
353
+ }
354
+ .slick-dots{
355
+ display: none;
356
+ }
313
357
  }
314
358
 
315
359
  .ccl-list-carousel .slick-arrow {
@@ -430,3 +474,57 @@
430
474
  .tabs-block .slick-slider:not(.slick-vertical) .slick-slide {
431
475
  padding-top: 0;
432
476
  }
477
+
478
+ /* .ccl-banner-top-bar {
479
+ display: flex;
480
+ align-items: flex-end;
481
+ justify-content: flex-end;
482
+ margin-right: auto;
483
+ margin-left: auto;
484
+ } */
485
+
486
+ /* Banner info */
487
+ .ccl-banner-info {
488
+ position: absolute;
489
+ z-index: 1;
490
+ right: 0;
491
+ bottom: 2rem;
492
+ display: none;
493
+ width: 100%;
494
+ padding: 1.5rem;
495
+ background: #ffffffd9;
496
+ }
497
+
498
+ @media (min-width: 768px) {
499
+ .ccl-banner-info {
500
+ width: 30%;
501
+ }
502
+ }
503
+
504
+ .ccl-banner-info .ccl-banner-info-title {
505
+ margin-bottom: 1rem;
506
+ color: black !important;
507
+ font-size: 1rem !important;
508
+ font-weight: bold;
509
+ }
510
+
511
+ .ccl-banner-info .ccl-banner-info-content p {
512
+ margin-bottom: 0.5rem;
513
+ font-size: 1rem;
514
+ line-height: 1.125rem;
515
+ }
516
+
517
+ .ccl-banner-info-link {
518
+ display: inline-block;
519
+ width: 100%;
520
+ text-align: right;
521
+ }
522
+
523
+ .tabs-block > .styled {
524
+ display: block !important;
525
+ }
526
+
527
+ .tabs-block .slick-slider {
528
+ display: block !important;
529
+ }
530
+
@@ -40,7 +40,12 @@
40
40
  }
41
41
 
42
42
  .ccl-button--default:active,
43
- .ccl-button--default:focus,
43
+ .ccl-button--default:focus {
44
+ background-color: #fff;
45
+ color: #a0b128;
46
+ }
47
+
48
+
44
49
  .ccl-button--default:hover {
45
50
  background-color: #a0b128;
46
51
  color: #fff;
@@ -2,7 +2,8 @@
2
2
 
3
3
  /*
4
4
  */
5
- .contenttype-lrf:not(.section-cart) #page-document.ui.container {
5
+ .contenttype-lrf:not(.section-cart):not(.section-profile)
6
+ #page-document.ui.container {
6
7
  width: calc(100vmax - (100vmax - 100%)) !important;
7
8
  margin: 0 0 !important;
8
9
  }
@@ -11,16 +12,18 @@
11
12
  margin-bottom: 0.5rem;
12
13
  }
13
14
 
14
- .contenttype-lrf:not(.section-cart) .ui.basic.segment.content-area {
15
+ .contenttype-lrf:not(.section-cart):not(.section-profile)
16
+ .ui.basic.segment.content-area {
15
17
  padding-top: 0;
16
18
  margin-top: 0;
17
19
  }
18
20
 
19
- .contenttype-lrf:not(.section-cart) .block {
21
+ .contenttype-lrf:not(.section-cart):not(.section-profile) .block {
20
22
  margin-bottom: 0;
21
23
  }
22
24
 
23
- .contenttype-lrf:not(.section-cart) .ui.basic.segment.content-area {
25
+ .contenttype-lrf:not(.section-cart):not(.section-profile)
26
+ .ui.basic.segment.content-area {
24
27
  padding-bottom: 0;
25
28
  margin-bottom: 0;
26
29
  }
@@ -71,6 +74,22 @@
71
74
  color: #fff;
72
75
  }
73
76
 
77
+ @media (max-width: 1200px) {
78
+ .ccl-banner-top-bar {
79
+ height: 5rem;
80
+ }
81
+ }
82
+ @media (max-width: 420px) {
83
+ .ccl-banner-top-bar {
84
+ height: 7rem;
85
+ }
86
+ }
87
+
88
+ .ccl-banner-top-bar .ccl-container .ccl-banner-top-bar-right {
89
+ margin-left: 0.5rem;
90
+ cursor: pointer;
91
+ }
92
+
74
93
  .ccl-banner-top-bar .ccl-container {
75
94
  display: flex;
76
95
  height: 100%;
@@ -78,6 +97,12 @@
78
97
  justify-content: space-between;
79
98
  }
80
99
 
100
+ .ccl-banner-top-bar-left .ccl-banner-top-bar-right {
101
+ overflow: hidden;
102
+ text-overflow: ellipsis;
103
+ white-space: nowrap;
104
+ }
105
+
81
106
  .ccl-banner-top-bar .ccl-banner-top-bar-left,
82
107
  .ccl-banner-top-bar .ccl-banner-top-bar-right {
83
108
  overflow: hidden;
@@ -66,6 +66,10 @@
66
66
  }
67
67
 
68
68
  .land .esri-basemap-gallery__item:first-child {
69
+ margin-top: 0;
70
+ }
71
+
72
+ .land .esri-basemap-gallery__item {
69
73
  margin: 0;
70
74
  }
71
75
 
@@ -69,6 +69,10 @@
69
69
  }
70
70
 
71
71
  .esri-basemap-gallery__item:first-child {
72
+ margin-top: 0;
73
+ }
74
+
75
+ .esri-basemap-gallery__item {
72
76
  margin: 0;
73
77
  }
74
78
 
@@ -101,7 +101,9 @@ li {
101
101
  }
102
102
 
103
103
  .ul-list li::marker,
104
- .ol-list li::marker {
104
+ .ol-list li::marker,
105
+ ul > li,
106
+ ol > li {
105
107
  color: #a0b128;
106
108
  }
107
109
 
@@ -145,13 +147,15 @@ a:hover,
145
147
  margin-left: auto;
146
148
  }
147
149
 
148
- body.contenttype-lrf:not(.section-cart) main .ccl-container {
150
+ body.contenttype-lrf:not(.section-cart):not(.profilecart) main .ccl-container {
149
151
  max-width: 1400px;
150
152
  margin-right: auto;
151
153
  margin-left: auto;
152
154
  }
153
155
 
154
- body:not(.contenttype-lrf:not(.section-cart)) main .ccl-container {
156
+ body:not(.contenttype-lrf:not(.section-cart):not(.section-profile))
157
+ main
158
+ .ccl-container {
155
159
  max-width: 100%;
156
160
  padding: 0;
157
161
  }
@@ -1111,4 +1115,9 @@ body.section-map-viewer #page-document.ui.container {
1111
1115
  body.searchlib-page div#page-document {
1112
1116
  top: 0em !important;
1113
1117
  width: 1127px !important;
1118
+ max-width: 1127px !important;
1119
+ }
1120
+
1121
+ .metadata.image img {
1122
+ max-width: 100%;
1114
1123
  }
@@ -1,63 +0,0 @@
1
- import React from 'react';
2
- import { TechnicalLibrariesListSchema } from './TechnicalLibrariesListSchema';
3
- import { SidebarPortal } from '@plone/volto/components';
4
- import InlineForm from '@plone/volto/components/manage/Form/InlineForm';
5
- import { useSelector, useDispatch } from 'react-redux';
6
- import { searchContent } from '@plone/volto/actions';
7
- import CclCard from '@eeacms/volto-clms-theme/components/CclCard/CclCard';
8
-
9
- const CclTechnicalLibrariesListEdit = (props) => {
10
- const {
11
- block,
12
- data,
13
- onChangeBlock,
14
- selected,
15
- id,
16
- properties,
17
- metadata,
18
- } = props;
19
- const dispatch = useDispatch();
20
- const searchSubrequests = useSelector((state) => state.search.subrequests);
21
- const path = metadata ? metadata['@id'] : properties['@id'];
22
- let libraries = searchSubrequests?.[props.id]?.items || [];
23
- React.useEffect(() => {
24
- dispatch(
25
- searchContent(
26
- path,
27
- {
28
- fullobjects: 1,
29
- portal_type: 'TechnicalLibrary',
30
- path: '/',
31
- associated_products: metadata['id'],
32
- },
33
- id,
34
- ),
35
- );
36
- }, [path, data, id, metadata, dispatch]);
37
-
38
- return (
39
- <>
40
- <div className="technical-libraries">
41
- <h2>Technical Libraries</h2>
42
- {libraries.map((item, index) => (
43
- <CclCard key={index} type="doc" card={item} />
44
- ))}
45
- </div>
46
- <SidebarPortal selected={selected}>
47
- <InlineForm
48
- schema={TechnicalLibrariesListSchema()}
49
- title="TechnicalLibraries List block"
50
- onChangeField={(id, value) => {
51
- onChangeBlock(block, {
52
- ...data,
53
- [id]: value,
54
- });
55
- }}
56
- formData={data}
57
- />
58
- </SidebarPortal>
59
- </>
60
- );
61
- };
62
-
63
- export default CclTechnicalLibrariesListEdit;
@@ -1,43 +0,0 @@
1
- import React from 'react';
2
- import { useSelector, useDispatch } from 'react-redux';
3
- import { searchContent } from '@plone/volto/actions';
4
- import CclCard from '@eeacms/volto-clms-theme/components/CclCard/CclCard';
5
-
6
- const CclTechnicalLibrariesListView = (props) => {
7
- const { data, id, properties, metadata } = props;
8
- const dispatch = useDispatch();
9
- const searchSubrequests = useSelector((state) => state.search.subrequests);
10
- const path = metadata ? metadata['@id'] : properties['@id'];
11
- let libraries = searchSubrequests?.[props.id]?.items || [];
12
-
13
- React.useEffect(() => {
14
- dispatch(
15
- searchContent(
16
- path,
17
- {
18
- fullobjects: 1,
19
- portal_type: 'TechnicalLibrary',
20
- path: '/',
21
- associated_products: metadata['id'],
22
- },
23
- id,
24
- ),
25
- );
26
- }, [path, data, id, metadata, dispatch]);
27
-
28
- return (
29
- <>
30
- <div className="technical-libraries">
31
- {libraries.length > 0 ? (
32
- libraries.map((item, index) => (
33
- <CclCard key={index} type="doc" card={item} />
34
- ))
35
- ) : (
36
- <p>There are no technical libraries for this product.</p>
37
- )}
38
- </div>
39
- </>
40
- );
41
- };
42
-
43
- export default CclTechnicalLibrariesListView;
@@ -1,17 +0,0 @@
1
- export const TechnicalLibrariesListSchema = () => ({
2
- title: 'TechnicalLibraries List block',
3
- fieldsets: [
4
- {
5
- id: 'default',
6
- title: 'Default',
7
- fields: ['title'],
8
- },
9
- ],
10
- properties: {
11
- title: {
12
- title: 'Title',
13
- type: 'string',
14
- },
15
- },
16
- required: [],
17
- });
@@ -1,113 +0,0 @@
1
- /* eslint-disable jsx-a11y/label-has-associated-control */
2
- import React from 'react';
3
- import CclButton from '@eeacms/volto-clms-theme/components/CclButton/CclButton';
4
-
5
- const ServiceDeskView = () => {
6
- return (
7
- <>
8
- <div className="ui container">
9
- <section className="page-section">
10
- <h1 className="page-title">Service desk</h1>
11
- <div className="page-description">
12
- <p>
13
- Have you checked our <a href="/en/faq">FAQ section</a>? If you
14
- haven't found an answer to your problem or question, please fill
15
- in this form to contact the Copernicus land service desk.
16
- </p>
17
- <p>
18
- We will try to respond as soon as possible within office working
19
- hours from Monday to Friday.
20
- </p>
21
- <p>Please note, that the support is provided in English only.</p>
22
- </div>
23
- <div className="ccl-container">
24
- <form className="ccl-form user-form contact-form">
25
- <div className="ccl-fieldset">
26
- <div className="ccl-form-group">
27
- <label
28
- className="ccl-form-label"
29
- htmlFor="contact_form_email"
30
- >
31
- E-mail
32
- <span className="label-required">*</span>
33
- </label>
34
- <input
35
- // maxlength="10"
36
- type="text"
37
- className="ccl-text-input"
38
- id="contact_form_email"
39
- name=""
40
- placeholder="Enter an email address"
41
- />
42
- </div>
43
- <div className="ccl-form-group">
44
- <label
45
- className="ccl-form-label"
46
- htmlFor="contact_form_subject"
47
- >
48
- Subject
49
- <span className="label-required">*</span>
50
- </label>
51
- <span className="form-tip">
52
- A short indication of the problem, question or issue, i.e.
53
- login, download, errors in the product, thematic question
54
- etc.
55
- </span>
56
- <input
57
- type="text"
58
- className="ccl-text-input"
59
- id="contact_form_subject"
60
- name=""
61
- placeholder="Enter an subject"
62
- />
63
- </div>
64
- <div className="ccl-form-group">
65
- <label
66
- className="ccl-form-label"
67
- htmlFor="contact_form_message"
68
- >
69
- Message
70
- <span className="label-required">*</span>
71
- </label>
72
- <span className="form-tip">
73
- A short description of the problem, question or issue.
74
- Please don't forget to specify which product(s) you are
75
- referring to in your message.
76
- </span>
77
- <textarea
78
- className="ccl-textarea"
79
- id="contact_form_message"
80
- name=""
81
- cols="30"
82
- rows="10"
83
- placeholder="Enter a message"
84
- ></textarea>
85
- </div>
86
- <div className="ccl-form-group">
87
- <label
88
- className="ccl-form-label"
89
- htmlFor="contact_form_verification"
90
- >
91
- Verification
92
- <span className="label-required">*</span>
93
- </label>
94
- <div className="validation-image"></div>
95
- <input
96
- type="text"
97
- className="ccl-text-input"
98
- id="contact_form_verification"
99
- name=""
100
- placeholder="Enter validation code"
101
- />
102
- </div>
103
- </div>
104
- <CclButton mode="default">Submit</CclButton>
105
- </form>
106
- </div>
107
- </section>
108
- </div>
109
- </>
110
- );
111
- };
112
-
113
- export default ServiceDeskView;