reha.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. /**
  2. * @file
  3. * reha behaviors.
  4. */
  5. (function (Drupal) {
  6. 'use strict';
  7. Drupal.behaviors.reha = {
  8. attach: function (context, settings) {
  9. console.log('It works!');
  10. }
  11. };
  12. } (Drupal));
  13. jQuery(document).ready(function($){
  14. // menu déroulant
  15. ////////////// contacts ///////
  16. $(".bouton-contact").click(function(event) {
  17. // Fermer .connexion-full s'il est déroulé
  18. if ($(".connexion-full").is(":visible")) {
  19. $(".connexion-full").slideUp();
  20. }
  21. if ($(".connected-full").is(":visible")) {
  22. $(".connected-full").slideUp();
  23. }
  24. // Ouvrir .contacts-full
  25. $(".contacts-full").slideToggle();
  26. });
  27. ////////////// connexion ///////
  28. $(".bouton-connexion").click(function(event) {
  29. // Fermer .contacts-full s'il est déroulé
  30. if ($(".contacts-full").is(":visible")) {
  31. $(".contacts-full").slideUp();
  32. }
  33. // Ouvrir .connexion-full
  34. $(".connexion-full").slideToggle();
  35. });
  36. $(".bouton-connected").click(function(event) {
  37. // Fermer .contacts-full s'il est déroulé
  38. if ($(".contacts-full").is(":visible")) {
  39. $(".contacts-full").slideUp();
  40. }
  41. // Ouvrir .connected-full
  42. $(".connected-full").slideToggle();
  43. });
  44. $(".titre").click(function(event) {
  45. if ($(".connected-full").is(":visible")) {
  46. $(".connected-full").slideUp();
  47. }
  48. if ($(".contacts-full").is(":visible")) {
  49. $(".contacts-full").slideUp();
  50. }
  51. if ($(".connexion-full").is(":visible")) {
  52. $(".connexion-full").slideUp();
  53. }
  54. // // Ouvrir .connexion-full
  55. // $(".connected-full").slideToggle();
  56. });
  57. $("#edit-field-dossier-de-candidature-0--label").click(function(event) {
  58. event.preventDefault();
  59. // Ouvrir .connexion-full
  60. $("#edit-field-dossier-de-candidature-0--description>ul.main").slideToggle();
  61. });
  62. ////////////// tiroir fichiers ///////
  63. $(document).ready(function() {
  64. // Check the initial state for mobile and add class if needed
  65. function checkMobileAndApplyClass() {
  66. if (window.innerWidth <= 768) { // Adjust the width to match your mobile breakpoint
  67. $(".layout-sidebar-second").addClass('display-none');
  68. } else {
  69. $(".layout-sidebar-second").removeClass('display-none');
  70. }
  71. }
  72. // Run the mobile check on page load
  73. checkMobileAndApplyClass();
  74. // Re-check when the window is resized
  75. $(window).resize(function() {
  76. checkMobileAndApplyClass();
  77. });
  78. // Gestion toggle du panneau au clic sur le h2
  79. $("aside.layout-sidebar-second h2").click(function () {
  80. const aside = $(".layout-sidebar-second");
  81. const heading = $("aside.layout-sidebar-second h2");
  82. const isClosed = aside.hasClass('close');
  83. if (isClosed) {
  84. aside.removeClass('close');
  85. heading.removeClass('__close');
  86. sessionStorage.setItem('asideOpened', 'false');
  87. } else {
  88. aside.addClass('close');
  89. heading.addClass('__close');
  90. sessionStorage.setItem('asideOpened', 'true');
  91. }
  92. });
  93. // Forcer la fermeture du panneau au clic sur .views-field-title
  94. $("aside.layout-sidebar-second .view-current-user-doc-profile .views-field-title").click(function () {
  95. $(".layout-sidebar-second").addClass('close');
  96. $(".layout-sidebar-second h2").addClass('__close');
  97. sessionStorage.setItem('asideOpened', 'true');
  98. });
  99. });
  100. });
  101. // slideshow home
  102. (function($, window) {
  103. console.log('hello slick')
  104. $(document).ready(function(){
  105. $('.view-id-sites.view-display-id-block_1').slick({
  106. slidesToShow: 1,
  107. // slidesToScroll: 1,
  108. dots: false,
  109. arrows: true,
  110. centerMode: true,
  111. adaptiveHeight: true,
  112. // centerPadding: '100px',
  113. autoplay: true,
  114. autoplaySpeed: 5000,
  115. responsive: [
  116. {
  117. breakpoint: 810,
  118. settings: {
  119. slidesToShow: 1,
  120. adaptiveHeight: true,
  121. arrows: false,
  122. draggable: true,
  123. centerMode: true,
  124. }
  125. }]
  126. });
  127. console.log('salut slick home');
  128. });
  129. $(document).ready(function(){
  130. $('.view-id-actus.view-display-id-block_1').slick({
  131. slidesToShow: 3,
  132. slidesToScroll: 1,
  133. dots: true,
  134. arrows: true,
  135. // centerMode: true,
  136. draggable: true,
  137. // centerPadding: '100px',
  138. infinite: false,
  139. responsive: [
  140. {
  141. breakpoint: 810,
  142. settings: {
  143. slidesToShow: 1,
  144. slidesToScroll: 1,
  145. adaptiveHeight: true,
  146. arrows: false,
  147. draggable: true,
  148. // centerMode: true,
  149. }
  150. }]
  151. });
  152. console.log('slick actu');
  153. });
  154. $(document).ready(function(){
  155. $('.node-type-site .page-node-site .field--name-field-image .field__items').slick({
  156. slidesToShow: 1,
  157. slidesToScroll: 1,
  158. dots: true,
  159. arrows: false,
  160. // adaptiveHeight: true,
  161. centerMode: true,
  162. // centerPadding: '100px',
  163. autoplay:true,
  164. autoplaySpeed: 5000,
  165. responsive: [
  166. {
  167. breakpoint: 810,
  168. settings: {
  169. slidesToShow: 1,
  170. adaptiveHeight: true,
  171. arrows: false,
  172. draggable: true,
  173. centerMode: true,
  174. }
  175. }]
  176. });
  177. console.log('slick site');
  178. });
  179. // /////////////////
  180. //// ancre dans texte au click parragraphe correspondant arrive en dessous du header
  181. function adjustAnchor() {
  182. var $anchor = $(window.location.hash); // Select the anchor element based on the hash in the URL
  183. var fixedElementHeight = $('.block-region-first').outerHeight(); // Get the height of the sticky element
  184. if ($anchor.length > 0) {
  185. $('html, body').stop().animate({
  186. scrollTop: $anchor.offset().top - fixedElementHeight // Adjust the scroll position to account for the sticky element height
  187. }, 0);
  188. }
  189. }
  190. // Call the function on page load if there's a hash
  191. if (window.location.hash) {
  192. adjustAnchor();
  193. }
  194. // Adjust the anchor on hash change
  195. $(window).on('hashchange', function() {
  196. adjustAnchor();
  197. });
  198. //////////////////////////////////////////
  199. // menu ancre paragraphe quand actif
  200. jQuery(function($) {
  201. // Function to set the active class based on the current path
  202. function setActiveLink() {
  203. var path = window.location.href;
  204. console.log(path);
  205. $(".layout__region--first .block-region-first li a").each(function() {
  206. if (this.href === path) {
  207. $(this).closest('a').addClass('active');
  208. }
  209. });
  210. }
  211. // Initially set the active link based on the current URL
  212. setActiveLink();
  213. // Update the active link on click
  214. $(".layout__region--first .block-region-first li a").on('click', function() {
  215. $(".layout__region--first .block-region-first li a").removeClass('active');
  216. $(this).addClass('active');
  217. });
  218. });
  219. })(jQuery, window);
  220. /////////////////// déplace synthèse de tous les sites (dans block config 3) dans node site pour faciliter css ///////////////////
  221. (function ($, Drupal) {
  222. Drupal.behaviors.moveFieldContent = {
  223. attach: function (context, settings) {
  224. // Vérifiez que les éléments existent avant de tenter de les manipuler
  225. if ($('#block-reha-config-pages-3 .field--name-field-fichier', context).length && $('.node-type-site .body-content-site .links-content', context).length) {
  226. // Déplacer le contenu de .field--name-field-fichier vers .links-content
  227. var fieldContent = $('#block-reha-config-pages-3 .field--name-field-fichier', context).detach();
  228. $('.node-type-site .body-content-site .links-content', context).append(fieldContent);
  229. }
  230. if ($('#block-reha-titredepage h1', context).length && $('.node-type-actualite .entete_actu .infos_content', context).length) {
  231. // Déplacer le contenu de .field--name-field-fichier vers .links-content
  232. var fieldContent = $('#block-reha-titredepage h1', context).detach();
  233. $('.node-type-actualite .entete_actu .infos_content', context).append(fieldContent);
  234. }
  235. }
  236. };
  237. })(jQuery, Drupal);
  238. // //////////////////// start déplacer block-reha-titredepage dans node-type-actu & ressource infos-content ////////////////////////
  239. // (function ($, Drupal) {
  240. // Drupal.behaviors.moveFieldContent = {
  241. // attach: function (context, settings) {
  242. // // Vérifiez que les éléments existent avant de tenter de les manipuler
  243. // if ($('#block-reha-titredepage h1', context).length && $('.node-type-actualite .entete_actu .infos_content', context).length) {
  244. // // Déplacer le contenu de .field--name-field-fichier vers .links-content
  245. // var fieldContent = $('#block-reha-titredepage h1', context).detach();
  246. // $('.node-type-actualite .entete_actu .infos_content', context).append(fieldContent);
  247. // }
  248. // }
  249. // };
  250. // })(jQuery, Drupal);
  251. // //////////////////// end div infos site ////////////////////////
  252. function initDescriptionTooltips(root = document) {
  253. root.querySelectorAll('.description').forEach(el => {
  254. if (!el.hasAttribute('data-text')) {
  255. el.setAttribute('data-text', el.textContent.trim());
  256. }
  257. });
  258. }
  259. // Initialisation sur la page actuelle
  260. initDescriptionTooltips();
  261. // Observer pour détecter les nouveaux éléments ajoutés au DOM
  262. const observer = new MutationObserver(mutations => {
  263. mutations.forEach(mutation => {
  264. mutation.addedNodes.forEach(node => {
  265. if (node.nodeType === 1) { // élément HTML
  266. if (node.matches('.description')) {
  267. initDescriptionTooltips(node.parentNode);
  268. } else {
  269. // Si c'est un conteneur qui contient des .description
  270. initDescriptionTooltips(node);
  271. }
  272. }
  273. });
  274. });
  275. });
  276. // Observer sur tout le body
  277. observer.observe(document.body, { childList: true, subtree: true });