Update files

This commit is contained in:
glpshchn 2025-12-05 01:52:34 +03:00
parent 10d909711d
commit e4d76ba705
1 changed files with 43 additions and 15 deletions

View File

@ -159,14 +159,39 @@ export default function PostMenu({ post, currentUser, onClose, onDelete, onUpdat
) )
} }
const menuStyle = buttonPosition ? { const getMenuStyle = () => {
if (!buttonPosition) return {}
const menuWidth = 160 // Примерная ширина меню
const padding = 8 // Отступ от края экрана
const buttonCenterX = buttonPosition.left + (buttonPosition.right - buttonPosition.left) / 2
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', position: 'fixed',
top: `${buttonPosition.bottom + 4}px`, top: `${buttonPosition.bottom + 4}px`,
left: `${buttonPosition.left + (buttonPosition.right - buttonPosition.left) / 2}px`, left: `${left}px`,
transform: 'translateX(-50%)', transform: transform,
width: 'auto', width: 'auto',
minWidth: '140px' 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) && (
<> <>
{isOwnPost && (
<button className="menu-item" onClick={() => setShowEditModal(true)}> <button className="menu-item" onClick={() => setShowEditModal(true)}>
<Edit2 size={18} /> <Edit2 size={18} />
<span>Редактировать</span> <span>Редактировать</span>
</button> </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>