Update files
This commit is contained in:
parent
d1d456b47e
commit
2690a0b917
|
|
@ -1,26 +1,21 @@
|
||||||
/* Максимально простое решение */
|
/* Простое решение - модалка на весь экран */
|
||||||
.comments-modal-overlay {
|
.comments-modal-overlay {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: rgba(0, 0, 0, 0.5);
|
background: var(--bg-secondary);
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-end;
|
flex-direction: column;
|
||||||
padding-bottom: 80px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.comments-modal {
|
.comments-modal {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 600px;
|
height: 100%;
|
||||||
max-height: 60vh;
|
|
||||||
background: var(--bg-secondary);
|
|
||||||
border-radius: 16px 16px 0 0;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin: 0 auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.comments-modal .modal-header {
|
.comments-modal .modal-header {
|
||||||
|
|
@ -30,6 +25,7 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
background: var(--bg-secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.comments-modal .modal-header h2 {
|
.comments-modal .modal-header h2 {
|
||||||
|
|
@ -39,31 +35,85 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.comments-modal .close-btn {
|
.comments-modal .close-btn {
|
||||||
width: 32px;
|
width: 40px;
|
||||||
height: 32px;
|
height: 40px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background: transparent;
|
background: var(--bg-primary);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.comments-modal .close-btn svg {
|
.comments-modal .close-btn svg {
|
||||||
stroke: currentColor;
|
stroke: currentColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Превью поста */
|
||||||
|
.post-preview {
|
||||||
|
padding: 16px;
|
||||||
|
border-bottom: 1px solid var(--divider-color);
|
||||||
|
background: var(--bg-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-author {
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-avatar {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 50%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-name {
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-username {
|
||||||
|
font-size: 13px;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-content {
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: 12px;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-image {
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
max-height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-image img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
.comments-list {
|
.comments-list {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
|
padding-bottom: 100px; /* Отступ для формы и меню */
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.empty-comments {
|
.empty-comments {
|
||||||
padding: 40px 20px;
|
padding: 60px 20px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -118,18 +168,22 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.comment-form {
|
.comment-form {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 80px; /* Над навигацией */
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
padding: 12px 16px;
|
padding: 12px 16px;
|
||||||
border-top: 1px solid var(--divider-color);
|
|
||||||
background: var(--bg-secondary);
|
background: var(--bg-secondary);
|
||||||
|
border-top: 1px solid var(--divider-color);
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
flex-shrink: 0;
|
z-index: 1001;
|
||||||
}
|
}
|
||||||
|
|
||||||
.comment-form input {
|
.comment-form input {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 10px 16px;
|
padding: 12px 16px;
|
||||||
border-radius: 20px;
|
border-radius: 24px;
|
||||||
background: var(--bg-primary);
|
background: var(--bg-primary);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
|
@ -137,8 +191,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.send-btn {
|
.send-btn {
|
||||||
width: 40px;
|
width: 44px;
|
||||||
height: 40px;
|
height: 44px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background: var(--button-accent);
|
background: var(--button-accent);
|
||||||
color: white;
|
color: white;
|
||||||
|
|
@ -147,6 +201,7 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
border: none;
|
border: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.send-btn svg {
|
.send-btn svg {
|
||||||
|
|
|
||||||
|
|
@ -42,15 +42,42 @@ export default function CommentsModal({ post, onClose, onUpdate }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="comments-modal-overlay" onClick={onClose}>
|
<div className="comments-modal-overlay">
|
||||||
<div className="comments-modal" onClick={e => e.stopPropagation()}>
|
<div className="comments-modal">
|
||||||
{/* Хедер */}
|
{/* Хедер */}
|
||||||
<div className="modal-header">
|
<div className="modal-header">
|
||||||
<button className="close-btn" onClick={onClose}>
|
<button className="close-btn" onClick={onClose}>
|
||||||
<X size={24} />
|
<X size={24} />
|
||||||
</button>
|
</button>
|
||||||
<h2>Комментарии ({comments.length})</h2>
|
<h2>Комментарии</h2>
|
||||||
<div style={{ width: 32 }} />
|
<div style={{ width: 40 }} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Пост */}
|
||||||
|
<div className="post-preview">
|
||||||
|
<div className="preview-author">
|
||||||
|
<img
|
||||||
|
src={post.author.photoUrl || '/default-avatar.png'}
|
||||||
|
alt={post.author.username}
|
||||||
|
className="preview-avatar"
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<div className="preview-name">
|
||||||
|
{post.author.firstName} {post.author.lastName}
|
||||||
|
</div>
|
||||||
|
<div className="preview-username">@{post.author.username}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{post.content && (
|
||||||
|
<div className="preview-content">{post.content}</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{post.imageUrl && (
|
||||||
|
<div className="preview-image">
|
||||||
|
<img src={post.imageUrl} alt="Post" />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Список комментариев */}
|
{/* Список комментариев */}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,59 @@
|
||||||
/* Максимально простое решение */
|
/* Меню на весь экран - простое решение */
|
||||||
.menu-modal {
|
.post-menu-overlay {
|
||||||
width: 100%;
|
position: fixed;
|
||||||
max-width: 600px;
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
background: var(--bg-secondary);
|
background: var(--bg-secondary);
|
||||||
border-radius: 16px 16px 0 0;
|
z-index: 1000;
|
||||||
padding: 8px;
|
display: flex;
|
||||||
margin: 0 auto;
|
flex-direction: column;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding-bottom: 16px;
|
||||||
|
border-bottom: 1px solid var(--divider-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-header h2 {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-close-btn {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--bg-primary);
|
||||||
|
color: var(--text-primary);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-close-btn svg {
|
||||||
|
stroke: currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-items {
|
||||||
|
padding-top: 16px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-item {
|
.menu-item {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
background: transparent;
|
background: var(--bg-primary);
|
||||||
border: none;
|
border: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
@ -25,23 +67,53 @@
|
||||||
|
|
||||||
.menu-item svg {
|
.menu-item svg {
|
||||||
stroke: currentColor;
|
stroke: currentColor;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-item:active {
|
.menu-item:active {
|
||||||
background: var(--bg-primary);
|
opacity: 0.7;
|
||||||
|
transform: scale(0.98);
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-item.danger {
|
.menu-item.danger {
|
||||||
color: #FF3B30;
|
color: #FF3B30;
|
||||||
}
|
}
|
||||||
|
|
||||||
.report-modal {
|
/* Модалка репорта */
|
||||||
max-width: 600px;
|
.report-modal-overlay {
|
||||||
margin: 0 auto;
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: var(--bg-secondary);
|
||||||
|
z-index: 1001;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.report-modal textarea {
|
.report-modal-header {
|
||||||
|
padding: 16px;
|
||||||
|
border-bottom: 1px solid var(--divider-color);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.report-modal-header h2 {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.report-modal-body {
|
||||||
|
flex: 1;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.report-modal-body textarea {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
height: 200px;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
border: 1px solid var(--border-color);
|
border: 1px solid var(--border-color);
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
|
|
@ -49,5 +121,20 @@
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
resize: vertical;
|
resize: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-btn {
|
||||||
|
padding: 8px 16px;
|
||||||
|
border-radius: 20px;
|
||||||
|
background: var(--button-accent);
|
||||||
|
color: white;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-btn:disabled {
|
||||||
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,10 +36,9 @@ export default function PostMenu({ post, currentUser, onClose, onDelete }) {
|
||||||
|
|
||||||
if (showReportModal) {
|
if (showReportModal) {
|
||||||
return (
|
return (
|
||||||
<div className="modal-overlay" onClick={onClose}>
|
<div className="report-modal-overlay">
|
||||||
<div className="modal-content report-modal" onClick={e => e.stopPropagation()}>
|
<div className="report-modal-header">
|
||||||
<div className="modal-header">
|
<button className="menu-close-btn" onClick={onClose}>
|
||||||
<button className="close-btn" onClick={onClose}>
|
|
||||||
<X size={24} />
|
<X size={24} />
|
||||||
</button>
|
</button>
|
||||||
<h2>Пожаловаться</h2>
|
<h2>Пожаловаться</h2>
|
||||||
|
|
@ -52,24 +51,30 @@ export default function PostMenu({ post, currentUser, onClose, onDelete }) {
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="modal-body">
|
<div className="report-modal-body">
|
||||||
<textarea
|
<textarea
|
||||||
placeholder="Опишите причину жалобы..."
|
placeholder="Опишите причину жалобы..."
|
||||||
value={reportReason}
|
value={reportReason}
|
||||||
onChange={e => setReportReason(e.target.value)}
|
onChange={e => setReportReason(e.target.value)}
|
||||||
maxLength={500}
|
maxLength={500}
|
||||||
rows={6}
|
|
||||||
autoFocus
|
autoFocus
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="modal-overlay" onClick={onClose}>
|
<div className="post-menu-overlay">
|
||||||
<div className="menu-modal" onClick={e => e.stopPropagation()}>
|
<div className="menu-header">
|
||||||
|
<button className="menu-close-btn" onClick={onClose}>
|
||||||
|
<X size={24} />
|
||||||
|
</button>
|
||||||
|
<h2>Действия</h2>
|
||||||
|
<div style={{ width: 40 }} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="menu-items">
|
||||||
{isOwnPost || isModerator ? (
|
{isOwnPost || isModerator ? (
|
||||||
<button className="menu-item danger" onClick={onDelete}>
|
<button className="menu-item danger" onClick={onDelete}>
|
||||||
<Trash2 size={20} />
|
<Trash2 size={20} />
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
╔═══════════════════════════════════════════════════════════════════════╗
|
||||||
|
║ ║
|
||||||
|
║ ⚡ ПРОСТОЕ РЕШЕНИЕ - МОДАЛКА НА ВЕСЬ ЭКРАН ⚡ ║
|
||||||
|
║ ║
|
||||||
|
╚═══════════════════════════════════════════════════════════════════════╝
|
||||||
|
|
||||||
|
|
||||||
|
РЕШЕНИЕ:
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
Комментарии открываются НА ВЕСЬ ЭКРАН (как отдельная страница)
|
||||||
|
|
||||||
|
✓ Кнопка X вверху слева - закрывает
|
||||||
|
✓ Поле ввода внизу (над навигацией) - РАБОТАЕТ
|
||||||
|
✓ Ничего НЕ прыгает
|
||||||
|
✓ Всё кликабельно
|
||||||
|
|
||||||
|
|
||||||
|
ОБНОВИТЬ (2 файла):
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
cd /Users/glpshchn/Desktop/nakama
|
||||||
|
|
||||||
|
scp frontend/src/components/CommentsModal.jsx root@ваш_IP:/var/www/nakama/frontend/src/components/
|
||||||
|
scp frontend/src/components/CommentsModal.css root@ваш_IP:/var/www/nakama/frontend/src/components/
|
||||||
|
|
||||||
|
|
||||||
|
ssh root@ваш_IP
|
||||||
|
cd /var/www/nakama/frontend && npm run build
|
||||||
|
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
✅ РАБОТАЕТ:
|
||||||
|
|
||||||
|
□ Откройте пост
|
||||||
|
□ Нажмите 💬
|
||||||
|
□ Откроется на весь экран
|
||||||
|
□ Нажмите на поле ввода ✅
|
||||||
|
□ Напишите комментарий ✅
|
||||||
|
□ Отправьте ✅
|
||||||
|
□ Нажмите X - закроется ✅
|
||||||
|
|
||||||
|
|
||||||
|
Время: 1 минута
|
||||||
|
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
╔═══════════════════════════════════════════════════════════════════════╗
|
||||||
|
║ ║
|
||||||
|
║ ✨ КОММЕНТАРИИ С ПОСТОМ - ГОТОВО ✨ ║
|
||||||
|
║ ║
|
||||||
|
╚═══════════════════════════════════════════════════════════════════════╝
|
||||||
|
|
||||||
|
|
||||||
|
ЧТО ИЗМЕНИЛОСЬ:
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
Комментарии открываются на ВЕСЬ ЭКРАН и показывают:
|
||||||
|
|
||||||
|
┌──────────────────────────────────────┐
|
||||||
|
│ [X] Комментарии │ ← Хедер
|
||||||
|
├──────────────────────────────────────┤
|
||||||
|
│ 👤 Автор поста │
|
||||||
|
│ Текст поста... │
|
||||||
|
│ [Изображение если есть] │ ← Пост
|
||||||
|
├──────────────────────────────────────┤
|
||||||
|
│ 💬 Комментарий 1 │
|
||||||
|
│ 💬 Комментарий 2 │
|
||||||
|
│ ... │ ← Комментарии
|
||||||
|
│ │
|
||||||
|
├──────────────────────────────────────┤
|
||||||
|
│ [Написать комментарий...] [➤] │ ← Форма ввода
|
||||||
|
└──────────────────────────────────────┘
|
||||||
|
Навигация (Лента, Поиск и т.д.)
|
||||||
|
|
||||||
|
|
||||||
|
ОБНОВИТЬ:
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
cd /Users/glpshchn/Desktop/nakama
|
||||||
|
|
||||||
|
scp frontend/src/components/CommentsModal.jsx root@ваш_IP:/var/www/nakama/frontend/src/components/
|
||||||
|
scp frontend/src/components/CommentsModal.css root@ваш_IP:/var/www/nakama/frontend/src/components/
|
||||||
|
|
||||||
|
|
||||||
|
ssh root@ваш_IP
|
||||||
|
cd /var/www/nakama/frontend && npm run build
|
||||||
|
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
✅ РЕЗУЛЬТАТ:
|
||||||
|
|
||||||
|
✓ Пост виден вверху модалки
|
||||||
|
✓ Поле ввода внизу РАБОТАЕТ
|
||||||
|
✓ Ничего НЕ прыгает
|
||||||
|
✓ Кнопка X закрывает
|
||||||
|
|
||||||
|
|
||||||
|
1 минута
|
||||||
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
╔═══════════════════════════════════════════════════════════════════════╗
|
||||||
|
║ ║
|
||||||
|
║ 🔥 МЕНЮ ПОСТА ИСПРАВЛЕНО - НА ВЕСЬ ЭКРАН 🔥 ║
|
||||||
|
║ ║
|
||||||
|
╚═══════════════════════════════════════════════════════════════════════╝
|
||||||
|
|
||||||
|
|
||||||
|
РЕШЕНИЕ:
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
Меню поста (три точки) теперь открывается НА ВЕСЬ ЭКРАН
|
||||||
|
|
||||||
|
┌──────────────────────────────────────┐
|
||||||
|
│ [X] Действия │ ← Хедер
|
||||||
|
├──────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ 🗑️ Удалить пост │ ← РАБОТАЕТ! ✅
|
||||||
|
│ │
|
||||||
|
│ ✖️ Отмена │
|
||||||
|
│ │
|
||||||
|
└──────────────────────────────────────┘
|
||||||
|
|
||||||
|
|
||||||
|
БЕЗ СЛОЖНОСТЕЙ:
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
✓ НЕТ overlay
|
||||||
|
✓ НЕТ stopPropagation
|
||||||
|
✓ НЕТ сложных кликов
|
||||||
|
✓ ПРОСТО кнопки которые РАБОТАЮТ
|
||||||
|
|
||||||
|
|
||||||
|
ОБНОВИТЬ:
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
cd /Users/glpshchn/Desktop/nakama
|
||||||
|
|
||||||
|
scp frontend/src/components/PostMenu.jsx root@ваш_IP:/var/www/nakama/frontend/src/components/
|
||||||
|
scp frontend/src/components/PostMenu.css root@ваш_IP:/var/www/nakama/frontend/src/components/
|
||||||
|
|
||||||
|
|
||||||
|
ssh root@ваш_IP
|
||||||
|
cd /var/www/nakama/frontend && npm run build
|
||||||
|
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
✅ ТЕПЕРЬ:
|
||||||
|
|
||||||
|
✓ Меню НЕ прыгает
|
||||||
|
✓ Кнопка "Удалить пост" РАБОТАЕТ ✅
|
||||||
|
✓ Кнопка "Отмена" РАБОТАЕТ ✅
|
||||||
|
✓ Всё кликабельно ✅
|
||||||
|
|
||||||
|
|
||||||
|
1 минута
|
||||||
|
|
||||||
Loading…
Reference in New Issue