[Glitch] Accessibility: Ensure focus order of post elements matches visual reading order

Port d20d04922672ed016029c40ed64798f341ebca91 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
diondiondion 2026-05-26 19:42:49 +02:00 committed by Claire
parent 3e25a5e792
commit 08dc44263d
6 changed files with 47 additions and 34 deletions

View File

@ -713,13 +713,14 @@ class Status extends ImmutablePureComponent {
account={account} account={account}
avatarSize={avatarSize} avatarSize={avatarSize}
onHeaderClick={this.handleHeaderClick} onHeaderClick={this.handleHeaderClick}
> contentBeforeDate={
<StatusIcons <StatusIcons
status={status} status={status}
mediaIcons={mediaIcons} mediaIcons={mediaIcons}
settings={settings.get('status_icons')} settings={settings.get('status_icons')}
/> />
</StatusHeader> }
/>
); );
return ( return (

View File

@ -18,7 +18,8 @@ export interface StatusHeaderProps {
status: Status; status: Status;
account?: Account; account?: Account;
avatarSize?: number; avatarSize?: number;
children?: ReactNode; contentBeforeDate?: ReactNode;
contentAfterDate?: ReactNode;
wrapperProps?: HTMLAttributes<HTMLDivElement>; wrapperProps?: HTMLAttributes<HTMLDivElement>;
displayNameProps?: DisplayNameProps; displayNameProps?: DisplayNameProps;
onHeaderClick?: MouseEventHandler<HTMLDivElement>; onHeaderClick?: MouseEventHandler<HTMLDivElement>;
@ -31,10 +32,11 @@ export type StatusHeaderRenderFn = (args: StatusHeaderProps) => ReactNode;
export const StatusHeader: FC<StatusHeaderProps> = ({ export const StatusHeader: FC<StatusHeaderProps> = ({
status, status,
account, account,
children,
className, className,
avatarSize = 48, avatarSize = 48,
wrapperProps, wrapperProps,
contentBeforeDate,
contentAfterDate,
onHeaderClick, onHeaderClick,
}) => { }) => {
const statusAccount = status.get('account') as Account | undefined; const statusAccount = status.get('account') as Account | undefined;
@ -54,7 +56,8 @@ export const StatusHeader: FC<StatusHeaderProps> = ({
avatarSize={avatarSize} avatarSize={avatarSize}
/> />
{children} {contentBeforeDate}
{contentAfterDate}
</header> </header>
); );
}; };

View File

@ -226,8 +226,10 @@ export const QuotedStatus: React.FC<QuotedStatusProps> = ({
const intl = useIntl(); const intl = useIntl();
const headerRenderFn: StatusHeaderRenderFn = useCallback( const headerRenderFn: StatusHeaderRenderFn = useCallback(
(props) => ( (props) => (
<StatusHeader {...props}> <StatusHeader
{onQuoteCancel && ( {...props}
contentAfterDate={
onQuoteCancel && (
<IconButton <IconButton
onClick={onQuoteCancel} onClick={onQuoteCancel}
className='status__quote-cancel' className='status__quote-cancel'
@ -235,8 +237,9 @@ export const QuotedStatus: React.FC<QuotedStatusProps> = ({
icon='cancel-fill' icon='cancel-fill'
iconComponent={CancelFillIcon} iconComponent={CancelFillIcon}
/> />
)} )
</StatusHeader> }
/>
), ),
[intl, onQuoteCancel], [intl, onQuoteCancel],
); );

View File

@ -22,7 +22,10 @@ export const renderPinnedStatusHeader: StatusHeaderRenderFn = ({
return <StatusHeader {...args} />; return <StatusHeader {...args} />;
} }
return ( return (
<StatusHeader {...args} className={classes.pinnedStatusHeader}> <StatusHeader
{...args}
className={classes.pinnedStatusHeader}
contentBeforeDate={
<Badge <Badge
className={classes.pinnedBadge} className={classes.pinnedBadge}
icon={<Icon id='pinned' icon={IconPinned} />} icon={<Icon id='pinned' icon={IconPinned} />}
@ -33,7 +36,8 @@ export const renderPinnedStatusHeader: StatusHeaderRenderFn = ({
/> />
} }
/> />
</StatusHeader> }
/>
); );
}; };

View File

@ -126,4 +126,7 @@
.pinnedBadge { .pinnedBadge {
justify-self: end; justify-self: end;
// Allow "click to open post" event to pass through
pointer-events: none;
} }

View File

@ -1716,7 +1716,6 @@ body > [data-popper-placement] {
.status__quote-cancel { .status__quote-cancel {
align-self: self-start; align-self: self-start;
order: 5;
} }
.status__info { .status__info {