Skip to content

Commit 1804da1

Browse files
committed
Fixing deletion: now items get properly updated
1 parent 2b1812e commit 1804da1

3 files changed

Lines changed: 17 additions & 7 deletions

File tree

admin/components/generic/Card.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const itemsStore = useItemsStore();
4949
const deleting = ref(undefined);
5050
const deleteDialogVisible = ref(false);
5151
const { $axios } = useNuxtApp();
52-
const emit = defineEmits(["delete", "edit"]);
52+
const emit = defineEmits(["deleted", "edit"]);
5353
5454
const props = defineProps({
5555
item: {
@@ -91,10 +91,11 @@ function createTitle(item) {
9191
}
9292
9393
async function delItem() {
94-
await deleteItem(deleting.value, itemsStore, props.apiUrl, t);
94+
const deleted = await deleteItem(deleting.value, itemsStore, props.apiUrl, t);
9595
deleting.value = undefined;
9696
deleteDialogVisible.value = false;
97-
emit("delete", props.item.id);
97+
if (deleted)
98+
emit("deleted", props.item.id);
9899
}
99100
100101
async function resolveCardProps() {

admin/components/generic/ReadView.vue

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
</div>
3131
</div>
3232
<div class="cards-view" v-if="!itemsStore.tableMode && cardProps && requiredFilterSatisfied">
33-
<Card v-for="item in items.results" @edit="(id) => emit('editing', id)" :item="item" :cardProps="cardProps" :titleProps="titleProps" :apiUrl="apiUrl" :itemSchema="itemSchema">
33+
<Card v-for="item in items.results" @edit="(id) => emit('editing', id)" :item="item" :cardProps="cardProps" :titleProps="titleProps" :apiUrl="apiUrl" :itemSchema="itemSchema" @deleted="_updateListFromDel">
3434
<template v-slot:extra-card-bottom="{item}">
3535
<slot name="extra-card-bottom" :item="item"></slot>
3636
</template>
@@ -262,10 +262,18 @@ function sortChange({column, prop, order}) {
262262
263263
264264
async function delItem() {
265-
await deleteItem(deleting.value, itemsStore, props.apiUrl, t);
265+
const deleted = await deleteItem(deleting.value, itemsStore, props.apiUrl, t);
266+
if (deleted) {
267+
await _updateListFromDel(deleting.value)
268+
}
266269
deleting.value = undefined;
267270
deleteDialogVisible.value = false
268271
}
272+
async function _updateListFromDel(id) {
273+
items.value.results = items.value.results.filter(item => item.id.toString() !== id.toString())
274+
await resolveTableRowProps(items.value.results)
275+
}
276+
269277
</script>
270278

271279
<style lang="scss">

admin/utils/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export async function solveRefPropValue(item, propName, itemSchema) {
8585
export async function deleteItem(id, itemsStore, apiUrl, $t) {
8686
try {
8787
itemsStore.loading = true;
88-
await itemsStore.deleteItem(apiUrl, id);
88+
await itemsStore.deleteItem(apiUrl, id, false);
8989
itemsStore.loading = false;
9090
} catch (e) {
9191
itemsStore.loading = false;
@@ -95,14 +95,15 @@ export async function deleteItem(id, itemsStore, apiUrl, $t) {
9595
type: "error",
9696
position: "top-right",
9797
});
98-
return;
98+
return false;
9999
}
100100
ElNotification({
101101
title: "Success",
102102
message: $t("successdeletingitem"),
103103
type: "success",
104104
position: "top-right",
105105
});
106+
return true;
106107
}
107108

108109

0 commit comments

Comments
 (0)