From b0772dc3d81f00da5d4ce478e36dd5e94649f0d4 Mon Sep 17 00:00:00 2001 From: David Bolter Date: Wed, 29 Oct 2008 16:57:04 +0000 Subject: [PATCH] added ARIA semantics, and tests. patch review:scott.gonzalez@gmail.com (fixes bug #3482) --- tests/progressbar.js | 15 +++++++++++++++ ui/ui.progressbar.js | 16 +++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/tests/progressbar.js b/tests/progressbar.js index e95f17a80..f3e5c625e 100644 --- a/tests/progressbar.js +++ b/tests/progressbar.js @@ -52,5 +52,20 @@ test("set defaults on init", function() { }); +test("accessibility", function() { + expect(7); + el = $("#progressbar").progressbar(); + + equals(el.ariaRole(), "progressbar", "aria role"); + equals(el.ariaState("valuemin"), 0, "aria-valuemin"); + equals(el.ariaState("valuemax"), 100, "aria-valuemax"); + equals(el.ariaState("valuenow"), 0, "aria-valuenow initially"); + el.progressbar("progress", 77); + equals(el.ariaState("valuenow"), 77, "aria-valuenow"); + el.progressbar("disable"); + equals(el.ariaState("disabled"), "true", "aria-disabled"); + el.progressbar("enable"); + equals(el.ariaState("disabled"), "false", "enabled"); +}); })(jQuery); diff --git a/ui/ui.progressbar.js b/ui/ui.progressbar.js index a7262e89f..e2266ea68 100644 --- a/ui/ui.progressbar.js +++ b/ui/ui.progressbar.js @@ -22,8 +22,14 @@ $.widget("ui.progressbar", { id = ((new Date()).getTime() + Math.random()), text = options.text || '0%'; - this.element.addClass("ui-progressbar").width(options.width); - + this.element + .addClass("ui-progressbar") + .width(options.width) + .ariaRole("progressbar") + .ariaState("valuemin","0") + .ariaState("valuemax","100") + .ariaState("valuenow","0"); + $.extend(this, { active: false, pixelState: 0, @@ -97,11 +103,13 @@ $.widget("ui.progressbar", { disable: function() { this.element.addClass("ui-progressbar-disabled"); this.disabled = true; + this.element.ariaState("disabled", true); }, enable: function() { this.element.removeClass("ui-progressbar-disabled"); this.disabled = false; + this.element.ariaState("disabled", false); }, pause: function() { @@ -120,9 +128,11 @@ $.widget("ui.progressbar", { this.bar.width(this.pixelState); this.textElement.width(this.pixelState); + var percent = Math.round(this.percentState); if (this.options.range && !this.options.text) { - this.textElement.html(Math.round(this.percentState) + '%'); + this.textElement.html(percent + '%'); } + this.element.ariaState("valuenow", percent); this._propagate('progress', this.ui()); },