feat: add badge for mine tasks

This commit is contained in:
2026-09-14 21:30:06 +07:00
parent a0dfb9399a
commit c9245c131c
+35 -2
View File
@@ -15,6 +15,9 @@
showClear
class="w-[180px]"
/>
<span class="flex items-center gap-2 text-[0.8rem] muted-note">
<i class="legend-swatch"></i> My tasks
</span>
</div>
<Button v-if="auth.can('tasks', 'create')" label="New Task" icon="pi pi-plus" @click="openCreate" />
</div>
@@ -40,13 +43,16 @@
:key="task.id"
class="task-card cursor-pointer rounded-xl border p-3 shadow-sm"
:style="{ background: 'var(--canvas)', borderColor: 'var(--hairline)' }"
:class="{ 'opacity-40': draggingId === task.id }"
:class="{ 'opacity-40': draggingId === task.id, 'is-mine': isMine(task) }"
draggable="true"
@dragstart="onDragStart(task)"
@dragend="onDragEnd"
@click.stop="openEdit(task)"
>
<div class="font-medium">{{ task.title }}</div>
<div class="flex items-start justify-between gap-2">
<div class="font-medium">{{ task.title }}</div>
<span v-if="isMine(task)" class="mine-badge">My task</span>
</div>
<div v-if="task.description" class="muted-note mt-1 line-clamp-2 text-[0.85rem]">{{ task.description }}</div>
<div class="mt-2 text-[0.8rem]" v-if="task.assigneeName">
<span class="flex items-center gap-1 muted-note">
@@ -228,6 +234,10 @@ function formatDate(v: string) {
return new Date(v).toLocaleDateString()
}
function isMine(task: Task) {
return !!task.assigneeId && task.assigneeId === auth.user?.id
}
watch(
() => route.params.id,
async () => {
@@ -242,6 +252,29 @@ watch(
.task-card:hover {
border-color: var(--primary) !important;
}
.task-card.is-mine {
background: color-mix(in srgb, var(--primary) 8%, var(--canvas)) !important;
border-left: 3px solid var(--primary);
}
.legend-swatch {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 3px;
border-left: 3px solid var(--primary);
background: color-mix(in srgb, var(--primary) 8%, var(--canvas));
}
.mine-badge {
flex-shrink: 0;
white-space: nowrap;
border-radius: 999px;
background: var(--primary-soft);
color: var(--primary);
padding: 1px 7px;
font-size: 0.65rem;
font-weight: 600;
line-height: 1.5;
}
.board-col.drag-over {
background: color-mix(in srgb, var(--primary) 6%, transparent);
box-shadow: inset 0 0 0 2px var(--primary);