Opened 7 years ago

Closed 6 years ago

#5284 closed bug (fixed)

Position: Smarter collision detection

Reported by: Scott González Owned by:
Priority: major Milestone: 1.9.0
Component: ui.position Version: 1.8
Keywords: Cc:
Blocked by: Blocking:


Collision detection needs to be smart enough to never make the situation worse. Flipping should only happen if more of the element will be visible after the flip. Fitting should only shift until the maximum possible amount of the element is visible.

Change History (8)

comment:1 Changed 7 years ago by Jörn Zaefferer


We should create a testpage with four inputs, each in one corner, and position a menu based on the autocomplete-default for each input. Then you actually have to shrink the browser window to test, as position always does collision-detection against window - there is no way to specify a container against which to test.

comment:3 Changed 7 years ago by Jörn Zaefferer

Improved that testcase a bit further:

It shows quite nicely one of the problems we have: The three menus on the right should be with the right corner on the inputs right corner.

Also: Setting collision: "fit" makes that test much worse. The bottom menus will actually end up overlapping their inputs.

comment:4 Changed 7 years ago by Jörn Zaefferer

Milestone: 1.next1.9
Type: enhancementbug

comment:5 Changed 7 years ago by bhollis

I fixed the problem with the "flip" collision that caused the menus on the right to not align correctly:

That commit also fixes a problem in the demo when you set both positions to "right bottom" then try to drag the orange element towards the top of the screen:

comment:6 Changed 7 years ago by Scott González

Priority: criticalmajor

comment:7 Changed 6 years ago by Jörn Zaefferer

Landed in master, needs some more testing to verify it covers everything we want.

comment:8 Changed 6 years ago by Scott González

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.