imio.smartweb.core 1.2.38__py3-none-any.whl → 1.2.79__py3-none-any.whl

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 (222) hide show
  1. imio/smartweb/core/behaviors/categorization.py +24 -0
  2. imio/smartweb/core/behaviors/configure.zcml +7 -0
  3. imio/smartweb/core/browser/controlpanel.py +43 -0
  4. imio/smartweb/core/browser/faceted/block_view.pt +4 -4
  5. imio/smartweb/core/browser/faceted/summary_view.pt +4 -4
  6. imio/smartweb/core/browser/sitemap.py +10 -3
  7. imio/smartweb/core/browser/static/icons/action-delete.svg +3 -0
  8. imio/smartweb/core/browser/static/icons/action-engagement-2.svg +4 -0
  9. imio/smartweb/core/browser/static/icons/action-panneaux.svg +3 -0
  10. imio/smartweb/core/browser/static/icons/action-vote.svg +3 -0
  11. imio/smartweb/core/browser/static/icons/categorie-attention.svg +3 -0
  12. imio/smartweb/core/browser/static/icons/categorie-infos-travaux-2.svg +4 -0
  13. imio/smartweb/core/browser/static/icons/categorie-nature.svg +3 -0
  14. imio/smartweb/core/browser/static/icons/categorie-parcs-a-conteneurs.svg +4 -0
  15. imio/smartweb/core/browser/static/icons/categorie-plus.svg +3 -0
  16. imio/smartweb/core/browser/static/icons/categorie-primes-2.svg +5 -0
  17. imio/smartweb/core/browser/static/icons/categorie-sport-natation.svg +4 -0
  18. imio/smartweb/core/browser/static/icons/organisation-ecole-sac.svg +4 -0
  19. imio/smartweb/core/browser/static/icons/organisation-scout.svg +3 -0
  20. imio/smartweb/core/browser/static/icons/reseausocial-behance.svg +3 -0
  21. imio/smartweb/core/browser/static/icons/reseausocial-linkedin.svg +3 -0
  22. imio/smartweb/core/browser/static/smartweb-edit-compiled.css +1 -1
  23. imio/smartweb/core/browser/static/smartweb-view-compiled.css +1 -1
  24. imio/smartweb/core/browser/static/src/edit.less +42 -0
  25. imio/smartweb/core/browser/static/src/view.less +109 -56
  26. imio/smartweb/core/browser/vocabulary.py +8 -3
  27. imio/smartweb/core/contents/__init__.py +2 -0
  28. imio/smartweb/core/contents/configure.zcml +1 -0
  29. imio/smartweb/core/contents/folder/block_view.pt +8 -8
  30. imio/smartweb/core/contents/folder/summary_view.pt +4 -4
  31. imio/smartweb/core/contents/pages/cirkwi/content.py +5 -0
  32. imio/smartweb/core/contents/pages/cirkwi/view.py +2 -1
  33. imio/smartweb/core/contents/pages/configure.zcml +1 -0
  34. imio/smartweb/core/contents/pages/portal_page/view.py +3 -0
  35. imio/smartweb/core/contents/pages/views.py +47 -1
  36. imio/smartweb/core/contents/publication/__init__.py +0 -0
  37. imio/smartweb/core/contents/publication/configure.zcml +5 -0
  38. imio/smartweb/core/contents/publication/content.py +23 -0
  39. imio/smartweb/core/contents/rest/base.py +9 -7
  40. imio/smartweb/core/contents/rest/directory/endpoint.py +2 -2
  41. imio/smartweb/core/contents/rest/directory/view.pt +2 -1
  42. imio/smartweb/core/contents/rest/events/content.py +13 -0
  43. imio/smartweb/core/contents/rest/events/endpoint.py +5 -3
  44. imio/smartweb/core/contents/rest/events/view.pt +5 -1
  45. imio/smartweb/core/contents/rest/events/view.py +12 -0
  46. imio/smartweb/core/contents/rest/news/content.py +6 -0
  47. imio/smartweb/core/contents/rest/news/endpoint.py +4 -2
  48. imio/smartweb/core/contents/rest/news/view.pt +4 -1
  49. imio/smartweb/core/contents/rest/news/view.py +8 -0
  50. imio/smartweb/core/contents/rest/utils.py +0 -1
  51. imio/smartweb/core/contents/rest/view.py +4 -0
  52. imio/smartweb/core/contents/sections/common_templates/carousel.pt +5 -1
  53. imio/smartweb/core/contents/sections/common_templates/table.pt +18 -4
  54. imio/smartweb/core/contents/sections/configure.zcml +18 -0
  55. imio/smartweb/core/contents/sections/contact/content.py +2 -2
  56. imio/smartweb/core/contents/sections/contact/macros.pt +28 -3
  57. imio/smartweb/core/contents/sections/contact/utils.py +2 -0
  58. imio/smartweb/core/contents/sections/contact/view.py +28 -12
  59. imio/smartweb/core/contents/sections/events/content.py +12 -4
  60. imio/smartweb/core/contents/sections/events/view.py +20 -2
  61. imio/smartweb/core/contents/sections/external_content/view.pt +4 -4
  62. imio/smartweb/core/contents/sections/external_content/views.py +6 -4
  63. imio/smartweb/core/contents/sections/files/content.py +7 -1
  64. imio/smartweb/core/contents/sections/files/view.py +43 -12
  65. imio/smartweb/core/contents/sections/links/view.py +5 -0
  66. imio/smartweb/core/contents/sections/macros.pt +26 -0
  67. imio/smartweb/core/contents/sections/news/content.py +11 -3
  68. imio/smartweb/core/contents/sections/news/view.py +20 -2
  69. imio/smartweb/core/contents/sections/text/views.py +2 -0
  70. imio/smartweb/core/contents/sections/views.py +73 -10
  71. imio/smartweb/core/interfaces.py +4 -0
  72. imio/smartweb/core/profiles/default/metadata.xml +1 -1
  73. imio/smartweb/core/profiles/default/taxonomies/page_category.xml +16 -0
  74. imio/smartweb/core/profiles/default/taxonomies/procedure_category.xml +26 -0
  75. imio/smartweb/core/profiles/default/types/imio.smartweb.EventsView.xml +1 -0
  76. imio/smartweb/core/profiles/default/types/imio.smartweb.NewsView.xml +1 -0
  77. imio/smartweb/core/profiles/default/types/imio.smartweb.Publication.xml +38 -0
  78. imio/smartweb/core/profiles/default/types/imio.smartweb.SectionEvents.xml +1 -0
  79. imio/smartweb/core/profiles/default/types/imio.smartweb.SectionFiles.xml +2 -0
  80. imio/smartweb/core/profiles/default/types/imio.smartweb.SectionNews.xml +1 -0
  81. imio/smartweb/core/profiles/default/types.xml +1 -0
  82. imio/smartweb/core/profiles/icons/basic/registry.xml +120 -0
  83. imio/smartweb/core/rest/authentic_sources.py +17 -2
  84. imio/smartweb/core/subscribers.py +48 -0
  85. imio/smartweb/core/subscribers.zcml +12 -0
  86. imio/smartweb/core/tests/resources/json_iadeliberations_institutions.json +60 -0
  87. imio/smartweb/core/tests/resources/json_iadeliberations_publication.json +105 -0
  88. imio/smartweb/core/tests/resources/json_iadeliberations_publications.json +270 -0
  89. imio/smartweb/core/tests/resources/json_rest_events.json +6 -2
  90. imio/smartweb/core/tests/resources/json_rest_news.json +2 -2
  91. imio/smartweb/core/tests/resources/json_rest_specific_events.json +1 -1
  92. imio/smartweb/core/tests/test_htmx_in_sections.py +131 -0
  93. imio/smartweb/core/tests/test_iadeliberations.py +136 -0
  94. imio/smartweb/core/tests/test_icons.py +1 -1
  95. imio/smartweb/core/tests/test_rest.py +58 -17
  96. imio/smartweb/core/tests/test_section_contact.py +42 -10
  97. imio/smartweb/core/tests/test_section_events.py +28 -5
  98. imio/smartweb/core/tests/test_section_external_content.py +28 -2
  99. imio/smartweb/core/tests/test_section_news.py +30 -8
  100. imio/smartweb/core/tests/test_sections.py +17 -0
  101. imio/smartweb/core/tests/test_vocabularies.py +60 -3
  102. imio/smartweb/core/tests/test_vocabulary.py +43 -0
  103. imio/smartweb/core/upgrades/configure.zcml +108 -0
  104. imio/smartweb/core/upgrades/profiles/1055_to_1056/types/imio.smartweb.SectionFiles.xml +12 -0
  105. imio/smartweb/core/upgrades/profiles/1056_to_1057/types/imio.smartweb.EventsView.xml +11 -0
  106. imio/smartweb/core/upgrades/profiles/1056_to_1057/types/imio.smartweb.NewsView.xml +11 -0
  107. imio/smartweb/core/upgrades/profiles/1056_to_1057/types/imio.smartweb.SectionEvents.xml +11 -0
  108. imio/smartweb/core/upgrades/profiles/1056_to_1057/types/imio.smartweb.SectionNews.xml +11 -0
  109. imio/smartweb/core/upgrades/profiles/1057_to_1058/taxonomies/page_category.cfg +9 -0
  110. imio/smartweb/core/upgrades/profiles/1057_to_1058/taxonomies/page_category.xml +73 -0
  111. imio/smartweb/core/upgrades/profiles/1057_to_1058/taxonomies/procedure_category.cfg +9 -0
  112. imio/smartweb/core/upgrades/profiles/1057_to_1058/taxonomies/procedure_category.xml +118 -0
  113. imio/smartweb/core/upgrades/profiles/1058_to_1059/registry/linkedin-icon.xml +126 -0
  114. imio/smartweb/core/upgrades/profiles/1059_to_1060/registry/iadeliberation.xml +9 -0
  115. imio/smartweb/core/upgrades/profiles/1060_to_1061/types/imio.smartweb.Publication.xml +38 -0
  116. imio/smartweb/core/upgrades/profiles/1060_to_1061/types/imio.smartweb.SectionFiles.xml +11 -0
  117. imio/smartweb/core/upgrades/profiles/1060_to_1061/types.xml +4 -0
  118. imio/smartweb/core/upgrades/profiles/1060_to_1061/workflows.xml +6 -0
  119. imio/smartweb/core/utils.py +33 -2
  120. imio/smartweb/core/viewlets/configure.zcml +23 -1
  121. imio/smartweb/core/viewlets/footer.pt +5 -0
  122. imio/smartweb/core/viewlets/footer.py +5 -0
  123. imio/smartweb/core/viewlets/htmx.py +15 -0
  124. imio/smartweb/core/viewlets/htmx_js_header.pt +64 -0
  125. imio/smartweb/core/viewlets/ogptags.py +4 -3
  126. imio/smartweb/core/viewlets/social.py +23 -0
  127. imio/smartweb/core/vocabularies.py +65 -3
  128. imio/smartweb/core/vocabularies.zcml +18 -0
  129. imio/smartweb/core/webcomponents/build/1c1605a5fe9a2b10a88f.png +1 -0
  130. imio/smartweb/core/webcomponents/build/524db40e119aa11f4478.png +1 -0
  131. imio/smartweb/core/webcomponents/build/57d3b7cb1ab874660b39.svg +1 -0
  132. imio/smartweb/core/webcomponents/build/6cf03871df23ed2ee8b3.png +1 -0
  133. imio/smartweb/core/webcomponents/build/css/373.smartweb-webcomponents-compiled.css +1 -1
  134. imio/smartweb/core/webcomponents/build/css/486.smartweb-webcomponents-compiled.css +1 -1
  135. imio/smartweb/core/webcomponents/build/css/884.smartweb-webcomponents-compiled.css +1 -0
  136. imio/smartweb/core/webcomponents/build/css/919.smartweb-webcomponents-compiled.css +1 -1
  137. imio/smartweb/core/webcomponents/build/css/smartweb-webcomponents-compiled.css +1 -1
  138. imio/smartweb/core/webcomponents/build/js/218.smartweb-webcomponents-compiled.js +1 -1
  139. imio/smartweb/core/webcomponents/build/js/218.smartweb-webcomponents-compiled.js.LICENSE.txt +10 -8
  140. imio/smartweb/core/webcomponents/build/js/373.smartweb-webcomponents-compiled.js +2 -1
  141. imio/smartweb/core/webcomponents/build/js/{568.smartweb-webcomponents-compiled.js.LICENSE.txt → 373.smartweb-webcomponents-compiled.js.LICENSE.txt} +0 -4
  142. imio/smartweb/core/webcomponents/build/js/486.smartweb-webcomponents-compiled.js +1 -1
  143. imio/smartweb/core/webcomponents/build/js/499.smartweb-webcomponents-compiled.js +2 -0
  144. imio/smartweb/core/webcomponents/build/js/{674.smartweb-webcomponents-compiled.js.LICENSE.txt → 499.smartweb-webcomponents-compiled.js.LICENSE.txt} +1 -8
  145. imio/smartweb/core/webcomponents/build/js/799.smartweb-webcomponents-compiled.js +1 -1
  146. imio/smartweb/core/webcomponents/build/js/824.smartweb-webcomponents-compiled.js +2 -0
  147. imio/smartweb/core/webcomponents/build/js/828.smartweb-webcomponents-compiled.js +2 -0
  148. imio/smartweb/core/webcomponents/build/js/828.smartweb-webcomponents-compiled.js.LICENSE.txt +32 -0
  149. imio/smartweb/core/webcomponents/build/js/884.smartweb-webcomponents-compiled.js +1 -0
  150. imio/smartweb/core/webcomponents/build/js/919.smartweb-webcomponents-compiled.js +1 -1
  151. imio/smartweb/core/webcomponents/build/js/{568.smartweb-webcomponents-compiled.js → 963.smartweb-webcomponents-compiled.js} +2 -2
  152. imio/smartweb/core/webcomponents/build/js/963.smartweb-webcomponents-compiled.js.LICENSE.txt +3 -0
  153. imio/smartweb/core/webcomponents/build/js/smartweb-webcomponents-compiled.js +1 -1
  154. imio/smartweb/core/webcomponents/build/js/smartweb-webcomponents-compiled.js.LICENSE.txt +11 -14
  155. imio/smartweb/core/webcomponents/package.json +42 -40
  156. imio/smartweb/core/webcomponents/src/components/Annuaire/Annuaire.jsx +146 -79
  157. imio/smartweb/core/webcomponents/src/components/Annuaire/Annuaire.scss +415 -351
  158. imio/smartweb/core/webcomponents/src/components/Annuaire/ContactCard/ContactCard.jsx +95 -62
  159. imio/smartweb/core/webcomponents/src/components/Annuaire/ContactContent/ContactContent.jsx +328 -168
  160. imio/smartweb/core/webcomponents/src/components/Annuaire/ContactList/ContactList.jsx +21 -4
  161. imio/smartweb/core/webcomponents/src/components/Annuaire/Filters/Filter.jsx +213 -100
  162. imio/smartweb/core/webcomponents/src/components/Annuaire/index.js +1 -1
  163. imio/smartweb/core/webcomponents/src/components/Events/EventCard/EventCard.jsx +76 -33
  164. imio/smartweb/core/webcomponents/src/components/Events/EventContent/EventContent.jsx +604 -377
  165. imio/smartweb/core/webcomponents/src/components/Events/EventList/EventList.jsx +29 -4
  166. imio/smartweb/core/webcomponents/src/components/Events/Events.jsx +162 -88
  167. imio/smartweb/core/webcomponents/src/components/Events/Events.scss +496 -378
  168. imio/smartweb/core/webcomponents/src/components/Events/Filters/Filter.jsx +259 -91
  169. imio/smartweb/core/webcomponents/src/components/Filters/DateFilter.jsx +62 -55
  170. imio/smartweb/core/webcomponents/src/components/Filters/DateFilter.scss +68 -17
  171. imio/smartweb/core/webcomponents/src/components/Filters/IamData.jsx +42 -0
  172. imio/smartweb/core/webcomponents/src/components/Filters/MainFilter.scss +229 -0
  173. imio/smartweb/core/webcomponents/src/components/Filters/PublicTargetData.jsx +94 -0
  174. imio/smartweb/core/webcomponents/src/components/Filters/SelectStyles.js +58 -0
  175. imio/smartweb/core/webcomponents/src/components/Filters/TaxonomyFilter.jsx +149 -0
  176. imio/smartweb/core/webcomponents/src/components/Filters/TaxonomyFilter.scss +70 -0
  177. imio/smartweb/core/webcomponents/src/components/News/Filters/Filter.jsx +139 -83
  178. imio/smartweb/core/webcomponents/src/components/News/News.jsx +133 -67
  179. imio/smartweb/core/webcomponents/src/components/News/News.scss +170 -127
  180. imio/smartweb/core/webcomponents/src/components/News/NewsCard/NewsCard.jsx +76 -44
  181. imio/smartweb/core/webcomponents/src/components/News/NewsContent/NewsContent.jsx +261 -188
  182. imio/smartweb/core/webcomponents/src/components/News/NewsList/NewsList.jsx +48 -9
  183. imio/smartweb/core/webcomponents/src/components/Search/ContactResult/ContactResult.jsx +21 -10
  184. imio/smartweb/core/webcomponents/src/components/Search/EventsResult/EventsResult.jsx +21 -10
  185. imio/smartweb/core/webcomponents/src/components/Search/Filters/Filter.jsx +8 -9
  186. imio/smartweb/core/webcomponents/src/components/Search/NewsResult/NewsResult.jsx +23 -12
  187. imio/smartweb/core/webcomponents/src/components/Search/Search.jsx +7 -6
  188. imio/smartweb/core/webcomponents/src/components/Search/Search.scss +115 -96
  189. imio/smartweb/core/webcomponents/src/components/Search/WebResult/WebResult.jsx +12 -3
  190. imio/smartweb/core/webcomponents/src/components/Search/index.js +1 -1
  191. imio/smartweb/core/webcomponents/src/hooks/ScrollContext.jsx +3 -0
  192. imio/smartweb/core/webcomponents/src/hooks/useAxios.js +3 -3
  193. imio/smartweb/core/webcomponents/src/hooks/useFilterQuery.js +1 -2
  194. imio/smartweb/core/webcomponents/src/index.scss +255 -211
  195. imio/smartweb/core/webcomponents/src/utils/Map.jsx +26 -19
  196. imio/smartweb/core/webcomponents/src/utils/Map.scss +2 -2
  197. imio/smartweb/core/webcomponents/src/utils/translation.js +129 -9
  198. imio.smartweb.core-1.2.79-py3.8-nspkg.pth +2 -0
  199. {imio.smartweb.core-1.2.38.dist-info → imio.smartweb.core-1.2.79.dist-info}/METADATA +403 -10
  200. {imio.smartweb.core-1.2.38.dist-info → imio.smartweb.core-1.2.79.dist-info}/RECORD +206 -160
  201. {imio.smartweb.core-1.2.38.dist-info → imio.smartweb.core-1.2.79.dist-info}/WHEEL +1 -1
  202. imio/smartweb/core/webcomponents/build/assets/location-bla.1423bcce16ddcb21141430cac1428dc1.svg +0 -1
  203. imio/smartweb/core/webcomponents/build/assets/next-react-white.819cb069ac8eec300a9db6a7707712d6.svg +0 -1
  204. imio/smartweb/core/webcomponents/build/assets/next-react.17bc43ff4a6a86f4520f5782f6a89a72.svg +0 -1
  205. imio/smartweb/core/webcomponents/build/assets/search.57bdbf5b191499cd77514097d1c4972c.svg +0 -1
  206. imio/smartweb/core/webcomponents/build/css/686.smartweb-webcomponents-compiled.css +0 -1
  207. imio/smartweb/core/webcomponents/build/js/209.smartweb-webcomponents-compiled.js +0 -2
  208. imio/smartweb/core/webcomponents/build/js/40.smartweb-webcomponents-compiled.js +0 -1
  209. imio/smartweb/core/webcomponents/build/js/674.smartweb-webcomponents-compiled.js +0 -2
  210. imio/smartweb/core/webcomponents/build/js/686.smartweb-webcomponents-compiled.js +0 -1
  211. imio/smartweb/core/webcomponents/src/assets/facebook-news.svg +0 -1
  212. imio/smartweb/core/webcomponents/src/assets/location-bla.svg +0 -1
  213. imio/smartweb/core/webcomponents/src/assets/next-react.svg +0 -1
  214. imio/smartweb/core/webcomponents/src/assets/search.svg +0 -1
  215. imio/smartweb/core/webcomponents/src/assets/skeleton.svg +0 -1
  216. imio/smartweb/core/webcomponents/src/components/Annuaire/ContactContent/download.svg +0 -1
  217. imio.smartweb.core-1.2.38-py3.8-nspkg.pth +0 -3
  218. /imio/smartweb/core/webcomponents/build/js/{209.smartweb-webcomponents-compiled.js.LICENSE.txt → 824.smartweb-webcomponents-compiled.js.LICENSE.txt} +0 -0
  219. {imio.smartweb.core-1.2.38.dist-info → imio.smartweb.core-1.2.79.dist-info}/LICENSE.GPL +0 -0
  220. {imio.smartweb.core-1.2.38.dist-info → imio.smartweb.core-1.2.79.dist-info}/LICENSE.rst +0 -0
  221. {imio.smartweb.core-1.2.38.dist-info → imio.smartweb.core-1.2.79.dist-info}/namespace_packages.txt +0 -0
  222. {imio.smartweb.core-1.2.38.dist-info → imio.smartweb.core-1.2.79.dist-info}/top_level.txt +0 -0
@@ -1,11 +1,6 @@
1
- /*
2
- object-assign
3
- (c) Sindre Sorhus
4
- @license MIT
5
- */
6
-
7
- /** @license React v0.20.2
8
- * scheduler.production.min.js
1
+ /**
2
+ * @license React
3
+ * react-dom.production.min.js
9
4
  *
10
5
  * Copyright (c) Facebook, Inc. and its affiliates.
11
6
  *
@@ -13,8 +8,9 @@ object-assign
13
8
  * LICENSE file in the root directory of this source tree.
14
9
  */
15
10
 
16
- /** @license React v16.13.1
17
- * react-is.production.min.js
11
+ /**
12
+ * @license React
13
+ * react.production.min.js
18
14
  *
19
15
  * Copyright (c) Facebook, Inc. and its affiliates.
20
16
  *
@@ -22,8 +18,9 @@ object-assign
22
18
  * LICENSE file in the root directory of this source tree.
23
19
  */
24
20
 
25
- /** @license React v17.0.2
26
- * react-dom.production.min.js
21
+ /**
22
+ * @license React
23
+ * scheduler.production.min.js
27
24
  *
28
25
  * Copyright (c) Facebook, Inc. and its affiliates.
29
26
  *
@@ -31,8 +28,8 @@ object-assign
31
28
  * LICENSE file in the root directory of this source tree.
32
29
  */
33
30
 
34
- /** @license React v17.0.2
35
- * react.production.min.js
31
+ /** @license React v16.13.1
32
+ * react-is.production.min.js
36
33
  *
37
34
  * Copyright (c) Facebook, Inc. and its affiliates.
38
35
  *
@@ -19,62 +19,64 @@
19
19
  "not dead"
20
20
  ],
21
21
  "devDependencies": {
22
- "@babel/core": "^7.14.6",
22
+ "@babel/core": "^7.24.3",
23
23
  "@babel/plugin-proposal-async-generator-functions": "^7.20.7",
24
- "@babel/plugin-transform-react-jsx": "^7.14.5",
25
- "@babel/preset-env": "^7.14.7",
26
- "@fullhuman/postcss-purgecss": "^4.0.3",
24
+ "@babel/plugin-transform-react-jsx": "^7.23.4",
25
+ "@babel/preset-env": "^7.24.3",
26
+ "@fullhuman/postcss-purgecss": "^5.0.0",
27
27
  "@svgr/webpack": "^8.1.0",
28
- "autoprefixer": "^10.3.3",
29
- "babel-loader": "^8.2.2",
28
+ "ajv": "^7.2.4",
29
+ "autoprefixer": "^10.4.19",
30
+ "babel-loader": "^9.1.3",
30
31
  "clean-webpack-plugin": "^4.0.0",
31
- "core-js": "^3.33.0",
32
- "css-loader": "^5.2.6",
33
- "css-minimizer-webpack-plugin": "^3.0.2",
34
- "eslint": "^7.32.0",
35
- "eslint-plugin-import": "^2.23.4",
36
- "eslint-plugin-react": "^7.26.1",
32
+ "core-js": "^3.36.1",
33
+ "css-loader": "^6.10.0",
34
+ "css-minimizer-webpack-plugin": "^6.0.0",
35
+ "eslint": "^8.57.0",
36
+ "eslint-plugin-import": "^2.29.1",
37
+ "eslint-plugin-react": "^7.34.1",
37
38
  "file-loader": "^6.2.0",
38
- "json-minimizer-webpack-plugin": "^3.0.0",
39
- "mini-css-extract-plugin": "^2.1.0",
40
- "postcss": "^8.4.31",
41
- "postcss-loader": "^7.3.3",
42
- "prettier": "2.3.2",
39
+ "json-minimizer-webpack-plugin": "^5.0.0",
40
+ "mini-css-extract-plugin": "^2.8.1",
41
+ "postcss": "^8.4.38",
42
+ "postcss-loader": "^8.1.1",
43
+ "prettier": "3.2.5",
43
44
  "purgecss": "^5.0.0",
44
- "sass": "^1.69.4",
45
- "sass-loader": "^13.3.2",
46
- "style-loader": "^3.3.3",
47
- "webpack": "^5.89.0",
45
+ "sass": "^1.72.0",
46
+ "sass-loader": "^14.1.1",
47
+ "style-loader": "^3.3.4",
48
+ "webpack": "^5.91.0",
48
49
  "webpack-cli": "^5.1.4",
49
- "webpack-dev-server": "^4.15.1",
50
+ "webpack-dev-server": "^5.0.4",
50
51
  "xml2js": "^0.6.2"
51
52
  },
52
53
  "dependencies": {
53
54
  "@babel/polyfill": "^7.12.1",
54
- "@loadable/component": "^5.15.0",
55
- "axios": "^1.5.1",
55
+ "@loadable/component": "^5.16.3",
56
+ "axios": "^1.6.8",
56
57
  "babel-polyfill": "^6.26.0",
57
- "date-fns": "^3.3.1",
58
+ "bootstrap-icons": "^1.11.3",
59
+ "date-fns": "^3.6.0",
58
60
  "flexbin": "^0.2.0",
59
- "leaflet": "^1.7.1",
61
+ "leaflet": "^1.9.4",
60
62
  "lodash": "^4.17.21",
61
- "moment": "^2.29.1",
62
- "query-string": "^7.0.1",
63
- "react": "^17.0.2",
64
- "react-bootstrap": "^2.10.0",
65
- "react-content-loader": "^6.0.3",
66
- "react-datepicker": "^4.25.0",
67
- "react-dom": "^17.0.2",
68
- "react-highlight-words": "^0.17.0",
69
- "react-leaflet": "^3.2.5",
70
- "react-markdown": "^8.0.3",
71
- "react-moment": "^1.1.1",
72
- "react-router-dom": "^5.3.0",
73
- "react-select": "^5.7.7",
63
+ "moment": "^2.30.1",
64
+ "query-string": "^9.0.0",
65
+ "react": "^18.2.0",
66
+ "react-bootstrap": "^2.10.2",
67
+ "react-content-loader": "^7.0.0",
68
+ "react-datepicker": "^6.6.0",
69
+ "react-dom": "^18.2.0",
70
+ "react-highlight-words": "^0.20.0",
71
+ "react-leaflet": "^4.2.1",
72
+ "react-markdown": "^9.0.1",
73
+ "react-moment": "^1.1.3",
74
+ "react-router-dom": "^6.22.3",
75
+ "react-select": "^5.8.0",
74
76
  "react-translated": "^2.5.0",
75
77
  "react-web-component": "^2.0.2",
76
78
  "react-web-component-style-loader": "^0.1.4-alpha",
77
- "remove-accents": "^0.4.2",
79
+ "remove-accents": "^0.5.0",
78
80
  "spotlight.js": "^0.7.8"
79
81
  }
80
82
  }
@@ -1,36 +1,48 @@
1
- import React, { useEffect, useState, useRef } from "react";
2
- import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
1
+ import React, { useEffect, useState, useContext, useRef } from "react";
2
+ import { BrowserRouter, Routes, Route } from "react-router-dom";
3
+ import { ScrollContext } from "../../hooks/ScrollContext";
3
4
  import Filters from "./Filters/Filter";
4
5
  import ContactContent from "./ContactContent/ContactContent";
5
6
  import ContactList from "./ContactList/ContactList";
6
7
  import Map from "../../utils/Map";
7
8
  import useAxios from "../../hooks/useAxios";
8
9
  import "./Annuaire.scss";
10
+ import "../Filters/MainFilter.scss";
9
11
  import useFilterQuery from "../../hooks/useFilterQuery";
10
12
  import { Provider, Translate } from "react-translated";
11
- import translation from '../../utils/translation';
13
+ import translation from "../../utils/translation";
14
+ import queryString from "query-string";
12
15
 
13
16
  export default function Annuaire(props) {
17
+ // Utilisation de useState pour gérer la valeur du contexte
18
+ const [scrollPos, setScrollPos] = useState(0);
19
+ // Fonction pour mettre à jour la position du scroll
20
+ const updateScrollPos = (newScrollPos) => {
21
+ setScrollPos(newScrollPos);
22
+ };
14
23
  return (
15
- <Router basename={props.viewPath}>
24
+ <BrowserRouter basename={props.viewPath}>
16
25
  <Provider language={props.currentLanguage} translation={translation}>
17
- <AnnuaireView
18
- queryFilterUrl={props.queryFilterUrl}
19
- queryUrl={props.queryUrl}
20
- proposeUrl={props.proposeUrl}
21
- batchSize={props.batchSize}
22
- displayMap={props.displayMap}
23
- />
26
+ <ScrollContext.Provider value={{ scrollPos, updateScrollPos }}>
27
+ <AnnuaireView
28
+ queryFilterUrl={props.queryFilterUrl}
29
+ queryUrl={props.queryUrl}
30
+ proposeUrl={props.proposeUrl}
31
+ batchSize={props.batchSize}
32
+ displayMap={props.displayMap}
33
+ contextAuthenticatedUser={props.contextAuthenticatedUser}
34
+ />
35
+ </ScrollContext.Provider>
24
36
  </Provider>
25
- </Router>
37
+ </BrowserRouter>
26
38
  );
27
39
  }
28
40
  function AnnuaireView(props) {
29
- const queryString = require("query-string");
30
41
  const { u, ...parsed } = Object.assign(
31
42
  { b_start: 0, fullobjects: 1 },
32
43
  queryString.parse(useFilterQuery().toString())
33
44
  );
45
+ const { scrollPos, updateScrollPos } = useContext(ScrollContext);
34
46
  const [contactArray, setcontactArray] = useState([]);
35
47
  const [contactNumber, setcontactNumber] = useState([]);
36
48
  const [clickId, setClickId] = useState(null);
@@ -85,6 +97,7 @@ function AnnuaireView(props) {
85
97
 
86
98
  // set batch
87
99
  const loadMore = () => {
100
+ updateScrollPos(window.scrollY);
88
101
  setBatchStart((batchStart) => batchStart + parseInt(props.batchSize));
89
102
  setLoadMoreLaunch(true);
90
103
  };
@@ -100,27 +113,32 @@ function AnnuaireView(props) {
100
113
  }, [batchStart]);
101
114
 
102
115
  // filter top style
103
- let portalHeader = document.getElementById("portal-header");
104
- let portalHeaderHeight = portalHeader.offsetHeight;
105
-
106
116
  const filterRef = useRef();
107
117
  const [style, setStyle] = React.useState({ height: 0 });
118
+ const [headerHeight, setHeaderHeight] = useState(0);
119
+
108
120
  useEffect(() => {
109
121
  setStyle({
110
122
  height: filterRef.current.clientHeight,
111
123
  });
112
- }, [filterRef.current]);
124
+ setHeaderHeight(filterRef.current.offsetTop);
125
+ }, [filterRef]);
113
126
 
114
127
  // coditional list render
115
128
  let listRender;
116
129
  let MapRender;
117
130
  if (contactArray && contactArray.length > 0) {
118
131
  listRender = (
119
- <ContactList onChange={clickID} contactArray={contactArray} onHover={hoverID} />
132
+ <ContactList
133
+ onChange={clickID}
134
+ contactArray={contactArray}
135
+ onHover={hoverID}
136
+ contextAuthenticatedUser={props.contextAuthenticatedUser}
137
+ />
120
138
  );
121
139
  MapRender = (
122
140
  <Map
123
- headerHeight={style.height + portalHeaderHeight}
141
+ headerHeight={style.height + headerHeight}
124
142
  clickId={clickId}
125
143
  hoverId={hoverId}
126
144
  items={contactArray}
@@ -128,16 +146,33 @@ function AnnuaireView(props) {
128
146
  />
129
147
  );
130
148
  } else if (!isLoading) {
131
- listRender = <p><Translate text="Aucun contact n'a été trouvé" /></p>;
149
+ listRender = (
150
+ <p>
151
+ <Translate text="Aucun contact n'a été trouvé" />
152
+ </p>
153
+ );
132
154
  }
133
155
 
134
- const divLoader = <div className="lds-roller-container"><div className="lds-roller"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div></div>;
156
+ const divLoader = (
157
+ <div className="lds-roller-container">
158
+ <div className="lds-roller">
159
+ <div></div>
160
+ <div></div>
161
+ <div></div>
162
+ <div></div>
163
+ <div></div>
164
+ <div></div>
165
+ <div></div>
166
+ <div></div>
167
+ </div>
168
+ </div>
169
+ );
135
170
  return (
136
171
  <div className={`ref ${displayMap ? "view-map" : "no-map"}`}>
137
172
  <div
138
173
  className="r-result-filter-container"
139
174
  ref={filterRef}
140
- style={{ top: portalHeaderHeight }}
175
+ style={{ top: headerHeight }}
141
176
  >
142
177
  <div
143
178
  id="r-result-filter"
@@ -148,77 +183,109 @@ function AnnuaireView(props) {
148
183
  activeFilter={filters}
149
184
  onChange={filtersChange}
150
185
  />
151
- {props.proposeUrl &&
152
- (
153
- <div className="r-add-contact">
154
- <a target="_blank" rel="noreferrer" href={props.proposeUrl}><Translate text='Proposer un contact' /></a>
155
- </div>
156
- )
157
- }
186
+ {props.proposeUrl && (
187
+ <div className="r-add-contact">
188
+ <a target="_blank" rel="noreferrer" href={props.proposeUrl}>
189
+ <Translate text="Proposer un contact" />
190
+ <svg
191
+ xmlns="http://www.w3.org/2000/svg"
192
+ width="16"
193
+ height="16"
194
+ fill="currentColor"
195
+ className="bi bi-plus-circle"
196
+ viewBox="0 0 16 16"
197
+ >
198
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16" />
199
+ <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4" />
200
+ </svg>
201
+ </a>
202
+ </div>
203
+ )}
158
204
  {contactNumber > 0 ? (
159
205
  <p className="r-results-numbers">
160
206
  <span>{contactNumber}</span>
161
- {contactNumber > 1
162
- ? <Translate text='contacts trouvés' />
163
- : <Translate text='contact trouvé' />}
207
+ {contactNumber > 1 ? (
208
+ <Translate text="contacts trouvés" />
209
+ ) : (
210
+ <Translate text="contact trouvé" />
211
+ )}
164
212
  </p>
165
213
  ) : (
166
- <p className="r-results-numbers"><Translate text='Aucun résultat' /></p>
214
+ <p className="r-results-numbers">
215
+ <Translate text="Aucun résultat" />
216
+ </p>
167
217
  )}
168
218
  </div>
169
219
  </div>
170
- <Switch>
171
- <Route exact path="/">
172
- <div className="r-wrapper container r-annuaire-wrapper">
173
- <div className="r-result r-annuaire-result">
174
- <div>{listRender}</div>
175
- <div className="r-load-more">
176
- {contactNumber - props.batchSize > batchStart ? (
177
- <div>
220
+ <Routes>
221
+ <Route
222
+ exact
223
+ path="/"
224
+ element={
225
+ <div className="r-wrapper container r-annuaire-wrapper">
226
+ <div className="r-result r-annuaire-result">
227
+ <div>{listRender}</div>
228
+ <div className="r-load-more">
229
+ {contactNumber - props.batchSize > batchStart ? (
230
+ <div>
231
+ <span className="no-more-result">
232
+ {isLoading ? divLoader : ""}
233
+ </span>
234
+ <button onClick={loadMore} className="btn-grad">
235
+ {isLoading ? (
236
+ <Translate text="Chargement..." />
237
+ ) : (
238
+ <Translate text="Plus de résultats" />
239
+ )}
240
+ </button>
241
+ </div>
242
+ ) : (
178
243
  <span className="no-more-result">
179
244
  {isLoading ? divLoader : ""}
180
245
  </span>
181
- <button onClick={loadMore} className="btn-grad">
182
- {isLoading ? <Translate text='Chargement...' /> : <Translate text='Plus de résultats' />}
183
- </button>
184
- </div>
185
- ) : (
186
- <span className="no-more-result">
187
- {isLoading ? divLoader : ""}
188
- </span>
189
- )}
246
+ )}
247
+ </div>
190
248
  </div>
249
+ {displayMap && (
250
+ <div
251
+ className="r-map annuaire-map"
252
+ style={{
253
+ top: style.height + headerHeight,
254
+ height: "calc(100vh-" + style.height + headerHeight,
255
+ }}
256
+ >
257
+ {MapRender}
258
+ </div>
259
+ )}
191
260
  </div>
192
- {displayMap && <div
193
- className="r-map annuaire-map"
194
- style={{
195
- top: style.height + portalHeaderHeight,
196
- height: "calc(100vh-" + style.height + portalHeaderHeight,
197
- }}
198
- >
199
- {MapRender}
200
- </div>
201
- }
202
- </div>
203
- </Route>
204
- <Route path={"/:name"}>
205
- <div className="r-wrapper container r-annuaire-wrapper">
206
- <div className="r-result r-annuaire-result">
207
- <ContactContent queryUrl={props.queryUrl} onChange={clickID} />
208
- </div>
209
- {displayMap && <div
210
- className="r-map annuaire-map"
211
- style={{
212
- top: style.height + portalHeaderHeight,
213
- height: "calc(100vh-" + style.height + portalHeaderHeight,
214
- }}
215
- >
216
- {MapRender}
261
+ }
262
+ ></Route>
263
+ <Route
264
+ path={"/:name"}
265
+ element={
266
+ <div className="r-wrapper container r-annuaire-wrapper">
267
+ <div className="r-result r-annuaire-result">
268
+ <ContactContent
269
+ queryUrl={props.queryUrl}
270
+ onChange={clickID}
271
+ contextAuthenticatedUser={props.contextAuthenticatedUser}
272
+ />
273
+ </div>
274
+ {displayMap && (
275
+ <div
276
+ className="r-map annuaire-map"
277
+ style={{
278
+ top: style.height + headerHeight,
279
+ height: "calc(100vh-" + style.height + headerHeight,
280
+ }}
281
+ >
282
+ {MapRender}
283
+ </div>
284
+ )}
217
285
  </div>
218
- }
219
- </div>
220
- </Route>
221
- </Switch>
286
+ }
287
+ ></Route>
288
+ </Routes>
222
289
  </div>
223
290
  );
224
291
  }