A11Y: convert sortable topic list headers to proper buttons (#29808)

This commit is contained in:
Kris 2024-11-19 15:38:03 -05:00 committed by GitHub
parent ec7de0fd68
commit 84fecd370c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 30 additions and 15 deletions

View File

@ -220,6 +220,7 @@ export default class TopicList extends Component.extend(LoadMore) {
};
onKeyDown("th.sortable", (element) => {
e.preventDefault();
this.changeSort(element.dataset.sortOrder);
this.rerender();
});

View File

@ -123,20 +123,21 @@ export default class TopicListHeaderColumn extends Component {
@changeNewListSubset={{@changeNewListSubset}}
/>
{{else}}
<span
class={{if @screenreaderOnly "sr-only"}}
tabindex={{if @sortable "0"}}
role={{if @sortable "button"}}
aria-pressed={{this.isSorting}}
>
{{this.localizedName}}
</span>
{{#if @sortable}}
<button aria-pressed={{this.isSorting}}>
{{this.localizedName}}
{{#if this.isSorting}}
{{icon (if @ascending "chevron-up" "chevron-down")}}
{{/if}}
</button>
{{else}}
<span class={{if @screenreaderOnly "sr-only"}}>
{{this.localizedName}}
</span>
{{/if}}
{{/if}}
{{/unless}}
{{#if this.isSorting}}
{{icon (if @ascending "chevron-up" "chevron-down")}}
{{/if}}
<PluginOutlet
@name="topic-list-heading-bottom"
@outletArgs={{hash name=@name bulkSelectEnabled=@bulkSelectEnabled}}

View File

@ -17,11 +17,19 @@
{{~#if view.showTopicsAndRepliesToggle}}
{{raw "list/new-list-header-controls" current=newListSubset newRepliesCount=newRepliesCount newTopicsCount=newTopicsCount}}
{{else}}
<span {{#if view.screenreaderOnly}}class="sr-only"{{/if}} {{#if sortable}}tabindex="0" role="button" aria-pressed='{{view.ariaPressed}}'{{/if}}>{{view.localizedName}}</span>
{{#if sortable}}
<button aria-pressed='{{view.ariaPressed}}'>
{{view.localizedName}}
{{~#if view.isSorting}}
{{d-icon view.sortIcon}}
{{/if ~}}
</button>
{{else}}
<span {{#if view.screenreaderOnly}}class="sr-only"{{/if}}>
{{view.localizedName}}
</span>
{{/if}}
{{/if ~}}
{{/unless ~}}
{{~#if view.isSorting}}
{{d-icon view.sortIcon}}
{{/if ~}}
{{~plugin-outlet name="topic-list-heading-bottom" outletArgs=(raw-hash name=view.name bulkSelectEnabled=bulkSelectEnabled)~}}
</th>

View File

@ -312,6 +312,11 @@ textarea {
}
@include unselectable;
cursor: pointer;
button {
background: none;
border: none;
}
}
.radio,