From c153f734a891fc3bc7dfc3bed34630ff38ab39d7 Mon Sep 17 00:00:00 2001 From: Jon Rohan Date: Thu, 4 Aug 2022 10:07:26 -0700 Subject: [PATCH] Fixing whitespace in rendered LinkComponent (#1274) * Fixing whitespace in rendered link * Create brave-planets-reply.md --- .changeset/brave-planets-reply.md | 5 +++++ app/components/primer/link_component.html.erb | 12 ------------ app/components/primer/link_component.rb | 14 ++++++++++++++ test/components/link_component_test.rb | 13 +++++++++++-- 4 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 .changeset/brave-planets-reply.md delete mode 100644 app/components/primer/link_component.html.erb diff --git a/.changeset/brave-planets-reply.md b/.changeset/brave-planets-reply.md new file mode 100644 index 0000000000..d2c1add4e5 --- /dev/null +++ b/.changeset/brave-planets-reply.md @@ -0,0 +1,5 @@ +--- +"@primer/view-components": patch +--- + +Fixing whitespace in rendered LinkComponent diff --git a/app/components/primer/link_component.html.erb b/app/components/primer/link_component.html.erb deleted file mode 100644 index ad775c6cff..0000000000 --- a/app/components/primer/link_component.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -<% if tooltip.present? %> - <%= render Primer::BaseComponent.new(tag: :span, position: :relative) do %> - <%= render Primer::BaseComponent.new(**@system_arguments) do %> - <% content %> - <% end %> - <%= tooltip %> - <% end %> -<% else %> - <%= render Primer::BaseComponent.new(**@system_arguments) do %> - <% content %> - <% end %> -<% end %> diff --git a/app/components/primer/link_component.rb b/app/components/primer/link_component.rb index a35c165c2c..ae0134d69c 100644 --- a/app/components/primer/link_component.rb +++ b/app/components/primer/link_component.rb @@ -79,5 +79,19 @@ def initialize(href: nil, tag: DEFAULT_TAG, scheme: DEFAULT_SCHEME, muted: false def before_render raise ArgumentError, "href is required when using tag" if @system_arguments[:tag] == :a && @system_arguments[:href].nil? && !Rails.env.production? end + + def call + if tooltip.present? + render Primer::BaseComponent.new(tag: :span, position: :relative) do + render(Primer::BaseComponent.new(**@system_arguments)) do + content + end.to_s + tooltip.to_s + end + else + render(Primer::BaseComponent.new(**@system_arguments)) do + content + end + end + end end end diff --git a/test/components/link_component_test.rb b/test/components/link_component_test.rb index 4fb854508c..dc00d8f8d7 100644 --- a/test/components/link_component_test.rb +++ b/test/components/link_component_test.rb @@ -13,9 +13,9 @@ def test_renders_content_and_not_muted_link end def test_renders_no_additional_whitespace - render_inline(Primer::LinkComponent.new(href: "http://joe-jonas-shirtless.com")) { "content" } + result = render_inline(Primer::LinkComponent.new(href: "http://joe-jonas-shirtless.com")) { "content" } - assert_text(/^content$/) + assert_match(%r{^]+>content$}, result.to_s) end def test_renders_without_trailing_newline @@ -83,4 +83,13 @@ def test_raises_if_a_tag_and_href_nil def test_status assert_component_state(Primer::LinkComponent, :beta) end + + def test_renders_with_tooltip_sibling + render_inline(Primer::LinkComponent.new(id: "1", href: "http://google.com")) do |c| + c.tooltip(text: "Tooltip text") + "content" + end + + assert_selector("a[href='http://google.com'] + tool-tip", text: "Tooltip text", visible: false) + end end