PageSourceSearch

https://sqb.uz/local/templates/sqb/js/mobilejs.js?17508466252508

js sqb.uz collected 2026-09-24 09:50:59 UTC 2,508 bytes, 83 lines download raw bytes

1document.addEventListener("DOMContentLoaded", function () {
2  const mobileButtons = document.querySelectorAll(".mobile_menu .mobilebtn");
3
4  mobileButtons.forEach(function (btn) {
5    btn.addEventListener("click", function () {
6      const menuActive = document.getElementById("menuActive");
7
8      if (menuActive.classList.contains("active")) {
9        closeMenu();
10      } else {
11        openMenu();
12      }
13    });
14  });
15
16  function openMenu() {
17    const menuActive = document.getElementById("menuActive");
18    menuActive.classList.add("active");
19    document.body.style.overflow = "hidden";
20
21    // Fade in
22    setTimeout(() => {
23      menuActive.style.opacity = "1";
24    }, 10);
25  }
26
27  function closeMenu() {
28    const menuActive = document.getElementById("menuActive");
29
30    // Fade out
31    menuActive.style.opacity = "0";
32
33    setTimeout(() => {
34      menuActive.classList.remove("active");
35      document.body.style.overflow = "auto";
36    }, 300); // Matches the CSS transition duration
37  }
38
39  // Optional: Close button functionality
40  document.addEventListener("click", function (e) {
41    if (e.target.classList.contains("closeMenuBtn")||
42    e.target.closest(".closeMenuBtn")) {
43      closeMenu();
44    }
45  });
46
47  document.querySelectorAll(".accordion-headerMobile").forEach((header) => {
48    header.addEventListener("click", () => {
49      const content = header.nextElementSibling;
50      const isOpen = header.classList.contains("active");
51
52      // Close all
53      document
54        .querySelectorAll(".accordion-headerMobile")
55        .forEach((h) => h.classList.remove("active"));
56      document
57        .querySelectorAll(".accordion-contentMobile")
58        .forEach((c) => (c.style.maxHeight = null));
59
60      // Open current if not already open
61      if (!isOpen) {
62        header.classList.add("active");
63        content.style.maxHeight = content.scrollHeight + "px";
64      }
65    });
66  });
67
68  const tabButtons = document.querySelectorAll(".mobileTab-btn");
69  const tabPanels = document.querySelectorAll(".mobileTab-panel");
70
71  tabButtons.forEach((button) => {
72    button.addEventListener("click", () => {
73      // Remove active classes
74      tabButtons.forEach((btn) => btn.classList.remove("active"));
75      tabPanels.forEach((panel) => panel.classList.remove("active"));
76
77      // Add active to clicked tab and its panel
78      button.classList.add("active");
79      const targetPanel = document.getElementById(button.dataset.tab);
80      targetPanel.classList.add("active");
81    });
82  });
83});

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.