-
共 {{ store.tasks.length }} 个任务
+
共 {{ store.activeTasks.length }} 个任务
{{ hiddenNote }}
diff --git a/src/components/QuickAddTask.spec.ts b/src/components/QuickAddTask.spec.ts
index 4a03c58..40dd2db 100644
--- a/src/components/QuickAddTask.spec.ts
+++ b/src/components/QuickAddTask.spec.ts
@@ -197,6 +197,6 @@ describe('QuickAddTask 批量粘贴', () => {
expect(action?.label).toBe('撤销')
action?.run()
- expect(store.tasks).toHaveLength(0)
+ expect(store.activeTasks).toHaveLength(0)
})
})
diff --git a/src/components/TagFilter.vue b/src/components/TagFilter.vue
index 2e49cd9..138117d 100644
--- a/src/components/TagFilter.vue
+++ b/src/components/TagFilter.vue
@@ -10,7 +10,7 @@ import { onBeforeUnmount, onMounted, ref } from 'vue'
defineProps<{ tags: readonly string[]; selected: readonly string[] }>()
-const emit = defineEmits<{ toggle: [tag: string]; clear: [] }>()
+const emit = defineEmits<{ toggle: [tag: string]; clear: []; manage: [] }>()
const open = ref(false)
const rootRef = ref(null)
@@ -29,6 +29,12 @@ function onDocumentKeydown(event: KeyboardEvent): void {
open.value = false
}
+/** 交给应用级面板处理;先收起下拉,避免两层浮层叠在一起 */
+function openManager(): void {
+ open.value = false
+ emit('manage')
+}
+
onMounted(() => {
document.addEventListener('click', onDocumentClick)
document.addEventListener('keydown', onDocumentKeydown, true)
@@ -110,6 +116,14 @@ onBeforeUnmount(() => {
>
清除标签筛选
+
+
diff --git a/src/components/TagManagerPanel.spec.ts b/src/components/TagManagerPanel.spec.ts
new file mode 100644
index 0000000..cfbb96d
--- /dev/null
+++ b/src/components/TagManagerPanel.spec.ts
@@ -0,0 +1,120 @@
+import { mount } from '@vue/test-utils'
+import type { VueWrapper } from '@vue/test-utils'
+import { createPinia, setActivePinia } from 'pinia'
+import { beforeEach, describe, expect, it } from 'vitest'
+
+import { createMemoryTaskRepository } from '@/data/taskRepository'
+import { useTaskStore } from '@/stores/tasks'
+
+import TagManagerPanel from './TagManagerPanel.vue'
+
+function setup(prepare?: (store: ReturnType