@eeacms/volto-eea-website-policy 2.2.2 → 2.3.0

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,71 @@ 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.3.0](https://github.com/eea/volto-eea-website-policy/compare/2.2.3...2.3.0) - 11 October 2024
8
+
9
+ #### :rocket: New Features
10
+
11
+ - feat(ContextNavigation): improve accordion outside click handling [David Ichim - [`0eb27ac`](https://github.com/eea/volto-eea-website-policy/commit/0eb27acf6d8fd04ecb7f003d4fe2de65b0077168)]
12
+ - feat(ContextNavigation): wrap accordion summary and list in container on tablet [David Ichim - [`43b659f`](https://github.com/eea/volto-eea-website-policy/commit/43b659fab611c24d42b46fc7e57cbb9e292e5f6e)]
13
+ - feat(ContextNavigation): add aria-label to context navigation [David Ichim - [`5c7241d`](https://github.com/eea/volto-eea-website-policy/commit/5c7241d44146751b370b8d960d28efabd607c870)]
14
+ - feat: use isMenuOpenOnOutsideClick to detect outside clicks [nileshgulia1 - [`5bef098`](https://github.com/eea/volto-eea-website-policy/commit/5bef098d7dd6b9829fbb4c1341747aecad89fce5)]
15
+ - feat: add accordion variation for contextNavigation block [nileshgulia1 - [`a8fdad8`](https://github.com/eea/volto-eea-website-policy/commit/a8fdad8c1902224b56e6e4f30357546ef9de40dc)]
16
+ - feat(contextNavigation): add variations support [nileshgulia1 - [`4c984c8`](https://github.com/eea/volto-eea-website-policy/commit/4c984c8eadfcf0eb7aed0541fb8737fc2b1b2e27)]
17
+
18
+ #### :bug: Bug Fixes
19
+
20
+ - fix: cypress [nileshgulia1 - [`5df3c21`](https://github.com/eea/volto-eea-website-policy/commit/5df3c21f0e7043aa80e35077246be75a52c3c7e4)]
21
+ - fix(contextNav): make accordion expands initially, fix tests [nileshgulia1 - [`9bfa568`](https://github.com/eea/volto-eea-website-policy/commit/9bfa568ac9b584e4e3d9dea0675e82a93304a25f)]
22
+ - fix(context-navigation): set active accordion on initial mounts [nileshgulia1 - [`de902b1`](https://github.com/eea/volto-eea-website-policy/commit/de902b1fb1e06d50bc9a39bf589e8ededa6ec2a1)]
23
+ - fix: addKeyDown handlers [nileshgulia1 - [`7150f64`](https://github.com/eea/volto-eea-website-policy/commit/7150f641ab46c885b90474e37ff0bf294868ba95)]
24
+ - fix: make accordion accessible, add details tag [nileshgulia1 - [`d1e5f29`](https://github.com/eea/volto-eea-website-policy/commit/d1e5f29bf62801bf1b3f12f1417729acc1a010b0)]
25
+ - fix: compute is_current for nested items also [nileshgulia1 - [`3e66745`](https://github.com/eea/volto-eea-website-policy/commit/3e66745f39bcd4ac861124a16bfaa5685ec11e47)]
26
+ - fix: acitve states on accordion and links elements [nileshgulia1 - [`1b4426f`](https://github.com/eea/volto-eea-website-policy/commit/1b4426f8ce44f11cc10d73dd08f213c0b891c488)]
27
+ - fix: behave as links when no childs are present [nileshgulia1 - [`c6ac493`](https://github.com/eea/volto-eea-website-policy/commit/c6ac4937519d41f631757472f49f0b609ed8cda1)]
28
+
29
+ #### :nail_care: Enhancements
30
+
31
+ - change(navigation): moved navigation block with the side nav within volto-eea-website-theme #270999 #99 from eea/270999_report_navigation [Ichim David - [`f37254e`](https://github.com/eea/volto-eea-website-policy/commit/f37254e403ac3ce13c4b8d7bcecb54c811c8cad8)]
32
+ - change(contextNavigation): use withEEASideMenu in accordion variation [nileshgulia1 - [`24927d8`](https://github.com/eea/volto-eea-website-policy/commit/24927d8bb6c44e9a3267183ac0a0fd0c0aa58bd4)]
33
+ - change(accordion): simplify logic and improve render by have a list of elements instead of div tags [David Ichim - [`9c73cd5`](https://github.com/eea/volto-eea-website-policy/commit/9c73cd55b5303df958c64a12a251f9a9b15d35ef)]
34
+
35
+ #### :house: Internal changes
36
+
37
+ - chore(eslint):add tabIndex [nileshgulia1 - [`53a3ac2`](https://github.com/eea/volto-eea-website-policy/commit/53a3ac2bf52499fde069fbe57c5efc3f11eaa485)]
38
+ - chore: fix eslint [nileshgulia1 - [`acad444`](https://github.com/eea/volto-eea-website-policy/commit/acad4440314a9f5464cc1b2f10eb3ab1489ff54a)]
39
+
40
+ #### :hammer_and_wrench: Others
41
+
42
+ - removed test for context navigation after the move to volto-eea-website-theme [David Ichim - [`696f0a1`](https://github.com/eea/volto-eea-website-policy/commit/696f0a11c3a8401c064293053490265ffb644215)]
43
+ - bumped package version to 2.3.0 [David Ichim - [`fd88b99`](https://github.com/eea/volto-eea-website-policy/commit/fd88b99d92cb991171807788d8abea3d86832142)]
44
+ - removed ContextNavigation block moved within eea-website-theme [David Ichim - [`361b887`](https://github.com/eea/volto-eea-website-policy/commit/361b8877c02596b971c1ecabd84d8eaa89d3000f)]
45
+ - removed double rolesWhoCanChangeLayout setting [David Ichim - [`37dab9e`](https://github.com/eea/volto-eea-website-policy/commit/37dab9ef04dc1497655e49186f398b5dd53f39b1)]
46
+ - use contextnavigation in policy [nileshgulia1 - [`eea2258`](https://github.com/eea/volto-eea-website-policy/commit/eea2258244c146ff682e055ffb88cf0b9020da93)]
47
+ - move contextNav to volto-eea-website-theme [nileshgulia1 - [`07aa147`](https://github.com/eea/volto-eea-website-policy/commit/07aa14746a0253f75dc7c63610e1998eae6ffbf5)]
48
+ - Added extra handleOutsideClick on Accordion mobile and tablet to close when clicking besides the smaller menu [David Ichim - [`6d36534`](https://github.com/eea/volto-eea-website-policy/commit/6d365349ba9f779b527344d6d109c77d77501acf)]
49
+ - close nav on tablet or mobile resolution by default [David Ichim - [`9e119d2`](https://github.com/eea/volto-eea-website-policy/commit/9e119d23d50dd5a614279da6ec3ccc369a16ba19)]
50
+ - dropped useless code [David Ichim - [`7f5c122`](https://github.com/eea/volto-eea-website-policy/commit/7f5c122c596eb4db7f0ea4c81708b3c88aca657b)]
51
+ - Added initial context navigation block test for both Default and Accordion variations [David Ichim - [`7257385`](https://github.com/eea/volto-eea-website-policy/commit/7257385a69f3b7b3541c1a78588504812741d59f)]
52
+ - more sonarqube warning fixing [David Ichim - [`e676f77`](https://github.com/eea/volto-eea-website-policy/commit/e676f77a35578ddbc7f03d7c340084d24375bc67)]
53
+ - Removed leftover schema enhancer in favor of normal schema editing [David Ichim - [`b67f3c4`](https://github.com/eea/volto-eea-website-policy/commit/b67f3c412bd31efb1a4bbe2b6b6e1140a55bc32a)]
54
+ - fix sonarqube warning regarding missing onKeyDown for summary tag [David Ichim - [`e0fabbf`](https://github.com/eea/volto-eea-website-policy/commit/e0fabbf31609d8e3c706b13ae09c5c52f6a836c7)]
55
+ - use accordion-list-title instead of title class [David Ichim - [`4ee90f2`](https://github.com/eea/volto-eea-website-policy/commit/4ee90f23d3e3d306c5b26bcd405cc85df390f34d)]
56
+ - Added aria-controls, aria-labelledby and region role for better a11y support for accordion [David Ichim - [`a946170`](https://github.com/eea/volto-eea-website-policy/commit/a946170070dd9edd198338f70f19cd47e75e22d7)]
57
+ - bump size of accordion open close icon [David Ichim - [`b42ee13`](https://github.com/eea/volto-eea-website-policy/commit/b42ee1368ec83c2dc7f724d5e417d8b14c337459)]
58
+ - Added extra classes needed to properly style the accordion style context-navigation [David Ichim - [`bdd5aca`](https://github.com/eea/volto-eea-website-policy/commit/bdd5aca036e81de505051c4d84099bc0c37d54e1)]
59
+ - Improve filtering of navigation using portal_type passed to restapi [David Ichim - [`3a4ae52`](https://github.com/eea/volto-eea-website-policy/commit/3a4ae525a028445bb03686a68c4aeb926fdac39b)]
60
+ - WIP: filter portal_types in contextNavigation block [nileshgulia1 - [`b417ca1`](https://github.com/eea/volto-eea-website-policy/commit/b417ca14397da944220508df75ab38cd8a36f22d)]
61
+ - Lint fix [David Ichim - [`c41d684`](https://github.com/eea/volto-eea-website-policy/commit/c41d68481325009a918078f9870c22e9253638e4)]
62
+ - Added classes to ul and li of accordion context navigation [David Ichim - [`08cd8a6`](https://github.com/eea/volto-eea-website-policy/commit/08cd8a653308a49a137529264536e8aa024c6580)]
63
+ - Fix: also add expand icon when no name is set [nileshgulia1 - [`a06ab09`](https://github.com/eea/volto-eea-website-policy/commit/a06ab0989dc46962a68913dc8836be69d0349a04)]
64
+ ### [2.2.3](https://github.com/eea/volto-eea-website-policy/compare/2.2.2...2.2.3) - 19 September 2024
65
+
66
+ #### :rocket: New Features
67
+
68
+ - feat: Switch to Microsoft Azure Login - refs #272383 [Alin Voinea - [`95ea03e`](https://github.com/eea/volto-eea-website-policy/commit/95ea03ee01102b4c2bd3f2b642dadd4fe6bf59ee)]
69
+
70
+ #### :hammer_and_wrench: Others
71
+
7
72
  ### [2.2.2](https://github.com/eea/volto-eea-website-policy/compare/2.2.1...2.2.2) - 28 August 2024
8
73
 
9
74
  #### :bug: Bug Fixes
@@ -12,10 +77,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
12
77
 
13
78
  #### :hammer_and_wrench: Others
14
79
 
15
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`2703b09`](https://github.com/eea/volto-eea-website-policy/commit/2703b09f3803fa058b45f3f55c5343ab548139a1)]
16
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`2506307`](https://github.com/eea/volto-eea-website-policy/commit/2506307c355c2de50a40b76a6c09ac1989d11be1)]
17
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`48999a4`](https://github.com/eea/volto-eea-website-policy/commit/48999a4a5a16593ca90981a72a4606abc4a02e89)]
18
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`de57cc0`](https://github.com/eea/volto-eea-website-policy/commit/de57cc0093cec55cf372fe4beb610f77588b4bb3)]
19
80
  ### [2.2.1](https://github.com/eea/volto-eea-website-policy/compare/2.2.0...2.2.1) - 27 August 2024
20
81
 
21
82
  #### :bug: Bug Fixes
@@ -24,8 +85,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
24
85
 
25
86
  #### :hammer_and_wrench: Others
26
87
 
27
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`e333afd`](https://github.com/eea/volto-eea-website-policy/commit/e333afd4354f5a78f7c2aec9026df928219c144a)]
28
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`9cb821a`](https://github.com/eea/volto-eea-website-policy/commit/9cb821a08010dfae144a5a4ae30e1c40da65d02a)]
29
88
  ### [2.2.0](https://github.com/eea/volto-eea-website-policy/compare/2.1.1...2.2.0) - 26 August 2024
30
89
 
31
90
  #### :rocket: New Features
@@ -34,20 +93,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
34
93
 
35
94
  #### :hammer_and_wrench: Others
36
95
 
37
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`9864108`](https://github.com/eea/volto-eea-website-policy/commit/9864108aea2be5def74d4d89542e0babf1fbc93b)]
38
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`d406101`](https://github.com/eea/volto-eea-website-policy/commit/d40610109bd581903a4a6212867197a352b3cc06)]
39
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`16936d4`](https://github.com/eea/volto-eea-website-policy/commit/16936d4b67baead7f2572eb19c47c9423da1af5a)]
40
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`1c1c92b`](https://github.com/eea/volto-eea-website-policy/commit/1c1c92bc8ea0a036cebf2b854197c52dd1f8681a)]
41
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`21accb1`](https://github.com/eea/volto-eea-website-policy/commit/21accb12e958b832f7463da93684f470420d1714)]
42
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`4898d16`](https://github.com/eea/volto-eea-website-policy/commit/4898d1673ba71098d18385d123f1fa403ff8089e)]
43
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`c4e596f`](https://github.com/eea/volto-eea-website-policy/commit/c4e596f4efbee0f835bf293f713da21669bc8c00)]
44
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`aa79040`](https://github.com/eea/volto-eea-website-policy/commit/aa7904074d9b90208218b4a801ea68491727de68)]
45
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`6c3aa38`](https://github.com/eea/volto-eea-website-policy/commit/6c3aa382200cd756f4bd7b40fee96bef71d5079e)]
46
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`9adc480`](https://github.com/eea/volto-eea-website-policy/commit/9adc480e0edf278386a065bf30b66c138592ee82)]
47
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`5554c13`](https://github.com/eea/volto-eea-website-policy/commit/5554c13183d7adda41dca07593fd51846b0d1375)]
48
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`e526958`](https://github.com/eea/volto-eea-website-policy/commit/e52695821dce6790ff89213f967569bce223680b)]
49
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`7e0381c`](https://github.com/eea/volto-eea-website-policy/commit/7e0381cd77ef067541585421a94536849dbdf4b5)]
50
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`3473b02`](https://github.com/eea/volto-eea-website-policy/commit/3473b02f98ea09fe4afa46389f14468c1897586d)]
51
96
  ### [2.1.1](https://github.com/eea/volto-eea-website-policy/compare/2.1.0...2.1.1) - 30 May 2024
52
97
 
53
98
  #### :house: Internal changes
@@ -56,12 +101,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
56
101
 
57
102
  #### :hammer_and_wrench: Others
58
103
 
59
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`c297b9e`](https://github.com/eea/volto-eea-website-policy/commit/c297b9efe743ad1f95ab662007a2186b5f042f4c)]
60
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`b11c055`](https://github.com/eea/volto-eea-website-policy/commit/b11c055d0a41c89a60f70875124994ba52772e48)]
61
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`a77d04e`](https://github.com/eea/volto-eea-website-policy/commit/a77d04e9f1e4d6b8657e09fd1a2bcde66499f77f)]
62
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`12c6e92`](https://github.com/eea/volto-eea-website-policy/commit/12c6e92e4157896bf812dbbd8996c754b491d3ea)]
63
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`0aa866d`](https://github.com/eea/volto-eea-website-policy/commit/0aa866dc6fb5f4226a99a3e192a958af60385185)]
64
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`7517f96`](https://github.com/eea/volto-eea-website-policy/commit/7517f96d82efd6a7ddaa746c81a51997583363f6)]
65
104
  ### [2.1.0](https://github.com/eea/volto-eea-website-policy/compare/2.0.0...2.1.0) - 9 May 2024
66
105
 
67
106
  #### :rocket: New Features
@@ -71,10 +110,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
71
110
  #### :hammer_and_wrench: Others
72
111
 
73
112
  - Release 2.1.0 [alin - [`da22af4`](https://github.com/eea/volto-eea-website-policy/commit/da22af436092236d7ef6e8568e3eca4813d517b5)]
74
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`9a5d706`](https://github.com/eea/volto-eea-website-policy/commit/9a5d7064e829622e2627c616c4ca1ce71511dfcb)]
75
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`f8b40e9`](https://github.com/eea/volto-eea-website-policy/commit/f8b40e961138efc4090d0ab45a5689905c672b15)]
76
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`4ab2144`](https://github.com/eea/volto-eea-website-policy/commit/4ab2144e02291d98064b001d9eb40417da4d1795)]
77
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`5af4642`](https://github.com/eea/volto-eea-website-policy/commit/5af464227c6695c7e2d3ccd9f240c2a5071bfefa)]
78
113
  ## [2.0.0](https://github.com/eea/volto-eea-website-policy/compare/1.15.0...2.0.0) - 22 April 2024
79
114
 
80
115
  #### :rocket: New Features
@@ -147,7 +182,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
147
182
 
148
183
  #### :hammer_and_wrench: Others
149
184
 
150
- - test: [JENKINS] fail with logs on coverage [valentinab25 - [`5cf68f8`](https://github.com/eea/volto-eea-website-policy/commit/5cf68f8db34448d10fe993d16541ad9732434cc8)]
151
185
  ### [1.12.0-beta.1](https://github.com/eea/volto-eea-website-policy/compare/1.11.1...1.12.0-beta.1) - 12 January 2024
152
186
 
153
187
  #### :hammer_and_wrench: Others
@@ -168,11 +202,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
168
202
  #### :hammer_and_wrench: Others
169
203
 
170
204
  - Release 1.11.0 [Alin Voinea - [`3249160`](https://github.com/eea/volto-eea-website-policy/commit/3249160422c6c6e0cf14823b614f8885101a847a)]
171
- - test: [JENKINS] Use java17 for sonarqube scanner [valentinab25 - [`8beb7e7`](https://github.com/eea/volto-eea-website-policy/commit/8beb7e7a12cbc314e56e4b1aceab5ef8d00ca6f3)]
172
- - test: [JENKINS] Run cypress in started frontend container [valentinab25 - [`12d3da1`](https://github.com/eea/volto-eea-website-policy/commit/12d3da12e9a3b0882cf55efe2d40f3032724d41b)]
173
- - test: [JENKINS] Add cpu limit on cypress docker [valentinab25 - [`0af0764`](https://github.com/eea/volto-eea-website-policy/commit/0af076467120ed9a80c697931e869837b92a0a4c)]
174
- - test: [JENKINS] Increase shm-size to cypress docker [valentinab25 - [`8662e3e`](https://github.com/eea/volto-eea-website-policy/commit/8662e3e5fc3640d678ce320eb8856a37d419306c)]
175
- - test: [JENKINS] Improve cypress time [valentinab25 - [`ef1074f`](https://github.com/eea/volto-eea-website-policy/commit/ef1074fdf968cafdf476d4ee4951eb18ebac048a)]
176
205
  ### [1.10.0](https://github.com/eea/volto-eea-website-policy/compare/1.9.2...1.10.0) - 2 November 2023
177
206
 
178
207
  #### :rocket: New Features
@@ -181,7 +210,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
181
210
 
182
211
  #### :house: Internal changes
183
212
 
184
- - chore: [JENKINS] Refactor automated testing [valentinab25 - [`8b1b422`](https://github.com/eea/volto-eea-website-policy/commit/8b1b42297b46d9fb7325589b3bd043233c0d66e9)]
185
213
  - chore: husky, lint-staged use fixed versions [valentinab25 - [`44ac62e`](https://github.com/eea/volto-eea-website-policy/commit/44ac62e6f8b7e5b7d57edfbf82812c91dc5d6bba)]
186
214
  - chore:volto 16 in tests, update docs, fix stylelint overrides [valentinab25 - [`b9a46d8`](https://github.com/eea/volto-eea-website-policy/commit/b9a46d85a64739188a3df9e8cbe645418b5d8b0a)]
187
215
 
@@ -302,7 +330,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
302
330
 
303
331
  - Release 1.5.0 [Alin Voinea - [`a3dea8e`](https://github.com/eea/volto-eea-website-policy/commit/a3dea8ea15cb8d2a876dc10da926ece3a5707ea9)]
304
332
  - test(Jenkinsfile): Use latest stable volto for testing [Alin Voinea - [`a8f7123`](https://github.com/eea/volto-eea-website-policy/commit/a8f712364187f9638886667c249fa102cb49b5c0)]
305
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`124a8f8`](https://github.com/eea/volto-eea-website-policy/commit/124a8f8ad4ced507aeec27012d725f2e2b977e08)]
306
333
  ### [1.4.0](https://github.com/eea/volto-eea-website-policy/compare/1.3.4...1.4.0) - 21 February 2023
307
334
 
308
335
  #### :rocket: New Features
@@ -382,7 +409,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
382
409
  #### :hammer_and_wrench: Others
383
410
 
384
411
  - Release 1.1.0 [Alin Voinea - [`0291b3b`](https://github.com/eea/volto-eea-website-policy/commit/0291b3bb7b4c6ab09ca98728885cea4051eac8e3)]
385
- - yarn 3 [Alin Voinea - [`593aa58`](https://github.com/eea/volto-eea-website-policy/commit/593aa58eaa4d28aced0603b7f7dd125c857a6f54)]
386
412
  ### [1.0.4](https://github.com/eea/volto-eea-website-policy/compare/1.0.3...1.0.4) - 22 November 2022
387
413
 
388
414
  #### :nail_care: Enhancements
@@ -428,7 +454,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
428
454
 
429
455
  #### :hammer_and_wrench: Others
430
456
 
431
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`d153f54`](https://github.com/eea/volto-eea-website-policy/commit/d153f54e55e918fa4746e05488c734624eaf14a9)]
432
457
  ### [0.4.0](https://github.com/eea/volto-eea-website-policy/compare/0.3.3...0.4.0) - 19 September 2022
433
458
 
434
459
  #### :hammer_and_wrench: Others
@@ -504,7 +529,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
504
529
  - format index.js [Andrei Grigore - [`db4481a`](https://github.com/eea/volto-eea-website-policy/commit/db4481aeeba59a769272659f33278c902fc69bec)]
505
530
  - Update index.js [Alexandru Ghica - [`dc09886`](https://github.com/eea/volto-eea-website-policy/commit/dc0988640a76a9914381b120f58bb61a9ab1eb39)]
506
531
  - Added externalRoutes [Alexandru Ghica - [`b68135b`](https://github.com/eea/volto-eea-website-policy/commit/b68135b013fafa93a41ea602ea2fad30879abe0f)]
507
- - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`575cca6`](https://github.com/eea/volto-eea-website-policy/commit/575cca674602ca2e1c2a41300c47ba594ff49aa0)]
508
532
  ### [0.1.1](https://github.com/eea/volto-eea-website-policy/compare/0.1.0...0.1.1) - 4 March 2022
509
533
 
510
534
  #### :hammer_and_wrench: Others
@@ -517,5 +541,4 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
517
541
 
518
542
  #### :hammer_and_wrench: Others
519
543
 
520
- - yarn bootstrap [Alin Voinea - [`9b4d197`](https://github.com/eea/volto-eea-website-policy/commit/9b4d197cbc7992566cb36524d190078d5ad21a44)]
521
544
  - Initial commit [Alin Voinea - [`3800692`](https://github.com/eea/volto-eea-website-policy/commit/3800692f7a4de6460815bd6061facacb986cbef0)]
package/locales/volto.pot CHANGED
@@ -1,16 +1,21 @@
1
1
  msgid ""
2
2
  msgstr ""
3
3
  "Project-Id-Version: Plone\n"
4
- "POT-Creation-Date: 2023-06-28T10:48:22.678Z\n"
4
+ "POT-Creation-Date: 2024-09-02T18:05:47.779Z\n"
5
5
  "Last-Translator: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
6
6
  "Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
7
- "MIME-Version: 1.0\n"
8
7
  "Content-Type: text/plain; charset=utf-8\n"
9
8
  "Content-Transfer-Encoding: 8bit\n"
10
9
  "Plural-Forms: nplurals=1; plural=0;\n"
10
+ "MIME-Version: 1.0\n"
11
11
  "Language-Code: en\n"
12
12
  "Language-Name: English\n"
13
13
  "Preferred-Encodings: utf-8\n"
14
14
  "Domain: volto\n"
15
15
 
16
-
16
+ #. Default: "Navigation"
17
+ #: components/Blocks/ContextNavigation/variations/Accordion
18
+ #: components/Blocks/ContextNavigation/variations/AccordionClaude
19
+ #: components/Blocks/ContextNavigation/variations/AccordionOriginal
20
+ msgid "Navigation"
21
+ msgstr ""
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-eea-website-policy",
3
- "version": "2.2.2",
3
+ "version": "2.3.0",
4
4
  "description": "@eeacms/volto-eea-website-policy: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -17,12 +17,10 @@
17
17
  "url": "git@github.com:eea/volto-eea-website-policy.git"
18
18
  },
19
19
  "addons": [
20
- "@eeacms/volto-block-toc",
21
20
  "@eeacms/volto-widget-dataprovenance",
22
21
  "@plone-collective/volto-authomatic"
23
22
  ],
24
23
  "dependencies": {
25
- "@eeacms/volto-block-toc": "*",
26
24
  "@eeacms/volto-widget-dataprovenance": "*",
27
25
  "@plone-collective/volto-authomatic": "*"
28
26
  },
package/src/index.js CHANGED
@@ -1,10 +1,6 @@
1
1
  import { runtimeConfig } from '@plone/volto/runtime_config';
2
- import installContextNavigationBlock from '@eeacms/volto-eea-website-policy/components/Blocks/ContextNavigation';
3
2
  import { appendGroup } from './helpers';
4
3
  import { FrequencyOfDissemination } from '@eeacms/volto-eea-website-policy/components/Widgets/FrequencyOfDissemination';
5
- import Login from '@eeacms/volto-eea-website-policy/components/AzureLogin/Login.jsx';
6
- import Logout from '@plone-collective/volto-authomatic/components/Logout/Logout.jsx';
7
- import { Login as VoltoLogin } from '@plone/volto/components';
8
4
 
9
5
  const restrictedBlocks = [
10
6
  'imagecards',
@@ -55,17 +51,6 @@ const applyConfig = (config) => {
55
51
  },
56
52
  ];
57
53
 
58
- // #258877 Make Azure AD login to be at route /azure_login and EIONET LDAP login to be at /login
59
- config.addonRoutes = [
60
- { path: '/azure_login', component: Login },
61
- { path: '/**/azure_login', component: Login },
62
- { path: '/login', component: VoltoLogin },
63
- { path: '/**/login', component: VoltoLogin },
64
- { path: '/logout', component: Logout },
65
- { path: '/**/logout', component: Logout },
66
- ...(config.addonRoutes || []),
67
- ];
68
-
69
54
  // #160689 Redirect contact-form to contact-us
70
55
  config.settings.contactForm = '/en/about/contact-us';
71
56
 
@@ -112,14 +97,6 @@ const applyConfig = (config) => {
112
97
  ...config.settings.eea,
113
98
  rolesWhoCanChangeLayout: ['Manager'],
114
99
  };
115
- config.settings.eea.rolesWhoCanChangeLayout = ['Manager'];
116
-
117
- // Custom blocks
118
- // context navigation
119
- config = [installContextNavigationBlock].reduce(
120
- (acc, apply) => apply(acc),
121
- config,
122
- );
123
100
 
124
101
  // Add groups
125
102
  config.blocks.groupBlocksOrder = appendGroup(
@@ -1,103 +0,0 @@
1
- /**
2
- * Login container.
3
- * @module components/Login/Login
4
- */
5
- import React, { useEffect, useState } from 'react';
6
- import {
7
- authomaticRedirect,
8
- listAuthOptions,
9
- oidcRedirect,
10
- } from '@plone-collective/volto-authomatic/actions';
11
- import { injectIntl } from 'react-intl';
12
- import { useSelector, useDispatch } from 'react-redux';
13
- import { useLocation } from 'react-router-dom';
14
- import LoginForm from '@plone-collective/volto-authomatic/components/Login/LoginForm';
15
- import qs from 'query-string';
16
- import { useCookies } from 'react-cookie';
17
-
18
- /**
19
- * Get retur url function.
20
- * @function getReturnUrl
21
- * @param {Object} location Location object.
22
- * @returns {string} Return url.
23
- */
24
- function getReturnUrl(location) {
25
- return `${
26
- qs.parse(location.search).return_url ||
27
- (location.pathname === '/azure_login'
28
- ? '/'
29
- : location.pathname.replace('/azure_login', ''))
30
- }`;
31
- }
32
-
33
- /**
34
- * Login function.
35
- * @function Login
36
- * @returns {JSX.Element} Markup of the Login page.
37
- */
38
- function Login({ intl }) {
39
- const dispatch = useDispatch();
40
- const [startedOAuth, setStartedOAuth] = useState(false);
41
- const [startedOIDC, setStartedOIDC] = useState(false);
42
- const loading = useSelector((state) => state.authOptions.loading);
43
- const options = useSelector((state) => state.authOptions.options);
44
- const loginOAuthValues = useSelector((state) => state.authomaticRedirect);
45
- const loginOIDCValues = useSelector((state) => state.oidcRedirect);
46
- const location = useLocation();
47
- const [, setCookie] = useCookies();
48
-
49
- useEffect(() => {
50
- dispatch(listAuthOptions());
51
- }, [dispatch]);
52
-
53
- useEffect(() => {
54
- const next_url = loginOAuthValues.next_url;
55
- const session = loginOAuthValues.session;
56
- if (next_url && session && startedOAuth) {
57
- setStartedOAuth(false);
58
- // Give time to save state to localstorage
59
- setTimeout(function () {
60
- window.location.href = next_url;
61
- }, 500);
62
- }
63
- }, [startedOAuth, loginOAuthValues]);
64
-
65
- const onSelectProvider = (provider) => {
66
- setStartedOAuth(true);
67
- setCookie('return_url', getReturnUrl(location), { path: '/' });
68
- dispatch(authomaticRedirect(provider.id));
69
- };
70
-
71
- useEffect(() => {
72
- const next_url = loginOIDCValues.next_url;
73
- if (next_url && startedOIDC) {
74
- setStartedOIDC(false);
75
- // Give time to save state to localstorage
76
- setTimeout(function () {
77
- window.location.href = next_url;
78
- }, 500);
79
- }
80
- }, [startedOIDC, loginOIDCValues]);
81
-
82
- useEffect(() => {
83
- if (
84
- options !== undefined &&
85
- options.length === 1 &&
86
- options[0].id === 'oidc'
87
- ) {
88
- setStartedOIDC(true);
89
- dispatch(oidcRedirect('oidc'));
90
- }
91
- }, [options, dispatch]);
92
-
93
- return (
94
- <LoginForm
95
- loading={loading}
96
- providers={options}
97
- action={'login'}
98
- onSelectProvider={onSelectProvider}
99
- />
100
- );
101
- }
102
-
103
- export default injectIntl(Login);
@@ -1,179 +0,0 @@
1
- import { render, screen, fireEvent } from '@testing-library/react';
2
- import { Provider } from 'react-intl-redux';
3
- import configureStore from 'redux-mock-store';
4
- import { useLocation } from 'react-router-dom';
5
- import { listAuthOptions } from '@plone-collective/volto-authomatic/actions';
6
- import '@testing-library/jest-dom/extend-expect';
7
-
8
- import Login from './Login';
9
-
10
- const mockStore = configureStore();
11
-
12
- jest.mock('react-router-dom', () => ({
13
- ...jest.requireActual('react-router-dom'),
14
- useLocation: jest.fn(),
15
- }));
16
-
17
- jest.useFakeTimers();
18
-
19
- describe('Login component', () => {
20
- beforeEach(() => {
21
- useLocation.mockReturnValue({ pathname: '/azure_login' });
22
- });
23
-
24
- it('renders correctly with loading state', () => {
25
- const store = mockStore({
26
- authOptions: { loading: true, options: [] },
27
- authomaticRedirect: {
28
- next_url: '/dashboard',
29
- session: true,
30
- },
31
- oidcRedirect: {
32
- next_url: '/dashboard',
33
- session: true,
34
- },
35
- intl: {
36
- locale: 'en',
37
- messages: {},
38
- formatMessage: jest.fn(),
39
- },
40
- });
41
-
42
- render(
43
- <Provider store={store}>
44
- <Login />
45
- </Provider>,
46
- );
47
-
48
- expect(screen.getByText('Loading')).toBeInTheDocument();
49
- });
50
-
51
- it('dispatches listAuthOptions on mount', () => {
52
- const store = mockStore({
53
- authOptions: { loading: true, options: [] },
54
- authomaticRedirect: {
55
- next_url: '/dashboard',
56
- session: true,
57
- },
58
- oidcRedirect: {
59
- next_url: '/dashboard',
60
- session: true,
61
- },
62
- intl: {
63
- locale: 'en',
64
- messages: {},
65
- formatMessage: jest.fn(),
66
- },
67
- });
68
- const dispatch = jest.spyOn(store, 'dispatch');
69
-
70
- render(
71
- <Provider store={store}>
72
- <Login />
73
- </Provider>,
74
- );
75
-
76
- expect(dispatch).toHaveBeenCalledWith(listAuthOptions());
77
- });
78
-
79
- it('renders providers from the store', () => {
80
- const store = mockStore({
81
- authOptions: {
82
- loading: false,
83
- options: [
84
- { id: 'facebook', title: 'Facebook' },
85
- { id: 'twitter', title: 'Twitter' },
86
- ],
87
- },
88
- authomaticRedirect: {
89
- next_url: '/dashboard',
90
- session: true,
91
- },
92
- oidcRedirect: {
93
- next_url: '/dashboard',
94
- session: true,
95
- },
96
- intl: {
97
- locale: 'en',
98
- messages: {},
99
- formatMessage: jest.fn(),
100
- },
101
- });
102
-
103
- render(
104
- <Provider store={store}>
105
- <Login />
106
- </Provider>,
107
- );
108
-
109
- // Assert that the provider buttons are present
110
- expect(
111
- screen.getByRole('button', { name: /Facebook/i }),
112
- ).toBeInTheDocument();
113
- expect(
114
- screen.getByRole('button', { name: /Twitter/i }),
115
- ).toBeInTheDocument();
116
-
117
- fireEvent.click(screen.getByRole('button', { name: /Facebook/i }));
118
- });
119
-
120
- it('clicks on GitHub button for OAuth login', () => {
121
- useLocation.mockReturnValue({ pathname: '/login' });
122
-
123
- const store = mockStore({
124
- authOptions: {
125
- loading: false,
126
- options: [{ id: 'github', title: 'GitHub' }],
127
- },
128
- authomaticRedirect: { next_url: '/dashboard', session: true },
129
- oidcRedirect: {
130
- next_url: '/dashboard',
131
- session: true,
132
- },
133
- intl: {
134
- locale: 'en',
135
- messages: {},
136
- formatMessage: jest.fn(),
137
- },
138
- });
139
-
140
- render(
141
- <Provider store={store}>
142
- <Login />
143
- </Provider>,
144
- );
145
-
146
- fireEvent.click(screen.getByRole('button', { name: /GitHub/i }));
147
- });
148
-
149
- it('renders correctly with loading state', () => {
150
- const store = mockStore({
151
- authOptions: {
152
- loading: true,
153
- options: [{ id: 'oidc', title: 'OIDC' }],
154
- },
155
- authomaticRedirect: {
156
- next_url: '/dashboard',
157
- session: true,
158
- },
159
- oidcRedirect: {
160
- next_url: '/dashboard',
161
- session: true,
162
- },
163
- intl: {
164
- locale: 'en',
165
- messages: {},
166
- formatMessage: jest.fn(),
167
- },
168
- });
169
-
170
- render(
171
- <Provider store={store}>
172
- <Login />
173
- </Provider>,
174
- );
175
-
176
- expect(screen.getByText('Loading')).toBeInTheDocument();
177
- jest.advanceTimersByTime(500);
178
- });
179
- });
@@ -1,45 +0,0 @@
1
- import React from 'react';
2
- import { EditSchema } from './schema';
3
- import { SidebarPortal } from '@plone/volto/components';
4
- import BlockDataForm from '@plone/volto/components/manage/Form/BlockDataForm';
5
-
6
- import ContextNavigationView from './ContextNavigationView';
7
-
8
- const ContextNavigationFillEdit = (props) => {
9
- const contentTypes = props.properties?.['@components']?.types;
10
- const availableTypes = React.useMemo(
11
- () => contentTypes?.map((type) => [type.id, type.title || type.name]),
12
- [contentTypes],
13
- );
14
-
15
- const schema = React.useMemo(
16
- () => EditSchema({ availableTypes }),
17
- [availableTypes],
18
- );
19
-
20
- return (
21
- <>
22
- <h3>Context navigation</h3>
23
- <ContextNavigationView {...props} mode="edit" />{' '}
24
- <SidebarPortal selected={props.selected}>
25
- <BlockDataForm
26
- schema={schema}
27
- title={schema.title}
28
- onChangeField={(id, value) => {
29
- props.onChangeBlock(props.block, {
30
- ...props.data,
31
- [id]: value,
32
- });
33
- }}
34
- onChangeBlock={props.onChangeBlock}
35
- formData={props.data}
36
- block={props.block}
37
- navRoot={props.navRoot}
38
- contentType={props.contentType}
39
- />
40
- </SidebarPortal>
41
- </>
42
- );
43
- };
44
-
45
- export default ContextNavigationFillEdit;
@@ -1,88 +0,0 @@
1
- import React from 'react';
2
- import { render, fireEvent } from '@testing-library/react';
3
- import ContextNavigationEdit from './ContextNavigationEdit';
4
- import { Router } from 'react-router-dom';
5
- import { Provider } from 'react-intl-redux';
6
- import configureStore from 'redux-mock-store';
7
- import { createMemoryHistory } from 'history';
8
- import '@testing-library/jest-dom/extend-expect';
9
-
10
- jest.mock('@plone/volto/components', () => ({
11
- InlineForm: ({ onChangeField }) => (
12
- <div>
13
- <p>InlineForm</p>
14
- <input id="test" onChange={onChangeField} />
15
- </div>
16
- ),
17
- SidebarPortal: ({ children, selected }) =>
18
- selected ? (
19
- <div>
20
- <div>SidebarPortal</div>
21
- {children}
22
- </div>
23
- ) : null,
24
- }));
25
-
26
- jest.mock('@plone/volto/components/theme/Navigation/ContextNavigation', () => {
27
- return {
28
- __esModule: true,
29
- default: ({ params }) => {
30
- return <div>ConnectedContextNavigation {params.root_path}</div>;
31
- },
32
- };
33
- });
34
-
35
- jest.mock('@plone/volto/helpers', () => ({
36
- withBlockExtensions: jest.fn((Component) => Component),
37
- emptyBlocksForm: jest.fn(),
38
- getBlocksLayoutFieldname: () => 'blocks_layout',
39
- withVariationSchemaEnhancer: jest.fn((Component) => Component),
40
- }));
41
-
42
- const mockStore = configureStore();
43
- const store = mockStore({
44
- intl: {
45
- locale: 'en',
46
- messages: {},
47
- },
48
- });
49
-
50
- describe('ContextNavigationEdit', () => {
51
- it('renders corectly', () => {
52
- const history = createMemoryHistory();
53
- const { getByText, queryByText } = render(
54
- <Provider store={store}>
55
- <Router history={history}>
56
- <ContextNavigationEdit selected={false} />
57
- </Router>
58
- ,
59
- </Provider>,
60
- );
61
-
62
- expect(getByText('Context navigation')).toBeInTheDocument();
63
- expect(getByText('ConnectedContextNavigation')).toBeInTheDocument();
64
- expect(queryByText('InlineForm')).toBeNull();
65
- expect(queryByText('SidebarPortal')).toBeNull();
66
- });
67
-
68
- it('renders corectly', () => {
69
- const history = createMemoryHistory();
70
- const { container, getByText } = render(
71
- <Provider store={store}>
72
- <Router history={history}>
73
- <ContextNavigationEdit selected={true} onChangeBlock={() => {}} />
74
- </Router>
75
- ,
76
- </Provider>,
77
- );
78
-
79
- expect(getByText('Context navigation')).toBeInTheDocument();
80
- expect(getByText('ConnectedContextNavigation')).toBeInTheDocument();
81
- expect(getByText('InlineForm')).toBeInTheDocument();
82
- expect(getByText('SidebarPortal')).toBeInTheDocument();
83
-
84
- fireEvent.change(container.querySelector('#test'), {
85
- target: { value: 'test' },
86
- });
87
- });
88
- });
@@ -1,14 +0,0 @@
1
- import React from 'react';
2
- import { flattenToAppURL, withBlockExtensions } from '@plone/volto/helpers';
3
- import DefaultTemplate from './variations/Default';
4
-
5
- const ContextNavigationView = (props = {}) => {
6
- const { variation, data = {} } = props;
7
- const navProps = { ...data };
8
- const root_path = data?.root_node?.[0]?.['@id'];
9
- if (root_path) navProps['root_path'] = flattenToAppURL(root_path);
10
- const Renderer = variation?.view ?? DefaultTemplate;
11
- return <Renderer params={navProps} mode={props.mode} />;
12
- };
13
-
14
- export default withBlockExtensions(ContextNavigationView);
@@ -1,71 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import ContextNavigationView from './ContextNavigationView';
4
- import { Router } from 'react-router-dom';
5
- import { Provider } from 'react-intl-redux';
6
- import configureStore from 'redux-mock-store';
7
- import { createMemoryHistory } from 'history';
8
- import '@testing-library/jest-dom/extend-expect';
9
-
10
- jest.mock('@plone/volto/components/theme/Navigation/ContextNavigation', () => {
11
- return {
12
- __esModule: true,
13
- default: ({ params }) => {
14
- return <div>ConnectedContextNavigation {params.root_path}</div>;
15
- },
16
- };
17
- });
18
-
19
- jest.mock('@plone/volto/helpers', () => ({
20
- withBlockExtensions: jest.fn((Component) => Component),
21
- emptyBlocksForm: jest.fn(),
22
- getBlocksLayoutFieldname: () => 'blocks_layout',
23
- flattenToAppURL: () => '',
24
- }));
25
-
26
- const mockStore = configureStore();
27
- const store = mockStore({
28
- intl: {
29
- locale: 'en',
30
- messages: {},
31
- },
32
- });
33
-
34
- describe('ContextNavigationView', () => {
35
- let history;
36
- beforeEach(() => {
37
- history = createMemoryHistory();
38
- });
39
-
40
- it('renders corectly', () => {
41
- const { container } = render(
42
- <Provider store={store}>
43
- <Router history={history}>
44
- <ContextNavigationView />
45
- </Router>
46
- </Provider>,
47
- );
48
-
49
- expect(container.firstChild).toHaveTextContent(
50
- 'ConnectedContextNavigation',
51
- );
52
- });
53
-
54
- it('renders corectly', () => {
55
- const { container } = render(
56
- <Provider store={store}>
57
- <Router history={history}>
58
- <ContextNavigationView
59
- data={{
60
- navProps: { root_path: 'https://localhost:3000/test' },
61
- root_node: [{ '@id': 'root_node' }],
62
- }}
63
- />
64
- </Router>
65
- </Provider>,
66
- );
67
- expect(container.firstChild).toHaveTextContent(
68
- 'ConnectedContextNavigation',
69
- );
70
- });
71
- });
@@ -1,30 +0,0 @@
1
- import codeSVG from '@plone/volto/icons/code.svg';
2
- import ContextNavigationEdit from './ContextNavigationEdit';
3
- import ContextNavigationView from './ContextNavigationView';
4
- import BlockSettingsSchema from '@plone/volto/components/manage/Blocks/Block/Schema';
5
- import variations from './variations';
6
-
7
- const applyConfig = (config) => {
8
- config.blocks.blocksConfig.contextNavigation = {
9
- id: 'contextNavigation',
10
- title: 'Navigation',
11
- icon: codeSVG,
12
- group: 'site',
13
- view: ContextNavigationView,
14
- edit: ContextNavigationEdit,
15
- schema: BlockSettingsSchema,
16
- restricted: true,
17
- variations,
18
- mostUsed: true,
19
- blockHasOwnFocusManagement: true,
20
- sidebarTab: 1,
21
- security: {
22
- addPermission: [],
23
- view: [],
24
- },
25
- };
26
-
27
- return config;
28
- };
29
-
30
- export default applyConfig;
@@ -1,88 +0,0 @@
1
- export const EditSchema = ({ availableTypes }) => {
2
- return {
3
- title: 'Navigation',
4
- fieldsets: [
5
- {
6
- id: 'default',
7
- title: 'Default',
8
- fields: [
9
- 'name',
10
- 'root_node',
11
- 'portal_type',
12
- 'includeTop',
13
- 'currentFolderOnly',
14
- 'topLevel',
15
- 'bottomLevel',
16
- 'no_icons',
17
- 'thumb_scale',
18
- 'no_thumbs',
19
- ],
20
- },
21
- ],
22
- required: [],
23
- properties: {
24
- name: {
25
- title: 'Title',
26
- description: 'The title of the navigation tree',
27
- },
28
- root_node: {
29
- title: 'Root node',
30
- description:
31
- 'You may search for and choose a folder to act as the root of the navigation tree. Leave blank to use the Plone site root.',
32
- widget: 'object_browser',
33
- // TODO: these don't work. Why?
34
- mode: 'link',
35
- selectedItemAttrs: ['Title', 'Description'],
36
- },
37
- portal_type: {
38
- title: 'Filter children',
39
- description: 'Only show child items of this content type',
40
- choices: availableTypes,
41
- isMulti: true,
42
- },
43
- includeTop: {
44
- title: 'Include top node',
45
- description:
46
- "Whether or not to show the top, or 'root', node in the navigation tree. This is affected by the 'Start level' setting.",
47
- type: 'boolean',
48
- },
49
- currentFolderOnly: {
50
- title: 'Only show the contents of the current folder',
51
- description:
52
- 'If selected, the navigation tree will only show the current folder and its children at all times.',
53
- type: 'boolean',
54
- },
55
-
56
- topLevel: {
57
- title: 'Start level',
58
- description:
59
- 'An integer value that specifies the number of folder levels below the site root that must be exceeded before the navigation tree will display. 0 means that the navigation tree should be displayed everywhere including pages in the root of the site. 1 means the tree only shows up inside folders located in the root and downwards, never showing at the top level.',
60
- type: 'number',
61
- default: 1,
62
- },
63
- bottomLevel: {
64
- title: 'Navigation tree depth',
65
- description:
66
- 'How many folders should be included before the navigation tree stops. 0 means no limit. 1 only includes the root folder.',
67
- type: 'number',
68
- default: 0,
69
- },
70
- no_icons: {
71
- title: 'Suppress icons',
72
- description:
73
- 'If enabled, the portlet will not show document type icons.',
74
- type: 'boolean',
75
- },
76
- thumb_scale: {
77
- title: 'Override thumb scale',
78
- description:
79
- "Enter a valid scale name (see 'Image Handling' control panel) to override (e.g. icon, tile, thumb, mini, preview, ... ). Leave empty to use default (see 'Site' control panel).",
80
- },
81
- no_thumbs: {
82
- title: 'Suppress thumbs',
83
- type: 'boolean',
84
- description: 'If enabled, the portlet will not show thumbs.',
85
- },
86
- },
87
- };
88
- };
@@ -1,175 +0,0 @@
1
- import cx from 'classnames';
2
- import PropTypes from 'prop-types';
3
- import React from 'react';
4
- import { defineMessages, useIntl } from 'react-intl';
5
- import { withRouter } from 'react-router';
6
- import { compose } from 'redux';
7
- import { Accordion } from 'semantic-ui-react';
8
-
9
- import Slugger from 'github-slugger';
10
-
11
- import { Icon, UniversalLink } from '@plone/volto/components';
12
- import { withContentNavigation } from '@plone/volto/components/theme/Navigation/withContentNavigation';
13
- import withEEASideMenu from '@eeacms/volto-block-toc/hocs/withEEASideMenu';
14
- import { flattenToAppURL } from '@plone/volto/helpers';
15
-
16
- import downIcon from '@plone/volto/icons/down-key.svg';
17
- import upIcon from '@plone/volto/icons/up-key.svg';
18
-
19
- const messages = defineMessages({
20
- navigation: {
21
- id: 'Navigation',
22
- defaultMessage: 'Navigation',
23
- },
24
- });
25
-
26
- const AccordionNavigation = ({
27
- navigation = {},
28
- device,
29
- isMenuOpenOnOutsideClick,
30
- }) => {
31
- const { items = [], title, has_custom_name } = navigation;
32
- const intl = useIntl();
33
- const navOpen = ['mobile', 'tablet'].includes(device) ? false : true;
34
- const [isNavOpen, setIsNavOpen] = React.useState(navOpen);
35
- const [activeItems, setActiveItems] = React.useState({});
36
-
37
- const onClickSummary = React.useCallback((e) => {
38
- e.preventDefault();
39
- setIsNavOpen((prev) => !prev);
40
- }, []);
41
-
42
- React.useEffect(() => {
43
- if (isMenuOpenOnOutsideClick === false) setIsNavOpen(false);
44
- }, [isMenuOpenOnOutsideClick]);
45
-
46
- const onKeyDownSummary = React.useCallback(
47
- (e) => {
48
- if (e.keyCode === 13 || e.keyCode === 32) {
49
- e.preventDefault();
50
- onClickSummary(e);
51
- }
52
- },
53
- [onClickSummary],
54
- );
55
-
56
- const renderItems = ({ item, level = 0 }) => {
57
- const {
58
- title,
59
- href,
60
- is_current,
61
- is_in_path,
62
- items: childItems,
63
- type,
64
- } = item;
65
- const hasChildItems = childItems && childItems.length > 0;
66
- const normalizedTitle = Slugger.slug(title);
67
-
68
- const checkIfActive = () => {
69
- return activeItems[href] !== undefined ? activeItems[href] : is_in_path;
70
- };
71
-
72
- const isActive = checkIfActive();
73
-
74
- const handleTitleClick = () => {
75
- setActiveItems((prev) => ({ ...prev, [href]: !isActive }));
76
- };
77
-
78
- return (
79
- <li
80
- className={cx({
81
- is_in_path,
82
- 'accordion-list-title': !hasChildItems,
83
- 'accordion-list-item': hasChildItems,
84
- })}
85
- key={href}
86
- >
87
- {hasChildItems ? (
88
- <Accordion className="default">
89
- <Accordion.Title
90
- active={isActive}
91
- as={'button'}
92
- aria-expanded={isActive}
93
- onClick={handleTitleClick}
94
- aria-controls={`accordion-content-${normalizedTitle}`}
95
- id={`accordion-title-${normalizedTitle}`}
96
- >
97
- <span className="title-text">{title}</span>
98
- <Icon name={isActive ? upIcon : downIcon} size="32px" />
99
- </Accordion.Title>
100
- <Accordion.Content
101
- active={isActive}
102
- id={`accordion-content-${normalizedTitle}`}
103
- aria-labelledby={`accordion-title-${normalizedTitle}`}
104
- role="region"
105
- >
106
- <ul className="accordion-list">
107
- {childItems.map((child) =>
108
- renderItems({ item: child, level: level + 1 }),
109
- )}
110
- </ul>
111
- </Accordion.Content>
112
- </Accordion>
113
- ) : (
114
- <UniversalLink
115
- href={flattenToAppURL(href)}
116
- className={cx(`title-link contenttype-${type}`, {
117
- current: is_current,
118
- in_path: is_in_path,
119
- })}
120
- >
121
- {title}
122
- </UniversalLink>
123
- )}
124
- </li>
125
- );
126
- };
127
-
128
- return items.length ? (
129
- <>
130
- <nav className="context-navigation">
131
- <details open={isNavOpen}>
132
- {/* eslint-disable-next-line */}
133
- <summary
134
- className="context-navigation-header accordion-header"
135
- onClick={onClickSummary}
136
- onKeyDown={onKeyDownSummary}
137
- >
138
- {has_custom_name ? title : intl.formatMessage(messages.navigation)}
139
- <Icon name={isNavOpen ? upIcon : downIcon} size="40px" />
140
- </summary>
141
- <ul className="context-navigation-list accordion-list">
142
- {items.map((item) => renderItems({ item }))}
143
- </ul>
144
- </details>
145
- </nav>
146
- </>
147
- ) : null;
148
- };
149
-
150
- AccordionNavigation.propTypes = {
151
- /**
152
- * Navigation tree returned from @contextnavigation restapi endpoint
153
- */
154
- navigation: PropTypes.shape({
155
- items: PropTypes.arrayOf(
156
- PropTypes.shape({
157
- title: PropTypes.string,
158
- url: PropTypes.string,
159
- href: PropTypes.string,
160
- is_current: PropTypes.bool,
161
- is_in_path: PropTypes.bool,
162
- items: PropTypes.array,
163
- type: PropTypes.string,
164
- }),
165
- ),
166
- has_custom_name: PropTypes.bool,
167
- title: PropTypes.string,
168
- }),
169
- };
170
-
171
- export default compose(
172
- withRouter,
173
- withContentNavigation,
174
- withEEASideMenu,
175
- )(AccordionNavigation);
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import ConnectedContextNavigation from '@plone/volto/components/theme/Navigation/ContextNavigation';
3
-
4
- const Default = (props) => {
5
- const { params } = props;
6
- return <ConnectedContextNavigation params={params} />;
7
- };
8
-
9
- export default Default;
@@ -1,18 +0,0 @@
1
- import Accordion from './Accordion';
2
- import Default from './Default';
3
-
4
- const contextBlockVariations = [
5
- {
6
- id: 'default',
7
- title: 'Listing (default)',
8
- view: Default,
9
- isDefault: true,
10
- },
11
- {
12
- id: 'accordion',
13
- title: 'Accordion',
14
- view: Accordion,
15
- },
16
- ];
17
-
18
- export default contextBlockVariations;