@eeacms/volto-bise-policy 1.2.0 → 1.2.2

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,11 +4,17 @@ 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.2.0](https://github.com/eea/volto-bise-policy/compare/1.1.1...1.2.0) - 16 June 2023
7
+ ### [1.2.2](https://github.com/eea/volto-bise-policy/compare/1.2.1...1.2.2) - 26 June 2023
8
8
 
9
- #### :rocket: New Features
9
+ #### :hammer_and_wrench: Others
10
+
11
+ - fix style [Miu Razvan - [`c649b59`](https://github.com/eea/volto-bise-policy/commit/c649b59592e0a251f8ee7c3307678dae11afcaad)]
12
+ ### [1.2.1](https://github.com/eea/volto-bise-policy/compare/1.2.0...1.2.1) - 16 June 2023
10
13
 
11
- - feat: redirect to error page if id_eunis is 0 on species page [Miu Razvan - [`383b20d`](https://github.com/eea/volto-bise-policy/commit/383b20d9ce870d8b79d671703476423610077183)]
14
+ #### :hammer_and_wrench: Others
15
+
16
+ - update [Miu Razvan - [`7e4089d`](https://github.com/eea/volto-bise-policy/commit/7e4089dad4f0987d6bf8c2ea93912b6f9555ebf8)]
17
+ ### [1.2.0](https://github.com/eea/volto-bise-policy/compare/1.1.1...1.2.0) - 16 June 2023
12
18
 
13
19
  #### :nail_care: Enhancements
14
20
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-bise-policy",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "@eeacms/volto-bise-policy: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Breadcrumbs reducer.
3
+ * @module reducers/breadcrumbs/breadcrumbs
4
+ */
5
+
6
+ import { map } from 'lodash';
7
+ import {
8
+ flattenToAppURL,
9
+ getBaseUrl,
10
+ hasApiExpander,
11
+ } from '@plone/volto/helpers';
12
+
13
+ import {
14
+ GET_BREADCRUMBS,
15
+ GET_CONTENT,
16
+ } from '@plone/volto/constants/ActionTypes';
17
+
18
+ const initialState = {
19
+ error: null,
20
+ items: [],
21
+ root: null,
22
+ loaded: false,
23
+ loading: false,
24
+ };
25
+
26
+ /**
27
+ * Breadcrumbs reducer.
28
+ * @function breadcrumbs
29
+ * @param {Object} state Current state.
30
+ * @param {Object} action Action to be handled.
31
+ * @returns {Object} New state.
32
+ */
33
+ export default function breadcrumbs(state = initialState, action = {}) {
34
+ let hasExpander;
35
+ switch (action.type) {
36
+ case `${GET_BREADCRUMBS}_PENDING`:
37
+ return {
38
+ ...state,
39
+ error: null,
40
+ loaded: false,
41
+ loading: true,
42
+ };
43
+ case `${GET_CONTENT}_SUCCESS`:
44
+ if (action.subrequest) return state;
45
+ hasExpander = hasApiExpander(
46
+ 'breadcrumbs',
47
+ getBaseUrl(flattenToAppURL(action.result['@id'])),
48
+ );
49
+ if (hasExpander) {
50
+ return {
51
+ ...state,
52
+ error: null,
53
+ items: map(
54
+ action.result['@components'].breadcrumbs.items,
55
+ (item) => ({
56
+ title: item.title,
57
+ url: flattenToAppURL(item['@id']),
58
+ }),
59
+ ),
60
+ root: flattenToAppURL(action.result['@components'].breadcrumbs.root),
61
+ loaded: true,
62
+ loading: false,
63
+ };
64
+ }
65
+ return state;
66
+ case `${GET_BREADCRUMBS}_SUCCESS`:
67
+ hasExpander = hasApiExpander(
68
+ 'breadcrumbs',
69
+ getBaseUrl(flattenToAppURL(action.result['@id'])),
70
+ );
71
+ if (!hasExpander) {
72
+ return {
73
+ ...state,
74
+ error: null,
75
+ items: map(action.result.items, (item) => ({
76
+ title: item.title,
77
+ url: flattenToAppURL(item['@id']),
78
+ })),
79
+ root: flattenToAppURL(action.result.root),
80
+ loaded: true,
81
+ loading: false,
82
+ };
83
+ }
84
+ return state;
85
+ case `${GET_BREADCRUMBS}_FAIL`:
86
+ return {
87
+ ...state,
88
+ error: action.error,
89
+ items: [],
90
+ loaded: false,
91
+ loading: false,
92
+ };
93
+ default:
94
+ return state;
95
+ }
96
+ }
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Navigation reducer.
3
+ * @module reducers/navigation/navigation
4
+ */
5
+
6
+ import { map } from 'lodash';
7
+ import {
8
+ flattenToAppURL,
9
+ getBaseUrl,
10
+ hasApiExpander,
11
+ } from '@plone/volto/helpers';
12
+
13
+ import {
14
+ GET_CONTENT,
15
+ GET_NAVIGATION,
16
+ } from '@plone/volto/constants/ActionTypes';
17
+
18
+ const initialState = {
19
+ error: null,
20
+ items: [],
21
+ loaded: false,
22
+ loading: false,
23
+ };
24
+
25
+ /**
26
+ * Recursive function that process the items returned by the navigation
27
+ * endpoint
28
+ * @function getRecursiveItems
29
+ * @param {array} items The items inside a navigation response.
30
+ * @returns {*} The navigation items object (recursive)
31
+ */
32
+ function getRecursiveItems(items) {
33
+ return map(items, (item) => ({
34
+ title: item.title,
35
+ description: item.description,
36
+ url: flattenToAppURL(item['@id']),
37
+ ...(item.items && { items: getRecursiveItems(item.items) }),
38
+ }));
39
+ }
40
+
41
+ /**
42
+ * Navigation reducer.
43
+ * @function navigation
44
+ * @param {Object} state Current state.
45
+ * @param {Object} action Action to be handled.
46
+ * @returns {Object} New state.
47
+ */
48
+ export default function navigation(state = initialState, action = {}) {
49
+ let hasExpander;
50
+ switch (action.type) {
51
+ case `${GET_NAVIGATION}_PENDING`:
52
+ return {
53
+ ...state,
54
+ error: null,
55
+ loaded: false,
56
+ loading: true,
57
+ };
58
+ case `${GET_CONTENT}_SUCCESS`:
59
+ if (action.subrequest) return state;
60
+ hasExpander = hasApiExpander(
61
+ 'navigation',
62
+ getBaseUrl(flattenToAppURL(action.result['@id'])),
63
+ );
64
+ if (hasExpander && !action.subrequest) {
65
+ return {
66
+ ...state,
67
+ error: null,
68
+ items: getRecursiveItems(
69
+ action.result['@components'].navigation.items,
70
+ ),
71
+ loaded: true,
72
+ loading: false,
73
+ };
74
+ }
75
+ return state;
76
+ case `${GET_NAVIGATION}_SUCCESS`:
77
+ hasExpander = hasApiExpander(
78
+ 'navigation',
79
+ getBaseUrl(flattenToAppURL(action.result['@id'])),
80
+ );
81
+ if (!hasExpander) {
82
+ return {
83
+ ...state,
84
+ error: null,
85
+ items: getRecursiveItems(action.result.items),
86
+ loaded: true,
87
+ loading: false,
88
+ };
89
+ }
90
+ return state;
91
+ case `${GET_NAVIGATION}_FAIL`:
92
+ return {
93
+ ...state,
94
+ error: action.error,
95
+ items: [],
96
+ loaded: false,
97
+ loading: false,
98
+ };
99
+ default:
100
+ return state;
101
+ }
102
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Types reducer.
3
+ * @module reducers/types/types
4
+ */
5
+
6
+ import { GET_CONTENT, GET_TYPES } from '@plone/volto/constants/ActionTypes';
7
+ import {
8
+ flattenToAppURL,
9
+ getBaseUrl,
10
+ hasApiExpander,
11
+ } from '@plone/volto/helpers';
12
+
13
+ const initialState = {
14
+ error: null,
15
+ loaded: false,
16
+ loading: false,
17
+ types: [],
18
+ };
19
+
20
+ /**
21
+ * Types reducer.
22
+ * @function types
23
+ * @param {Object} state Current state.
24
+ * @param {Object} action Action to be handled.
25
+ * @returns {Object} New state.
26
+ */
27
+ export default function types(state = initialState, action = {}) {
28
+ let hasExpander;
29
+ switch (action.type) {
30
+ case `${GET_TYPES}_PENDING`:
31
+ return {
32
+ ...state,
33
+ error: null,
34
+ loading: true,
35
+ loaded: false,
36
+ };
37
+ case `${GET_CONTENT}_SUCCESS`:
38
+ if (action.subrequest) return state;
39
+ hasExpander = hasApiExpander(
40
+ 'types',
41
+ getBaseUrl(flattenToAppURL(action.result['@id'])),
42
+ );
43
+ if (hasExpander && !action.subrequest) {
44
+ return {
45
+ ...state,
46
+ error: null,
47
+ loading: false,
48
+ loaded: true,
49
+ types: action.result['@components'].types,
50
+ };
51
+ }
52
+ return state;
53
+ case `${GET_TYPES}_SUCCESS`:
54
+ hasExpander = hasApiExpander(
55
+ 'types',
56
+ getBaseUrl(flattenToAppURL(action.result['@id'])),
57
+ );
58
+ if (!hasExpander) {
59
+ return {
60
+ ...state,
61
+ error: null,
62
+ loading: false,
63
+ loaded: true,
64
+ types: action.result,
65
+ };
66
+ }
67
+ return state;
68
+ case `${GET_TYPES}_FAIL`:
69
+ return {
70
+ ...state,
71
+ error: action.error,
72
+ loading: false,
73
+ loaded: false,
74
+ types: [],
75
+ };
76
+ default:
77
+ return state;
78
+ }
79
+ }
@@ -1,176 +1,178 @@
1
- .tabs-block {
2
- color: inherit;
3
- }
4
-
5
- .tabs-block .ui.pointing.secondary.menu .item {
6
- font-size: @fontSize;
7
- }
8
-
9
- .tabs-block .ui.segment.tab {
10
- background-color: transparent;
11
- }
12
-
13
- .tabs-block .slick-slider {
14
- order: 1;
15
- }
16
-
17
- .tabs-block .slick-arrow {
18
- order: 2;
19
- }
20
-
21
- .tabs-block .slick-dots-wrapper {
22
- order: 3;
23
- }
24
-
25
- .tabs-block .slick-dots-wrapper .slick-dots li {
26
- width: 20px;
27
- height: 20px;
28
- }
29
-
30
- .tabs-block .slick-dots-wrapper .slick-dots li button {
31
- width: 20px;
32
- height: 20px;
33
- box-shadow: 0 0px 10px rgba(0, 0, 0, 0.3);
34
- }
35
-
36
- .tabs-block .slick-dots-wrapper .slick-dots li.slick-active::before {
37
- // display: none;
38
- top: -9px;
39
- left: -9px;
40
- width: calc(20px + 2 * 9px);
41
- height: calc(20px + 2 * 9px);
42
- }
43
-
44
- .tabs-block .slick-dots-wrapper .slick-dots li.slick-active button {
45
- border-color: #00a390 !important;
46
- background-color: #00a390 !important;
47
- }
48
-
49
- .tabs-block.light .slick-dots-wrapper .slick-dots li.slick-active::before {
50
- border: 3px solid #fff;
51
- }
52
-
53
- .tabs-block.grey .slick-dots-wrapper .slick-dots li.slick-active::before {
54
- border: 3px solid #b3b3b3;
55
- }
56
-
57
- .tabs-block.dark .slick-dots-wrapper .slick-dots li.slick-active::before {
58
- border: 3px solid #000;
59
- }
60
-
61
- .tabs-block.light .slick-dots-wrapper .slick-dots li button {
62
- border: 2px solid #fff;
63
- }
64
-
65
- .tabs-block .slick-arrows button.slick-arrow {
66
- display: flex !important;
67
- align-items: center;
68
- }
69
-
70
- .tabs-block.light .slick-arrows button.slick-arrow svg {
71
- fill: #fff;
72
-
73
- path {
74
- fill: #fff;
1
+ .subsite-natura2000 {
2
+ .tabs-block {
3
+ color: inherit;
75
4
  }
76
- }
77
-
78
- .tabs-block.grey .slick-arrows button.slick-arrow svg {
79
- fill: #b3b3b3;
80
-
81
- path {
82
- fill: #b3b3b3;
5
+
6
+ .tabs-block .ui.pointing.secondary.menu .item {
7
+ font-size: @fontSize;
83
8
  }
84
- }
85
-
86
- .tabs-block.dark .slick-arrows button.slick-arrow svg {
87
- fill: #000;
88
-
89
- path {
90
- fill: #000;
9
+
10
+ .tabs-block .ui.segment.tab {
11
+ background-color: transparent;
91
12
  }
92
- }
93
-
94
- .tabs-block.carousel_n2k .slick-arrows .learn-more {
95
- margin-bottom: 0 !important;
96
- }
97
-
98
- .tabs-block {
99
- .slick-next {
100
- p {
101
- font-size: 14px;
102
- }
13
+
14
+ .tabs-block .slick-slider {
15
+ order: 1;
103
16
  }
104
- }
105
-
106
- .explorer-tabs .tabs-block .tabs > .ui.menu {
107
- &::before {
108
- display: none;
109
- }
110
-
111
- > a {
112
- padding: 0.80rem;
113
- border-bottom: none !important;
114
-
115
- &.active.item {
116
- padding: 0.80rem !important;
117
- border-bottom: none !important;
118
- color: #fff !important;
119
- margin-bottom: 0 !important;
17
+
18
+ .tabs-block .slick-arrow {
19
+ order: 2;
20
+ }
21
+
22
+ .tabs-block .slick-dots-wrapper {
23
+ order: 3;
24
+ }
25
+
26
+ .tabs-block .slick-dots-wrapper .slick-dots li {
27
+ width: 20px;
28
+ height: 20px;
29
+ }
30
+
31
+ .tabs-block .slick-dots-wrapper .slick-dots li button {
32
+ width: 20px;
33
+ height: 20px;
34
+ box-shadow: 0 0px 10px rgba(0, 0, 0, 0.3);
35
+ }
36
+
37
+ .tabs-block .slick-dots-wrapper .slick-dots li.slick-active::before {
38
+ // display: none;
39
+ top: -9px;
40
+ left: -9px;
41
+ width: calc(20px + 2 * 9px);
42
+ height: calc(20px + 2 * 9px);
43
+ }
44
+
45
+ .tabs-block .slick-dots-wrapper .slick-dots li.slick-active button {
46
+ border-color: #00a390 !important;
47
+ background-color: #00a390 !important;
48
+ }
49
+
50
+ .tabs-block.light .slick-dots-wrapper .slick-dots li.slick-active::before {
51
+ border: 3px solid #fff;
52
+ }
53
+
54
+ .tabs-block.grey .slick-dots-wrapper .slick-dots li.slick-active::before {
55
+ border: 3px solid #b3b3b3;
56
+ }
57
+
58
+ .tabs-block.dark .slick-dots-wrapper .slick-dots li.slick-active::before {
59
+ border: 3px solid #000;
60
+ }
61
+
62
+ .tabs-block.light .slick-dots-wrapper .slick-dots li button {
63
+ border: 2px solid #fff;
64
+ }
65
+
66
+ .tabs-block .slick-arrows button.slick-arrow {
67
+ display: flex !important;
68
+ align-items: center;
69
+ }
70
+
71
+ .tabs-block.light .slick-arrows button.slick-arrow svg {
72
+ fill: #fff;
73
+
74
+ path {
75
+ fill: #fff;
120
76
  }
121
77
  }
122
-
123
- > a:nth-child(1) {
124
- padding-left: 0.80rem !important;
125
- }
126
-
127
- > a.active:nth-child(1),
128
- > a.active:hover:nth-child(1) {
129
- background: #4aa47f;
130
- border-radius: 4px;
131
- color: #fff;
132
- }
133
-
134
- > a.active:nth-child(2),
135
- > a.active:hover:nth-child(2) {
136
- background: #b78730;
137
- border-radius: 4px;
138
- color: #fff;
139
- }
140
-
141
- > a.active:nth-child(3),
142
- > a.active:hover:nth-child(3) {
143
- background: #2e80ec;
144
- border-radius: 4px;
145
- color: #fff;
78
+
79
+ .tabs-block.grey .slick-arrows button.slick-arrow svg {
80
+ fill: #b3b3b3;
81
+
82
+ path {
83
+ fill: #b3b3b3;
84
+ }
146
85
  }
147
- }
148
-
149
- @media only screen and (max-width: @largestTabletScreen) {
150
- .tabs-block .slick-slider {
151
- order: 2;
152
-
153
- .slick-slide {
154
- padding-top: 0 !important;
86
+
87
+ .tabs-block.dark .slick-arrows button.slick-arrow svg {
88
+ fill: #000;
89
+
90
+ path {
91
+ fill: #000;
155
92
  }
156
93
  }
157
-
158
- .tabs-block .slick-arrows {
159
- justify-content: end;
160
- order: 1;
161
- padding: 1rem;
94
+
95
+ .tabs-block.carousel_n2k .slick-arrows .learn-more {
96
+ margin-bottom: 0 !important;
162
97
  }
163
-
164
- .tabs-block .slick-dots-wrapper {
165
- order: 3;
98
+
99
+ .tabs-block {
100
+ .slick-next {
101
+ p {
102
+ font-size: 14px;
103
+ }
104
+ }
166
105
  }
167
-
168
- .tabs-block .slick-arrow.slick-prev {
169
- left: unset !important;
106
+
107
+ .explorer-tabs .tabs-block .tabs > .ui.menu {
108
+ &::before {
109
+ display: none;
110
+ }
111
+
112
+ > a {
113
+ padding: 0.80rem;
114
+ border-bottom: none !important;
115
+
116
+ &.active.item {
117
+ padding: 0.80rem !important;
118
+ border-bottom: none !important;
119
+ color: #fff !important;
120
+ margin-bottom: 0 !important;
121
+ }
122
+ }
123
+
124
+ > a:nth-child(1) {
125
+ padding-left: 0.80rem !important;
126
+ }
127
+
128
+ > a.active:nth-child(1),
129
+ > a.active:hover:nth-child(1) {
130
+ background: #4aa47f;
131
+ border-radius: 4px;
132
+ color: #fff;
133
+ }
134
+
135
+ > a.active:nth-child(2),
136
+ > a.active:hover:nth-child(2) {
137
+ background: #b78730;
138
+ border-radius: 4px;
139
+ color: #fff;
140
+ }
141
+
142
+ > a.active:nth-child(3),
143
+ > a.active:hover:nth-child(3) {
144
+ background: #2e80ec;
145
+ border-radius: 4px;
146
+ color: #fff;
147
+ }
170
148
  }
171
-
172
- .tabs-block .slick-arrow.slick-next {
173
- right: unset !important;
174
- margin-left: 2rem;
149
+
150
+ @media only screen and (max-width: @largestTabletScreen) {
151
+ .tabs-block .slick-slider {
152
+ order: 2;
153
+
154
+ .slick-slide {
155
+ padding-top: 0 !important;
156
+ }
157
+ }
158
+
159
+ .tabs-block .slick-arrows {
160
+ justify-content: end;
161
+ order: 1;
162
+ padding: 1rem;
163
+ }
164
+
165
+ .tabs-block .slick-dots-wrapper {
166
+ order: 3;
167
+ }
168
+
169
+ .tabs-block .slick-arrow.slick-prev {
170
+ left: unset !important;
171
+ }
172
+
173
+ .tabs-block .slick-arrow.slick-next {
174
+ right: unset !important;
175
+ margin-left: 2rem;
176
+ }
175
177
  }
176
- }
178
+ }