From e44143db8c99acddfd94bf188cd061ba670d9e69 Mon Sep 17 00:00:00 2001 From: diondiondion Date: Tue, 24 Jun 2025 16:36:05 +0200 Subject: [PATCH] [Glitch] fix: Fix inaccessible "Clear search" button Port 8ba1487f30685fff4555a7537d3e6c765c73a07c to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/components/icon.tsx | 8 +- .../flavours/glitch/components/media_icon.tsx | 2 +- .../flavours/glitch/components/poll.tsx | 2 +- .../glitch/components/status_icons.jsx | 6 +- .../glitch/components/visibility_icon.tsx | 2 +- .../components/account_header.tsx | 2 +- .../features/compose/components/search.tsx | 44 +++++++--- .../flavours/glitch/styles/components.scss | 82 ++++++++++--------- 8 files changed, 84 insertions(+), 64 deletions(-) diff --git a/app/javascript/flavours/glitch/components/icon.tsx b/app/javascript/flavours/glitch/components/icon.tsx index 052833fedd..c122796103 100644 --- a/app/javascript/flavours/glitch/components/icon.tsx +++ b/app/javascript/flavours/glitch/components/icon.tsx @@ -13,14 +13,13 @@ interface Props extends React.SVGProps { children?: never; id: string; icon: IconProp; - title?: string; } export const Icon: React.FC = ({ id, icon: IconComponent, className, - title: titleProp, + 'aria-label': ariaLabel, ...other }) => { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition @@ -34,18 +33,19 @@ export const Icon: React.FC = ({ IconComponent = CheckBoxOutlineBlankIcon; } - const ariaHidden = titleProp ? undefined : true; + const ariaHidden = ariaLabel ? undefined : true; const role = !ariaHidden ? 'img' : undefined; // Set the title to an empty string to remove the built-in SVG one if any // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const title = titleProp || ''; + const title = ariaLabel || ''; return ( diff --git a/app/javascript/flavours/glitch/components/media_icon.tsx b/app/javascript/flavours/glitch/components/media_icon.tsx index 61082fa243..2702d2fc8e 100644 --- a/app/javascript/flavours/glitch/components/media_icon.tsx +++ b/app/javascript/flavours/glitch/components/media_icon.tsx @@ -48,7 +48,7 @@ export const MediaIcon: React.FC<{ className={className} id={icon} icon={iconComponents[icon]} - title={intl.formatMessage(messages[icon])} + aria-label={intl.formatMessage(messages[icon])} aria-hidden='true' /> ); diff --git a/app/javascript/flavours/glitch/components/poll.tsx b/app/javascript/flavours/glitch/components/poll.tsx index 18d5be1ff1..c7de102a12 100644 --- a/app/javascript/flavours/glitch/components/poll.tsx +++ b/app/javascript/flavours/glitch/components/poll.tsx @@ -318,7 +318,7 @@ const PollOption: React.FC = (props) => { id='check' icon={CheckIcon} className='poll__voted__mark' - title={intl.formatMessage(messages.voted)} + aria-label={intl.formatMessage(messages.voted)} /> )} diff --git a/app/javascript/flavours/glitch/components/status_icons.jsx b/app/javascript/flavours/glitch/components/status_icons.jsx index cceffd78cc..63f443952e 100644 --- a/app/javascript/flavours/glitch/components/status_icons.jsx +++ b/app/javascript/flavours/glitch/components/status_icons.jsx @@ -61,16 +61,14 @@ class StatusIcons extends PureComponent { className='status__reply-icon' id='comment' icon={ForumIcon} - aria-hidden='true' - title={intl.formatMessage(messages.inReplyTo)} + aria-label={intl.formatMessage(messages.inReplyTo)} /> ) : null} {settings.get('local_only') && status.get('local_only') &&