chore: update super floating toolbar positioning [skip e2e]
This commit is contained in:
@@ -2,7 +2,7 @@ import { MediaQueryBreakpoints } from '@/Hooks/useMediaQuery'
|
||||
import { isMobileScreen } from '@/Utils'
|
||||
import { CSSProperties } from 'react'
|
||||
import { PopoverAlignment, PopoverSide } from './Types'
|
||||
import { OppositeSide, checkCollisions, getNonCollidingAlignment, getOverflows } from './Utils/Collisions'
|
||||
import { OppositeSide, checkCollisions, getNonCollidingAlignment } from './Utils/Collisions'
|
||||
import { getAppRect, getPopoverMaxHeight, getPositionedPopoverRect } from './Utils/Rect'
|
||||
|
||||
const percentOf = (percent: number, value: number) => (percent / 100) * value
|
||||
@@ -122,13 +122,10 @@ export const getPositionedPopoverStyles = ({
|
||||
|
||||
const rectForPreferredSide = getPositionedPopoverRect(popoverRect, anchorRect, side, align)
|
||||
const preferredSideRectCollisions = checkCollisions(rectForPreferredSide, documentRect)
|
||||
const preferredSideOverflows = getOverflows(rectForPreferredSide, documentRect)
|
||||
|
||||
const oppositeSide = OppositeSide[side]
|
||||
const rectForOppositeSide = getPositionedPopoverRect(popoverRect, anchorRect, oppositeSide, align)
|
||||
const oppositeSideOverflows = getOverflows(rectForOppositeSide, documentRect)
|
||||
|
||||
const sideWithLessOverflows = preferredSideOverflows[side] < oppositeSideOverflows[oppositeSide] ? side : oppositeSide
|
||||
const sideWithLessOverflows = preferredSideRectCollisions[side] ? oppositeSide : side
|
||||
const finalAlignment = getNonCollidingAlignment({
|
||||
finalSide: sideWithLessOverflows,
|
||||
preferredAlignment: align,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { PopoverSide, PopoverAlignment, RectCollisions } from '../Types'
|
||||
import { getAppRect, getPositionedPopoverRect } from './Rect'
|
||||
import { getPositionedPopoverRect } from './Rect'
|
||||
|
||||
export const OppositeSide: Record<PopoverSide, PopoverSide> = {
|
||||
top: 'bottom',
|
||||
@@ -20,7 +20,7 @@ export const getOverflows = (popoverRect: DOMRect, documentRect: DOMRect): Recor
|
||||
}
|
||||
|
||||
export const checkCollisions = (popoverRect: DOMRect, containerRect: DOMRect): RectCollisions => {
|
||||
const appRect = getAppRect(containerRect)
|
||||
const appRect = containerRect
|
||||
|
||||
return {
|
||||
top: popoverRect.top < appRect.top,
|
||||
|
||||
Reference in New Issue
Block a user