Remove the per-row delete button from Explore's cards

Matches KanbanCard, which never had one -- deleting a card lives on
its own view now (CardManageMenu's "Delete card"), reachable by
clicking through from either list.

Cleaned up what that leaves unused: the cards store's remove() (its
only caller), and .card-row__delete's styling.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-05 00:54:36 +01:00
co-authored by Claude Sonnet 5
parent 80ff31748b
commit d1de9f50f5
4 changed files with 1 additions and 44 deletions
-5
View File
@@ -2,7 +2,6 @@
import type { Card } from '../types'
defineProps<{ card: Card }>()
const emit = defineEmits<{ delete: [] }>()
</script>
<template>
@@ -13,9 +12,5 @@ const emit = defineEmits<{ delete: [] }>()
{{ card.status?.name ?? 'No status' }}
</span>
</RouterLink>
<button type="button" class="card-row__delete" aria-label="Delete card" @click="emit('delete')">
</button>
</li>
</template>
-6
View File
@@ -56,11 +56,6 @@ export const useCardsStore = defineStore('cards', () => {
const setComplete = (card: Card, complete: boolean) => patch(card, { complete })
async function remove(card: Card): Promise<void> {
await apiRequest(`/cards/${card.id}`, { method: 'DELETE', auth: true })
cards.value = cards.value.filter((c) => c.id !== card.id)
}
function reset(): void {
cards.value = []
projectId.value = null
@@ -76,7 +71,6 @@ export const useCardsStore = defineStore('cards', () => {
load,
add,
setComplete,
remove,
reset,
}
})
-16
View File
@@ -594,22 +594,6 @@ h1 {
font-style: italic;
}
.card-row__delete {
flex: none;
border: none;
background: none;
color: var(--muted);
cursor: pointer;
font-size: 1rem;
padding: 0.2rem 0.4rem;
border-radius: var(--radius-sm);
}
.card-row__delete:hover {
color: var(--error);
background: var(--bg);
}
/* --- project detail: header, inline title, manage menu ----------------- */
/* Grid, not flex, so the mobile reflow below is one explicit statement of
+1 -17
View File
@@ -24,17 +24,6 @@ const sortedCards = computed(() =>
[...cards.cards].sort((a, b) => a.text.localeCompare(b.text, undefined, { sensitivity: 'base' })),
)
/** Run a store mutation, surfacing failures and resyncing from the server. */
async function run(op: Promise<unknown>) {
actionError.value = null
try {
await op
} catch (e) {
actionError.value = e instanceof ApiError ? e.message : 'Something went wrong.'
if (cards.projectId !== null) await cards.load(cards.projectId)
}
}
async function onCreate() {
submitting.value = true
actionError.value = null
@@ -58,12 +47,7 @@ async function onCreate() {
<p v-if="cards.loading && !cards.loaded" class="muted">Loading</p>
<ul v-else-if="sortedCards.length" class="cards">
<CardRow
v-for="card in sortedCards"
:key="card.id"
:card="card"
@delete="run(cards.remove(card))"
/>
<CardRow v-for="card in sortedCards" :key="card.id" :card="card" />
</ul>
<form class="kanban__new form--new-card" @submit.prevent="onCreate">