Skip to content

Commit b992b05

Browse files
committed
Use aria-controls (ARIA 1.2)
1 parent 87234ca commit b992b05

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Combobox Navigation
22

3-
Attach [combobox navigation behavior](https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html) to `<input>` or `<textarea>`.
3+
Attach [combobox navigation behavior (ARIA 1.2)](https://www.w3.org/TR/wai-aria-1.2/#combobox) to `<input>`.
44

55
## Installation
66

@@ -15,16 +15,18 @@ $ npm install @github/combobox-nav
1515
```html
1616
<label>
1717
Robot
18-
<input id="robot-input" aria-owns="list-id" role="combobox" type="text">
18+
<input id="robot-input" aria-controls="list-id" role="combobox" type="text" aria-expanded="false">
1919
</label>
20-
<ul role="listbox" id="list-id">
20+
<ul role="listbox" id="list-id" hidden>
2121
<li id="baymax" role="option">Baymax</li>
2222
<li><del>BB-8</del></li><!-- `role=option` needs to be present for item to be selectable -->
2323
<li id="hubot" role="option">Hubot</li>
2424
<li id="r2-d2" role="option">R2-D2</li>
2525
</ul>
2626
```
2727

28+
The combobox navigation pattern does not control list visibility. Please [refer to the ARIA spec](https://www.w3.org/TR/wai-aria-1.2/#combobox) for more requirements around `aria-expanded` and `aria-autocomplete`.
29+
2830
### JS
2931

3032
```js

examples/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<form>
1212
<label>
1313
Least favorite robot
14-
<input aria-owns="list-id" role="combobox" type="text">
14+
<input aria-controls="list-id" role="combobox" type="text">
1515
</label>
1616
<ul role="listbox" id="list-id">
1717
<li id="baymax" role="option">Baymax</li>

src/combobox-nav.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function keyboardBindings(event: KeyboardEvent) {
2525
const input = event.currentTarget
2626
if (!(input instanceof HTMLTextAreaElement || input instanceof HTMLInputElement)) return
2727
if (isComposing) return
28-
const list = document.getElementById(input.getAttribute('aria-owns') || '')
28+
const list = document.getElementById(input.getAttribute('aria-controls') || '')
2929
if (!list) return
3030

3131
switch (event.key) {
@@ -128,7 +128,7 @@ function trackComposition(event: Event): void {
128128
if (!(input instanceof HTMLTextAreaElement || input instanceof HTMLInputElement)) return
129129
isComposing = event.type === 'compositionstart'
130130

131-
const list = document.getElementById(input.getAttribute('aria-owns') || '')
131+
const list = document.getElementById(input.getAttribute('aria-controls') || '')
132132
if (!list) return
133133

134134
clearSelection(input, list)

test/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ describe('combobox-nav', function() {
1010
describe('with API', function() {
1111
beforeEach(function() {
1212
document.body.innerHTML = `
13-
<input aria-owns="list-id" role="combobox" type="text">
13+
<input aria-controls="list-id" role="combobox" type="text">
1414
<ul role="listbox" id="list-id">
1515
<li id="baymax" role="option">Baymax</li>
1616
<li><del>BB-8</del></li>
@@ -44,7 +44,7 @@ describe('combobox-nav', function() {
4444
describe('with default setup', function() {
4545
beforeEach(function() {
4646
document.body.innerHTML = `
47-
<input aria-owns="list-id" role="combobox" type="text">
47+
<input aria-controls="list-id" role="combobox" type="text">
4848
<ul role="listbox" id="list-id">
4949
<li id="baymax" role="option">Baymax</li>
5050
<li><del>BB-8</del></li>

0 commit comments

Comments
 (0)