[Glitch] Accessibility: Add visible focus outlines to main search & composer fields

Port e68c1c824a0a6badd28d5493a08e8196e9c14f97 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
diondiondion 2026-05-21 08:41:34 +02:00 committed by Claire
parent 96d81ca432
commit 2c1dac8084
3 changed files with 37 additions and 39 deletions

View File

@ -90,10 +90,6 @@ class ComposeForm extends ImmutablePureComponent {
autoFocus: false,
};
state = {
highlighted: false,
};
constructor(props) {
super(props);
this.textareaRef = createRef(null);
@ -242,8 +238,6 @@ class ComposeForm extends ImmutablePureComponent {
Promise.resolve().then(() => {
this.textareaRef.current.setSelectionRange(selectionStart, selectionEnd);
this.textareaRef.current.focus();
this.setState({ highlighted: true });
this.timeout = setTimeout(() => this.setState({ highlighted: false }), 700);
}).catch(console.error);
} else if(prevProps.isSubmitting && !this.props.isSubmitting) {
this.textareaRef.current.focus();
@ -274,7 +268,6 @@ class ComposeForm extends ImmutablePureComponent {
render () {
const { intl, onPaste, onDrop, autoFocus, withoutNavigation, maxChars, isSubmitting } = this.props;
const { highlighted } = this.state;
return (
<form className='compose-form' onSubmit={this.handleSubmit}>
@ -282,7 +275,7 @@ class ComposeForm extends ImmutablePureComponent {
{!withoutNavigation && <NavigationBar />}
<Warning />
<div className={classNames('compose-form__highlightable', { active: highlighted })} ref={this.setRef}>
<div className='compose-form__highlightable' ref={this.setRef}>
<EditIndicator />
<div className='compose-form__dropdowns'>

View File

@ -10,7 +10,6 @@
}
@mixin search-input {
outline: 0;
box-sizing: border-box;
width: 100%;
box-shadow: none;
@ -22,6 +21,10 @@
font-size: 17px;
line-height: normal;
margin: 0;
outline: var(--outline-focus-default);
outline-color: transparent;
outline-offset: -1px;
transition: outline-color 0.15s ease-out;
}
@mixin search-popout {

View File

@ -541,13 +541,15 @@ body > [data-popper-placement] {
flex: 0 1 auto;
border-radius: 4px;
border: 1px solid var(--color-border-primary);
transition: border-color 300ms linear;
position: relative;
background: var(--color-bg-secondary);
outline: var(--outline-focus-default);
outline-color: transparent;
outline-offset: -1px;
transition: outline-color 0.15s ease-out;
&.active {
transition: none;
border-color: var(--color-border-brand);
&:has(textarea:focus) {
outline-color: var(--color-border-brand);
}
}
@ -595,8 +597,15 @@ body > [data-popper-placement] {
.autosuggest-input {
flex: 1 1 auto;
border: 1px solid var(--color-border-primary);
border-width: 1px 0;
border-block: 1px solid var(--color-border-primary);
padding-block: 1px;
transition: border-color 0.15s ease-out;
&:focus-within {
padding-block: 0;
border-color: var(--color-border-brand);
border-block-width: 2px;
}
}
}
@ -621,7 +630,7 @@ body > [data-popper-placement] {
}
.spoiler-input__input {
padding: 12px 12px - 5px;
padding: 11px 7px;
background: var(--color-bg-brand-softest);
color: var(--color-text-brand);
}
@ -2806,6 +2815,7 @@ a.account__display-name {
font-size: 14px;
line-height: 20px;
font-weight: 500;
outline-offset: 0;
.display-name__account {
font-size: 14px;
@ -3720,7 +3730,11 @@ a.account__display-name {
.compose-panel {
width: 285px;
margin-top: 10px;
margin-top: 8px;
// Padding prevents focus outlines from being cut off
margin-inline-start: -2px;
padding: 2px;
display: flex;
flex-direction: column;
height: calc(100% - 10px);
@ -6071,7 +6085,7 @@ a.status-card {
display: none;
position: absolute;
inset-inline-start: 0;
margin-top: -2px;
margin-top: 1px;
width: 100%;
background: var(--color-bg-primary);
border: 1px solid var(--color-border-primary);
@ -6166,14 +6180,8 @@ a.status-card {
}
}
&.active {
.search__input {
border-radius: 4px 4px 0 0;
}
.search__popout {
display: block;
}
&.active .search__popout {
display: block;
}
}
@ -6185,14 +6193,8 @@ a.status-card {
padding-inline-start: 16px + 15px + 8px;
line-height: normal;
&::-moz-focus-inner {
border: 0;
}
&::-moz-focus-inner,
&:focus,
&:active {
outline: 0 !important;
&:focus {
outline-color: var(--color-border-brand);
}
}
@ -9556,6 +9558,10 @@ noscript {
display: flex;
align-items: center;
&:has(input:focus) {
outline-color: var(--color-border-brand);
}
input {
background: transparent;
color: inherit;
@ -9584,7 +9590,7 @@ noscript {
}
.search__popout {
margin-top: -1px;
margin-top: 1px;
padding-top: 5px;
padding-bottom: 5px;
border: 1px solid var(--color-border-primary);
@ -9597,10 +9603,6 @@ noscript {
&.expanded .search__popout {
display: block;
}
&.expanded &__input {
border-radius: 4px 4px 0 0;
}
}
&__choices {