feat: added delete list & list items
This commit is contained in:
+32
-1
@@ -4,6 +4,7 @@ import { useListsStore } from '@/stores/lists'
|
||||
import type { LocalList } from '@/database/db'
|
||||
import ListCard from '@/components/ListCard.vue'
|
||||
import ShareListModal from '@/components/ShareListModal.vue'
|
||||
import DeleteListModal from '@/components/DeleteListModal.vue'
|
||||
|
||||
const listsStore = useListsStore()
|
||||
|
||||
@@ -11,6 +12,7 @@ const newListName = ref('')
|
||||
const isCreating = ref(false)
|
||||
const createError = ref('')
|
||||
const sharingList = ref<LocalList | null>(null)
|
||||
const deletingList = ref<LocalList | null>(null)
|
||||
|
||||
onMounted(() => {
|
||||
listsStore.loadLists()
|
||||
@@ -24,6 +26,25 @@ function handleCloseShare() {
|
||||
sharingList.value = null
|
||||
}
|
||||
|
||||
function handleOpenDelete(list: LocalList) {
|
||||
deletingList.value = list
|
||||
}
|
||||
|
||||
function handleCloseDelete() {
|
||||
deletingList.value = null
|
||||
}
|
||||
|
||||
async function handleConfirmDelete() {
|
||||
if (!deletingList.value) return
|
||||
const listId = deletingList.value.id
|
||||
deletingList.value = null
|
||||
try {
|
||||
await listsStore.deleteList(listId)
|
||||
} catch (err) {
|
||||
createError.value = err instanceof Error ? err.message : 'Failed to delete list'
|
||||
}
|
||||
}
|
||||
|
||||
async function handleCreateList() {
|
||||
const name = newListName.value.trim()
|
||||
if (!name) return
|
||||
@@ -67,7 +88,11 @@ async function handleCreateList() {
|
||||
|
||||
<ul v-if="listsStore.sortedLists.length > 0" class="lists">
|
||||
<li v-for="list in listsStore.sortedLists" :key="list.id">
|
||||
<ListCard :list="list" @share="handleOpenShare(list)" />
|
||||
<ListCard
|
||||
:list="list"
|
||||
@share="handleOpenShare(list)"
|
||||
@delete="handleOpenDelete(list)"
|
||||
/>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -77,6 +102,12 @@ async function handleCreateList() {
|
||||
</div>
|
||||
|
||||
<ShareListModal v-if="sharingList" :list="sharingList" @close="handleCloseShare" />
|
||||
<DeleteListModal
|
||||
v-if="deletingList"
|
||||
:list="deletingList"
|
||||
@close="handleCloseDelete"
|
||||
@confirm="handleConfirmDelete"
|
||||
/>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user