PageSourceSearch

https://www.province-nord.nc/themes/custom/lfk_bootstrap/js/theme.js?tk3b47

js province-nord.nc collected 2026-10-02 06:50:07 UTC 10,726 bytes, 295 lines download raw bytes

1/**
2 * @file
3 * Attaches behaviors for lfk.
4 */
5(function ($, Drupal, drupalSettings) {
6  "use strict";
7
8  Drupal.behaviors.lfk_bootstrap = {
9    attach: function (context, settings) {
10      const breakSM = 576,
11        breakMD = 768,
12        breakLG = 992;
13      
14        $('.windows-print', context).once('print-action').on('click', function () {
15          window.print();
16        });
17
18      $("main", context)
19        .once("lfk")
20        .each(function () {
21          // offcanvas bar
22          var offcanvas = document.getElementById("offcanvas");
23          offcanvas.addEventListener("hide.bs.offcanvas", function () {
24            document.querySelector("body").classList.toggle("offcanvas-open");
25          });
26          offcanvas.addEventListener("show.bs.offcanvas", function () {
27            document.querySelector("body").classList.toggle("offcanvas-open");
28          });
29          // offcanvas menu
30          var regionOffcanvas = document.querySelector("#region-offcanvas");
31          document.addEventListener("click", function (event) {
32            // if (event.target.matches('.nav-link-parent')) {
33            if (
34              event.target.matches(".nav-link-open-sub") ||
35              event.target.parentNode.matches(".nav-link-open-sub")
36            ) {
37              var button = event.target.matches(".nav-link-open-sub")
38                ? event.target
39                : event.target.parentNode;
40              event.preventDefault();
41              document
42                .querySelectorAll(".nav-sub")
43                .forEach((element) => element.classList.add("d-none"));
44              // event.target.nextElementSibling.classList.remove('d-none');
45              button.parentNode.nextElementSibling.classList.remove("d-none");
46              regionOffcanvas.classList.remove("nav-sub-open");
47              regionOffcanvas.classList.add("nav-sub-open");
48            }
49            if (
50              event.target.matches(".menu-back") ||
51              event.target.parentNode.matches(".menu-back")
52            ) {
53              event.preventDefault();
54              regionOffcanvas.classList.remove("nav-sub-open");
55            }
56            return;
57          });
58          offcanvas.addEventListener("hidden.bs.offcanvas", function () {
59            if (regionOffcanvas.classList.contains("nav-sub-open")) {
60              regionOffcanvas.classList.remove("nav-sub-open");
61            }
62          });
63
64          // scrollTo
65          var scrollToBtns = document.querySelectorAll(".scroll-to");
66          scrollToBtns.forEach(function (btn, index) {
67            btn.addEventListener("click", function () {
68              let target = btn.getAttribute("data-target-id");
69              window.scroll({
70                top: document.getElementById(target).offsetTop,
71                left: 0,
72                behavior: "smooth",
73              });
74            });
75          });
76          // scrollToTop
77          const scrollTopBtn = document.querySelector(".scroll-top");
78          scrollTopBtn.addEventListener("click", () => {
79            window.scroll({ top: 0, left: 0, behavior: "smooth" });
80          });
81
82          // accordion open all
83          $(".accordion-show-all").on("click", function () {
84            var accordionTarget = $(this).attr("data-accordion-target");
85            $(accordionTarget).find(".accordion-collapse").collapse("show");
86          });
87          $(".accordion-hide-all").on("click", function () {
88            var accordionTarget = $(this).attr("data-accordion-target");
89            $(accordionTarget).find(".accordion-collapse").collapse("hide");
90          });
91
92          // TwentyTwenty before/after img
93          if ($(".before-after").length > 0) {
94            if (typeof $(".before-after").twentytwenty === "function") {
95              $(".before-after").twentytwenty({
96                before_label: "Avant",
97                after_label: "Après",
98              });
99            } else {
100              console.log(
101                "Ajouter le nid dans preprocess pour lier la librairie TwentyTwenty au noeud"
102              );
103            }
104          }
105
106          // gallery inside accordion
107          var slicksInAccordions = document.querySelectorAll(
108            ".accordion-item .slick-gallery"
109          );
110          if (slicksInAccordions.length > 0) {
111            $(".accordion-button").click(function () {
112              $(this)
113                .parent()
114                .siblings(".accordion-collapse")
115                .find(".slick-gallery")
116                .slick("refresh");
117            });
118          }
119        });
120
121      // admin offcanvas
122      function adminOffcanvas() {
123        var body = document.querySelector("body");
124        if (body.classList.contains("toolbar-horizontal")) {
125          var bodyStyle = body.currentStyle || window.getComputedStyle(body);
126          $(".navbar-toggler").click(function () {
127            var paddingTop = parseInt(bodyStyle.paddingTop);
128            document.getElementById("offcanvas").style.paddingTop =
129              paddingTop + "px";
130          });
131        }
132      }
133
134      // gallery
135      function gallery() {
136        if ($(".slick-gallery").length > 0) {
137          $(".slick-gallery").not(".slick-initialized").slick({
138            arrows: true,
139            slidesToShow: 1,
140            slidesToScroll: 1,
141            infinite: true,
142            autoplay: true,
143            autoplaySpeed: 3000,
144            dots: true,
145            fade: false,
146          });
147        }
148      }
149
150      // communes
151      function communesSlider() {
152        if ($(".view-communes > div > .views-rows").length > 0) {
153          var mapSlider = $(".view-communes > div > .views-rows");
154
155          mapSlider.on("init", function (event, slick) {
156            $('.city-name[data-index="1"]').addClass("active");
157            $('.city-marker[data-index="1"]').addClass("active");
158          });
159
160          mapSlider.not(".slick-initialized").slick({
161            arrows: true,
162            slidesToShow: 1,
163            slidesToScroll: 1,
164            infinite: true,
165            // autoplay: true,
166            autoplaySpeed: 3000,
167            dots: true,
168            fade: false,
169            responsive: [
170              {
171                breakpoint: 768,
172                settings: {
173                  dots: false,
174                },
175              },
176            ],
177          });
178
179          // hover markers + city-name
180          $(".city-name, .city-marker").hover(
181            function () {
182              var tid = $(this).attr("data-tid");
183              $(".tid-" + tid).addClass("hover");
184            },
185            function () {
186              var tid = $(this).attr("data-tid");
187              $(".tid-" + tid).removeClass("hover");
188            }
189          );
190          // click map + slick
191          $(".city-name, .city-marker").click(function (e) {
192            var tid = $(this).attr("data-tid");
193            $(".city-name, .city-marker").removeClass("active");
194            $(".tid-" + tid).addClass("active");
195
196            e.preventDefault();
197            var slideIndex = $(this).attr("data-index");
198            mapSlider.slick("slickGoTo", parseInt(slideIndex - 1));
199          });
200
201          mapSlider.on(
202            "beforeChange",
203            function (event, slick, currentSlide, nextSlide) {
204              $(".city-name, .city-marker").removeClass("active");
205            }
206          );
207
208          mapSlider.on("afterChange", function (event, slick, currentSlide) {
209            $(".city-name[data-index=" + (currentSlide + 1) + "]").addClass(
210              "active"
211            );
212            $(".city-marker[data-index=" + (currentSlide + 1) + "]").addClass(
213              "active"
214            );
215          });
216        }
217      }
218
219      function fileUploadHelpCollapse() {
220        var helpElements = document.querySelectorAll("#help-file");
221        helpElements.forEach(function (helpElement, index) {
222          let newID = helpElement.id + "-" + index;
223          helpElement.previousElementSibling.setAttribute("href", "#" + newID);
224          helpElement.id = newID;
225        });
226      }
227
228      function initSlickSliders() {
229        if ($(".slick-init").not(".slick-initialized").length) {
230          $(".slick-init")
231            .not(".slick-initialized")
232            .each(function () {
233              var slideNum = 1;
234
235              for (let index = 1; index <= 6; index++) {
236                if ($(this).hasClass("slick-init-" + index)) {
237                  slideNum = index;
238                }
239              }
240              $(this).slick({
241                arrows: $(this).hasClass("slick-init-arrows"),
242                slidesToShow: slideNum,
243                slidesToScroll: 1,
244                infinite: $(this).hasClass("slick-init-infinite"),
245                autoplay: $(this).hasClass("slick-autoplay"),
246                autoplaySpeed: 3000,
247                dots: $(this).hasClass("slick-init-dots"),
248                fade: $(this).hasClass("slick-init-fade"),
249                responsive: [
250                  {
251                    breakpoint: breakLG,
252                    settings: {
253                      slidesToShow: slideNum > 1 ? slideNum - 1 : 1,
254                    },
255                  },
256                  {
257                    breakpoint: breakMD,
258                    settings: {
259                      slidesToShow: slideNum > 1 ? 2 : 1,
260                    },
261                  },
262                  {
263                    breakpoint: breakSM,
264                    settings: {
265                      slidesToShow: 1,
266                    },
267                  },
268                ],
269              });
270              window.dispatchEvent(new Event("resize"));
271            });
272        }
273      }
274      window.onload = gallery();
275      window.onload = communesSlider();
276      window.onload = adminOffcanvas();
277      window.onload = fileUploadHelpCollapse();
278      window.onload = initSlickSliders();
279
280      // Behavior to toggle visibility based on file input
281      $('#edit-depots-fichiers-upload', context).once('file-input-check').on('change', function () {
282        // Check if the file input has any files selected
283        var hasFile = this.files && this.files.length > 0;  // More robust check for file presence
284        // Log the file presence state
285        console.log('File present:', hasFile);
286
287        // Toggle display based on file presence
288        $('.consultation-submit, .consultation-checkbox', context).css('display', hasFile ? 'block' : 'none');
289        // Log the visibility change for elements
290        console.log('Elements consultation-submit and consultation-checkbox are now', hasFile ? 'visible' : 'hidden');
291      });
292      
293    }, // This comma closes the attach function
294  };
295})(jQuery, Drupal, drupalSettings);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.