diff --git a/packages/pl-fe/src/components/profile-hover-card.tsx b/packages/pl-fe/src/components/profile-hover-card.tsx index da61aa61d..7434a4455 100644 --- a/packages/pl-fe/src/components/profile-hover-card.tsx +++ b/packages/pl-fe/src/components/profile-hover-card.tsx @@ -1,4 +1,4 @@ -import { useFloating, useTransitionStyles } from '@floating-ui/react'; +import { shift, useFloating, useTransitionStyles } from '@floating-ui/react'; import clsx from 'clsx'; import React, { useEffect } from 'react'; import { useIntl, FormattedMessage } from 'react-intl'; @@ -73,17 +73,23 @@ const ProfileHoverCard: React.FC = ({ visible = true }) => { }; }, []); - const { x, y, strategy, refs, context } = useFloating({ + const { x, y, strategy, refs, context, placement } = useFloating({ open: !!account, elements: { reference: targetRef, }, + middleware: [ + shift({ + padding: 8, + }), + ], }); const { styles } = useTransitionStyles(context, { initial: { opacity: 0, transform: 'scale(0.8)', + transformOrigin: placement === 'bottom' ? 'top' : 'bottom', }, duration: { open: 100, diff --git a/packages/pl-fe/src/components/status-hover-card.tsx b/packages/pl-fe/src/components/status-hover-card.tsx index 75b8fe179..b767ffde0 100644 --- a/packages/pl-fe/src/components/status-hover-card.tsx +++ b/packages/pl-fe/src/components/status-hover-card.tsx @@ -1,4 +1,4 @@ -import { useFloating, useTransitionStyles } from '@floating-ui/react'; +import { shift, useFloating, useTransitionStyles } from '@floating-ui/react'; import clsx from 'clsx'; import React, { useEffect, useCallback } from 'react'; import { useIntl } from 'react-intl'; @@ -43,19 +43,23 @@ const StatusHoverCard: React.FC = ({ visible = true }) => { }; }, []); - const { x, y, strategy, refs, context } = useFloating({ + const { x, y, strategy, refs, context, placement } = useFloating({ open: !!statusId, elements: { reference: targetRef, }, - placement: 'top', + middleware: [ + shift({ + padding: 8, + }), + ], }); const { styles } = useTransitionStyles(context, { initial: { opacity: 0, transform: 'scale(0.8)', - transformOrigin: 'bottom', + transformOrigin: placement === 'bottom' ? 'top' : 'bottom', }, duration: { open: 100,