mirror of
				https://github.com/teamhanko/hanko.git
				synced 2025-10-31 16:47:10 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (function() {
 | |
|   const input = document.querySelector('#search')
 | |
|   const targets = [ ...document.querySelectorAll('#sidebarNav li')]
 | |
|   input.addEventListener('keyup', () => {
 | |
|     // loop over each targets and hide the not corresponding ones
 | |
|     targets.forEach(target => {
 | |
|       if (!target.innerText.toLowerCase().includes(input.value.toLowerCase())) {
 | |
|         target.style.display = 'none'
 | |
| 
 | |
|         /**
 | |
|          * Detects an empty list
 | |
|          * Remove the list and the list's title if the list is not displayed
 | |
|          */
 | |
|         const list = [...target.parentNode.childNodes].filter( elem => elem.style.display !== 'none')
 | |
| 
 | |
|         if (!list.length) {
 | |
|           target.parentNode.style.display = 'none'
 | |
|           target.parentNode.previousSibling.style.display = 'none'
 | |
|         }
 | |
| 
 | |
|         /**
 | |
|          * Detects empty category
 | |
|          * Remove the entire category if no item is displayed
 | |
|          */
 | |
|         const category = [...target.parentNode.parentNode.childNodes]
 | |
|           .filter( elem => elem.tagName !== 'H2' && elem.style.display !== 'none')
 | |
| 
 | |
|         if (!category.length) {
 | |
|           target.parentNode.parentNode.style.display = 'none'
 | |
|         }
 | |
|       } else {
 | |
|         target.parentNode.style.display = 'block'
 | |
|         target.parentNode.previousSibling.style.display = 'block'
 | |
|         target.parentNode.parentNode.style.display = 'block'
 | |
|         target.style.display = 'block'
 | |
|       }
 | |
|     })
 | |
|   })
 | |
| })() | 
