Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/orange-countries-try.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@primer/view-components': minor
---

Add support for `target` attribute on links of Primer::Beta::Breadcrumbs
5 changes: 3 additions & 2 deletions app/components/primer/beta/breadcrumbs.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ def render?
class Item < Primer::Component
attr_accessor :selected, :href

def initialize(href:, **system_arguments)
def initialize(href:, target: "_self", **system_arguments)
@href = href
@target = target
@system_arguments = deny_tag_argument(**system_arguments)
@selected = false

Expand All @@ -58,7 +59,7 @@ def initialize(href:, **system_arguments)
end

def call
link_arguments = { href: @href }
link_arguments = { href: @href, target: @target }

if selected
link_arguments[:"aria-current"] = "page"
Expand Down
9 changes: 9 additions & 0 deletions previews/primer/beta/breadcrumbs_preview.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,15 @@ def with_beta_truncate
def with_deprecated_truncate
render_with_template
end

# @label With a specific link target
def with_link_target(number_of_links: 2)
render(Primer::Beta::Breadcrumbs.new) do |component|
Array.new(number_of_links&.to_i || 3) do |i|
component.with_item(href: "##{i}", target: "_blank") { "Breadcrumb Item #{i + 1}" }
end
end
end
end
end
end
10 changes: 10 additions & 0 deletions test/components/breadcrumbs_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,16 @@ def test_automatically_selects_last_item
assert_selector("li.breadcrumb-item-selected a[aria-current='page']", text: "About")
end

def test_renders_target_attribute
render_inline(Primer::Beta::Breadcrumbs.new) do |component|
component.with_item(href: "/", target: "_blank") { "Home" }
component.with_item(href: "/about") { "About" }
end

assert_selector(".breadcrumb-item a[target='_blank']", text: "Home")
assert_selector(".breadcrumb-item a[target='_self']", text: "About")
end

def test_status
assert_component_state(Primer::Beta::Breadcrumbs, :beta)
end
Expand Down