File tree Expand file tree Collapse file tree 4 files changed +44
-3
lines changed
app/components/primer/open_project
previews/primer/open_project
test/components/primer/open_project Expand file tree Collapse file tree 4 files changed +44
-3
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' @openproject/primer-view-components ' : patch
3+ ---
4+
5+ Add the option to skip breadcrumb items for mobile
Original file line number Diff line number Diff line change @@ -186,11 +186,16 @@ class PageHeader < Primer::Component
186186 system_arguments [ :classes ] = class_names ( system_arguments [ :classes ] , "PageHeader-breadcrumbs" )
187187 system_arguments [ :display ] ||= DEFAULT_BREADCRUMBS_DISPLAY
188188
189+ parent_item = nil
190+
189191 # show parent link if there is a parent for current page
190- if items . length > 1
191- link_arguments = { }
192- parent_item = items [ items . length - 2 ]
192+ items . reverse_each do |item |
193+ parent_item = item if item . is_a? ( Hash ) && item [ :skip_for_mobile ] != true
194+ break if parent_item . present?
195+ end
193196
197+ if parent_item . present? && parent_item [ :href ] . present?
198+ link_arguments = { }
194199 link_arguments [ :icon ] = fetch_or_fallback ( BACK_BUTTON_ICON_OPTIONS , DEFAULT_BACK_BUTTON_ICON )
195200 link_arguments [ :href ] = parent_item [ :href ]
196201 link_arguments [ :target ] = "_top"
Original file line number Diff line number Diff line change @@ -256,6 +256,16 @@ def segmented_control_mobile_icons
256256 end
257257 end
258258 end
259+
260+ # @label With skipable breadcrumb items
261+ def skip_breadcrumb_item
262+ render ( Primer ::OpenProject ::PageHeader . new ) do |component |
263+ component . with_title { "Resize me to mobile screen size" }
264+ component . with_breadcrumbs ( [ { href : "/foo" , text : "Foo" } ,
265+ { href : "/bar" , text : "Bar" , skip_for_mobile : true } ,
266+ "Baz" ] )
267+ end
268+ end
259269 end
260270 end
261271end
Original file line number Diff line number Diff line change @@ -269,6 +269,27 @@ def test_renders_editable_title
269269 assert_selector ( ".FormField-input.Button--secondary" )
270270 end
271271
272+ def test_skips_a_breadcrumb_item_for_mobile
273+ render_inline ( Primer ::OpenProject ::PageHeader . new ) do |header |
274+ header . with_title { "Hello" }
275+ header . with_breadcrumbs ( [ { href : "/foo" , text : "Foo" } ,
276+ { href : "/bar" , text : "Bar" , skip_for_mobile : true } ,
277+ "Baz" ] )
278+ end
279+
280+ assert_text ( "Hello" )
281+ assert_selector ( ".PageHeader-title" )
282+ assert_selector ( ".PageHeader-breadcrumbs" )
283+
284+ # The direct parent is skipped for the mobile back button..
285+ assert_selector ( "a.PageHeader-parentLink[href='/foo']" )
286+
287+ # .. but it is present in the normal desktop
288+ assert_selector ( "nav[aria-label='Breadcrumb'].PageHeader-breadcrumbs .breadcrumb-item a[href='/foo']" )
289+ assert_selector ( "nav[aria-label='Breadcrumb'].PageHeader-breadcrumbs .breadcrumb-item a[href='/bar']" )
290+ assert_selector ( "nav[aria-label='Breadcrumb'].PageHeader-breadcrumbs .breadcrumb-item.text-bold a[href='#']" )
291+ end
292+
272293 private
273294
274295 def breadcrumb_elements
You can’t perform that action at this time.
0 commit comments