diff --git a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png index f62d41599940d0fdbebf5055a5cd3e51d631ffc8..412fa61b6929eeca4e41486674d345668671f7e9 100644 Binary files a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png and b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png index 5d1c88fb7f6ddf47ddc3a87f9f8fc239bf7191a3..583945c0bd5062de234c6e67d0f870cc7a565160 100644 Binary files a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png and b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png index e3429c77e958034315b9187341787e382c45c0b3..18aa0dd90b1725191fa09997b9612e9c4300ce8a 100644 Binary files a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png and b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png differ diff --git a/packages/desktop-client/src/components/reports/CategorySelector.tsx b/packages/desktop-client/src/components/reports/CategorySelector.tsx index 317ca37275327a5b27f4bd6a350a0183667037f6..359aec51c82257fcc770b20037baaf581d712f0a 100644 --- a/packages/desktop-client/src/components/reports/CategorySelector.tsx +++ b/packages/desktop-client/src/components/reports/CategorySelector.tsx @@ -12,7 +12,7 @@ import { SvgViewHide, SvgViewShow, } from '../../icons/v2'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; import { Text } from '../common/Text'; import { View } from '../common/View'; import { Checkbox } from '../forms'; @@ -72,8 +72,8 @@ export function CategorySelector({ }} > <Button - type="bare" - onClick={() => setUncheckedHidden(state => !state)} + variant="bare" + onPress={() => setUncheckedHidden(state => !state)} style={{ padding: 8 }} > <View> diff --git a/packages/desktop-client/src/components/reports/GraphButton.tsx b/packages/desktop-client/src/components/reports/GraphButton.tsx index f62b771ebcb6e4c3c6353ab6926156f309c48752..9502d24a139c5cd89f454111cd5cc4f5396862c0 100644 --- a/packages/desktop-client/src/components/reports/GraphButton.tsx +++ b/packages/desktop-client/src/components/reports/GraphButton.tsx @@ -1,14 +1,14 @@ import React, { type HTMLProps } from 'react'; import { type CSSProperties, styles, theme } from '../../style'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; import { Text } from '../common/Text'; import { Tooltip } from '../common/Tooltip'; type GraphButtonProps = HTMLProps<HTMLButtonElement> & { selected?: boolean; style?: CSSProperties; - onSelect?: (newValue: string) => void; + onSelect?: () => void; title?: string; disabled?: boolean; }; @@ -28,15 +28,15 @@ export const GraphButton = ({ style={{ ...styles.tooltip, lineHeight: 1.5, padding: '6px 10px' }} > <Button - type="bare" + variant="bare" style={{ ...(selected && { backgroundColor: theme.buttonBareBackgroundHover, }), ...style, }} - onClick={onSelect} - disabled={disabled} + onPress={onSelect} + isDisabled={disabled} > {children} </Button> diff --git a/packages/desktop-client/src/components/reports/Header.jsx b/packages/desktop-client/src/components/reports/Header.jsx index a494746a3a462816c4f202cc62cb693a2d009330..1f8e4bc78d146b10ca1e963a5c4c5c6e3691d394 100644 --- a/packages/desktop-client/src/components/reports/Header.jsx +++ b/packages/desktop-client/src/components/reports/Header.jsx @@ -3,7 +3,7 @@ import { useLocation } from 'react-router-dom'; import * as monthUtils from 'loot-core/src/shared/months'; import { useResponsive } from '../../ResponsiveProvider'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; import { Select } from '../common/Select'; import { View } from '../common/View'; import { AppliedFilters } from '../filters/AppliedFilters'; @@ -109,33 +109,33 @@ export function Header({ > {show1Month && ( <Button - type="bare" - onClick={() => onChangeDates(...getLatestRange(1))} + variant="bare" + onPress={() => onChangeDates(...getLatestRange(1))} > 1 month </Button> )} <Button - type="bare" - onClick={() => onChangeDates(...getLatestRange(2))} + variant="bare" + onPress={() => onChangeDates(...getLatestRange(2))} > 3 months </Button> <Button - type="bare" - onClick={() => onChangeDates(...getLatestRange(5))} + variant="bare" + onPress={() => onChangeDates(...getLatestRange(5))} > 6 months </Button> <Button - type="bare" - onClick={() => onChangeDates(...getLatestRange(11))} + variant="bare" + onPress={() => onChangeDates(...getLatestRange(11))} > 1 Year </Button> <Button - type="bare" - onClick={() => + variant="bare" + onPress={() => onChangeDates( ...getFullRange(allMonths[allMonths.length - 1].name), ) diff --git a/packages/desktop-client/src/components/reports/ModeButton.tsx b/packages/desktop-client/src/components/reports/ModeButton.tsx index e0bb035f91c44fc42a2c77e765d260278c1c3f0c..94a208e1ff031bd417acfb5f4d686396bdf08cb5 100644 --- a/packages/desktop-client/src/components/reports/ModeButton.tsx +++ b/packages/desktop-client/src/components/reports/ModeButton.tsx @@ -1,13 +1,15 @@ -import React, { type MouseEventHandler, type ReactNode } from 'react'; +import React, { type ReactNode } from 'react'; + +import { css } from 'glamor'; import { type CSSProperties, theme } from '../../style'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; type ModeButtonProps = { selected: boolean; children: ReactNode; style?: CSSProperties; - onSelect: MouseEventHandler<HTMLButtonElement>; + onSelect: () => void; }; export function ModeButton({ @@ -18,23 +20,25 @@ export function ModeButton({ }: ModeButtonProps) { return ( <Button - type="bare" - style={{ - padding: '5px 10px', - backgroundColor: theme.menuBackground, - marginRight: 5, - fontSize: 'inherit', - ...style, - ...(selected && { - backgroundColor: theme.buttonPrimaryBackground, - color: theme.buttonPrimaryText, - ':hover': { - backgroundColor: theme.buttonPrimaryBackgroundHover, - color: theme.buttonPrimaryTextHover, - }, + variant="bare" + className={String( + css({ + padding: '5px 10px', + backgroundColor: theme.menuBackground, + marginRight: 5, + fontSize: 'inherit', + ...(selected && { + backgroundColor: theme.buttonPrimaryBackground, + color: theme.buttonPrimaryText, + ':hover': { + backgroundColor: theme.buttonPrimaryBackgroundHover, + color: theme.buttonPrimaryTextHover, + }, + }), + ...style, }), - }} - onClick={onSelect} + )} + onPress={onSelect} > {children} </Button> diff --git a/packages/desktop-client/src/components/reports/Overview.tsx b/packages/desktop-client/src/components/reports/Overview.tsx index a2a71ef832770b7a73834635a191c030c87068fd..49c708275512bb0a6da8237be2b5b90b5352b086 100644 --- a/packages/desktop-client/src/components/reports/Overview.tsx +++ b/packages/desktop-client/src/components/reports/Overview.tsx @@ -7,10 +7,9 @@ import { useReports } from 'loot-core/src/client/data-hooks/reports'; import { useAccounts } from '../../hooks/useAccounts'; import { useFeatureFlag } from '../../hooks/useFeatureFlag'; +import { useNavigate } from '../../hooks/useNavigate'; import { useResponsive } from '../../ResponsiveProvider'; -import { Button } from '../common/Button'; -import { Link } from '../common/Link'; -import { Text } from '../common/Text'; +import { Button } from '../common/Button2'; import { View } from '../common/View'; import { MOBILE_NAV_HEIGHT } from '../mobile/MobileNavTabs'; import { MobilePageHeader, Page, PageHeader } from '../Page'; @@ -23,6 +22,7 @@ import { SpendingCard } from './reports/SpendingCard'; export function Overview() { const { data: customReports } = useReports(); const { isNarrowWidth } = useResponsive(); + const navigate = useNavigate(); const location = useLocation(); sessionStorage.setItem('url', location.pathname); @@ -45,11 +45,12 @@ export function Overview() { > <PageHeader title="Reports" /> {!isNarrowWidth && ( - <Link to="/reports/custom" style={{ textDecoration: 'none' }}> - <Button type="primary"> - <Text>Create new custom report</Text> - </Button> - </Link> + <Button + variant="primary" + onPress={() => navigate('/reports/custom')} + > + Create new custom report + </Button> )} </View> ) diff --git a/packages/desktop-client/src/components/reports/ReportSidebar.tsx b/packages/desktop-client/src/components/reports/ReportSidebar.tsx index 5745827c34b440bd7fe988b7e0fa6282415f1c63..3bf4fdcf3d5153eb8d2d3e089f8a37567b5f531a 100644 --- a/packages/desktop-client/src/components/reports/ReportSidebar.tsx +++ b/packages/desktop-client/src/components/reports/ReportSidebar.tsx @@ -9,7 +9,7 @@ import { type SyncedPrefs } from 'loot-core/types/prefs'; import { styles } from '../../style/styles'; import { theme } from '../../style/theme'; import { Information } from '../alerts'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; import { Menu } from '../common/Menu'; import { Popover } from '../common/Popover'; import { Select } from '../common/Select'; @@ -275,7 +275,7 @@ export function ReportSidebar({ <Text style={{ width: 50, textAlign: 'right', marginRight: 5 }} /> <Button ref={triggerRef} - onClick={() => { + onPress={() => { setMenuOpen(true); }} style={{ diff --git a/packages/desktop-client/src/components/reports/SaveReport.tsx b/packages/desktop-client/src/components/reports/SaveReport.tsx index e961d8e2d1cbd31520b8df12a1c44515f1c9683a..09f7a0492c8cd71c771f7a371990bd8a7c10ee70 100644 --- a/packages/desktop-client/src/components/reports/SaveReport.tsx +++ b/packages/desktop-client/src/components/reports/SaveReport.tsx @@ -5,7 +5,7 @@ import { send, sendCatch } from 'loot-core/src/platform/client/fetch'; import { type CustomReportEntity } from 'loot-core/src/types/models'; import { SvgExpandArrow } from '../../icons/v0'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; import { Popover } from '../common/Popover'; import { Text } from '../common/Text'; import { View } from '../common/View'; @@ -159,8 +159,8 @@ export function SaveReport({ > <Button ref={triggerRef} - type="bare" - onClick={() => { + variant="bare" + onPress={() => { setMenuOpen(true); }} > diff --git a/packages/desktop-client/src/components/reports/SaveReportChoose.tsx b/packages/desktop-client/src/components/reports/SaveReportChoose.tsx index 0b747ee6ed3d01a17e5082d68110962eb0a09e2b..43f396176f96eb8214d0545fc964817ce9142e82 100644 --- a/packages/desktop-client/src/components/reports/SaveReportChoose.tsx +++ b/packages/desktop-client/src/components/reports/SaveReportChoose.tsx @@ -1,7 +1,7 @@ import React, { createRef, useEffect, useState } from 'react'; import { theme } from '../../style/theme'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; import { Stack } from '../common/Stack'; import { Text } from '../common/Text'; import { View } from '../common/View'; @@ -48,9 +48,8 @@ export function SaveReportChoose({ onApply }: SaveReportChooseProps) { > <View style={{ flex: 1 }} /> <Button - type="primary" - onClick={e => { - e.preventDefault(); + variant="primary" + onPress={() => { if (!value) { setErr('Invalid report entered'); return; diff --git a/packages/desktop-client/src/components/reports/SaveReportDelete.tsx b/packages/desktop-client/src/components/reports/SaveReportDelete.tsx index 3a5b95fedb9c7e3fe28f88875d200dec2fb4913d..7a8da58a5bb5466d9f2bcd2a2a30d49c50ab8396 100644 --- a/packages/desktop-client/src/components/reports/SaveReportDelete.tsx +++ b/packages/desktop-client/src/components/reports/SaveReportDelete.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { theme } from '../../style/theme'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; import { Stack } from '../common/Stack'; import { Text } from '../common/Text'; import { View } from '../common/View'; @@ -33,10 +33,10 @@ export function SaveReportDelete({ style={{ marginTop: 15 }} > <View style={{ flex: 1 }} /> - <Button type="primary" onClick={onDelete}> + <Button variant="primary" onPress={onDelete}> Yes </Button> - <Button type="primary" onClick={onClose}> + <Button variant="primary" onPress={onClose}> No </Button> </Stack> diff --git a/packages/desktop-client/src/components/reports/SaveReportName.tsx b/packages/desktop-client/src/components/reports/SaveReportName.tsx index ee6bd8e51bfbf59ba64c959046bed2577632d693..fd3f2c5e5ab7e0a42bc1dfe378451c586bfda3b7 100644 --- a/packages/desktop-client/src/components/reports/SaveReportName.tsx +++ b/packages/desktop-client/src/components/reports/SaveReportName.tsx @@ -3,7 +3,7 @@ import React, { type RefObject, useEffect } from 'react'; import { type CustomReportEntity } from 'loot-core/types/models/reports'; import { theme } from '../../style'; -import { Button } from '../common/Button'; +import { Button } from '../common/Button2'; import { Input } from '../common/Input'; import { Stack } from '../common/Stack'; import { Text } from '../common/Text'; @@ -66,10 +66,9 @@ export function SaveReportName({ /> </FormField> <Button - type="primary" + variant="primary" style={{ marginTop: 30 }} - onClick={e => { - e.preventDefault(); + onPress={() => { onAddUpdate({ menuChoice: menuItem ?? undefined, reportData: report ?? undefined, diff --git a/packages/desktop-client/src/components/reports/reports/CashFlow.tsx b/packages/desktop-client/src/components/reports/reports/CashFlow.tsx index 949f7dd93fd58ab0577bb6956e1ed79ea4a7814f..88f6733ef4f12afc925b21438faae174e13d410f 100644 --- a/packages/desktop-client/src/components/reports/reports/CashFlow.tsx +++ b/packages/desktop-client/src/components/reports/reports/CashFlow.tsx @@ -13,7 +13,7 @@ import { useResponsive } from '../../../ResponsiveProvider'; import { theme } from '../../../style'; import { AlignedText } from '../../common/AlignedText'; import { Block } from '../../common/Block'; -import { Button } from '../../common/Button'; +import { Button } from '../../common/Button2'; import { Paragraph } from '../../common/Paragraph'; import { Text } from '../../common/Text'; import { View } from '../../common/View'; @@ -143,7 +143,7 @@ export function CashFlow() { justifyContent: 'flex-end', }} > - <Button onClick={() => setShowBalance(state => !state)}> + <Button onPress={() => setShowBalance(state => !state)}> {showBalance ? 'Hide balance' : 'Show balance'} </Button> </View> diff --git a/packages/desktop-client/src/components/reports/reports/Spending.tsx b/packages/desktop-client/src/components/reports/reports/Spending.tsx index 8de238dfc10a038a3fe8cc460cf1448496691f96..efbff45ed19d6e2dc55010ba3fac761b245c61a6 100644 --- a/packages/desktop-client/src/components/reports/reports/Spending.tsx +++ b/packages/desktop-client/src/components/reports/reports/Spending.tsx @@ -11,7 +11,7 @@ import { useResponsive } from '../../../ResponsiveProvider'; import { theme, styles } from '../../../style'; import { AlignedText } from '../../common/AlignedText'; import { Block } from '../../common/Block'; -import { Button } from '../../common/Button'; +import { Button } from '../../common/Button2'; import { Paragraph } from '../../common/Paragraph'; import { Select } from '../../common/Select'; import { Text } from '../../common/Text'; @@ -261,12 +261,12 @@ export function Spending() { }} > <Button - type="primary" + variant="primary" style={{ marginLeft: 10, }} - onClick={saveFilter} - disabled={filterSaved ? true : false} + onPress={saveFilter} + isDisabled={filterSaved} > {filterSaved ? 'Saved' : 'Save'} </Button> diff --git a/upcoming-release-notes/3159.md b/upcoming-release-notes/3159.md new file mode 100644 index 0000000000000000000000000000000000000000..5694a09958c269bfbafce94c1ff2421ff933aab7 --- /dev/null +++ b/upcoming-release-notes/3159.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [joel-jeremy] +--- + +Use new react-aria-components based Button on reports page.