[verified] redesign compact list editor
ci / gitleaks (push) Successful in 8s
ci / docker (push) Successful in 3m59s

This commit is contained in:
2026-09-21 10:59:41 +08:00
parent 7f8b435164
commit d925a043dc
3 changed files with 144 additions and 116 deletions
+22 -34
View File
@@ -1596,39 +1596,31 @@ describe('sidebar information hierarchy', () => {
expect(css).toContain('width:3px;')
})
it('groups folder and list editing actions into a clear compact hierarchy', () => {
it('uses the selected compact editor for list name, folder, and archive actions', () => {
expect(app).toContain('aria-label="打开文件夹操作"')
expect(app).toContain('aria-label="打开清单操作"')
expect(app).toContain('panel-class="sidebar-action-sheet"')
expect(app).toContain(':label="sidebarAction ? `${sidebarAction.item.name}操作` : undefined"')
expect(app).toContain('class="sidebar-action-kind"')
expect(app).toContain('class="sidebar-action-group"')
expect(app).toContain('class="sidebar-action-group-title"')
expect(app).toContain('class="sidebar-action-danger"')
expect(app).toContain("sidebarAction.kind==='folders'?'文件夹':'清单'")
expect(app).toContain("sidebarAction.kind==='folders' ? `删除后,其中 ${sidebarActionFolderListCount} 个清单会移到“我的清单”` : '任务会保留,可从“已归档”恢复'")
const deleteEntityBlock = app.slice(app.indexOf('async function deleteEntity'), app.indexOf('async function loadArchivedLists'))
expect(deleteEntityBlock).toContain("confirmAction(`归档清单「${item.name}」?`, '任务会保留,可从“已归档”恢复')")
expect(deleteEntityBlock).not.toContain("askText(`归档清单")
expect(css).toContain('.sidebar-action-sheet{width:min(320px,calc(100vw - 24px));')
expect(css).toContain('.sidebar-action-group{display:grid;gap:2px;')
expect(css).toContain('.sidebar-action-danger{border-top:1px solid')
expect(app).toContain('panel-class="list-editor-sheet"')
expect(app).toContain('id="list-editor-title"')
expect(app).toContain('v-model="listEditorName"')
expect(app).toContain('v-model="listEditorFolderId"')
expect(app).toContain('>所在文件夹<')
expect(app).toContain("{{listEditorBusy?'正在保存…':'保存更改'}}")
expect(app).toContain('任务会保留,可从“已归档”恢复')
expect(app).not.toContain('class="list-editor-position"')
expect(app).not.toContain('aria-label="上移清单"')
expect(app).not.toContain('aria-label="下移清单"')
const archiveListBlock = app.slice(app.indexOf('async function archiveListFromEditor'), app.indexOf('function toggleFolder'))
expect(archiveListBlock).toContain("confirmAction(`归档清单「${item.name}」?`, '任务会保留,可从“已归档”恢复')")
expect(archiveListBlock).not.toContain("askText(`归档清单")
expect(css).toContain('.list-editor-sheet{width:min(460px,calc(100vw - 24px));')
expect(css).toContain('.list-editor-form{display:grid;gap:17px;padding:18px 20px}')
expect(css).toContain('.list-editor-danger{border-top:1px solid var(--border-cream);')
expect(app).toContain('@keydown.esc="sidebarCreateOpen=false;closeArchivedListAction();closeSidebarAction()"')
expect(app).toContain('sidebarCreateOpen.value = false; sidebarAction.value = null')
expect(app).not.toContain('aria-label="重命名文件夹" @click="renameEntity')
expect(app).not.toContain('aria-label="重命名清单" @click="renameEntity')
})
it('uses a dedicated second step for choosing a list destination', () => {
expect(app).toContain('<template v-if="listMoveMenuOpen">')
expect(app).toContain('aria-label="返回清单操作"')
expect(app).toContain('class="sidebar-action-move-title"')
expect(app).toContain('选择目标位置')
expect(app).toContain('role="menu" aria-label="选择目标文件夹"')
expect(app).toContain("'list-move-current':")
expect(css).toContain('.sidebar-action-move-back{min-height:44px;')
expect(css).toContain('.list-move-menu{display:grid;gap:2px;padding:0}')
})
})
describe('quiet index sidebar parity', () => {
@@ -1727,7 +1719,7 @@ describe('sidebar layout', () => {
expect(app).not.toContain('list.is_inbox" class="list-drag-handle"')
})
it('uses the handle-only touch contract and exposes same-scope move controls', () => {
it('uses the handle-only touch contract while keeping drag organization available', () => {
expect(app).not.toContain('@pointerdown="startListLongPress(list, $event)"')
expect(app).not.toContain('function startListLongPress')
expect(app).not.toContain('listLongPressTimer')
@@ -1742,14 +1734,10 @@ describe('sidebar layout', () => {
expect(app).toContain('@pointerup.stop="finishListDrag(list,$event)"')
expect(app).toContain('@pointercancel.stop="cancelListDrag"')
expect(app).toContain('listHandlePending = undefined')
expect(app).toContain('aria-label="上移清单"')
expect(app).toContain('aria-label="下移清单"')
expect(app).toContain("moveListWithinScope(sidebarAction.item as TaskList, 'up')")
expect(app).toContain("moveListWithinScope(sidebarAction.item as TaskList, 'down')")
expect(app).toContain('aria-label="移动到文件夹"')
expect(app).toContain('role="menu"')
expect(app).toContain('role="menuitem"')
expect(app).toContain('移出文件夹')
expect(app).not.toContain('aria-label="上移清单"')
expect(app).not.toContain('aria-label="下移清单"')
expect(app).not.toContain('class="list-editor-position"')
expect(app).toContain('v-model="listEditorFolderId"')
})
it('shows drag lift, folder highlighting, and insertion targets', () => {