File tree Expand file tree Collapse file tree
controllers/primer/view_components Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -472,7 +472,7 @@ export class ActionMenuElement extends HTMLElement {
472472 #handleIncludeFragmentReplaced( ) {
473473 this . #firstItem?. focus ( )
474474 this . #softDisableItems( )
475- this . overlay ?. update ( )
475+ // this.overlay?.update()
476476
477477 // async items have loaded, so component is ready
478478 this . setAttribute ( 'data-ready' , 'true' )
Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ class ActionMenuController < ApplicationController
1010 def landing ; end
1111
1212 def deferred
13+ sleep params [ :delay ] . to_f if params [ :delay ] . present?
1314 render "primer/view_components/action_menu/deferred"
1415 end
1516
Original file line number Diff line number Diff line change 1- <%# The invoker is pinned to the bottom of the viewport so the overlay has no room to grow %>
2- <%# downward once its deferred content loads, reproducing the scenario from DREAM-729. %>
1+ <%# The invoker is pinned near the bottom of the viewport, leaving enough room for the loading %>
2+ <%# spinner placeholder to fit below it but not enough for the full deferred content, reproducing %>
3+ <%# the scenario from DREAM-729. The `delay` param forces the fragment response to arrive after the %>
4+ <%# overlay has already been positioned using the placeholder's size, instead of racing the fetch %>
5+ <%# against the initial position calculation. %>
36< div style ="position: fixed; bottom: 100px; right: 0; ">
4- <%= render ( Primer ::Alpha ::ActionMenu . new ( menu_id : "deferred-bottom" , src : primer_view_components . action_menu_deferred_path ) ) do |menu | %>
7+ <%= render ( Primer ::Alpha ::ActionMenu . new ( menu_id : "deferred-bottom" , src : primer_view_components . action_menu_deferred_path ( delay : 0.3 ) ) ) do |menu | %>
58 <% menu . with_show_button { "Menu with deferred content" } %>
69 <% end %>
710</ div >
Original file line number Diff line number Diff line change @@ -893,19 +893,12 @@ def test_deferred_loading_on_keydown
893893 def test_deferred_loading_overlay_positioned_within_viewport
894894 visit_preview ( :with_deferred_content_near_bottom_of_viewport )
895895 click_on_invoker_button
896-
896+ binding . irb
897897 # Wait for lazy content to load
898898 assert_selector "action-menu ul li" , text : "Copy link"
899899
900- overlay_in_viewport = page . evaluate_script ( <<~JS )
901- (function() {
902- var el = document.querySelector('anchored-position')
903- var rect = el.getBoundingClientRect()
904- return rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)
905- })()
906- JS
907-
908- assert overlay_in_viewport , "Overlay should be positioned within the viewport after deferred content loads"
900+ overlay = find ( "anchored-position" ) . native . node
901+ assert overlay . in_viewport? , "Overlay should be positioned within the viewport after deferred content loads"
909902 end
910903
911904 def test_deferred_dialog_opens
You can’t perform that action at this time.
0 commit comments