@eeacms/volto-clms-theme 1.0.40 → 1.0.44

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 (66) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/locales/bg/LC_MESSAGES/volto.po +208 -14
  3. package/locales/cs/LC_MESSAGES/volto.po +208 -14
  4. package/locales/da/LC_MESSAGES/volto.po +208 -14
  5. package/locales/de/LC_MESSAGES/volto.po +208 -14
  6. package/locales/el/LC_MESSAGES/volto.po +208 -14
  7. package/locales/en/LC_MESSAGES/volto.po +208 -14
  8. package/locales/es/LC_MESSAGES/volto.po +208 -14
  9. package/locales/et/LC_MESSAGES/volto.po +208 -14
  10. package/locales/fi/LC_MESSAGES/volto.po +208 -14
  11. package/locales/fr/LC_MESSAGES/volto.po +208 -14
  12. package/locales/hr/LC_MESSAGES/volto.po +208 -14
  13. package/locales/hu/LC_MESSAGES/volto.po +208 -14
  14. package/locales/it/LC_MESSAGES/volto.po +208 -14
  15. package/locales/lt/LC_MESSAGES/volto.po +208 -14
  16. package/locales/lv/LC_MESSAGES/volto.po +208 -14
  17. package/locales/mt/LC_MESSAGES/volto.po +208 -14
  18. package/locales/nl/LC_MESSAGES/volto.po +208 -14
  19. package/locales/pl/LC_MESSAGES/volto.po +208 -14
  20. package/locales/pt/LC_MESSAGES/volto.po +208 -14
  21. package/locales/ro/LC_MESSAGES/volto.po +208 -14
  22. package/locales/sk/LC_MESSAGES/volto.po +208 -14
  23. package/locales/sl/LC_MESSAGES/volto.po +208 -14
  24. package/locales/sv/LC_MESSAGES/volto.po +208 -14
  25. package/locales/volto.pot +258 -17
  26. package/package.json +5 -3
  27. package/src/actions/index.js +2 -0
  28. package/src/actions/registry/registry.js +21 -0
  29. package/src/components/Blocks/CclHomeBgImageBlock/CclGreenBgView.jsx +32 -8
  30. package/src/components/Blocks/CclHomeBgImageBlock/CclHomeBgImageBlockEdit.jsx +5 -1
  31. package/src/components/Blocks/CclHomeBgImageBlock/CclHomeBgImageSchema.js +36 -7
  32. package/src/components/Blocks/CclRelatedListingBlock/CclRelatedListingEdit.jsx +95 -0
  33. package/src/components/Blocks/CclRelatedListingBlock/CclRelatedListingView.jsx +67 -0
  34. package/src/components/Blocks/CclRelatedListingBlock/schema.js +34 -0
  35. package/src/components/Blocks/CustomTemplates/VoltoListingBlock/CclListingWorkOpportunities.jsx +5 -15
  36. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/CclCarouselView.jsx +7 -2
  37. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/CclProductTabsView.jsx +41 -0
  38. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/CclVerticalFaqTabsView.jsx +19 -60
  39. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/CclVerticalTabsView.jsx +3 -47
  40. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/FixTemplates.jsx +19 -0
  41. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/RoutingHOC.jsx +63 -0
  42. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/index.js +6 -2
  43. package/src/components/Blocks/customBlocks.js +87 -35
  44. package/src/components/CLMSDatasetDetailView/CLMSDatasetDetailView.jsx +2 -4
  45. package/src/components/CLMSDatasetDetailView/DataSetInfoContent.jsx +6 -7
  46. package/src/components/CclCard/CclCard.jsx +1 -7
  47. package/src/components/CclLoginModal/CclLoginModal.jsx +83 -0
  48. package/src/components/CclLoginModal/ccl-login-modal.css +7 -0
  49. package/src/components/CclModal/CclModal.jsx +15 -5
  50. package/src/customizations/volto/components/theme/Header/Header.jsx +2 -11
  51. package/src/customizations/volto/components/theme/SearchWidget/SearchWidget.jsx +11 -3
  52. package/src/index.js +5 -5
  53. package/src/reducers/index.js +2 -0
  54. package/src/reducers/registry/registry.js +46 -0
  55. package/theme/clms/css/breadcrumbs.css +1 -0
  56. package/theme/clms/css/carousel.css +45 -0
  57. package/theme/clms/css/forms.css +6 -1
  58. package/theme/clms/css/home.css +11 -0
  59. package/theme/clms/css/maps.css +2 -1
  60. package/theme/clms/css/maps.less +2 -1
  61. package/theme/clms/css/styles.less +4 -0
  62. package/src/components/Blocks/CclTechnicalLibrariesList/CclTechnicalLibrariesListEdit.jsx +0 -63
  63. package/src/components/Blocks/CclTechnicalLibrariesList/CclTechnicalLibrariesListView.jsx +0 -43
  64. package/src/components/Blocks/CclTechnicalLibrariesList/TechnicalLibrariesListSchema.js +0 -17
  65. package/src/components/Blocks/CustomTemplates/VoltoTabsBlock/VerticalRouteTabsView.jsx +0 -156
  66. package/src/components/CLMSServiceDeskView/CLMSServiceDeskView.jsx +0 -113
@@ -430,3 +430,48 @@
430
430
  .tabs-block .slick-slider:not(.slick-vertical) .slick-slide {
431
431
  padding-top: 0;
432
432
  }
433
+
434
+ /* .ccl-banner-top-bar {
435
+ display: flex;
436
+ align-items: flex-end;
437
+ justify-content: flex-end;
438
+ margin-right: auto;
439
+ margin-left: auto;
440
+ } */
441
+
442
+ /* Banner info */
443
+ .ccl-banner-info {
444
+ position: absolute;
445
+ z-index: 1;
446
+ right: 0;
447
+ bottom: 2rem;
448
+ display: none;
449
+ width: 100%;
450
+ padding: 1.5rem;
451
+ background: #ffffffd9;
452
+ }
453
+
454
+ @media (min-width: 768px) {
455
+ .ccl-banner-info {
456
+ width: 30%;
457
+ }
458
+ }
459
+
460
+ .ccl-banner-info .ccl-banner-info-title {
461
+ margin-bottom: 1rem;
462
+ color: black !important;
463
+ font-size: 1rem !important;
464
+ font-weight: bold;
465
+ }
466
+
467
+ .ccl-banner-info .ccl-banner-info-content p {
468
+ margin-bottom: 0.5rem;
469
+ font-size: 1rem;
470
+ line-height: 1.125rem;
471
+ }
472
+
473
+ .ccl-banner-info-link {
474
+ display: inline-block;
475
+ width: 100%;
476
+ text-align: right;
477
+ }
@@ -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;
@@ -71,6 +71,11 @@
71
71
  color: #fff;
72
72
  }
73
73
 
74
+ .ccl-banner-top-bar .ccl-container .ccl-banner-top-bar-right {
75
+ margin-left: 0.5rem;
76
+ cursor: pointer;
77
+ }
78
+
74
79
  .ccl-banner-top-bar .ccl-container {
75
80
  display: flex;
76
81
  height: 100%;
@@ -78,6 +83,12 @@
78
83
  justify-content: space-between;
79
84
  }
80
85
 
86
+ .ccl-banner-top-bar-left .ccl-banner-top-bar-right {
87
+ overflow: hidden;
88
+ text-overflow: ellipsis;
89
+ white-space: nowrap;
90
+ }
91
+
81
92
  .ccl-banner-top-bar .ccl-banner-top-bar-left,
82
93
  .ccl-banner-top-bar .ccl-banner-top-bar-right {
83
94
  overflow: hidden;
@@ -453,7 +453,8 @@
453
453
  }
454
454
 
455
455
  .land .active-layer-options i:hover,
456
- .land .active-layer-options svg:hover {
456
+ .land .active-layer-options svg:hover,
457
+ .land .map-menu-icons svg:hover {
457
458
  color: #7c8921;
458
459
  }
459
460
 
@@ -468,7 +468,8 @@
468
468
  }
469
469
 
470
470
  .active-layer-options i:hover,
471
- .active-layer-options svg:hover {
471
+ .active-layer-options svg:hover,
472
+ .map-menu-icons svg:hover {
472
473
  color: #7c8921;
473
474
  }
474
475
 
@@ -1112,3 +1112,7 @@ body.searchlib-page div#page-document {
1112
1112
  top: 0em !important;
1113
1113
  width: 1127px !important;
1114
1114
  }
1115
+
1116
+ .metadata.image img {
1117
+ max-width: 100%;
1118
+ }
@@ -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,156 +0,0 @@
1
- import React from 'react';
2
- import { connect } from 'react-redux';
3
- import { compose } from 'redux';
4
- import { withRouter } from 'react-router';
5
- import { RenderBlocks } from '@plone/volto/components';
6
- import { withScrollToTarget } from '@eeacms/volto-tabs-block/hocs';
7
- import './fontawesome';
8
- import cx from 'classnames';
9
- import { NavLink } from 'react-router-dom';
10
-
11
- const CclRouteTabsView = (props) => {
12
- const {
13
- metadata = {},
14
- data = {},
15
- tabsList = [],
16
- activeTabIndex = 0,
17
- hashlink = {},
18
- setActiveTab = () => {},
19
- } = props;
20
- const [hashlinkOnMount, setHashlinkOnMount] = React.useState(false);
21
-
22
- React.useEffect(() => {
23
- const urlHash = props.location.hash.substring(1) || '';
24
- if (
25
- hashlink.counter > 0 ||
26
- (hashlink.counter === 0 && urlHash && !hashlinkOnMount)
27
- ) {
28
- const id = hashlink.hash || urlHash || '';
29
- const index = tabsList.indexOf(id);
30
- const parentId = data.id || props.id;
31
- const parent = document.getElementById(parentId);
32
- const headerWrapper = document.querySelector('.header-wrapper');
33
- const offsetHeight = headerWrapper?.offsetHeight || 0;
34
- if (id !== parentId && index > -1 && parent) {
35
- if (activeTabIndex !== index) {
36
- setActiveTab(id);
37
- }
38
- props.scrollToTarget(parent, offsetHeight);
39
- } else if (id === parentId && parent) {
40
- props.scrollToTarget(parent, offsetHeight);
41
- }
42
- }
43
- if (!hashlinkOnMount) {
44
- setHashlinkOnMount(true);
45
- }
46
- if (
47
- String(window.performance.getEntriesByType('navigation')[0].type) ===
48
- 'navigate' ||
49
- String(window.performance.getEntriesByType('navigation')[0].type) ===
50
- 'reload'
51
- ) {
52
- if (window.location.hash.length === 0) {
53
- setActiveTab(tabsList[0]);
54
- } else {
55
- setActiveTab(tabsList[window.location.hash.substring(4) - 1]);
56
- }
57
- }
58
- }, [
59
- activeTabIndex,
60
- data.id,
61
- hashlink.counter,
62
- hashlink.hash,
63
- hashlinkOnMount,
64
- props,
65
- setActiveTab,
66
- tabsList,
67
- ]);
68
-
69
- const PanelsComponent = () => {
70
- const { activeTab = null, tabs = {} } = props;
71
- return (
72
- <div className="right-content cont-w-75">
73
- {tabsList.map((tab, index) => {
74
- return (
75
- <div
76
- id={tab}
77
- key={index}
78
- className={cx('panel', tab === activeTab && 'panel-selected')}
79
- role="tabpanel"
80
- aria-hidden="false"
81
- >
82
- <RenderBlocks
83
- {...props}
84
- metadata={metadata}
85
- content={tabs[tab]}
86
- />
87
- </div>
88
- );
89
- })}
90
- </div>
91
- );
92
- };
93
-
94
- const TabsComponent = () => {
95
- return (
96
- <div className="left-content cont-w-25">
97
- <nav className="left-menu">
98
- {tabsList.map((tab, index) => {
99
- const {
100
- activeTab = null,
101
- tabs = {},
102
- setActiveTab = () => {},
103
- } = props;
104
- const tabIndex = index + 1;
105
- const title = tabs[tab].title || `Tab ${tabIndex}`;
106
- return (
107
- <div
108
- key={index}
109
- id={tabIndex}
110
- className={cx('card', tab === activeTab && 'active')}
111
- >
112
- <NavLink
113
- id={'tab' + tabIndex}
114
- content={tab}
115
- // to={'#' + title.toLowerCase().replace(/\s/g, '-')}
116
- to={`#Tab${tabIndex}`}
117
- className="collapsed"
118
- onClick={() => {
119
- if (activeTab !== tab) {
120
- setActiveTab(tab);
121
- }
122
- }}
123
- onKeyDown={() => {
124
- if (activeTab !== tab) {
125
- setActiveTab(tab);
126
- }
127
- }}
128
- >
129
- {title}
130
- </NavLink>
131
- </div>
132
- );
133
- })}
134
- </nav>
135
- </div>
136
- );
137
- };
138
- // console.log('props', props);
139
-
140
- return (
141
- <div className="ccl-container ccl-container-flex tab-container" id="froga">
142
- <TabsComponent />
143
- <PanelsComponent />
144
- </div>
145
- );
146
- };
147
-
148
- export default compose(
149
- connect((state) => {
150
- return {
151
- hashlink: state.hashlink,
152
- location: state.router.location.hash,
153
- };
154
- }),
155
- withScrollToTarget,
156
- )(withRouter(CclRouteTabsView));
@@ -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;