Merge branch 'master' of github.com:h-enk/doks
This commit is contained in:
		| @@ -108,7 +108,7 @@ Source: | ||||
|         {{ else -}} | ||||
|           description: {{ .Summary | plainify | jsonify }}, | ||||
|         {{ end -}} | ||||
|         content: {{ .Content | jsonify }} | ||||
|         content: {{ .Plain | jsonify }} | ||||
|       }) | ||||
|       {{ if ne (add $index 1) $len -}} | ||||
|         .add( | ||||
| @@ -117,47 +117,53 @@ Source: | ||||
|   ; | ||||
|  | ||||
|   search.addEventListener('input', show_results, true); | ||||
|   suggestions.addEventListener('click', accept_suggestion, true); | ||||
|  | ||||
|   function show_results(){ | ||||
|     const maxResult = 5; | ||||
|     var searchQuery = this.value; | ||||
|     var results = index.search(searchQuery, {limit: maxResult, enrich: true}); | ||||
|  | ||||
|     var value = this.value; | ||||
|     var results = index.search(value, {limit: maxResult, enrich: true}); | ||||
|  | ||||
|     suggestions.classList.remove('d-none'); | ||||
|     suggestions.innerHTML = ""; | ||||
|  | ||||
|     //flatSearch now returns results for each index field. create a single list | ||||
|     const flatResults = {}; //keyed by href to dedupe results | ||||
|     // flatten results since index.search() returns results for each indexed field | ||||
|     const flatResults = new Map(); // keyed by href to dedupe results | ||||
|     for (const result of results.flatMap(r => r.result)) { | ||||
|       flatResults[result.doc.href] = result.doc; | ||||
|       if (flatResults.has(result.doc.href)) continue; | ||||
|       flatResults.set(result.doc.href, result.doc); | ||||
|     } | ||||
|  | ||||
|     //construct a list of suggestions list | ||||
|     for(const href in flatResults) { | ||||
|         const doc = flatResults[href]; | ||||
|     suggestions.innerHTML = ""; | ||||
|     suggestions.classList.remove('d-none'); | ||||
|  | ||||
|     // inform user that no results were found | ||||
|     if (flatResults.size === 0 && searchQuery) { | ||||
|       const noResultsMessage = document.createElement('div') | ||||
|       noResultsMessage.innerHTML = `No results for "<strong>${searchQuery}</strong>"` | ||||
|       noResultsMessage.classList.add("suggestion__no-results"); | ||||
|       suggestions.appendChild(noResultsMessage); | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     // construct a list of suggestions | ||||
|     for(const [href, doc] of flatResults) { | ||||
|         const entry = document.createElement('div'); | ||||
|         entry.innerHTML = '<a href><span></span><span></span></a>'; | ||||
|         suggestions.appendChild(entry); | ||||
|  | ||||
|         entry.querySelector('a').href = href; | ||||
|         entry.querySelector('span:first-child').textContent = doc.title; | ||||
|         entry.querySelector('span:nth-child(2)').textContent = doc.description; | ||||
|         const a = document.createElement('a'); | ||||
|         a.href = href; | ||||
|         entry.appendChild(a); | ||||
|  | ||||
|         const title = document.createElement('span'); | ||||
|         title.textContent = doc.title; | ||||
|         title.classList.add("suggestion__title"); | ||||
|         a.appendChild(title); | ||||
|  | ||||
|         const description = document.createElement('span'); | ||||
|         description.textContent = doc.description; | ||||
|         description.classList.add("suggestion__description"); | ||||
|         a.appendChild(description); | ||||
|  | ||||
|         suggestions.appendChild(entry); | ||||
|  | ||||
|         if(suggestions.childElementCount == maxResult) break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   function accept_suggestion(){ | ||||
|  | ||||
|       while(suggestions.lastChild){ | ||||
|  | ||||
|           suggestions.removeChild(suggestions.lastChild); | ||||
|       } | ||||
|  | ||||
|       return false; | ||||
|   } | ||||
|  | ||||
| }()); | ||||
|   | ||||
| @@ -10,11 +10,15 @@ | ||||
|   z-index: $zindex-dropdown; | ||||
| } | ||||
|  | ||||
| #suggestions a, | ||||
| .suggestion__no-results { | ||||
|   padding: 0.75rem; | ||||
|   margin: 0 0.5rem; | ||||
| } | ||||
|  | ||||
| #suggestions a { | ||||
|   display: block; | ||||
|   text-decoration: none; | ||||
|   padding: 0.75rem; | ||||
|   margin: 0 0.5rem; | ||||
| } | ||||
|  | ||||
| #suggestions a:focus { | ||||
| @@ -43,12 +47,13 @@ | ||||
|   font-size: $font-size-base; | ||||
| } | ||||
|  | ||||
| #suggestions span:first-child { | ||||
| .suggestion__title { | ||||
|   font-weight: $headings-font-weight; | ||||
|   color: $black; | ||||
| } | ||||
|  | ||||
| #suggestions span:nth-child(2) { | ||||
| .suggestion__description, | ||||
| .suggestion__no-results { | ||||
|   color: $gray-700; | ||||
| } | ||||
|  | ||||
| @@ -61,7 +66,7 @@ | ||||
|     display: flex; | ||||
|   } | ||||
|  | ||||
|   #suggestions span:first-child { | ||||
|   .suggestion__title { | ||||
|     width: 9rem; | ||||
|     padding-right: 1rem; | ||||
|     border-right: 1px solid $gray-200; | ||||
| @@ -69,7 +74,7 @@ | ||||
|     text-align: right; | ||||
|   } | ||||
|  | ||||
|   #suggestions span:nth-child(2) { | ||||
|   .suggestion__description { | ||||
|     width: 19rem; | ||||
|     padding-left: 1rem; | ||||
|   } | ||||
|   | ||||
							
								
								
									
										1
									
								
								layouts/_default/_markup/render-heading.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								layouts/_default/_markup/render-heading.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| <h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }} <a href="#{{ .Anchor | safeURL }}" class="anchor" aria-hidden="true">#</a></h{{ .Level }}> | ||||
| @@ -31,7 +31,7 @@ | ||||
| 				{{ partial "sidebar/docs-toc.html" . }} | ||||
| 			</nav> | ||||
| 			{{ end -}} | ||||
| 			{{ partial "main/headline-hash.html" .Content }} | ||||
| 			{{ .Content }} | ||||
| 			{{ if .Site.Params.editPage -}} | ||||
| 				{{ partial "main/edit-page.html" . }} | ||||
| 			{{ end -}} | ||||
|   | ||||
| @@ -1 +0,0 @@ | ||||
| {{ . | replaceRE "(<h[2-9] id=\"([^\"]+)\".+)(</h[2-9]+>)" `${1}<a href="#${2}" class="anchor" aria-hidden="true">#</a> ${3}` | safeHTML }} | ||||
							
								
								
									
										28
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										28
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -3710,9 +3710,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/dompurify": { | ||||
|       "version": "2.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.1.tgz", | ||||
|       "integrity": "sha512-xGWt+NHAQS+4tpgbOAI08yxW0Pr256Gu/FNE2frZVTbgrBUn8M7tz7/ktS/LZ2MHeGqz6topj0/xY+y8R5FBFw==", | ||||
|       "version": "2.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.3.tgz", | ||||
|       "integrity": "sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/domutils": { | ||||
| @@ -5914,16 +5914,16 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/mermaid": { | ||||
|       "version": "8.13.2", | ||||
|       "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.13.2.tgz", | ||||
|       "integrity": "sha512-qTFI7MfC2d+x0Hft5gx063EH9tZg36lERG8o7Zq0Ag+MnO8CgVaMZEU6oA8gzTtTn9upMdy4UlYSLVmavu27cQ==", | ||||
|       "version": "8.13.3", | ||||
|       "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.13.3.tgz", | ||||
|       "integrity": "sha512-w6KmDtSzkk856WUVqlBsyLZX0q4Jr35IlxiHTPTaWwMgWHFpI8rEJzcxWoyrpxeT/Rac/vvvSFOZymDTeA0iiA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "@braintree/sanitize-url": "^3.1.0", | ||||
|         "d3": "^7.0.0", | ||||
|         "dagre": "^0.8.5", | ||||
|         "dagre-d3": "^0.6.4", | ||||
|         "dompurify": "2.3.1", | ||||
|         "dompurify": "2.3.3", | ||||
|         "graphlib": "^2.1.8", | ||||
|         "khroma": "^1.4.1", | ||||
|         "moment-mini": "^2.24.0", | ||||
| @@ -11334,9 +11334,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "dompurify": { | ||||
|       "version": "2.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.1.tgz", | ||||
|       "integrity": "sha512-xGWt+NHAQS+4tpgbOAI08yxW0Pr256Gu/FNE2frZVTbgrBUn8M7tz7/ktS/LZ2MHeGqz6topj0/xY+y8R5FBFw==", | ||||
|       "version": "2.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.3.tgz", | ||||
|       "integrity": "sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "domutils": { | ||||
| @@ -13009,16 +13009,16 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "mermaid": { | ||||
|       "version": "8.13.2", | ||||
|       "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.13.2.tgz", | ||||
|       "integrity": "sha512-qTFI7MfC2d+x0Hft5gx063EH9tZg36lERG8o7Zq0Ag+MnO8CgVaMZEU6oA8gzTtTn9upMdy4UlYSLVmavu27cQ==", | ||||
|       "version": "8.13.3", | ||||
|       "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.13.3.tgz", | ||||
|       "integrity": "sha512-w6KmDtSzkk856WUVqlBsyLZX0q4Jr35IlxiHTPTaWwMgWHFpI8rEJzcxWoyrpxeT/Rac/vvvSFOZymDTeA0iiA==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "@braintree/sanitize-url": "^3.1.0", | ||||
|         "d3": "^7.0.0", | ||||
|         "dagre": "^0.8.5", | ||||
|         "dagre-d3": "^0.6.4", | ||||
|         "dompurify": "2.3.1", | ||||
|         "dompurify": "2.3.3", | ||||
|         "graphlib": "^2.1.8", | ||||
|         "khroma": "^1.4.1", | ||||
|         "moment-mini": "^2.24.0", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Henk Verlinde
					Henk Verlinde