diff --git a/frontend/src/MvpPanel.vue b/frontend/src/MvpPanel.vue index 8c3a5db..18c4584 100644 --- a/frontend/src/MvpPanel.vue +++ b/frontend/src/MvpPanel.vue @@ -580,7 +580,7 @@ onBeforeUnmount(() => {
暂无已归档习惯。
diff --git a/frontend/src/style.css b/frontend/src/style.css index b47e6b9..fd70daf 100644 --- a/frontend/src/style.css +++ b/frontend/src/style.css @@ -64,6 +64,7 @@ main{background:var(--surface-base)} .soft-button,.danger-button,.file-button,.secondary,.restore,.archived-toggle,.archived-countdowns button{background:var(--surface-raised);border-color:var(--border-cream);box-shadow:var(--highlight-inner)} .primary,.primary-small,.unified-fab{background:var(--accent);color:#fff} .danger-button{color:var(--danger);border-color:#dba99d;background:#fff8f5}.inline-error,.purge-list-error{color:var(--danger);background:#fff0ec}.task-check[aria-pressed="true"] .task-check-mark,.habit-row.done .habit-check .task-check-mark{background:var(--success);border-color:var(--success)} +@media(max-width:930px){.habit-archive-toggle{width:100%;min-height:44px;appearance:none;background:var(--surface-raised);border:1px solid var(--border-cream);box-shadow:none;justify-content:flex-start}.archived-habits{width:100%;display:grid;gap:0}.archived-habits>button{width:100%;min-height:44px;appearance:none;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;color:inherit;text-align:left;background:var(--surface-raised);border:0;border-bottom:1px solid var(--border-cream);border-radius:0;font:inherit}.archived-habits>button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archived-habits>button small{color:var(--muted);white-space:nowrap}} input,select,textarea,.search{background:var(--surface-raised);border-color:var(--border-cream);border-radius:var(--radius-control);box-shadow:var(--highlight-inner)} .search input,.detail-title textarea{background:transparent;box-shadow:none} .sidebar-popover button,.sidebar-action-sheet .app-sheet__body button,.app-sheet--actions .app-sheet__body>button,.more-sheet>button{background:var(--surface-raised)} diff --git a/frontend/src/style.test.ts b/frontend/src/style.test.ts index c052277..d5a0d96 100644 --- a/frontend/src/style.test.ts +++ b/frontend/src/style.test.ts @@ -228,7 +228,13 @@ describe('mobile list row language', () => { it('provides a minimal archived-habit viewing path', () => { expect(mvpPanel).toContain("request('/habits?archived=true')") expect(mvpPanel).toContain("{{ archivedHabitsLoaded ? `已归档(${archivedHabits.length})` : '已归档' }}") + expect(mvpPanel).toContain('class="archived-toggle habit-archive-toggle"') expect(mvpPanel).toContain('v-for="h in archivedHabits"') + expect(css).toMatch(/@media\(max-width:930px\)\{\.habit-archive-toggle\{[^}]*width:100%;[^}]*min-height:44px;[^}]*appearance:none;[^}]*background:var\(--surface-raised\);[^}]*border:1px solid var\(--border-cream\)/) + expect(css).toMatch(/\.archived-habits\{[^}]*width:100%;[^}]*display:grid/) + expect(css).toMatch(/\.archived-habits>button\{[^}]*width:100%;[^}]*min-height:44px;[^}]*appearance:none;[^}]*grid-template-columns:minmax\(0,1fr\) auto;[^}]*background:var\(--surface-raised\);[^}]*border-bottom:1px solid var\(--border-cream\)/) + expect(css).toMatch(/\.archived-habits>button span\{[^}]*min-width:0;[^}]*overflow:hidden;[^}]*text-overflow:ellipsis;[^}]*white-space:nowrap/) + expect(css).toMatch(/\.archived-habits>button small\{[^}]*white-space:nowrap/) }) it('reuses the habit composer for edits and patches only changed fields', () => {