From de82bd8e447ae7b4b7e66f0368f5f43311848186 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Wed, 6 Sep 2017 11:55:23 +0100 Subject: [PATCH] fixed up JS to use a js-* class fixed up Ruby based on review --- app/assets/javascripts/breadcrumb.js | 10 +++++++--- app/assets/stylesheets/new_nav.scss | 2 +- app/helpers/breadcrumbs_helper.rb | 6 ++---- app/helpers/groups_helper.rb | 4 ++-- app/helpers/page_layout_helper.rb | 6 ++++-- app/helpers/projects_helper.rb | 4 ++-- app/helpers/wiki_helper.rb | 2 +- app/views/layouts/nav/_breadcrumbs.html.haml | 2 +- features/steps/explore/projects.rb | 4 ++-- features/steps/project/redirects.rb | 2 +- 10 files changed, 23 insertions(+), 19 deletions(-) diff --git a/app/assets/javascripts/breadcrumb.js b/app/assets/javascripts/breadcrumb.js index 7433fcbbad1..10fbcfe96cf 100644 --- a/app/assets/javascripts/breadcrumb.js +++ b/app/assets/javascripts/breadcrumb.js @@ -1,5 +1,7 @@ export const addTooltipToEl = (el) => { - if (el.scrollWidth > el.offsetWidth) { + const textEl = el.querySelector('.js-breadcrumb-item-text'); + + if (textEl && textEl.scrollWidth > textEl.offsetWidth) { el.setAttribute('title', el.textContent); el.setAttribute('data-container', 'body'); el.classList.add('has-tooltip'); @@ -7,10 +9,12 @@ export const addTooltipToEl = (el) => { }; export default () => { - const breadcrumbs = document.querySelector('.breadcrumbs-list'); + const breadcrumbs = document.querySelector('.js-breadcrumbs-list'); if (breadcrumbs) { - const topLevelLinks = breadcrumbs.querySelectorAll('.breadcrumbs-list > li > a'); + const topLevelLinks = [...breadcrumbs.children].filter(el => !el.classList.contains('dropdown')) + .map(el => el.querySelector('a')) + .filter(el => el); const $expander = $('.js-breadcrumbs-collapsed-expander'); topLevelLinks.forEach(el => addTooltipToEl(el)); diff --git a/app/assets/stylesheets/new_nav.scss b/app/assets/stylesheets/new_nav.scss index 1a0296e6f9c..3ea67c76503 100644 --- a/app/assets/stylesheets/new_nav.scss +++ b/app/assets/stylesheets/new_nav.scss @@ -365,7 +365,7 @@ header.navbar-gitlab-new { } } -.breadcrumb-item-project-name { +.breadcrumb-item-text { @include str-truncated(128px); } diff --git a/app/helpers/breadcrumbs_helper.rb b/app/helpers/breadcrumbs_helper.rb index d4c3e1b3929..ee1b7ed083e 100644 --- a/app/helpers/breadcrumbs_helper.rb +++ b/app/helpers/breadcrumbs_helper.rb @@ -25,15 +25,13 @@ module BreadcrumbsHelper def breadcrumb_list_item(link) content_tag "li" do - output = link - output << icon("angle-right", class: "breadcrumbs-list-angle") - output + link + icon("angle-right", class: "breadcrumbs-list-angle") end end def add_to_breadcrumb_dropdown(link, location: :before) @breadcrumb_dropdown_links ||= {} - @breadcrumb_dropdown_links[location] = [] unless @breadcrumb_dropdown_links[location] + @breadcrumb_dropdown_links[location] ||= [] @breadcrumb_dropdown_links[location] << link end end diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb index 05640d3cf3f..d330bd644e5 100644 --- a/app/helpers/groups_helper.rb +++ b/app/helpers/groups_helper.rb @@ -36,7 +36,7 @@ module GroupsHelper else group_title_link(group) end - full_title += ' · '.html_safe + link_to(simple_sanitize(name), url, class: 'group-path') if name + full_title += ' · '.html_safe + link_to(simple_sanitize(name), url, class: 'group-path breadcrumb-item-text js-breadcrumb-item-text') if name if show_new_nav? full_title.html_safe @@ -84,7 +84,7 @@ module GroupsHelper private def group_title_link(group, hidable: false, show_avatar: false) - link_to(group_path(group), class: "group-path #{'hidable' if hidable}") do + link_to(group_path(group), class: "group-path breadcrumb-item-text js-breadcrumb-item-text #{'hidable' if hidable}") do output = if (show_new_nav? && group.try(:avatar_url) || (show_new_nav? && show_avatar)) && !Rails.env.test? image_tag(group_icon(group), class: "avatar-tile", width: 15, height: 15) diff --git a/app/helpers/page_layout_helper.rb b/app/helpers/page_layout_helper.rb index e2ed8f7cdff..d2b2bd4b451 100644 --- a/app/helpers/page_layout_helper.rb +++ b/app/helpers/page_layout_helper.rb @@ -80,10 +80,12 @@ module PageLayoutHelper @header_title = title @header_title_url = title_url else + return @header_title unless @header_title_url + if show_new_nav? - @header_title_url ? breadcrumb_list_item(link_to(@header_title, @header_title_url)) : @header_title + breadcrumb_list_item(link_to(@header_title, @header_title_url)) else - @header_title_url ? link_to(@header_title, @header_title_url) : @header_title + link_to(@header_title, @header_title_url) end end end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 070bc163e75..9b6acedb40f 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -68,12 +68,12 @@ module ProjectsHelper "" end - output << content_tag("span", simple_sanitize(project.name), class: "breadcrumb-item-project-name") + output << content_tag("span", simple_sanitize(project.name), class: "breadcrumb-item-text js-breadcrumb-item-text") output.html_safe end if show_new_nav? - namespace_link = breadcrumb_list_item(namespace_link) if project.group.nil? + namespace_link = breadcrumb_list_item(namespace_link) unless project.group project_link = breadcrumb_list_item project_link end diff --git a/app/helpers/wiki_helper.rb b/app/helpers/wiki_helper.rb index 3d26c92e58a..815fab9e061 100644 --- a/app/helpers/wiki_helper.rb +++ b/app/helpers/wiki_helper.rb @@ -17,7 +17,7 @@ module WikiHelper current_slug = "" page_slug_split .map do |dir_or_page| - current_slug = "#{current_slug}/#{dir_or_page}" + current_slug = "#{current_slug}#{dir_or_page}/" add_to_breadcrumb_dropdown link_to(WikiPage.unhyphenize(dir_or_page).capitalize, project_wiki_path(@project, current_slug)), location: :after end end diff --git a/app/views/layouts/nav/_breadcrumbs.html.haml b/app/views/layouts/nav/_breadcrumbs.html.haml index cc2cfff85ba..3538646359e 100644 --- a/app/views/layouts/nav/_breadcrumbs.html.haml +++ b/app/views/layouts/nav/_breadcrumbs.html.haml @@ -8,7 +8,7 @@ %span.sr-only Open sidebar = icon ('bars') .breadcrumbs-links.js-title-container - %ul.list-unstyled.breadcrumbs-list + %ul.list-unstyled.breadcrumbs-list.js-breadcrumbs-list - unless hide_top_links = header_title - if @breadcrumbs_extra_links diff --git a/features/steps/explore/projects.rb b/features/steps/explore/projects.rb index 90d0ff47ce7..962e39dde9a 100644 --- a/features/steps/explore/projects.rb +++ b/features/steps/explore/projects.rb @@ -36,13 +36,13 @@ class Spinach::Features::ExploreProjects < Spinach::FeatureSteps end step 'I should see project "Community" home page' do - page.within '.breadcrumbs .breadcrumb-item-project-name' do + page.within '.breadcrumbs .breadcrumb-item-text' do expect(page).to have_content 'Community' end end step 'I should see project "Internal" home page' do - page.within '.breadcrumbs .breadcrumb-item-project-name' do + page.within '.breadcrumbs .breadcrumb-item-text' do expect(page).to have_content 'Internal' end end diff --git a/features/steps/project/redirects.rb b/features/steps/project/redirects.rb index ff9331b93fa..9ce86ca45d0 100644 --- a/features/steps/project/redirects.rb +++ b/features/steps/project/redirects.rb @@ -18,7 +18,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps step 'I should see project "Community" home page' do Gitlab.config.gitlab.should_receive(:host).and_return("www.example.com") - page.within '.breadcrumbs .breadcrumb-item-project-name' do + page.within '.breadcrumbs .breadcrumb-item-text' do expect(page).to have_content 'Community' end end