diff --git a/.oxlintrc.json b/.oxlintrc.json index 5452d08a8b..4043e5a85d 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -18,11 +18,6 @@ "FS": "readonly" }, "rules": { - // TODO fix all these and re-enable - "jsx-a11y/click-events-have-key-events": "off", - "jsx-a11y/prefer-tag-over-role": "off", - "jsx-a11y/tabindex-no-positive": "off", - // Import sorting // TODO replace once oxfmt supports this: https://github.com/oxc-project/oxc/issues/17076 "perfectionist/sort-imports": [ diff --git a/packages/component-library/src/Menu.tsx b/packages/component-library/src/Menu.tsx index a7f510e673..be15bf6a62 100644 --- a/packages/component-library/src/Menu.tsx +++ b/packages/component-library/src/Menu.tsx @@ -152,7 +152,7 @@ export function Menu({ diff --git a/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-1-chromium-linux.png b/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-1-chromium-linux.png index a0c3cbfeab..fe058ec31c 100644 Binary files a/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-1-chromium-linux.png and b/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-1-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-2-chromium-linux.png b/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-2-chromium-linux.png index 78de7d7751..36416eaa86 100644 Binary files a/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-2-chromium-linux.png and b/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-2-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-3-chromium-linux.png b/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-3-chromium-linux.png index c446d08d87..0a136bc115 100644 Binary files a/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-3-chromium-linux.png and b/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-3-chromium-linux.png differ diff --git a/packages/desktop-client/src/components/Page.tsx b/packages/desktop-client/src/components/Page.tsx index 0b92d1f599..06bffa16c6 100644 --- a/packages/desktop-client/src/components/Page.tsx +++ b/packages/desktop-client/src/components/Page.tsx @@ -76,9 +76,7 @@ export function MobilePageHeader({ > {leftContent} - {title} - + {item.name} - + ); } diff --git a/packages/desktop-client/src/components/autocomplete/Autocomplete.tsx b/packages/desktop-client/src/components/autocomplete/Autocomplete.tsx index 6653cdc55a..ccd201902d 100644 --- a/packages/desktop-client/src/components/autocomplete/Autocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/Autocomplete.tsx @@ -180,6 +180,7 @@ function defaultRenderItems( // * https://github.com/WebKit/WebKit/blob/447d90b0c52b2951a69df78f06bb5e6b10262f4b/LayoutTests/fast/events/touch/ios/content-observation/400ms-hover-intent.html // * https://github.com/WebKit/WebKit/blob/58956cf59ba01267644b5e8fe766efa7aa6f0c5c/Source/WebCore/page/ios/ContentChangeObserver.cpp // * https://github.com/WebKit/WebKit/blob/58956cf59ba01267644b5e8fe766efa7aa6f0c5c/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L783 + // oxlint-disable-next-line jsx-a11y/prefer-tag-over-role role="button" className={css({ padding: 5, diff --git a/packages/desktop-client/src/components/autocomplete/CategoryAutocomplete.tsx b/packages/desktop-client/src/components/autocomplete/CategoryAutocomplete.tsx index 1ac74812b5..1f6412e75b 100644 --- a/packages/desktop-client/src/components/autocomplete/CategoryAutocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/CategoryAutocomplete.tsx @@ -380,6 +380,7 @@ function SplitTransactionButton({ // * https://github.com/WebKit/WebKit/blob/447d90b0c52b2951a69df78f06bb5e6b10262f4b/LayoutTests/fast/events/touch/ios/content-observation/400ms-hover-intent.html // * https://github.com/WebKit/WebKit/blob/58956cf59ba01267644b5e8fe766efa7aa6f0c5c/Source/WebCore/page/ios/ContentChangeObserver.cpp // * https://github.com/WebKit/WebKit/blob/58956cf59ba01267644b5e8fe766efa7aa6f0c5c/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L783 + // oxlint-disable-next-line jsx-a11y/prefer-tag-over-role role="button" style={{ backgroundColor: highlighted @@ -461,10 +462,10 @@ function CategoryItem({ const toBudget = useEnvelopeSheetValue(envelopeBudget.toBudget); return ( -
-
+ ); } diff --git a/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.tsx b/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.tsx index 27a6242e12..3efd1008ce 100644 --- a/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/PayeeAutocomplete.tsx @@ -642,7 +642,8 @@ function PayeeItem({ paddingLeftOverFromIcon -= iconSize + 5; } return ( -
-
+ ); } diff --git a/packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx b/packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx index f2395db011..9a31001ab5 100644 --- a/packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx +++ b/packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx @@ -469,9 +469,9 @@ export const ExpenseCategoryMonth = memo(function ExpenseCategoryMonth({ width="flex" style={{ paddingRight: styles.monthRightPadding, textAlign: 'right' }} > - { + - { + - !category.is_income && setBalanceMenuOpen(true)} + onPress={() => !category.is_income && setBalanceMenuOpen(true)} + style={{ + justifyContent: 'flex-end', + background: 'transparent', + width: '100%', + padding: 0, + }} > - + )} - + ); } diff --git a/packages/desktop-client/src/components/mobile/ActionableGridListItem.tsx b/packages/desktop-client/src/components/mobile/ActionableGridListItem.tsx index 5b995670a5..dc3ae23d82 100644 --- a/packages/desktop-client/src/components/mobile/ActionableGridListItem.tsx +++ b/packages/desktop-client/src/components/mobile/ActionableGridListItem.tsx @@ -2,6 +2,7 @@ import React, { useRef, useState, type ReactNode } from 'react'; import { GridListItem, type GridListItemProps } from 'react-aria-components'; import { animated, config, useSpring } from 'react-spring'; +import { Button } from '@actual-app/components/button'; import { styles } from '@actual-app/components/styles'; import { theme } from '@actual-app/components/theme'; import { useDrag } from '@use-gesture/react'; @@ -107,20 +108,20 @@ export function ActionableGridListItem({ }} > {/* Main content */} -
{children} -
+ {/* Actions that appear when swiped */} {hasActions && ( diff --git a/packages/desktop-client/src/components/reports/ReportCard.tsx b/packages/desktop-client/src/components/reports/ReportCard.tsx index e929d4129a..1ff7632fba 100644 --- a/packages/desktop-client/src/components/reports/ReportCard.tsx +++ b/packages/desktop-client/src/components/reports/ReportCard.tsx @@ -107,19 +107,19 @@ export function ReportCard({ if (to) { return ( - navigate(to)} + ); } diff --git a/packages/desktop-client/src/components/reports/ReportCardName.tsx b/packages/desktop-client/src/components/reports/ReportCardName.tsx index d5b64d29fb..4853972a98 100644 --- a/packages/desktop-client/src/components/reports/ReportCardName.tsx +++ b/packages/desktop-client/src/components/reports/ReportCardName.tsx @@ -1,6 +1,5 @@ import React from 'react'; -import { Block } from '@actual-app/components/block'; import { InitialFocus } from '@actual-app/components/initial-focus'; import { Input } from '@actual-app/components/input'; import { styles } from '@actual-app/components/styles'; @@ -42,15 +41,16 @@ export const ReportCardName = ({ } return ( - {name} - + ); }; diff --git a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTable.tsx b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTable.tsx index 200817748e..93e0c438ad 100644 --- a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTable.tsx +++ b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTable.tsx @@ -156,7 +156,7 @@ export function ReportTable({ outline: 'none', '& .animated .animated-row': { transition: '.25s transform' }, }} - tabIndex={1} + tabIndex={0} > ; + onClick?: ComponentProps['onClick']; forceHover?: boolean; forceActive?: boolean; }; diff --git a/packages/desktop-client/src/components/sidebar/ItemContent.tsx b/packages/desktop-client/src/components/sidebar/ItemContent.tsx index 56a695b749..fd1f8003a1 100644 --- a/packages/desktop-client/src/components/sidebar/ItemContent.tsx +++ b/packages/desktop-client/src/components/sidebar/ItemContent.tsx @@ -1,18 +1,15 @@ -import React, { - type ComponentProps, - type MouseEventHandler, - type ReactNode, -} from 'react'; +import React, { type ComponentProps, type ReactNode } from 'react'; +import { Button } from '@actual-app/components/button'; import { type CSSProperties } from '@actual-app/components/styles'; -import { View } from '@actual-app/components/view'; +import { type View } from '@actual-app/components/view'; import { Link } from '@desktop-client/components/common/Link'; type ItemContentProps = { style: ComponentProps['style']; to: string; - onClick: MouseEventHandler; + onClick: ComponentProps['onPress']; activeStyle: CSSProperties; children: ReactNode; forceActive?: boolean; @@ -27,21 +24,17 @@ export function ItemContent({ children, }: ItemContentProps) { return onClick ? ( - {children} - + ) : ( {children} diff --git a/packages/desktop-client/src/components/sidebar/SecondaryItem.tsx b/packages/desktop-client/src/components/sidebar/SecondaryItem.tsx index 00a3388614..1069193b18 100644 --- a/packages/desktop-client/src/components/sidebar/SecondaryItem.tsx +++ b/packages/desktop-client/src/components/sidebar/SecondaryItem.tsx @@ -1,8 +1,8 @@ // @ts-strict-ignore import React, { + type ComponentProps, type ComponentType, type CSSProperties, - type MouseEventHandler, type SVGProps, } from 'react'; @@ -22,7 +22,7 @@ type SecondaryItemProps = { | ComponentType> | ComponentType>; style?: CSSProperties; - onClick?: MouseEventHandler; + onClick?: ComponentProps['onClick']; bold?: boolean; indent?: number; }; diff --git a/packages/desktop-client/src/components/table.tsx b/packages/desktop-client/src/components/table.tsx index 7e36492391..09e7123c6a 100644 --- a/packages/desktop-client/src/components/table.tsx +++ b/packages/desktop-client/src/components/table.tsx @@ -1158,7 +1158,7 @@ export const Table = forwardRef( outline: 'none', ...style, }} - tabIndex={1} + tabIndex={0} {...getNavigatorProps(props)} data-testid="table" > diff --git a/packages/desktop-client/src/notes/DesktopLinkedNotes.tsx b/packages/desktop-client/src/notes/DesktopLinkedNotes.tsx index e3c7973368..d12a721598 100644 --- a/packages/desktop-client/src/notes/DesktopLinkedNotes.tsx +++ b/packages/desktop-client/src/notes/DesktopLinkedNotes.tsx @@ -1,8 +1,7 @@ -import { type MouseEvent } from 'react'; import { useTranslation } from 'react-i18next'; +import { Button } from '@actual-app/components/button'; import { theme } from '@actual-app/components/theme'; -import { css } from '@emotion/css'; import { isElectron } from 'loot-core/shared/environment'; @@ -18,14 +17,12 @@ type DesktopLinkedNotesProps = { isFilePath: boolean; }; -const linkStyles = css({ +const linkStyles = { color: theme.pageTextLink, textDecoration: 'underline', - cursor: 'pointer', - '&:hover': { - color: theme.pageTextLinkLight, - }, -}); + background: 'transparent', + padding: 0, +}; export function DesktopLinkedNotes({ displayText, @@ -36,10 +33,7 @@ export function DesktopLinkedNotes({ const dispatch = useDispatch(); const { t } = useTranslation(); - const handleClick = async (e: MouseEvent) => { - e.stopPropagation(); - e.preventDefault(); - + const handleClick = async () => { if (isFilePath) { if (isElectron()) { // Open file in file manager @@ -65,14 +59,9 @@ export function DesktopLinkedNotes({ return ( <> - e.stopPropagation()} - onClick={handleClick} - > + {separator} ); diff --git a/upcoming-release-notes/6679.md b/upcoming-release-notes/6679.md new file mode 100644 index 0000000000..befcc957fe --- /dev/null +++ b/upcoming-release-notes/6679.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MatissJanis] +--- + +lint: fix various a11y issues