From 01c1d44e659b5940db8d8e7765bcd404902a8e82 Mon Sep 17 00:00:00 2001 From: Julien Maury <6878027+jmau111@users.noreply.github.com> Date: Thu, 14 Apr 2022 02:48:55 -0700 Subject: [PATCH] Fix duplicate IDs on homepage (#17092) * fix duplicate ID main nav * fix duplicate ID other nav headings * fix duplicate ID reading list count * fix duplicate attribute class * missing case readingCountList on feed * missing dot in query selector * Revert "fix duplicate ID other nav headings" This reverts commit 4f495962c47e08f0f6c41e33e897b2db176432f5. * use generic class 'other-nav' for tests * pass a variable 'context' to the partial nav * pass var 'context' to partial * fix unwanted typo in partial sidebar * Update app/views/admin/navigation_links/index.html.erb Co-authored-by: Suzanne Aitchison * Update app/assets/javascripts/initializers/initializeReadingListIcons.js Co-authored-by: Suzanne Aitchison * Update app/assets/javascripts/initializers/initializeReadingListIcons.js Co-authored-by: Suzanne Aitchison * js-reading-list-count renaming * use data-testid instead of generic classes for tests * fix typo in specs Co-authored-by: Suzanne Aitchison --- .../initializeReadingListIcons.js | 44 +++++++++++-------- .../admin/navigation_links/index.html.erb | 4 +- app/views/articles/_sidebar.html.erb | 2 +- app/views/layouts/_main_nav.html.erb | 6 +-- app/views/layouts/_sidebar_nav_link.html.erb | 2 +- app/views/shared/_hamburger.html.erb | 2 +- .../homepage/user_visits_homepage_spec.rb | 24 +++++----- 7 files changed, 46 insertions(+), 38 deletions(-) diff --git a/app/assets/javascripts/initializers/initializeReadingListIcons.js b/app/assets/javascripts/initializers/initializeReadingListIcons.js index bf76fbd17..f89e2d041 100644 --- a/app/assets/javascripts/initializers/initializeReadingListIcons.js +++ b/app/assets/javascripts/initializers/initializeReadingListIcons.js @@ -33,14 +33,17 @@ function highlightButton(button) { } function addReadingListCountToHomePage() { - var user = userData(); - var readingListCount; - if (user && document.getElementById('reading-list-count')) { - readingListCount = - user.reading_list_ids.length > 0 ? user.reading_list_ids.length : ''; - document.getElementById('reading-list-count').innerHTML = readingListCount; - document.getElementById('reading-list-count').dataset.count = - user.reading_list_ids.length; + const user = userData(); + const readingListContainers = document.querySelectorAll( + '.js-reading-list-count', + ); + if (user && readingListContainers) { + readingListContainers.forEach(function (e) { + const readingListCount = + user.reading_list_ids.length > 0 ? user.reading_list_ids.length : ''; + e.innerHTML = readingListCount; + e.dataset.count = user.reading_list_ids.length; + }); } } @@ -83,17 +86,22 @@ function renderButtonState(button, json) { } function renderNewSidebarCount(button, json) { - var newCount; - var count = document.getElementById('reading-list-count').dataset.count; - count = parseInt(count, 10); - if (json.result === 'create') { - newCount = count + 1; - } else if (count !== 0) { - newCount = count - 1; + const readingListContainers = document.querySelectorAll( + '.js-reading-list-count', + ); + if (readingListContainers) { + readingListContainers.forEach(function (e) { + const count = parseInt(e.dataset.count, 10); + let newCount; + if (json.result === 'create') { + newCount = count + 1; + } else if (count !== 0) { + newCount = count - 1; + } + e.dataset.count = newCount; + e.innerHTML = newCount > 0 ? newCount : ''; + }); } - document.getElementById('reading-list-count').dataset.count = newCount; - document.getElementById('reading-list-count').innerHTML = - newCount > 0 ? newCount : ''; } function buttonFormData(button) { diff --git a/app/views/admin/navigation_links/index.html.erb b/app/views/admin/navigation_links/index.html.erb index 749e1b81e..b0020055a 100644 --- a/app/views/admin/navigation_links/index.html.erb +++ b/app/views/admin/navigation_links/index.html.erb @@ -17,7 +17,7 @@
<%= link[:icon].html_safe %>
- <%= link[:name] %> + <%= link[:name] %> @@ -45,7 +45,7 @@
<%= link[:icon].html_safe %>
- <%= link[:name] %> + <%= link[:name] %> diff --git a/app/views/articles/_sidebar.html.erb b/app/views/articles/_sidebar.html.erb index 797bf8d35..0f13bc2e1 100644 --- a/app/views/articles/_sidebar.html.erb +++ b/app/views/articles/_sidebar.html.erb @@ -2,7 +2,7 @@