From 645ebec8fab0834decc5a1245979e84c818a8f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sun, 2 Apr 2023 15:41:36 -0400 Subject: [PATCH] feat: allow multiple topic selects in topic-list chore: up persona --- install/package.json | 2 +- public/src/modules/topicSelect.js | 25 +++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/install/package.json b/install/package.json index dec3a4bdf8..f173f1c5f6 100644 --- a/install/package.json +++ b/install/package.json @@ -100,7 +100,7 @@ "nodebb-plugin-ntfy": "1.0.15", "nodebb-plugin-spam-be-gone": "2.0.6", "nodebb-rewards-essentials": "0.2.3", - "nodebb-theme-harmony": "1.0.0-beta.97", + "nodebb-theme-harmony": "1.0.0-beta.98", "nodebb-theme-lavender": "7.0.9", "nodebb-theme-peace": "2.0.19", "nodebb-theme-persona": "13.0.55", diff --git a/public/src/modules/topicSelect.js b/public/src/modules/topicSelect.js index 20dfffd21f..1dd231b8c9 100644 --- a/public/src/modules/topicSelect.js +++ b/public/src/modules/topicSelect.js @@ -3,7 +3,7 @@ define('topicSelect', ['components'], function (components) { const TopicSelect = {}; - let lastSelected; + let lastSelectedTopic; let topicsContainer; @@ -15,23 +15,24 @@ define('topicSelect', ['components'], function (components) { topicsContainer.on('click', '[component="topic/select"]', function (ev) { const select = $(this); - + const topicEl = select.parents('[component="category/topic"]'); if (ev.shiftKey) { - selectRange($(this).parents('[component="category/topic"]').attr('data-tid')); - lastSelected = select; + selectRange(topicEl.attr('data-tid')); + lastSelectedTopic = topicEl; return false; } - const isSelected = select.parents('[data-tid]').hasClass('selected'); - toggleSelect(select, !isSelected); - lastSelected = select; + const isSelected = topicEl.hasClass('selected'); + toggleSelected(topicEl, !isSelected); + lastSelectedTopic = topicEl; if (typeof onSelect === 'function') { onSelect(); } }); }; - function toggleSelect(select, isSelected) { + function toggleSelected(topicEl, isSelected) { + const select = topicEl.find('[component="topic/select"]'); select.toggleClass('fa-check-square-o', isSelected); select.toggleClass('fa-square-o', !isSelected); select.parents('[component="category/topic"]').toggleClass('selected', isSelected); @@ -66,14 +67,14 @@ define('topicSelect', ['components'], function (components) { }; function selectRange(clickedTid) { - if (!lastSelected) { - lastSelected = $('[component="category/topic"]').first().find('[component="topic/select"]'); + if (!lastSelectedTopic) { + lastSelectedTopic = $('[component="category/topic"]').first(); } const isClickedSelected = components.get('category/topic', 'tid', clickedTid).hasClass('selected'); const clickedIndex = getIndex(clickedTid); - const lastIndex = getIndex(lastSelected.parents('[component="category/topic"]').attr('data-tid')); + const lastIndex = getIndex(lastSelectedTopic.attr('data-tid')); selectIndexRange(clickedIndex, lastIndex, !isClickedSelected); } @@ -86,7 +87,7 @@ define('topicSelect', ['components'], function (components) { for (let i = start; i <= end; i += 1) { const topic = $('[component="category/topic"]').eq(i); - toggleSelect(topic.find('[component="topic/select"]'), isSelected); + toggleSelected(topic, isSelected); } }