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:
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user