feat: Implement budget edit functionality
When the "Edit Budget" button is clicked, display a popup similar to the expense input form for budget modification.
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
|
||||
import React from 'react';
|
||||
import React, { useState } from 'react';
|
||||
import { useBudgetTabContent } from '@/hooks/budget/useBudgetTabContent';
|
||||
import BudgetHeader from './budget/BudgetHeader';
|
||||
import BudgetProgressBar from './budget/BudgetProgressBar';
|
||||
import BudgetStatusDisplay from './budget/BudgetStatusDisplay';
|
||||
import BudgetInputButton from './budget/BudgetInputButton';
|
||||
import BudgetInputForm from './budget/BudgetInputForm';
|
||||
import BudgetDialog from './budget/BudgetDialog';
|
||||
|
||||
interface BudgetData {
|
||||
targetAmount: number;
|
||||
@@ -26,10 +26,11 @@ const BudgetTabContent: React.FC<BudgetTabContentProps> = ({
|
||||
calculatePercentage,
|
||||
onSaveBudget
|
||||
}) => {
|
||||
const [showBudgetDialog, setShowBudgetDialog] = useState(false);
|
||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||
|
||||
const {
|
||||
categoryBudgets,
|
||||
showBudgetInput,
|
||||
toggleBudgetInput,
|
||||
handleCategoryInputChange,
|
||||
handleSaveCategoryBudgets,
|
||||
isBudgetSet,
|
||||
@@ -48,6 +49,23 @@ const BudgetTabContent: React.FC<BudgetTabContentProps> = ({
|
||||
onSaveBudget
|
||||
});
|
||||
|
||||
const handleOpenDialog = () => {
|
||||
setShowBudgetDialog(true);
|
||||
};
|
||||
|
||||
const handleSaveBudget = () => {
|
||||
setIsSubmitting(true);
|
||||
try {
|
||||
handleSaveCategoryBudgets();
|
||||
} finally {
|
||||
// 성공 또는 실패 여부와 관계없이 제출 상태 해제 및 다이얼로그 닫기
|
||||
setTimeout(() => {
|
||||
setIsSubmitting(false);
|
||||
setShowBudgetDialog(false);
|
||||
}, 300);
|
||||
}
|
||||
};
|
||||
|
||||
// 월간 예산 모드 로깅
|
||||
React.useEffect(() => {
|
||||
console.log('BudgetTabContent 렌더링: 월간 예산');
|
||||
@@ -81,16 +99,17 @@ const BudgetTabContent: React.FC<BudgetTabContentProps> = ({
|
||||
<BudgetInputButton
|
||||
isBudgetSet={isBudgetSet}
|
||||
budgetButtonText={budgetButtonText}
|
||||
toggleBudgetInput={toggleBudgetInput}
|
||||
toggleBudgetInput={handleOpenDialog}
|
||||
/>
|
||||
|
||||
<BudgetInputForm
|
||||
showBudgetInput={showBudgetInput}
|
||||
<BudgetDialog
|
||||
open={showBudgetDialog}
|
||||
onOpenChange={setShowBudgetDialog}
|
||||
categoryBudgets={categoryBudgets}
|
||||
handleCategoryInputChange={handleCategoryInputChange}
|
||||
handleSaveCategoryBudgets={handleSaveCategoryBudgets}
|
||||
handleSaveCategoryBudgets={handleSaveBudget}
|
||||
calculateTotalBudget={calculateTotalBudget}
|
||||
formatCurrency={formatCurrency}
|
||||
isSubmitting={isSubmitting}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user