Skip to content

Commit 32660bc

Browse files
committed
sidebar - added collapsable menu links
1 parent 15aeff0 commit 32660bc

File tree

4 files changed

+136
-0
lines changed

4 files changed

+136
-0
lines changed

src/css/bundle.css

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,21 @@ svg {
372372
.inline-block { display: inline-block; }
373373
.inline { display: inline; }
374374

375+
/*REMOVE HIGHLIGHT BACKGROUND*/
376+
.no-selection::selection {
377+
background: transparent;
378+
color: inherit;
379+
}
380+
381+
.no-selection::-moz-selection {
382+
background: transparent;
383+
color: inherit;
384+
}
385+
386+
.no-selection {
387+
user-select: none;
388+
}
389+
375390

376391
/* --- flexbox.css --- */
377392
.flex { display: flex; gap: var(--space-4); }
@@ -4550,6 +4565,35 @@ html:has(.kroma-navbar) .kroma-sidebar{
45504565
background: #ffffff0f;
45514566
}
45524567

4568+
.kroma-sidebar li{
4569+
4570+
cursor:pointer;
4571+
4572+
}
4573+
4574+
.kroma-sidebar li[data-idparent] {
4575+
padding-left: 10px;
4576+
max-height: 100px;
4577+
transition: 100ms;
4578+
}
4579+
4580+
.kroma-sidebar:not(.collapsed) li.parent a span:before {
4581+
content: "\f054";
4582+
margin-right: 10px;
4583+
font-family: 'FontAwesome';
4584+
display: inline-block;
4585+
}
4586+
4587+
.kroma-sidebar li[data-idparent].collapsed {
4588+
max-height: 0;
4589+
overflow: hidden;
4590+
}
4591+
4592+
.kroma-sidebar li.parent:not(.collapsed) a span:before {
4593+
transform: rotate(90deg);
4594+
transform-origin: center;
4595+
}
4596+
45534597
/* --- skeleton.css --- */
45544598
/* Base Skeleton Container */
45554599
.kroma-skeleton {

src/css/components/sidebar.css

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,4 +248,33 @@ html:has(.kroma-navbar) .kroma-sidebar{
248248

249249
.dark-mode .kroma-sidebar .sdb-menu ul li a:hover:before {
250250
background: #ffffff0f;
251+
}
252+
253+
.kroma-sidebar li{
254+
255+
cursor:pointer;
256+
257+
}
258+
259+
.kroma-sidebar li[data-idparent] {
260+
padding-left: 10px;
261+
max-height: 100px;
262+
transition: 100ms;
263+
}
264+
265+
.kroma-sidebar:not(.collapsed) li.parent a span:before {
266+
content: "\f054";
267+
margin-right: 10px;
268+
font-family: 'FontAwesome';
269+
display: inline-block;
270+
}
271+
272+
.kroma-sidebar li[data-idparent].collapsed {
273+
max-height: 0;
274+
overflow: hidden;
275+
}
276+
277+
.kroma-sidebar li.parent:not(.collapsed) a span:before {
278+
transform: rotate(90deg);
279+
transform-origin: center;
251280
}

src/js/bundle.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1592,6 +1592,7 @@ export class KromaSidebar {
15921592
for(var i = 0; i < this.pages.length; i++){
15931593

15941594
var li = document.createElement('li');
1595+
li.classList.add('no-selection');
15951596

15961597
//parent page
15971598
if(!this.pages[i].isChild){
@@ -1633,6 +1634,36 @@ export class KromaSidebar {
16331634
menu.appendChild(ul);
16341635
this.sdb.appendChild(menu);
16351636

1637+
//remove parent class from childless links
1638+
document.querySelectorAll('#'+this.sdb.id+' .sdb-menu ul li.parent').forEach((li)=>{
1639+
var liChildren = document.querySelectorAll('#'+this.sdb.id+' .sdb-menu ul li[data-idparent="'+li.dataset.myid+'"]');
1640+
if(liChildren.length < 1){li.classList.remove('parent');}
1641+
else{
1642+
li.classList.add('collapsed');
1643+
li.querySelector('a').removeAttribute('href'); //remove href from collapsable parent
1644+
li.addEventListener('click',function(){
1645+
1646+
var sdbId = this.closest('.kroma-sidebar').id;
1647+
var liChildren = document.querySelectorAll('#'+sdbId+' .sdb-menu ul li[data-idparent="'+this.dataset.myid+'"]');
1648+
1649+
if(this.classList.contains('collapsed')){
1650+
this.classList.remove('collapsed');
1651+
liChildren.forEach(function(liChild){ liChild.classList.remove('collapsed'); });
1652+
}
1653+
else{
1654+
this.classList.add('collapsed');
1655+
liChildren.forEach(function(liChild){ liChild.classList.add('collapsed'); });
1656+
}
1657+
1658+
});
1659+
1660+
}
1661+
});
1662+
1663+
//collapse all children links
1664+
document.querySelectorAll('#'+this.sdb.id+' .sdb-menu ul li[data-idparent]').forEach((li)=>{
1665+
li.classList.add('collapsed');
1666+
});
16361667

16371668
}
16381669

src/js/components/sidebar.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ export class KromaSidebar {
138138
for(var i = 0; i < this.pages.length; i++){
139139

140140
var li = document.createElement('li');
141+
li.querySelector('a').removeAttribute('href'); //remove href from collapsable parent
142+
li.classList.add('no-selection');
141143

142144
//parent page
143145
if(!this.pages[i].isChild){
@@ -179,6 +181,36 @@ export class KromaSidebar {
179181
menu.appendChild(ul);
180182
this.sdb.appendChild(menu);
181183

184+
//remove parent class from childless links
185+
document.querySelectorAll('#'+this.sdb.id+' .sdb-menu ul li.parent').forEach((li)=>{
186+
var liChildren = document.querySelectorAll('#'+this.sdb.id+' .sdb-menu ul li[data-idparent="'+li.dataset.myid+'"]');
187+
if(liChildren.length < 1){li.classList.remove('parent');}
188+
else{
189+
li.classList.add('collapsed');
190+
li.addEventListener('click',function(){
191+
192+
var sdbId = this.closest('.kroma-sidebar').id;
193+
var liChildren = document.querySelectorAll('#'+sdbId+' .sdb-menu ul li[data-idparent="'+this.dataset.myid+'"]');
194+
195+
if(this.classList.contains('collapsed')){
196+
this.classList.remove('collapsed');
197+
liChildren.forEach(function(liChild){ liChild.classList.remove('collapsed'); });
198+
}
199+
else{
200+
this.classList.add('collapsed');
201+
liChildren.forEach(function(liChild){ liChild.classList.add('collapsed'); });
202+
}
203+
204+
});
205+
206+
}
207+
});
208+
209+
//collapse all children links
210+
document.querySelectorAll('#'+this.sdb.id+' .sdb-menu ul li[data-idparent]').forEach((li)=>{
211+
li.classList.add('collapsed');
212+
});
213+
182214

183215
}
184216

0 commit comments

Comments
 (0)