@@ -13,7 +13,10 @@ const langTextSpan = document.getElementById("langText");
1313const themeTextSpan = document . getElementById ( "themeText" ) ;
1414const sidebar = document . getElementById ( "sidebar" ) ;
1515const 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
1821function renderSidebar ( ) {
1922categoryListEl . innerHTML = "" ;
@@ -30,7 +33,10 @@ li.addEventListener("click", () => {
3033currentCategoryIndex = idx ;
3134renderSidebar ( ) ;
3235renderContent ( ) ;
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} ) ;
3541categoryListEl . appendChild ( li ) ;
3642} ) ;
@@ -55,10 +61,14 @@ html += `<div class="empty">کتابخانهای یافت نشد</div>`;
5561html += `<div class="library-grid">` ;
5662items . forEach ( item => {
5763const 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+ }
5868html += `
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() {
7181sidebarTitleSpan . innerText = currentLang === "fa" ? "دستهبندیها" : "Categories" ;
7282subtitleSpan . innerText = currentLang === "fa" ? "مجموعهای از بهترین کتابخانههای روبی" : "A curated collection of awesome Ruby libraries" ;
7383langTextSpan . innerText = currentLang === "fa" ? "English" : "فارسی" ;
74- document . querySelector ( ".title h1" ) . innerText = "Library Ruby" ;
84+ document . querySelector ( ".title h1" ) . innerText = "Awesome Ruby" ;
7585document . body . classList . remove ( "fa-lang" , "en-lang" ) ;
7686document . body . classList . add ( currentLang === "fa" ? "fa-lang" : "en-lang" ) ;
7787if ( window . innerWidth <= 768 ) {
7888sidebar . classList . remove ( "open" ) ;
89+ overlay . classList . remove ( "show" ) ;
7990}
8091renderSidebar ( ) ;
8192renderContent ( ) ;
@@ -105,18 +116,35 @@ document.body.classList.remove("dark");
105116themeTextSpan . 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+
108129if ( menuToggle ) {
109130menuToggle . addEventListener ( "click" , ( e ) => {
110131e . 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