mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
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)
This commit is contained in:
parent
cd8d1b7654
commit
fb3a5d4010
@ -65,6 +65,7 @@
|
|||||||
<input id="input4-3" tabindex="-1" />
|
<input id="input4-3" tabindex="-1" />
|
||||||
<input id="input4-4" tabindex="-50" />
|
<input id="input4-4" tabindex="-50" />
|
||||||
</div>
|
</div>
|
||||||
|
<div id="aria"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
@ -53,4 +53,19 @@ test("tabbable - tabindex", function() {
|
|||||||
ok(!$('#input4-4').is(':tabbable'), 'input, tabindex -50');
|
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);
|
})(jQuery);
|
||||||
|
@ -437,4 +437,31 @@ $.ui.mouse.defaults = {
|
|||||||
delay: 0
|
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);
|
})(jQuery);
|
||||||
|
@ -84,6 +84,8 @@ $.widget("ui.dialog", {
|
|||||||
(options.closeOnEscape && ev.keyCode
|
(options.closeOnEscape && ev.keyCode
|
||||||
&& ev.keyCode == $.keyCode.ESCAPE && self.close());
|
&& ev.keyCode == $.keyCode.ESCAPE && self.close());
|
||||||
})
|
})
|
||||||
|
.ariaRole("dialog")
|
||||||
|
.ariaState("labelledby", titleId)
|
||||||
.mousedown(function() {
|
.mousedown(function() {
|
||||||
self._moveToTop();
|
self._moveToTop();
|
||||||
}),
|
}),
|
||||||
|
Loading…
Reference in New Issue
Block a user