Add support for retrieval of snippet matches.

This commit is contained in:
Sergio Martínez Portela 2025-02-23 22:50:34 +01:00
parent 41c02acaca
commit cd30f9b9c9
4 changed files with 69 additions and 5 deletions

View file

@ -1,4 +1,9 @@
function _codigoparallevar_enable_search_box(selector, options) {
const unescape = (str, tag) => {
const prev = tag.replaceAll('<', '&lt;').replaceAll('>', '&gt;');
return str.replaceAll(prev, tag);
}
const element = document.querySelector(selector);
if ('placeholder' in options) {
element.setAttribute('placeholder', options.placeholder);
@ -94,14 +99,32 @@ function _codigoparallevar_enable_search_box(selector, options) {
const resultTitle = document.createElement('h2');
resultTitle.innerText = `${note.title} (${note.top_level_title})`;
resultTitle.innerHTML = unescape(unescape(
resultTitle.innerHTML,
'</span>'), '<span class="match">'
);
if (note.is_todo === "1") {
resultTitle.setAttribute('class', 'is-todo');
resultCard.setAttribute('class', 'is-todo');
}
else if (note.is_done === "1") {
resultTitle.setAttribute('class', 'is-done');
resultCard.setAttribute('class', 'is-done');
}
resultContents.appendChild(resultTitle);
if (note.highlight) {
const resultBody = document.createElement('p');
resultBody.innerText = note.highlight;
resultBody.innerHTML = unescape(
unescape(
unescape(
resultBody.innerHTML,
'</span>'),
'<span class="search-result-break">'),
'<span class="match">');
resultContents.appendChild(resultBody);
}
resultCard.appendChild(resultContents);
resultsList.appendChild(resultCard);
}

View file

@ -126,13 +126,30 @@ body nav input {
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.25);
}
.results-box ul li a {
text-decoration: none;
}
.results-box ul li h2 {
font-size: 110%;
padding: 1.25ex;
display: block;
margin: 0;
text-decoration: underline;
}
.results-box ul li p {
padding: 1.25ex;
color: black;
}
.results-box ul li span.match {
text-decoration: underline red;
}
.results-box ul li .search-result-break::before {
content: '…';
color: #777;
}
.results-box li h2.is-todo::before {
content: 'TODO';
display: inline-block;
@ -659,6 +676,11 @@ tr.__table-separator {
.results-box ul li h2 {
color: white;
}
.results-box ul li p {
padding: 1.25ex;
color: white;
}
.results-box-container .results-box input:focus {
border-bottom: 1px solid #fff;
}