Skip to content
Permalink
Browse files

Added ariaRole and ariaState to ui.core with tests.

Added ARIA role and state to ui.dialog
Fixes #3350
(Inspired by jARIA plugin from Chris Hoffman)
  • Loading branch information...
dbolter committed Sep 22, 2008
1 parent cd8d1b7 commit fb3a5d40106a83d10734f203189dc390cfaa0b94
Showing with 45 additions and 0 deletions.
  1. +1 −0 tests/core.html
  2. +15 −0 tests/core.js
  3. +27 −0 ui/ui.core.js
  4. +2 −0 ui/ui.dialog.js
@@ -65,6 +65,7 @@ <h2 id="userAgent"></h2>
<input id="input4-3" tabindex="-1" />
<input id="input4-4" tabindex="-50" />
</div>
<div id="aria"></div>
</div>

</body>
@@ -53,4 +53,19 @@ test("tabbable - tabindex", function() {
ok(!$('#input4-4').is(':tabbable'), 'input, tabindex -50');
});

test("aria", function() {
expect(10);

ok(!$('#aria').attr('role'), 'role is empty via attr');
ok(!$('#aria').ariaRole(), 'role is empty via ariaRole');
equals($('#aria').ariaRole('dialog').attr('role').replace(/^wairole:/, ""), 'dialog', 'role is dialog');
equals($('#aria').ariaRole(), 'dialog', 'role is dialog');
equals($('#aria').ariaRole('tablist').attr('role').replace(/^wairole:/, ""), 'tablist', 'role is tablist via attr');
equals($('#aria').ariaRole(), 'tablist', 'role is tablist via ariaRole');
ok(!$('#aria').attr('expanded'), 'state expanded absent via attr');
ok(!$('#aria').ariaState('expanded'), 'state expanded absent via ariaState');
equals($('#aria').ariaState('expanded', 'true').ariaState('expanded'), 'true', 'aria expanded is true');
equals($('#aria').ariaState('expanded', 'false').ariaState('expanded'), 'false', 'aria expanded is false');
});

})(jQuery);
@@ -437,4 +437,31 @@ $.ui.mouse.defaults = {
delay: 0
};


// WAI-ARIA Semantics
var isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);
$.fn.extend({
ariaRole : function(role) {
// setter?
if (role) {
return this.each(function(i, el) {
$(el).attr("role", isFF2 ? "wairole:" + role : role);
});
}
// getter just returns first jquery member's role string
return (this.eq(0).attr("role") || "").replace(/^wairole:/, "");
},

ariaState : function(state, value) {
// setter?
if (value)
return this.each(function(i, el) {
isFF2? el.setAttributeNS("http://www.w3.org/2005/07/aaa", "aaa:" + state, value) :
$(el).attr("aria-" + state, value);
});
// getter
return this.attr(isFF2? "aaa:"+state : "aria-" + state);
}
});

})(jQuery);
@@ -84,6 +84,8 @@ $.widget("ui.dialog", {
(options.closeOnEscape && ev.keyCode
&& ev.keyCode == $.keyCode.ESCAPE && self.close());
})
.ariaRole("dialog")
.ariaState("labelledby", titleId)
.mousedown(function() {
self._moveToTop();
}),

0 comments on commit fb3a5d4

Please sign in to comment.
You can’t perform that action at this time.