4.5.0: Улучшена работа с задачами желаний
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m25s

This commit is contained in:
poignatov
2026-01-30 19:53:13 +03:00
parent 25f0c2697a
commit e955494dc8
8 changed files with 302 additions and 62 deletions

View File

@@ -167,6 +167,33 @@
border-radius: 18px;
}
.card-tasks-badge {
position: absolute;
bottom: 0.5rem;
background: #6b7280;
color: white;
border-radius: 50%;
padding: 0.25rem;
font-size: 0.75rem;
font-weight: 600;
min-width: 1.5rem;
height: 1.5rem;
text-align: center;
z-index: 5;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
display: flex;
align-items: center;
justify-content: center;
}
.card-tasks-badge-left {
left: 0.5rem;
}
.card-tasks-badge-right {
right: 0.5rem;
}
.card-name {
padding: 0.6rem 0 0;
font-weight: 600;

View File

@@ -232,6 +232,27 @@
transform: translateY(-1px);
}
.wishlist-detail-tasks-badge {
position: absolute;
bottom: -0.25rem;
left: -0.25rem;
background: #6b7280;
color: white;
border-radius: 50%;
padding: 0.2rem;
font-size: 0.7rem;
font-weight: 600;
min-width: 1.25rem;
height: 1.25rem;
text-align: center;
z-index: 10;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
border: 2px solid white;
display: flex;
align-items: center;
justify-content: center;
}
.wishlist-detail-linked-task {
margin-top: 0.75rem;
}

View File

@@ -368,11 +368,12 @@ function WishlistDetail({ wishlistId, onNavigate, onRefresh, boardId }) {
{wishlistItem.linked_task && wishlistItem.linked_task.user_id === user?.id ? (
<div className="wishlist-detail-linked-task">
<div className="linked-task-label-header">Связанная задача:</div>
<div
className="task-item"
onClick={handleTaskItemClick}
>
<div className="task-item-content">
<div style={{ position: 'relative', display: 'inline-block', width: '100%' }}>
<div
className="task-item"
onClick={handleTaskItemClick}
>
<div className="task-item-content">
<div
className="task-checkmark"
onClick={handleTaskCheckmarkClick}
@@ -439,6 +440,12 @@ function WishlistDetail({ wishlistId, onNavigate, onRefresh, boardId }) {
)}
</div>
</div>
{wishlistItem?.tasks_count > 0 && (
<div className="wishlist-detail-tasks-badge">
{wishlistItem.tasks_count}
</div>
)}
</div>
</div>
) : (
<div className="wishlist-detail-actions">
@@ -459,16 +466,23 @@ function WishlistDetail({ wishlistId, onNavigate, onRefresh, boardId }) {
>
{isCompleting ? 'Завершение...' : 'Завершить'}
</button>
<button
onClick={handleCreateTask}
className="wishlist-detail-create-task-button"
title="Создать задачу"
>
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
<path d="M9 11l3 3L22 4"></path>
<path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path>
</svg>
</button>
<div style={{ position: 'relative', display: 'inline-block' }}>
<button
onClick={handleCreateTask}
className="wishlist-detail-create-task-button"
title="Создать задачу"
>
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
<path d="M9 11l3 3L22 4"></path>
<path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path>
</svg>
</button>
{wishlistItem?.tasks_count > 0 && (
<div className="wishlist-detail-tasks-badge">
{wishlistItem.tasks_count}
</div>
)}
</div>
</>
)}
</div>