PageSourceSearch

https://macovex.pt/catalog/view/theme/journal3/js/custom.js?v=7c1b5835

js macovex.pt collected 2026-10-04 13:28:10 UTC 12,311 bytes, 399 lines download raw bytes

1jQuery(document).ready(function ($) {
2  
3  function checkForElement() {
4    if ($(".module-filter").length > 0) {
5      $(".module-filter a.accordion-toggle").click(function () {
6        $(this).closest(".panel").toggleClass("panel-active");
7      });
8      clearInterval(interval);
9    }
10  }
11  var interval = setInterval(checkForElement, 100);
12
13  var hamb_menu = ".mobile-main-menu-wrapper";
14  var main_menu = hamb_menu + " " + "#main-menu";
15
16  var category_items =
17    main_menu + " " + "li.main-menu-item.dropdown > a.collapse-toggle";
18
19  var subcategory_items =
20    main_menu +
21    " " +
22    'li.menu-item:not(.main-menu-item, [class*="menu-item-c"]) > a.collapse-toggle';
23
24  var back_arrow_i =
25    '<i class="icon icon-arrow-left-light menu-back-icon"></i>';
26  var menu_back = main_menu + " " + ".menu-back-icon";
27  var menu_close = ".mobile-main-menu-container .mobile-wrapper-header .x";
28
29  function backclick() {
30    $(main_menu + " div.collapse").removeClass("is-visible in");
31    $(main_menu + " li.menu-item").removeClass("is-invisible");
32    $(main_menu + " li.main-menu-item > a.collapse-toggle").removeClass(
33      "is-invisible go-back-menu",
34    );
35    $(main_menu + " li.main-menu-item > a.collapse-toggle").show();
36    $(menu_back).remove();
37    return false;
38  }
39
40  function onClickCategory(e) {
41    if (isDesktop()) return;
42    if (
43      $(e.target).hasClass("menu-back-icon") ||
44      $(e.target).closest(".menu-back-icon").length > 0
45    ) {
46      return;
47    }
48    if ($(this).hasClass("go-back-menu")) {
49      window.location.href = $(this).attr("href");
50    } else {
51      $(this).next().addClass("is-visible in");
52      $(this).addClass("go-back-menu");
53      if ($(this).find("i.menu-back-icon").length === 0) {
54        $(this).prepend(back_arrow_i);
55      }
56      $(this).parent().siblings().addClass("is-invisible");
57      return false;
58    }
59  }
60
61  function onClickSubcategory(e) {
62    if (isDesktop()) return;
63    if (
64      $(e.target).hasClass("menu-back-icon") ||
65      $(e.target).closest(".menu-back-icon").length > 0
66    ) {
67      return;
68    }
69    if ($(this).hasClass("go-back-menu")) {
70      window.location.href = $(this).attr("href");
71    } else {
72      $(this).next().addClass("is-visible in");
73      $(this).addClass("go-back-menu");
74      if ($(this).find("i.menu-back-icon").length === 0) {
75        $(this).prepend(back_arrow_i);
76      }
77      $(this).parent().siblings().addClass("is-invisible");
78      return false;
79    }
80  }
81
82  function backToCategories() {
83    if (isDesktop()) { clearDesktopSubmenu(); return false; }
84    $(main_menu + " > .j-menu")
85      .children("li")
86      .removeClass("is-invisible");
87    $(main_menu + " li.main-menu-item > a.collapse-toggle").removeClass(
88      "is-invisible go-back-menu",
89    );
90    $(main_menu + " li.main-menu-item > a.collapse-toggle").show();
91    $(main_menu + " div.collapse").removeClass("is-visible in");
92    $(menu_back).remove();
93    return false;
94  }
95
96  $(category_items).on("click", onClickCategory);
97  $(subcategory_items).on("click", onClickSubcategory);
98
99  $(document).on("click", ".menu-back-icon", function (e) {
100    e.preventDefault();
101    e.stopPropagation();
102    backToCategories();
103    return false;
104  });
105
106  $(menu_close).on("click", function (event) {
107    event.preventDefault();
108    backclick();
109  });
110
111  var menu = $(
112    "body > div.mobile-container.mobile-main-menu-container.animating",
113  );
114  $(window).click(function (event) {
115    if (!menu.is(event.target) && menu.has(event.target).length === 0) {
116      backclick();
117    }
118  });
119
120  $("#main-menu-2 .main-menu-item-1").click(function (e) {
121    e.stopPropagation();
122    backclick();
123    $("#custom-p-main-menu .menu-trigger.main-menu-item").click();
124  });
125
126  $(".links-menu-710 .links-menu-item-5").click(function (e) {
127    e.stopPropagation();
128    backclick();
129    $("#custom-p-main-menu .menu-trigger.main-menu-item").click();
130  });
131
132 if ($("html").is(".layout-54")) {
133    var gethash = window.location.href.split("#")[1];
134    if (gethash) {
135        var caphash = gethash.charAt(0).toUpperCase() + gethash.substr(1).toLowerCase();
136        $('select[name="item[5]"] option[value*="' + caphash + '"]').prop("selected", true);
137    }
138  }
139
140  function toggleScrollLock() {
141    if ($(".mobile-cart-content-container.animating-cart").length > 0) {
142      $("html, body").addClass("scroll-lock");
143    } else {
144      $("html, body").removeClass("scroll-lock");
145    }
146  }
147
148  toggleScrollLock();
149
150  $(".mobile-cart-content-container").on("change", function () {
151    toggleScrollLock();
152  });
153
154  $(window).scroll(function () {
155    if ($(this).scrollTop() < 100) {
156      $(".mobile-header-active .mini-search .top-header-search").addClass(
157        "hidden",
158      );
159    } else {
160      $(".mobile-header-active .mini-search .top-header-search").removeClass(
161        "hidden",
162      );
163    }
164  });
165  $(window).scroll(function () {
166    if ($(this).scrollTop() == 0) {
167      $(".mobile-bar.sticky-bar.mobile-bar-sticky").css("box-shadow", "none");
168    } else {
169      $(".mobile-bar.sticky-bar.mobile-bar-sticky").css(
170        "box-shadow",
171        "0 2px 12px -2px rgb(19 19 19 / 18%)",
172      );
173    }
174  });
175
176  $("#cart .cart-heading").on("click", function (event) {
177    event.preventDefault();
178    $("html, body").addClass("scroll-lock");
179  });
180
181  $("html.mobile .mobile-cart-content-container .mobile-wrapper-header .x").on(
182    "click",
183    function (event) {
184      event.preventDefault();
185      $("html, body").removeClass("scroll-lock");
186    },
187  );
188
189  $(".desktop-cart-wrapper.default-cart-wrapper > div").click(function (event) {
190    event.preventDefault();
191    $("#cart-content").hide();
192    $("body > div.mobile-container.mobile-cart-content-container").addClass(
193      "animating-cart",
194    );
195    $("html, body").addClass("scroll-lock");
196
197    $(
198      "body > div.mobile-container.mobile-cart-content-container.animating-cart > div.mobile-wrapper-header > a",
199    ).click(function () {
200      $(
201        "body > div.mobile-container.mobile-cart-content-container.animating-cart",
202      ).removeClass("animating-cart");
203      $("html, body").removeClass("scroll-lock");
204    });
205
206    var $cart = $(
207      "body > div.mobile-container.mobile-cart-content-container.animating-cart",
208    );
209
210    $(window).click(function (event) {
211      if (!$cart.is(event.target) && $cart.has(event.target).length === 0) {
212        $(
213          "body > div.mobile-container.mobile-cart-content-container.animating-cart",
214        ).removeClass("animating-cart");
215        $("html, body").removeClass("scroll-lock");
216      }
217    });
218  });
219
220  $(".form-group input, .form-group textarea, .form-group select").on(
221    "input",
222    function () {
223      $(this).closest(".form-group").removeClass("has-error");
224      $(this).closest(".form-group").next(".text-danger").remove();
225    },
226  );
227
228  function checkForElementAlert() {
229    if ($(".alert.alert-success:not(.no-close)").length > 0) {
230      setTimeout(function () {
231        $(".alert.alert-success:not(.no-close)").fadeOut("slow", function () {
232          $(this).remove();
233        });
234      }, 3500);
235    }
236  }
237  var interval = setInterval(checkForElementAlert, 500);
238
239  var $menuContainer = $("body > div.mobile-container.mobile-main-menu-container");
240  var $mainMenu = $menuContainer.find("#main-menu");
241  var $menuWrapper = $menuContainer.find(".mobile-main-menu-wrapper");
242  var $mobileHeader = $menuContainer.find(".mobile-wrapper-header");
243
244  var $leftPanel = $('<div id="desktop-left-panel"></div>');
245  var $subPanel = $('<div id="desktop-submenu-panel"></div>');
246
247  function initDesktopLayout() {
248    if ($menuWrapper.find("#desktop-left-panel").length) return;
249    $mobileHeader.detach();
250    $mainMenu.detach();
251    $leftPanel.append($mobileHeader).append($mainMenu);
252    $menuWrapper.prepend($leftPanel);
253    if (!$menuWrapper.find("#desktop-submenu-panel").length) {
254      $menuWrapper.append($subPanel);
255    }
256  }
257
258  function destroyDesktopLayout() {
259    if (!$menuWrapper.find("#desktop-left-panel").length) return;
260    $mobileHeader.detach();
261    $mainMenu.detach();
262    $leftPanel.detach();
263    $menuWrapper.prepend($mainMenu);
264    $menuWrapper.prepend($mobileHeader);
265  }
266
267  function isDesktop() {
268    return window.innerWidth >= 992;
269  }
270
271  function clearDesktopSubmenu() {
272    $mainMenu.find("li.main-menu-item").removeClass("desktop-cat-active");
273    $leftPanel.removeClass("has-submenu-open");
274    $menuContainer.removeClass("submenu-open");
275    $subPanel.removeClass("panel-open").html("");
276  }
277
278  function renderSubPanel($parentLi) {
279    var $headerLi = $parentLi.clone(false, false);
280    var baseClass = $parentLi.attr("class").replace(/\bdesktop-submenu-header\b/g, "").trim();
281    $headerLi.attr("class", baseClass + " desktop-submenu-header");
282    $headerLi.find("> a").removeClass("go-back-menu").find("i.menu-back-icon").remove();
283    $headerLi.find("> a .open-menu").hide();
284    $headerLi.find("> div.collapse").addClass("is-visible in");
285    $headerLi.find("> div.collapse div.collapse").addClass("is-visible in");
286    $headerLi.find("> div.collapse .open-menu").hide();
287
288    var headerHeight = $mobileHeader.outerHeight() || 0;
289    var $spacer = $("<div class=\"desktop-subpanel-header-spacer\"></div>").css({height: headerHeight + "px", display: "block"});
290
291    var $outerWrap = $("<div class=\"mobile-main-menu-container main-menu main-menu-3 accordion-menu\"></div>");
292    var $innerWrap = $("<ul class=\"j-menu\"></ul>");
293    $innerWrap.append($headerLi);
294    $outerWrap.append($innerWrap);
295
296    $subPanel
297      .removeClass("panel-open")
298      .html("")
299      .append($spacer)
300      .append($outerWrap);
301
302    void $subPanel[0].offsetWidth;
303    $subPanel.addClass("panel-open");
304    $menuContainer.addClass("submenu-open");
305  }
306
307  function bindDesktopEvents() {
308    $(category_items).off("click.desktop").on("click.desktop", function (e) {
309      if (!isDesktop()) return;
310      if ($(this).closest("#desktop-submenu-panel").length) return;
311
312      if (
313        $(e.target).hasClass("menu-back-icon") ||
314        $(e.target).closest(".menu-back-icon").length > 0
315      ) {
316        clearDesktopSubmenu();
317        e.preventDefault();
318        e.stopImmediatePropagation();
319        return false;
320      }
321
322      var $a = $(this);
323      var $li = $a.closest("li.main-menu-item");
324      var $collapse = $a.next("div.collapse");
325
326      if ($collapse.length === 0) return;
327
328      e.preventDefault();
329      e.stopImmediatePropagation();
330
331      $mainMenu.find("li.main-menu-item").removeClass("desktop-cat-active");
332      $li.addClass("desktop-cat-active");
333      $leftPanel.addClass("has-submenu-open");
334
335      renderSubPanel($li);
336      return false;
337    });
338
339    $(subcategory_items).off("click.desktop").on("click.desktop", function (e) {
340      if (!isDesktop()) return;
341      if ($(this).closest("#desktop-submenu-panel").length) return;
342
343      if (
344        $(e.target).hasClass("menu-back-icon") ||
345        $(e.target).closest(".menu-back-icon").length > 0
346      ) {
347        return;
348      }
349
350      var $a = $(this);
351      var $li = $a.closest("li");
352      var $collapse = $a.next("div.collapse");
353
354      if ($collapse.length === 0) return;
355
356      e.preventDefault();
357      e.stopImmediatePropagation();
358
359      renderSubPanel($li);
360      return false;
361    });
362  }
363
364  function unbindDesktopEvents() {
365    $(category_items).off("click.desktop");
366    $(subcategory_items).off("click.desktop");
367    clearDesktopSubmenu();
368  }
369
370  function handleDesktopMenuResize() {
371    if (isDesktop()) {
372      initDesktopLayout();
373      $subPanel.show();
374      bindDesktopEvents();
375    } else {
376      $subPanel.hide();
377      unbindDesktopEvents();
378      destroyDesktopLayout();
379    }
380  }
381  handleDesktopMenuResize();
382  $(window).on("resize.desktopmenu", handleDesktopMenuResize);
383
384  if (typeof MutationObserver !== "undefined" && $menuContainer.length) {
385    var _desktopMenuObserver = new MutationObserver(function (mutations) {
386      mutations.forEach(function (mutation) {
387        if (mutation.attributeName === "class") {
388          if (!$menuContainer.hasClass("animating")) {
389            clearDesktopSubmenu();
390          } else if (isDesktop()) {
391            bindDesktopEvents();
392          }
393        }
394      });
395    });
396    _desktopMenuObserver.observe($menuContainer[0], { attributes: true });
397  }
398
399});

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.