Socialify

Folder ..

Viewing dropdowns.ts
76 lines (67 loc) • 2.5 KB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { mutationObserver } from "../handlers/mutationObserver";

export const quickLinksDropdown = () => {
  const quickDropdown: HTMLElement | null =
    document.getElementById("quickDropdown");

  // Handle Quick Links Dropdown Behavior
  document.addEventListener("click", (e) => {
    if (quickDropdown && quickDropdown.style.display === "block") {
      if (
        e.target !== quickDropdown &&
        e.target !== document.getElementById("quickLinks")
      ) {
        quickDropdown.style.display = "none";
      }
    }
  });

  document.getElementById("quickLinks")?.addEventListener("click", () => {
    if (quickDropdown && quickDropdown.style.display === "none") {
      quickDropdown.style.display = "block";
    } else if (quickDropdown) {
      quickDropdown.style.display = "none";
    }
  });
};

export const profileDropdown = () => {
  mutationObserver("profileDropdown", () => {
    const profileDropdown: HTMLElement | null = document.getElementById("profileDropdown");

    document.addEventListener("click", (e) => {
      if (profileDropdown && profileDropdown.style.display === "block") {
        if (
          e.target !== profileDropdown &&
          e.target !== document.getElementById("profile")
        ) {
          profileDropdown.style.display = "none";
        }
      }
    });

    document.getElementById("profile")?.addEventListener("click", () => {
      if (profileDropdown && profileDropdown.style.display === "none") {
        profileDropdown.style.display = "block";
      } else if (profileDropdown) {
        profileDropdown.style.display = "none";
      }
    });
  });
};

export const notificationDropdown = () => {
  mutationObserver("notificationDropdown", () => {
    const notificationDropdown: HTMLElement | null = document.getElementById("notificationDropdown");

    document.addEventListener("click", (e) => {
      if (notificationDropdown && notificationDropdown.style.display === "flex") {
        if (
          e.target !== notificationDropdown &&
          e.target !== document.getElementById("notificationsButton")
        ) {
          notificationDropdown.style.display = "none";
        }
      }
    });

    document.getElementById("notificationsButton")?.addEventListener("click", () => {
      if (notificationDropdown && notificationDropdown.style.display === "none") {
        notificationDropdown.style.display = "flex";
      } else if (notificationDropdown) {
        notificationDropdown.style.display = "none";
      }
    });
  });
}