Update files
This commit is contained in:
parent
10d909711d
commit
e4d76ba705
|
|
@ -159,14 +159,39 @@ export default function PostMenu({ post, currentUser, onClose, onDelete, onUpdat
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const menuStyle = buttonPosition ? {
|
const getMenuStyle = () => {
|
||||||
position: 'fixed',
|
if (!buttonPosition) return {}
|
||||||
top: `${buttonPosition.bottom + 4}px`,
|
|
||||||
left: `${buttonPosition.left + (buttonPosition.right - buttonPosition.left) / 2}px`,
|
const menuWidth = 160 // Примерная ширина меню
|
||||||
transform: 'translateX(-50%)',
|
const padding = 8 // Отступ от края экрана
|
||||||
width: 'auto',
|
const buttonCenterX = buttonPosition.left + (buttonPosition.right - buttonPosition.left) / 2
|
||||||
minWidth: '140px'
|
const windowWidth = window.innerWidth
|
||||||
} : {}
|
|
||||||
|
let left = buttonCenterX
|
||||||
|
let transform = 'translateX(-50%)'
|
||||||
|
|
||||||
|
// Проверка правого края
|
||||||
|
if (buttonCenterX + menuWidth / 2 > windowWidth - padding) {
|
||||||
|
left = windowWidth - padding - menuWidth / 2
|
||||||
|
transform = 'translateX(-50%)'
|
||||||
|
}
|
||||||
|
|
||||||
|
// Проверка левого края
|
||||||
|
if (buttonCenterX - menuWidth / 2 < padding) {
|
||||||
|
left = padding + menuWidth / 2
|
||||||
|
transform = 'translateX(-50%)'
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
position: 'fixed',
|
||||||
|
top: `${buttonPosition.bottom + 4}px`,
|
||||||
|
left: `${left}px`,
|
||||||
|
transform: transform,
|
||||||
|
width: 'auto',
|
||||||
|
minWidth: '140px',
|
||||||
|
maxWidth: `${windowWidth - padding * 2}px`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return createPortal(
|
return createPortal(
|
||||||
<div
|
<div
|
||||||
|
|
@ -175,20 +200,23 @@ export default function PostMenu({ post, currentUser, onClose, onDelete, onUpdat
|
||||||
onTouchStart={(e) => e.stopPropagation()}
|
onTouchStart={(e) => e.stopPropagation()}
|
||||||
onClick={handleOverlayClick}
|
onClick={handleOverlayClick}
|
||||||
>
|
>
|
||||||
<div className="menu-content" style={menuStyle} onClick={(e) => e.stopPropagation()}>
|
<div className="menu-content" style={getMenuStyle()} onClick={(e) => e.stopPropagation()}>
|
||||||
<div className="menu-items" onClick={(e) => e.stopPropagation()}>
|
<div className="menu-items" onClick={(e) => e.stopPropagation()}>
|
||||||
{isOwnPost || isModerator ? (
|
{(isOwnPost || isModerator) && (
|
||||||
<>
|
<>
|
||||||
<button className="menu-item" onClick={() => setShowEditModal(true)}>
|
{isOwnPost && (
|
||||||
<Edit2 size={18} />
|
<button className="menu-item" onClick={() => setShowEditModal(true)}>
|
||||||
<span>Редактировать</span>
|
<Edit2 size={18} />
|
||||||
</button>
|
<span>Редактировать</span>
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
<button className="menu-item danger" onClick={onDelete}>
|
<button className="menu-item danger" onClick={onDelete}>
|
||||||
<Trash2 size={18} />
|
<Trash2 size={18} />
|
||||||
<span>Удалить</span>
|
<span>Удалить</span>
|
||||||
</button>
|
</button>
|
||||||
</>
|
</>
|
||||||
) : (
|
)}
|
||||||
|
{!isOwnPost && (
|
||||||
<button className="menu-item" onClick={() => setShowReportModal(true)}>
|
<button className="menu-item" onClick={() => setShowReportModal(true)}>
|
||||||
<Flag size={18} />
|
<Flag size={18} />
|
||||||
<span>Пожаловаться</span>
|
<span>Пожаловаться</span>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue