6.24.0: Кнопка архива рядом с создать доску
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m11s

This commit is contained in:
poignatov
2026-03-19 19:22:10 +03:00
parent 101f4e27ed
commit 6e7ebb9aa3
4 changed files with 74 additions and 51 deletions

View File

@@ -1 +1 @@
6.23.0 6.24.0

View File

@@ -1,6 +1,6 @@
{ {
"name": "play-life-web", "name": "play-life-web",
"version": "6.23.0", "version": "6.24.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View File

@@ -219,11 +219,26 @@
color: #4f46e5; color: #4f46e5;
} }
/* Строка с кнопками добавления и архива */
.board-actions-row {
display: flex;
align-items: center;
margin-top: 6px;
border-top: 1px solid #f3f4f6;
}
.board-actions-separator {
width: 1px;
height: 24px;
background: #e5e7eb;
flex-shrink: 0;
}
/* Кнопка добавления доски */ /* Кнопка добавления доски */
.dropdown-item.add-board { .dropdown-item.add-board {
margin-top: 6px; flex: 1;
padding-top: 14px; padding-top: 14px;
border-top: 1px solid #f3f4f6; padding-bottom: 14px;
border-radius: 0 0 12px 12px; border-radius: 0 0 12px 12px;
color: #667eea; color: #667eea;
font-weight: 500; font-weight: 500;
@@ -231,6 +246,10 @@
justify-content: flex-start; justify-content: flex-start;
} }
.board-actions-row .dropdown-item.add-board:not(:last-child) {
border-radius: 0 0 0 12px;
}
.dropdown-item.add-board:hover { .dropdown-item.add-board:hover {
background: linear-gradient(135deg, #667eea08 0%, #764ba208 100%); background: linear-gradient(135deg, #667eea08 0%, #764ba208 100%);
} }
@@ -264,17 +283,16 @@
height: 20px; height: 20px;
} }
/* Секция архива в дропдауне */ /* Кнопка архива в строке действий */
.archive-section {
margin-top: 2px;
border-top: 1px solid #f3f4f6;
}
.dropdown-item.archive-toggle { .dropdown-item.archive-toggle {
flex-shrink: 0;
width: auto;
padding: 14px 14px;
border-radius: 0 0 12px 0;
color: #6b7280; color: #6b7280;
font-weight: 500; font-weight: 500;
gap: 12px; gap: 6px;
justify-content: flex-start; justify-content: center;
} }
.dropdown-item.archive-toggle:hover { .dropdown-item.archive-toggle:hover {
@@ -289,13 +307,13 @@
} }
.archive-toggle-icon { .archive-toggle-icon {
margin-left: auto; font-size: 8px;
font-size: 10px;
color: #9ca3af; color: #9ca3af;
} }
.archive-list { .archive-list {
padding: 0 4px 4px; padding: 0 4px 4px;
border-top: 1px solid #f3f4f6;
} }
.archive-loading { .archive-loading {

View File

@@ -100,6 +100,7 @@ function BoardSelector({
</div> </div>
)} )}
<div className="board-actions-row">
<button className="dropdown-item add-board" onClick={onAddBoard}> <button className="dropdown-item add-board" onClick={onAddBoard}>
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
<circle cx="12" cy="12" r="10"></circle> <circle cx="12" cy="12" r="10"></circle>
@@ -110,7 +111,8 @@ function BoardSelector({
</button> </button>
{archivedBoards.length > 0 && ( {archivedBoards.length > 0 && (
<div className="archive-section"> <>
<div className="board-actions-separator" />
<button <button
className="dropdown-item archive-toggle" className="dropdown-item archive-toggle"
onClick={() => setArchiveExpanded(!archiveExpanded)} onClick={() => setArchiveExpanded(!archiveExpanded)}
@@ -120,13 +122,15 @@ function BoardSelector({
<rect x="1" y="3" width="22" height="5"></rect> <rect x="1" y="3" width="22" height="5"></rect>
<line x1="10" y1="12" x2="14" y2="12"></line> <line x1="10" y1="12" x2="14" y2="12"></line>
</svg> </svg>
<span>Архив</span>
<span className="archive-toggle-icon"> <span className="archive-toggle-icon">
{archiveExpanded ? '▼' : '▶'} {archiveExpanded ? '▼' : '▶'}
</span> </span>
</button> </button>
</>
)}
</div>
{archiveExpanded && ( {archiveExpanded && archivedBoards.length > 0 && (
<div className="archive-list"> <div className="archive-list">
{archivedBoards.map(board => ( {archivedBoards.map(board => (
<button <button
@@ -135,13 +139,14 @@ function BoardSelector({
onClick={() => handleSelectBoard(board)} onClick={() => handleSelectBoard(board)}
> >
<span className="item-name archive-item-name">{board.name}</span> <span className="item-name archive-item-name">{board.name}</span>
<div className="item-meta">
<span className={`item-members ${board.is_owner ? 'filled' : 'outline'}`}>{board.member_count + 1}</span>
</div>
</button> </button>
))} ))}
</div> </div>
)} )}
</div> </div>
)}
</div>
</div> </div>
</div> </div>
) )