Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

upgrade @github/tab-container-element@latest #2624

Merged
merged 23 commits into from
Apr 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9fa874d
upgrade @github/tab-container-element@latest
keithamus Feb 21, 2024
5a3f8aa
remove redundant markup
keithamus Feb 21, 2024
c4dd094
tweak styles
keithamus Feb 21, 2024
58c6413
flattern wrapper/body/system arguments
keithamus Feb 21, 2024
21af0b9
avoid documenting wrapper/body args
keithamus Feb 21, 2024
83dd491
remove tests that assert what is now in the shadow dom
keithamus Mar 21, 2024
40582fd
changeset
keithamus Mar 21, 2024
de16bcd
ignore tab-container .tabnav-tab selector
keithamus Mar 21, 2024
7dbe59d
drop erroneous selector tests
keithamus Mar 21, 2024
c8c92a9
fixup system tests
keithamus Mar 27, 2024
eacd561
Merge branch 'main' into upgrade-github-tab-container-element-latest
keithamus Mar 28, 2024
73c326c
also upgrade underlinepanels
keithamus Mar 28, 2024
95113ae
Merge branch 'main' into upgrade-github-tab-container-element-latest
keithamus Apr 15, 2024
206b512
Generating component snapshots
keithamus Apr 15, 2024
7114d9a
fixup tests
keithamus Mar 28, 2024
9f42309
fixup underlinepanels & tests
keithamus Apr 17, 2024
1d3ea60
fix to div
keithamus Apr 17, 2024
5e27d50
disallow changing wrapper tag
keithamus Apr 17, 2024
84cf895
Merge branch 'main' into upgrade-github-tab-container-element-latest
keithamus Apr 18, 2024
e4cfb64
Merge branch 'main' into upgrade-github-tab-container-element-latest
keithamus Apr 23, 2024
9d3e40c
fix classes
keithamus Apr 23, 2024
75a6799
drop detection for unsupported :popover-open
keithamus Apr 23, 2024
40ea999
add missing file
keithamus Apr 23, 2024
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/fifty-experts-melt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@primer/view-components": minor
---

Upgrade @github/tab-container, using shadowdom
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions app/components/primer/alpha/overlay.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ anchored-position.not-anchored::backdrop, dialog::backdrop {
flex-direction: column;
overflow-y: hidden;

& > .tabnav {
&::part(tablist-wrapper) {
margin: var(--base-size-8) 0;
padding: 0 var(--base-size-8);
}
Expand All @@ -39,4 +39,4 @@ anchored-position.not-anchored::backdrop, dialog::backdrop {
.Overlay-tabPanel {
overflow: hidden;
display: flex;
}
}
10 changes: 10 additions & 0 deletions app/components/primer/alpha/tab_nav.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@
overflow: auto;
}

.tabnav::part(tablist-wrapper) {
margin-bottom: var(--stack-gap-normal);
border-bottom: var(--borderWidth-thin) solid var(--borderColor-default);
}

.tabnav-tab {
display: inline-block;
flex-shrink: 0;
Expand Down Expand Up @@ -66,6 +71,11 @@
}
}

tab-container .tabnav-tab {
margin-bottom: -1px;
}


/* Tabnav extras
**
** Tabnav extras are non-tab elements that sit in the tabnav. Usually they're
Expand Down
14 changes: 5 additions & 9 deletions app/components/primer/alpha/tab_panels.html.erb
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
<%= tab_container_wrapper(with_panel: true, **@wrapper_arguments) do %>
<%= render Primer::BaseComponent.new(**@system_arguments) do %>
<%= extra if @align == :left %>
<%= render Primer::BaseComponent.new(**@body_arguments) do %>
<% tabs.each do |tab| %>
<%= tab %>
<% end %>
<% end %>
<%= extra if @align == :right %>
<%= render Primer::BaseComponent.new(**@system_arguments) do %>
<%= extra if @align == :left %>
<% tabs.each do |tab| %>
<%= tab %>
<% end %>
<%= extra if @align == :right %>
<% tabs.each do |tab| %>
<%= tab.panel %>
<% end %>
Expand Down
17 changes: 4 additions & 13 deletions app/components/primer/alpha/tab_panels.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class TabPanels < Primer::Component
Primer::Alpha::Navigation::Tab.new(
selected: selected,
with_panel: true,
list: true,
list: false,
panel_id: "panel-#{id}",
**system_arguments
)
Expand All @@ -43,23 +43,14 @@ class TabPanels < Primer::Component

# @param label [String] Sets an `aria-label` that helps assistive technology users understand the purpose of the tabs.
# @param align [Symbol] <%= one_of(Primer::TabNavHelper::EXTRA_ALIGN_OPTIONS) %> - Defaults to <%= Primer::TabNavHelper::EXTRA_ALIGN_DEFAULT %>
# @param body_arguments [Hash] <%= link_to_system_arguments_docs %> for the body wrapper.
# @param wrapper_arguments [Hash] <%= link_to_system_arguments_docs %> for the `TabContainer` wrapper.
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
def initialize(label:, body_arguments: {}, wrapper_arguments: {}, **system_arguments)
@align = EXTRA_ALIGN_DEFAULT
@wrapper_arguments = wrapper_arguments

@system_arguments = deny_tag_argument(**system_arguments)
@system_arguments[:tag] = :div
@system_arguments = { **deny_tag_argument(**system_arguments), **deny_tag_argument(**wrapper_arguments) }
@system_arguments[:tag] = :"tab-container"
@system_arguments[:classes] = tab_nav_classes(@system_arguments[:classes])

@body_arguments = deny_tag_argument(**body_arguments)
@body_arguments[:tag] = :ul
@body_arguments[:classes] = tab_nav_body_classes(@body_arguments[:classes])

@body_arguments[:role] = :tablist
@body_arguments[:"aria-label"] = label
@system_arguments[:"aria-label"] = label
end

def before_render
Expand Down
8 changes: 7 additions & 1 deletion app/components/primer/alpha/underline_nav.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,13 @@
}
}

.UnderlineNav-body {
.UnderlineNav::part(tablist-wrapper) {
width: 100%;
box-shadow: inset 0 -1px 0 var(--borderColor-muted);
padding: var(--control-medium-gap) 0;
}

.UnderlineNav-body,.UnderlineNav::part(tablist) {
display: flex;
align-items: center;
gap: var(--control-medium-gap);
Expand Down
14 changes: 6 additions & 8 deletions app/components/primer/alpha/underline_panels.html.erb
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
<%= tab_container_wrapper(with_panel: true, **@wrapper_arguments) do %>
<%= render Primer::BaseComponent.new(**@wrapper_arguments) do %>
<%= render Primer::BaseComponent.new(**@system_arguments) do %>
<% if @align == :right %>
<%= actions %>
<% end %>
<%= render body do %>
<% tabs.each do |tab| %>
<%= tab %>
<% end %>
<% tabs.each do |tab| %>
<%= tab %>
<% end %>
<% if @align == :left %>
<%= actions %>
<% end %>
<% end %>
<% tabs.each do |tab| %>
<%= tab.panel %>
<% tabs.each do |tab| %>
<%= tab.panel %>
<% end %>
<% end %>
<% end %>
4 changes: 4 additions & 0 deletions app/components/primer/alpha/underline_panels.pcss
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
tab-container.UnderlineNav {
box-shadow: none;
flex-direction: column;
}
20 changes: 6 additions & 14 deletions app/components/primer/alpha/underline_panels.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class UnderlinePanels < Primer::Component
Primer::Alpha::Navigation::Tab.new(
selected: selected,
with_panel: true,
list: true,
list: false,
icon_classes: "UnderlineNav-octicon",
panel_id: "panel-#{id}",
**system_arguments
Expand All @@ -43,24 +43,16 @@ class UnderlinePanels < Primer::Component
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
def initialize(label:, align: ALIGN_DEFAULT, body_arguments: {}, wrapper_arguments: {}, **system_arguments)
@align = fetch_or_fallback(ALIGN_OPTIONS, align, ALIGN_DEFAULT)
@wrapper_arguments = wrapper_arguments
@wrapper_arguments = deny_tag_argument(**wrapper_arguments)
@wrapper_arguments[:tag] = :div

@system_arguments = deny_tag_argument(**system_arguments)
@system_arguments[:tag] = :div
@system_arguments[:tag] = :"tab-container"
@system_arguments[:classes] = underline_nav_classes(@system_arguments[:classes], @align)
@system_arguments[:"aria-label"] = label

@body_arguments = deny_tag_argument(**body_arguments)
@body_arguments[:tag] = :ul
@body_arguments[:classes] = underline_nav_body_classes(@body_arguments[:classes])

@body_arguments[:role] = :tablist
@body_arguments[:"aria-label"] = label
end

private

def body
Primer::BaseComponent.new(**@body_arguments)
@body_arguments[:tag] = :div
end
end
end
Expand Down
1 change: 1 addition & 0 deletions app/components/primer/primer.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
@import "./alpha/button_marketing.pcss";
@import "./alpha/toggle_switch.pcss";
@import "./alpha/underline_nav.pcss";
@import "./alpha/underline_panels.pcss";
@import "./alpha/segmented_control.pcss";
@import "./alpha/menu.pcss";

Expand Down
28 changes: 21 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
"@github/image-crop-element": "^5.0.0",
"@github/include-fragment-element": "^6.1.1",
"@github/relative-time-element": "^4.0.0",
"@github/tab-container-element": "^3.1.2",
"@github/tab-container-element": "^4.5.0",
"@oddbird/popover-polyfill": "^0.4.0",
"@primer/behaviors": "^1.3.4"
},
Expand Down
24 changes: 4 additions & 20 deletions test/components/alpha/tab_panels_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,8 @@ def test_renders_tabs_and_panels_with_relevant_aria_attributes
end

assert_selector("tab-container") do
assert_selector("div.tabnav") do
assert_selector("ul.tabnav-tabs[aria-label='label']") do
assert_selector("li") do
assert_selector("button#tab-1.tabnav-tab[aria-selected='true']", text: "Tab 1")
end
assert_selector("li") do
assert_selector("button#tab-2.tabnav-tab", text: "Tab 2")
end
end
end
assert_selector("button#tab-1.tabnav-tab[aria-selected='true']", text: "Tab 1")
assert_selector("button#tab-2.tabnav-tab", text: "Tab 2")
assert_selector("div#panel-tab-1[aria-labelledby='tab-1']", text: "Panel 1")
assert_selector("div#panel-tab-2[aria-labelledby='tab-2']", text: "Panel 2", visible: false)
end
Expand Down Expand Up @@ -70,16 +62,8 @@ def test_renders_extra_content
component.with_extra { "extra" }
end
assert_selector("tab-container") do
assert_selector("div.tabnav") do
assert_selector("ul.tabnav-tabs[aria-label='label']") do
assert_selector("li") do
assert_selector("button#tab-1.tabnav-tab[aria-selected='true']", text: "Tab 1")
end
assert_selector("li") do
assert_selector("button#tab-2.tabnav-tab", text: "Tab 2")
end
end
end
assert_selector("button#tab-1.tabnav-tab[aria-selected='true']", text: "Tab 1")
assert_selector("button#tab-2.tabnav-tab", text: "Tab 2")
assert_selector("div#panel-tab-1[aria-labelledby='tab-1']", text: "Panel 1")
assert_selector("div#panel-tab-2[aria-labelledby='tab-2']", text: "Panel 2", visible: false)
assert_text("extra")
Expand Down
48 changes: 13 additions & 35 deletions test/components/alpha/underline_panels_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,13 @@ def test_renders_panels_and_tab_container
end
end

assert_selector("tab-container") do
assert_selector("div.UnderlineNav") do
assert_selector("ul.UnderlineNav-body[role='tablist'][aria-label='label']") do
assert_selector("li[role='presentation']") do
assert_selector("button.UnderlineNav-item[role='tab'][aria-selected='true']", text: "Tab 1")
end
assert_selector("li[role='presentation']") do
assert_selector("button.UnderlineNav-item[role='tab']", text: "Tab 2")
end
end
assert_selector("div.UnderlineNav-actions", text: "Actions content")
end
assert_selector("div[role='tabpanel']", text: "Panel 1")
assert_selector("div[role='tabpanel']", text: "Panel 2", visible: false)
assert_selector("tab-container.UnderlineNav") do
assert_selector("button.UnderlineNav-item[role='tab'][aria-selected='true']", text: "Tab 1")
assert_selector("button.UnderlineNav-item[role='tab']", text: "Tab 2")
assert_selector("div.UnderlineNav-actions", text: "Actions content")
end
assert_selector("div[role='tabpanel']", text: "Panel 1")
assert_selector("div[role='tabpanel']", text: "Panel 2", visible: false)
end

def test_customizes_tab_container
Expand All @@ -45,7 +37,7 @@ def test_customizes_tab_container
end
end

assert_selector("tab-container.m-2.custom-class")
assert_selector("div.m-2.custom-class")
end

def test_raises_if_multiple_tabs_are_selected
Expand Down Expand Up @@ -109,15 +101,9 @@ def test_align_falls_back_to_default

refute_selector(".UnderlineNav--right")

assert_selector("div.UnderlineNav") do
assert_selector("ul.UnderlineNav-body[aria-label='label']") do
assert_selector("li[role='presentation']") do
assert_selector("button.UnderlineNav-item[role='tab'][aria-selected='true']", text: "Tab 1")
end
assert_selector("li[role='presentation']") do
assert_selector("button.UnderlineNav-item[role='tab']", text: "Tab 2")
end
end
assert_selector("tab-container.UnderlineNav") do
assert_selector("button.UnderlineNav-item[role='tab'][aria-selected='true']", text: "Tab 1")
assert_selector("button.UnderlineNav-item[role='tab']", text: "Tab 2")
assert_selector("div.UnderlineNav-actions", text: "Actions content")
end
end
Expand All @@ -137,15 +123,9 @@ def test_adds_underline_nav_right_when_align_right_is_set
end
end

assert_selector("div.UnderlineNav.UnderlineNav--right") do
assert_selector("ul.UnderlineNav-body[aria-label='label']") do
assert_selector("li[role='presentation']") do
assert_selector("button.UnderlineNav-item[role='tab'][aria-selected='true']", text: "Tab 1")
end
assert_selector("li[role='presentation']") do
assert_selector("button.UnderlineNav-item[role='tab']", text: "Tab 2")
end
end
assert_selector("tab-container.UnderlineNav.UnderlineNav--right") do
assert_selector("button.UnderlineNav-item[role='tab'][aria-selected='true']", text: "Tab 1")
assert_selector("button.UnderlineNav-item[role='tab']", text: "Tab 2")
assert_selector("div.UnderlineNav-actions", text: "Actions content")
end
end
Expand All @@ -164,8 +144,6 @@ def test_puts_actions_first_if_align_right_and_actions_exist
"Actions content"
end
end

assert_selector(".UnderlineNav > .UnderlineNav-body:last-child")
end

def test_renders_tab_icon_with_correct_classes
Expand Down
1 change: 1 addition & 0 deletions test/css/component_specific_selectors_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class ComponentSpecificSelectorsTest < Minitest::Test
],
Primer::Alpha::TabNav => [
".tabnav-tab.selected",
"tab-container .tabnav-tab",
".tabnav-extra",
".tabnav-btn"
],
Expand Down
Loading