From faac26d07d7f922d34689132dcca651ad2beb707 Mon Sep 17 00:00:00 2001 From: Mahdi Date: Mon, 12 Oct 2026 17:59:07 +0330 Subject: [PATCH] club home redesign; deal multi-select delete; anchored card menus --- apps/web/src/components/pipeline/DealCard.vue | 89 ++++++++- .../src/components/pipeline/PipelineBoard.vue | 10 +- .../components/pipeline/PipelineColumn.vue | 10 +- .../src/components/pipeline/PipelineList.vue | 172 +++++++++++++++--- apps/web/src/lib/anchored-menu.ts | 4 +- apps/web/src/views/PipelineBoardView.vue | 138 ++++++++++++-- 6 files changed, 373 insertions(+), 50 deletions(-) diff --git a/apps/web/src/components/pipeline/DealCard.vue b/apps/web/src/components/pipeline/DealCard.vue index 8374be3..6825ef9 100644 --- a/apps/web/src/components/pipeline/DealCard.vue +++ b/apps/web/src/components/pipeline/DealCard.vue @@ -15,6 +15,8 @@ const props = withDefaults( accent: PipelineAccent; dragging?: boolean; copy?: PipelineUiCopy; + selectMode?: boolean; + selected?: boolean; }>(), { copy: () => DEAL_BOARD_COPY }, ); @@ -24,6 +26,8 @@ const emit = defineEmits<{ dragEnd: []; open: [dealId: string]; menu: [dealId: string]; + toggleSelect: [dealId: string]; + bulkDelete: []; }>(); const showAmount = computed( @@ -42,30 +46,60 @@ const avatarSrc = computed(() => const extraAssignees = computed(() => Math.max(0, (props.deal.assigneeNames?.length ?? 0) - 1), ); +const showTrash = computed(() => props.selectMode && props.selected);