Skip to content

Commit 94bfe3a

Browse files
committed
Improve a11y of the remove filter buttons in grid & list views
1 parent 06068c0 commit 94bfe3a

File tree

8 files changed

+42
-8
lines changed

8 files changed

+42
-8
lines changed

com.woltlab.wcf/templates/shared_gridView.tpl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
<div class="gridView__filterBar">
44
<div class="gridView__filters" id="{$view->getID()}_filters">
55
{foreach from=$view->getActiveFilters() item='value' key='key'}
6-
<button type="button" class="button small" data-filter="{$key}" data-filter-value="{$value}">
6+
<button
7+
type="button"
8+
class="button small jsTooltip"
9+
data-filter="{$key}"
10+
data-filter-value="{$value}"
11+
title="{lang filterLabel=$view->getFilterLabel($key)}wcf.page.removeFilterTooltip{/lang}"
12+
>
713
{icon name='circle-xmark'}
814
{$view->getFilterLabel($key)}
915
</button>
@@ -84,6 +90,7 @@
8490
<script data-relocate="true">
8591
require(['WoltLabSuite/Core/Component/GridView'], ({ GridView }) => {
8692
WoltLabLanguage.registerPhrase("wcf.clipboard.button.numberOfSelectedItems", '{jslang __literal=true}wcf.clipboard.button.numberOfSelectedItems{/jslang}');
93+
WoltLabLanguage.registerPhrase("wcf.page.removeFilterTooltip", '{jslang __literal=true}wcf.page.removeFilterTooltip{/jslang}');
8794
8895
new GridView(
8996
'{unsafe:$view->getID()|encodeJS}',

com.woltlab.wcf/templates/shared_listView.tpl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,13 @@
44
{if $view->isFilterable()}
55
<div class="listView__filters" id="{$view->getID()}_filters">
66
{foreach from=$view->getActiveFilters() item='value' key='key'}
7-
<button type="button" class="button small" data-filter="{$key}" data-filter-value="{$value}">
7+
<button
8+
type="button"
9+
class="button small jsTooltip"
10+
data-filter="{$key}"
11+
data-filter-value="{$value}"
12+
title="{lang filterLabel=$view->getFilterLabel($key)}wcf.page.removeFilterTooltip{/lang}"
13+
>
814
{icon name='circle-xmark'}
915
{$view->getFilterLabel($key)}
1016
</button>
@@ -93,6 +99,7 @@
9399
<script data-relocate="true">
94100
require(['WoltLabSuite/Core/Component/ListView'], ({ ListView }) => {
95101
WoltLabLanguage.registerPhrase("wcf.clipboard.button.numberOfSelectedItems", '{jslang __literal=true}wcf.clipboard.button.numberOfSelectedItems{/jslang}');
102+
WoltLabLanguage.registerPhrase("wcf.page.removeFilterTooltip", '{jslang __literal=true}wcf.page.removeFilterTooltip{/jslang}');
96103
97104
new ListView(
98105
'{unsafe:$view->getID()|encodeJS}',

ts/WoltLabSuite/Core/Component/GridView/Filter.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* @since 6.2
88
*/
99

10+
import { getPhrase } from "WoltLabSuite/Core/Language";
1011
import { promiseMutex } from "../../Helper/PromiseMutex";
1112
import { dialogFactory } from "../Dialog";
1213

@@ -63,7 +64,12 @@ export class Filter extends EventTarget {
6364
for (const key of this.#filters.keys()) {
6465
const button = document.createElement("button");
6566
button.type = "button";
66-
button.classList.add("button", "small");
67+
button.title = getPhrase("wcf.page.removeFilterTooltip", {
68+
filterLabel: labels[key],
69+
});
70+
button.classList.add("button", "small", "jsTooltip");
71+
button.dataset.filter = key;
72+
button.dataset.filterValue = this.#filters.get(key);
6773
const icon = document.createElement("fa-icon");
6874
icon.setIcon("circle-xmark");
6975
button.append(icon, labels[key]);

ts/WoltLabSuite/Core/Component/ListView/Filter.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* @since 6.2
88
*/
99

10+
import { getPhrase } from "WoltLabSuite/Core/Language";
1011
import { promiseMutex } from "../../Helper/PromiseMutex";
1112
import { dialogFactory } from "../Dialog";
1213

@@ -63,7 +64,10 @@ export class Filter extends EventTarget {
6364
for (const key of this.#filters.keys()) {
6465
const button = document.createElement("button");
6566
button.type = "button";
66-
button.classList.add("button", "small");
67+
button.title = getPhrase("wcf.page.removeFilterTooltip", {
68+
filterLabel: labels[key],
69+
});
70+
button.classList.add("button", "small", "jsTooltip");
6771
button.dataset.filter = key;
6872
button.dataset.filterValue = this.#filters.get(key);
6973
const icon = document.createElement("fa-icon");

wcfsetup/install/files/js/WoltLabSuite/Core/Component/GridView/Filter.js

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wcfsetup/install/files/js/WoltLabSuite/Core/Component/ListView/Filter.js

Lines changed: 5 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wcfsetup/install/lang/de.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4503,6 +4503,7 @@ Erlaubte Dateiendungen: gif, jpg, jpeg, png, webp]]></item>
45034503
<item name="wcf.page.menu.outstandingItems"><![CDATA[({#$menuItemNode->getOutstandingItems()} {if $menuItemNode->getOutstandingItems() == 1}neuer Eintrag{else}neue Einträge{/if})]]></item>
45044504
<item name="wcf.page.guestTokenDialog.title"><![CDATA[Verifizierung erforderlich]]></item>
45054505
<item name="wcf.page.readingTime"><![CDATA[Lesezeit: {#$minutes} Min.]]></item>
4506+
<item name="wcf.page.removeFilterTooltip"><![CDATA[Filter „{$filterLabel}“ entfernen]]></item>
45064507
</category>
45074508
<category name="wcf.paidSubscription">
45084509
<item name="wcf.paidSubscription.availableSubscriptions"><![CDATA[Verfügbare Mitgliedschaften]]></item>

wcfsetup/install/lang/en.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4455,6 +4455,7 @@ Allowed extensions: gif, jpg, jpeg, png, webp]]></item>
44554455
<item name="wcf.page.menu.outstandingItems"><![CDATA[({#$menuItemNode->getOutstandingItems()} {if $menuItemNode->getOutstandingItems() == 1}New Item{else}News Items{/if})]]></item>
44564456
<item name="wcf.page.guestTokenDialog.title"><![CDATA[Verification Required]]></item>
44574457
<item name="wcf.page.readingTime"><![CDATA[{#$minutes} min read]]></item>
4458+
<item name="wcf.page.removeFilterTooltip"><![CDATA[Remove Filter “{$filterLabel}”]]></item>
44584459
</category>
44594460
<category name="wcf.acp.page">
44604461
<item name="wcf.acp.page.add"><![CDATA[Add Page]]></item>

0 commit comments

Comments
 (0)