From 7dad36528cc1551496109968082fc426d8f1b892 Mon Sep 17 00:00:00 2001 From: Robert Dyer Date: Tue, 7 Jan 2025 18:33:03 -0600 Subject: [PATCH] Add Copy last 6/12 months to budget menu (#4096) * Add Copy last 12 months to budget menu * add release note * Make sure budget month actions use showUndoNotification --- .../budgetsummary/BudgetMonthMenu.tsx | 14 +++++ .../envelope/budgetsummary/BudgetSummary.tsx | 54 ++++++++++++++++++- .../budgetsummary/BudgetMonthMenu.tsx | 14 +++++ .../tracking/budgetsummary/BudgetSummary.tsx | 38 +++++++++++++ .../loot-core/src/client/actions/queries.ts | 6 +++ .../loot-core/src/server/budget/actions.ts | 38 +++++++++++++ packages/loot-core/src/server/budget/app.ts | 2 + .../src/server/budget/types/handlers.d.ts | 4 ++ upcoming-release-notes/4096.md | 6 +++ 9 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 upcoming-release-notes/4096.md diff --git a/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx b/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx index 29723a1230..2244bc4c6a 100644 --- a/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx @@ -43,6 +43,12 @@ export function BudgetMonthMenu({ case 'set-3-avg': onSetMonthsAverage(3); break; + case 'set-6-avg': + onSetMonthsAverage(6); + break; + case 'set-12-avg': + onSetMonthsAverage(12); + break; case 'check-templates': onCheckTemplates(); break; @@ -64,6 +70,14 @@ export function BudgetMonthMenu({ name: 'set-3-avg', text: t('Set budgets to 3 month average'), }, + { + name: 'set-6-avg', + text: t('Set budgets to 6 month average'), + }, + { + name: 'set-12-avg', + text: t('Set budgets to 12 month average'), + }, ...(isGoalTemplatesEnabled ? [ { diff --git a/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetSummary.tsx b/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetSummary.tsx index 390542bcf4..9b40609c41 100644 --- a/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetSummary.tsx +++ b/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetSummary.tsx @@ -1,9 +1,11 @@ import React, { useRef, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { css } from '@emotion/css'; import * as monthUtils from 'loot-core/src/shared/months'; +import { useUndo } from '../../../../hooks/useUndo'; import { SvgDotsHorizontalTriple } from '../../../../icons/v1'; import { SvgArrowButtonDown1, SvgArrowButtonUp1 } from '../../../../icons/v2'; import { theme, styles } from '../../../../style'; @@ -32,6 +34,7 @@ export function BudgetSummary({ month }: BudgetSummaryProps) { const [menuOpen, setMenuOpen] = useState(false); const triggerRef = useRef(null); + const { showUndoNotification } = useUndo(); function onMenuOpen() { setMenuOpen(true); @@ -47,6 +50,9 @@ export function BudgetSummary({ month }: BudgetSummaryProps) { ? SvgArrowButtonDown1 : SvgArrowButtonUp1; + const displayMonth = monthUtils.format(month, 'MMMM ‘yy'); + const { t } = useTranslation(); + return (