From ec1b0dee80cfa3fc0f05565fa931e8bb58bc0f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P?= Date: Thu, 23 Mar 2023 12:17:49 +0100 Subject: [PATCH] Refine read more feature --- js/ds.js | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/js/ds.js b/js/ds.js index d5e69de..d82c899 100644 --- a/js/ds.js +++ b/js/ds.js @@ -379,17 +379,36 @@ DataSpace.attachReadMore = function (cssClass, maxWords = 100) const more = document.createElement('span'); more.textContent = 'Read more'; more.className = 'text-primary c-hand'; - more.onclick = function () { - this.parentElement.textContent = text; - } - contentElement.textContent = text.split(' ').splice(0, maxWords).reduce( - (p, v) => `${p} ${v}` - ); + contentElement.textContent = text.split(' ') + .splice(0, maxWords) + .reduce((p, v) => `${p} ${v}`); contentElement.textContent += '... '; - contentElement.appendChild(more); + // Store innerHTML for less... + const nodes = []; + for (const node of contentElement.childNodes) { + nodes.push(node); + } + + // TODO change this element, don't create a new one + more.onclick = function () { + const less = document.createElement('span'); + less.textContent = 'Less'; + less.className = 'text-primary c-hand'; + + // Hacky... + less.onclick = function () { + contentElement.innerHTML = ''; + for (const node of nodes) { + contentElement.appendChild(node); + } + } + + contentElement.textContent = text + ' '; + contentElement.appendChild(less); + } } } }