diff --git a/src/main/resources/static/js/comment-cards.js b/src/main/resources/static/js/comment-cards.js index d6da77e..5b9f7e9 100644 --- a/src/main/resources/static/js/comment-cards.js +++ b/src/main/resources/static/js/comment-cards.js @@ -28,7 +28,12 @@ const sort = $('ccSort').value; const minLikes = parseInt($('ccMinLikes').value, 10) || 0; const repliesOnly = $('ccRepliesOnly').checked; - let list = cards.filter(c => (c.likeCount || 0) >= minLikes && (!repliesOnly || (c.replyCount || 0) > 0)); + const q = ($('ccSearch').value || '').trim().toLowerCase(); + let list = cards.filter(c => + (c.likeCount || 0) >= minLikes && + (!repliesOnly || (c.replyCount || 0) > 0) && + (!q || toPlainText(c.text).toLowerCase().includes(q)) // 내용에만 매칭 + ); if (sort === 'likes') list.sort((a, b) => (b.likeCount || 0) - (a.likeCount || 0)); else if (sort === 'replies') list.sort((a, b) => (b.replyCount || 0) - (a.replyCount || 0)); else if (sort === 'latest') list.sort((a, b) => new Date(b.publishedAt) - new Date(a.publishedAt)); @@ -200,7 +205,7 @@ document.addEventListener('DOMContentLoaded', () => { $('ccFetch').addEventListener('click', fetchComments); $('ccUrl').addEventListener('keydown', (e) => { if (e.key === 'Enter') fetchComments(); }); - ['ccSort', 'ccMinLikes', 'ccRepliesOnly'].forEach(id => + ['ccSearch', 'ccSort', 'ccMinLikes', 'ccRepliesOnly'].forEach(id => $(id).addEventListener('input', () => window.renderCards())); $('ccMosaic').addEventListener('click', () => { mosaicOn = !mosaicOn; diff --git a/src/main/resources/templates/comment-cards.html b/src/main/resources/templates/comment-cards.html index 04a141a..5441663 100644 --- a/src/main/resources/templates/comment-cards.html +++ b/src/main/resources/templates/comment-cards.html @@ -56,6 +56,7 @@