Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
88 lines (75 loc) · 2.78 KB
/
Copy pathscript.js
File metadata and controls
88 lines (75 loc) · 2.78 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
77
78
79
80
81
82
83
84
85
86
87
88
const skillsList = document.querySelector(".skills__list");
const allButton = document.querySelector("button[data-type='all']");
const frontendButton = document.querySelector("button[data-type='frontend']");
const backendButton = document.querySelector("button[data-type='backend']");
const filterButtons = [allButton, frontendButton, backendButton];
filterButtons.forEach((button) => {
button.addEventListener("click", () => {
skillsList.className = "skills__list"; // Reset class name
skillsList.classList.add(button.dataset.type); // Add relevant class
skillsItems.forEach((skill) => skill.classList.remove("underline"));
});
});
const skillsArray = [
{ name: "HTML", experience: "2013", type: "frontend" },
{ name: "CSS", experience: "2013", type: "frontend" },
{ name: "Javascript", experience: "2013", type: "frontend" },
{ name: "React", experience: "2016", type: "frontend" },
{ name: "Redux", experience: "2017", type: "frontend" },
{ name: "React Testing Library", experience: "2020", type: "frontend" },
{ name: "Node.js", experience: "2020", type: "backend" },
{ name: "Express.js", experience: "2020", type: "backend" },
{ name: "MongoDB", experience: "2020", type: "backend" },
];
const currentYear = new Date().getFullYear();
skillsArray.forEach((skillData) => {
const skill = `
<li
class = "skills__item"
data-type = "${skillData.type}"
data-name = "${skillData.name}"
>
<h2 class="skills__title">
${skillData.name}
</h2>
<span class="skills__years">
${currentYear - skillData.experience} years
</span>
</li>`;
skillsList.innerHTML += skill;
});
const skillsButton = document.querySelectorAll(".skills__button");
skillsButton.forEach((button) => {
button.addEventListener("click", () => {
skillsButton.forEach((skill) =>
skill.classList.remove("skills__button--isActive")
);
button.classList.add("skills__button--isActive");
});
});
const skillsItems = document.querySelectorAll(".skills__item");
skillsItems.forEach((item) => {
item.addEventListener("click", () => {
if (item.classList.contains("underline")) {
item.classList.remove("underline");
} else {
skillsItems.forEach((skill) => skill.classList.remove("underline"));
item.classList.add("underline");
}
});
});
const inputs = document.querySelectorAll(".contact__input");
inputs.forEach((item) => {
if (item.tagName !== "TEXTAREA") {
item.addEventListener("keydown", (event) => {
if (event.key === "_") {
event.preventDefault();
alert("Text don't contain '_'");
}
});
}
});
inputs.forEach((item) => {
item.addEventListener("focus", () => item.classList.add("border-blue"));
item.addEventListener("blur", () => item.classList.add("border-red"));
});