From e07d2372181f1eca1bbc166a41b82b05069bdae4 Mon Sep 17 00:00:00 2001 From: Guhan <74915094+Gukkey@users.noreply.github.com> Date: Sat, 9 Mar 2024 22:08:30 +0530 Subject: [PATCH] Ask for confirmation to delete an expense (#124) * feat: added a popup asking for confirmation to delete an expense * fix: changed cancel option as a button and formatting issues * fix: removed unnecessary tags and replaced generic tags with proper components * Small fix to avoid warning in console --------- Co-authored-by: Sebastien Castiel --- src/components/delete-popup.tsx | 47 +++++++++++++++++++++++++++++++++ src/components/expense-form.tsx | 14 +++------- 2 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 src/components/delete-popup.tsx diff --git a/src/components/delete-popup.tsx b/src/components/delete-popup.tsx new file mode 100644 index 0000000..10b36a3 --- /dev/null +++ b/src/components/delete-popup.tsx @@ -0,0 +1,47 @@ +'use client' + +import { Trash2 } from 'lucide-react' +import { AsyncButton } from './async-button' +import { Button } from './ui/button' +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogTitle, + DialogTrigger, +} from './ui/dialog' + +export function DeletePopup({ onDelete }: { onDelete: () => Promise }) { + return ( + + + + + + Delete this expense? + + Do you really want to delete this expense? This action is + irreversible. + + + + Yes + + + + + + + + ) +} diff --git a/src/components/expense-form.tsx b/src/components/expense-form.tsx index d8b63a8..fdde745 100644 --- a/src/components/expense-form.tsx +++ b/src/components/expense-form.tsx @@ -1,5 +1,4 @@ 'use client' -import { AsyncButton } from '@/components/async-button' import { CategorySelector } from '@/components/category-selector' import { ExpenseDocumentsInput } from '@/components/expense-documents-input' import { SubmitButton } from '@/components/submit-button' @@ -39,12 +38,13 @@ import { RuntimeFeatureFlags } from '@/lib/featureFlags' import { ExpenseFormValues, expenseFormSchema } from '@/lib/schemas' import { cn } from '@/lib/utils' import { zodResolver } from '@hookform/resolvers/zod' -import { Save, Trash2 } from 'lucide-react' +import { Save } from 'lucide-react' import Link from 'next/link' import { useSearchParams } from 'next/navigation' import { useState } from 'react' import { useForm } from 'react-hook-form' import { match } from 'ts-pattern' +import { DeletePopup } from './delete-popup' import { extractCategoryFromTitle } from './expense-form-actions' export type Props = { @@ -598,15 +598,7 @@ export function ExpenseForm({ {isCreate ? <>Create : <>Save} {!isCreate && onDelete && ( - - - Delete - + )}