Skip to content

Commit 828cace

Browse files
committed
[A11y enhancement] Adding role=button to sortable-handle
1 parent 29fc641 commit 828cace

File tree

4 files changed

+46
-2
lines changed

4 files changed

+46
-2
lines changed

addon/components/sortable-handle.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Component from '@ember/component';
55
*/
66
export default Component.extend({
77
tabindex: 0,
8-
attributeBindings: ["dataSortableHandle:data-sortable-handle", "tabindex"],
8+
role: 'button',
9+
attributeBindings: ["dataSortableHandle:data-sortable-handle", "tabindex", "role"],
910
dataSortableHandle: true,
1011
});

tests/integration/components/sortable-group-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { render, find, triggerEvent, fillIn, triggerKeyEvent } from '@ember/test
55
import { ENTER_KEY_CODE, SPACE_KEY_CODE, ARROW_KEY_CODES } from "ember-sortable/utils/keyboard";
66
import { set, setProperties } from '@ember/object';
77

8-
module('Integration | Component | sortable group', function(hooks) {
8+
module('Integration | Component | sortable-group', function(hooks) {
99
setupRenderingTest(hooks);
1010

1111
const NESTED_MODEL = [
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { module, test } from 'qunit';
2+
import { setupRenderingTest } from 'ember-qunit';
3+
import hbs from 'htmlbars-inline-precompile';
4+
import { render } from '@ember/test-helpers';
5+
6+
module('Integration | Component | sortable-handle', function(hooks) {
7+
setupRenderingTest(hooks);
8+
9+
test('[A11y] Sortable-handle has button role', async function(assert) {
10+
assert.expect(1);
11+
12+
await render(hbs`
13+
{{#sortable-handle id="dummy-sortable-handle"}}
14+
{{/sortable-handle}}
15+
`);
16+
17+
assert.dom('#dummy-sortable-handle').hasAttribute('role', 'button', 'sortable-handle have role of button');
18+
});
19+
});
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { module, test } from 'qunit';
2+
import { setupRenderingTest } from 'ember-qunit';
3+
import hbs from 'htmlbars-inline-precompile';
4+
import { render } from '@ember/test-helpers';
5+
6+
module('Integration | Component | sortable-item', function(hooks) {
7+
setupRenderingTest(hooks);
8+
9+
test('[A11y] sortable-items have tabindexes for accessibility', async function(assert) {
10+
assert.expect(1);
11+
12+
await render(hbs`
13+
{{#sortable-group
14+
as |group|
15+
}}
16+
{{#group.item tabindex=0 model=1 id="dummy-sortable-item"}}
17+
sort me
18+
{{/group.item}}
19+
{{/sortable-group}}
20+
`);
21+
22+
assert.dom('#dummy-sortable-item').hasAttribute('tabindex', '0', 'sortable-items have tabindexes');
23+
});
24+
});

0 commit comments

Comments
 (0)