Skip to content

Commit

Permalink
Revert tab container upgrade (#2839)
Browse files Browse the repository at this point in the history
  • Loading branch information
camertron committed May 13, 2024
1 parent e4d6177 commit 97ec908
Show file tree
Hide file tree
Showing 22 changed files with 144 additions and 94 deletions.
5 changes: 5 additions & 0 deletions .changeset/warm-wombats-notice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@primer/view-components": patch
---

Revert tab container upgrade
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 0 additions & 10 deletions app/components/primer/alpha/tab_nav.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,6 @@
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 @@ -71,11 +66,6 @@
}
}

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: 9 additions & 5 deletions app/components/primer/alpha/tab_panels.html.erb
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
<%= render Primer::BaseComponent.new(**@system_arguments) do %>
<%= extra if @align == :left %>
<% tabs.each do |tab| %>
<%= tab %>
<%= 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 %>
<% end %>
<%= extra if @align == :right %>
<% tabs.each do |tab| %>
<%= tab.panel %>
<% end %>
Expand Down
17 changes: 13 additions & 4 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: false,
list: true,
panel_id: "panel-#{id}",
**system_arguments
)
Expand All @@ -43,14 +43,23 @@ 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), **deny_tag_argument(**wrapper_arguments) }
@system_arguments[:tag] = :"tab-container"
@system_arguments = deny_tag_argument(**system_arguments)
@system_arguments[:tag] = :div
@system_arguments[:classes] = tab_nav_classes(@system_arguments[:classes])
@system_arguments[:"aria-label"] = label

@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
end

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

.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) {
.UnderlineNav-body {
display: flex;
align-items: center;
gap: var(--control-medium-gap);
Expand Down
14 changes: 8 additions & 6 deletions app/components/primer/alpha/underline_panels.html.erb
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
<%= render Primer::BaseComponent.new(**@wrapper_arguments) do %>
<%= tab_container_wrapper(with_panel: true, **@wrapper_arguments) do %>
<%= render Primer::BaseComponent.new(**@system_arguments) do %>
<% if @align == :right %>
<%= actions %>
<% end %>
<% tabs.each do |tab| %>
<%= tab %>
<%= render body do %>
<% tabs.each do |tab| %>
<%= tab %>
<% end %>
<% end %>
<% if @align == :left %>
<%= actions %>
<% end %>
<% tabs.each do |tab| %>
<%= tab.panel %>
<% end %>
<% end %>
<% tabs.each do |tab| %>
<%= tab.panel %>
<% end %>
<% end %>
4 changes: 0 additions & 4 deletions app/components/primer/alpha/underline_panels.pcss

This file was deleted.

20 changes: 14 additions & 6 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: false,
list: true,
icon_classes: "UnderlineNav-octicon",
panel_id: "panel-#{id}",
**system_arguments
Expand All @@ -43,16 +43,24 @@ 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 = deny_tag_argument(**wrapper_arguments)
@wrapper_arguments[:tag] = :div
@wrapper_arguments = wrapper_arguments

@system_arguments = deny_tag_argument(**system_arguments)
@system_arguments[:tag] = :"tab-container"
@system_arguments[:tag] = :div
@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] = :div
@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)
end
end
end
Expand Down
1 change: 0 additions & 1 deletion app/components/primer/primer.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
@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: 7 additions & 21 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": "^4.5.0",
"@github/tab-container-element": "^3.1.2",
"@oddbird/popover-polyfill": "^0.4.0",
"@primer/behaviors": "^1.3.4"
},
Expand Down
24 changes: 20 additions & 4 deletions test/components/alpha/tab_panels_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,16 @@ def test_renders_tabs_and_panels_with_relevant_aria_attributes
end

assert_selector("tab-container") do
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.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("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 @@ -62,8 +70,16 @@ def test_renders_extra_content
component.with_extra { "extra" }
end
assert_selector("tab-container") do
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.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("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: 35 additions & 13 deletions test/components/alpha/underline_panels_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,21 @@ def test_renders_panels_and_tab_container
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")
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)
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 @@ -37,7 +45,7 @@ def test_customizes_tab_container
end
end

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

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

refute_selector(".UnderlineNav--right")

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") 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("div.UnderlineNav-actions", text: "Actions content")
end
end
Expand All @@ -123,9 +137,15 @@ def test_adds_underline_nav_right_when_align_right_is_set
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.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("div.UnderlineNav-actions", text: "Actions content")
end
end
Expand All @@ -144,6 +164,8 @@ 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: 0 additions & 1 deletion test/css/component_specific_selectors_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ class ComponentSpecificSelectorsTest < Minitest::Test
],
Primer::Alpha::TabNav => [
".tabnav-tab.selected",
"tab-container .tabnav-tab",
".tabnav-extra",
".tabnav-btn"
],
Expand Down

0 comments on commit 97ec908

Please sign in to comment.