Skip to content

Commit 35f2f80

Browse files
committed
first commit
1 parent 86100e2 commit 35f2f80

File tree

7 files changed

+2669
-0
lines changed

7 files changed

+2669
-0
lines changed

assets/e-market.jpg

204 KB
Loading

assets/puma-clone.png

1.56 MB
Loading

assets/task-manager.png

23 KB
Loading

assets/typing-master.png

20.9 KB
Loading

index.html

Lines changed: 761 additions & 0 deletions
Large diffs are not rendered by default.

main.js

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
"use strict";
2+
3+
//Opening or closing side bar
4+
5+
const elementToggleFunc = function (elem) {
6+
elem.classList.toggle("active");
7+
};
8+
9+
const sidebar = document.querySelector("[data-sidebar]");
10+
const sidebarBtn = document.querySelector("[data-sidebar-btn]");
11+
12+
sidebarBtn.addEventListener("click", function () {
13+
elementToggleFunc(sidebar);
14+
});
15+
16+
//Activating Modal-testimonial
17+
18+
const testimonialsItem = document.querySelectorAll("[data-testimonials-item]");
19+
const modalContainer = document.querySelector("[data-modal-container]");
20+
const modalCloseBtn = document.querySelector("[data-modal-close-btn]");
21+
const overlay = document.querySelector("[data-overlay]");
22+
23+
const modalImg = document.querySelector("[data-modal-img]");
24+
const modalTitle = document.querySelector("[data-modal-title]");
25+
const modalText = document.querySelector("[data-modal-text]");
26+
27+
const testimonialsModalFunc = function () {
28+
modalContainer.classList.toggle("active");
29+
overlay.classList.toggle("active");
30+
};
31+
32+
for (let i = 0; i < testimonialsItem.length; i++) {
33+
testimonialsItem[i].addEventListener("click", function () {
34+
modalImg.src = this.querySelector("[data-testimonials-avatar]").src;
35+
modalImg.alt = this.querySelector("[data-testimonials-avatar]").alt;
36+
modalTitle.innerHTML = this.querySelector(
37+
"[data-testimonials-title]"
38+
).innerHTML;
39+
modalText.innerHTML = this.querySelector(
40+
"[data-testimonials-text]"
41+
).innerHTML;
42+
43+
testimonialsModalFunc();
44+
});
45+
}
46+
47+
//Activating close button in modal-testimonial
48+
49+
modalCloseBtn.addEventListener("click", testimonialsModalFunc);
50+
overlay.addEventListener("click", testimonialsModalFunc);
51+
52+
//Activating Filter Select and filtering options
53+
54+
const select = document.querySelector("[data-select]");
55+
const selectItems = document.querySelectorAll("[data-select-item]");
56+
const selectValue = document.querySelector("[data-select-value]");
57+
const filterBtn = document.querySelectorAll("[data-filter-btn]");
58+
59+
select.addEventListener("click", function () {
60+
elementToggleFunc(this);
61+
});
62+
63+
for (let i = 0; i < selectItems.length; i++) {
64+
selectItems[i].addEventListener("click", function () {
65+
let selectedValue = this.innerText.toLowerCase();
66+
selectValue.innerText = this.innerText;
67+
elementToggleFunc(select);
68+
filterFunc(selectedValue);
69+
});
70+
}
71+
72+
const filterItems = document.querySelectorAll("[data-filter-item]");
73+
74+
const filterFunc = function (selectedValue) {
75+
for (let i = 0; i < filterItems.length; i++) {
76+
if (selectedValue == "all") {
77+
filterItems[i].classList.add("active");
78+
} else if (selectedValue == filterItems[i].dataset.category) {
79+
filterItems[i].classList.add("active");
80+
} else {
81+
filterItems[i].classList.remove("active");
82+
}
83+
}
84+
};
85+
86+
//Enabling filter button for larger screens
87+
88+
let lastClickedBtn = filterBtn[0];
89+
90+
for (let i = 0; i < filterBtn.length; i++) {
91+
filterBtn[i].addEventListener("click", function () {
92+
let selectedValue = this.innerText.toLowerCase();
93+
selectValue.innerText = this.innerText;
94+
filterFunc(selectedValue);
95+
96+
lastClickedBtn.classList.remove("active");
97+
this.classList.add("active");
98+
lastClickedBtn = this;
99+
});
100+
}
101+
102+
// Enabling Contact Form
103+
104+
const form = document.querySelector("[data-form]");
105+
const formInputs = document.querySelectorAll("[data-form-input]");
106+
const formBtn = document.querySelector("[data-form-btn]");
107+
108+
for (let i = 0; i < formInputs.length; i++) {
109+
formInputs[i].addEventListener("input", function () {
110+
if (form.checkValidity()) {
111+
formBtn.removeAttribute("disabled");
112+
} else {
113+
formBtn.setAttribute("disabled", "");
114+
}
115+
});
116+
}
117+
118+
// Enabling Page Navigation
119+
120+
const navigationLinks = document.querySelectorAll("[data-nav-link]");
121+
const pages = document.querySelectorAll("[data-page]");
122+
123+
for (let i = 0; i < navigationLinks.length; i++) {
124+
navigationLinks[i].addEventListener("click", function () {
125+
for (let i = 0; i < pages.length; i++) {
126+
if (this.innerHTML.toLowerCase() == pages[i].dataset.page) {
127+
pages[i].classList.add("active");
128+
navigationLinks[i].classList.add("active");
129+
window.scrollTo(0, 0);
130+
} else {
131+
pages[i].classList.remove("active");
132+
navigationLinks[i].classList.remove("active");
133+
}
134+
}
135+
});
136+
}

0 commit comments

Comments
 (0)