Skip to content

Commit cab9863

Browse files
authored
Update main.js
1 parent a370bdd commit cab9863

1 file changed

Lines changed: 39 additions & 11 deletions

File tree

js/main.js

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ const langTextSpan = document.getElementById("langText");
1313
const themeTextSpan = document.getElementById("themeText");
1414
const sidebar = document.getElementById("sidebar");
1515
const menuToggle = document.getElementById("menuToggle");
16-
const mainEl = document.getElementById("main");
16+
17+
let overlay = document.createElement("div");
18+
overlay.className = "overlay";
19+
document.body.appendChild(overlay);
1720

1821
function renderSidebar() {
1922
categoryListEl.innerHTML = "";
@@ -30,7 +33,10 @@ li.addEventListener("click", () => {
3033
currentCategoryIndex = idx;
3134
renderSidebar();
3235
renderContent();
33-
if (window.innerWidth <= 768) sidebar.classList.remove("open");
36+
if (window.innerWidth <= 768) {
37+
sidebar.classList.remove("open");
38+
overlay.classList.remove("show");
39+
}
3440
});
3541
categoryListEl.appendChild(li);
3642
});
@@ -55,10 +61,14 @@ html += `<div class="empty">کتابخانه‌ای یافت نشد</div>`;
5561
html += `<div class="library-grid">`;
5662
items.forEach(item => {
5763
const desc = currentLang === "fa" ? item.descFa : item.descEn;
64+
let shortDesc = desc;
65+
if (desc.length > 200 && window.innerWidth <= 768) {
66+
shortDesc = desc.substring(0, 150) + "...";
67+
}
5868
html += `
5969
<div class="library-card">
60-
<div class="library-name"><a href="${item.url}" target="_blank" rel="noopener noreferrer">${item.name} <i class="fas fa-external-link-alt" style="font-size:0.7rem"></i></a></div>
61-
<div class="library-desc">${desc}</div>
70+
<div class="library-name"><a href="${item.url}" target="_blank" rel="noopener noreferrer">${item.name} <i class="fas fa-external-link-alt" style="font-size:0.65rem"></i></a></div>
71+
<div class="library-desc">${shortDesc}</div>
6272
</div>
6373
`;
6474
});
@@ -71,11 +81,12 @@ function updateUIStrings() {
7181
sidebarTitleSpan.innerText = currentLang === "fa" ? "دسته‌بندی‌ها" : "Categories";
7282
subtitleSpan.innerText = currentLang === "fa" ? "مجموعه‌ای از بهترین کتابخانه‌های روبی" : "A curated collection of awesome Ruby libraries";
7383
langTextSpan.innerText = currentLang === "fa" ? "English" : "فارسی";
74-
document.querySelector(".title h1").innerText = "Library Ruby";
84+
document.querySelector(".title h1").innerText = "Awesome Ruby";
7585
document.body.classList.remove("fa-lang", "en-lang");
7686
document.body.classList.add(currentLang === "fa" ? "fa-lang" : "en-lang");
7787
if (window.innerWidth <= 768) {
7888
sidebar.classList.remove("open");
89+
overlay.classList.remove("show");
7990
}
8091
renderSidebar();
8192
renderContent();
@@ -105,18 +116,35 @@ document.body.classList.remove("dark");
105116
themeTextSpan.innerText = (currentLang === "fa" ? (currentTheme === "dark" ? "روشن" : "تاریک") : (currentTheme === "dark" ? "Light" : "Dark"));
106117
}
107118

119+
function openSidebar() {
120+
sidebar.classList.add("open");
121+
overlay.classList.add("show");
122+
}
123+
124+
function closeSidebar() {
125+
sidebar.classList.remove("open");
126+
overlay.classList.remove("show");
127+
}
128+
108129
if (menuToggle) {
109130
menuToggle.addEventListener("click", (e) => {
110131
e.stopPropagation();
111-
sidebar.classList.toggle("open");
132+
if (sidebar.classList.contains("open")) {
133+
closeSidebar();
134+
} else {
135+
openSidebar();
136+
}
112137
});
113138
}
114139

115-
document.addEventListener("click", function(event) {
116-
if (window.innerWidth <= 768) {
117-
if (!sidebar.contains(event.target) && !menuToggle.contains(event.target)) {
118-
sidebar.classList.remove("open");
119-
}
140+
overlay.addEventListener("click", closeSidebar);
141+
142+
window.addEventListener("resize", function() {
143+
if (window.innerWidth > 768) {
144+
closeSidebar();
145+
renderContent();
146+
} else {
147+
renderContent();
120148
}
121149
});
122150

0 commit comments

Comments
 (0)