From 4582bff0635495740022543320fc7c77b0362fc4 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Mon, 02 Jun 2014 12:43:21 -0400
Subject: [PATCH] Add aria-* controls to turn tables into a listbox widget

---
 program/js/list.js |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/program/js/list.js b/program/js/list.js
index 65d4a92..b9a437c 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -60,6 +60,7 @@
   this.column_movable = false;
   this.keyboard = false;
   this.toggleselect = false;
+  this.aria_listbox = false;
 
   this.drag_active = false;
   this.col_drag_active = false;
@@ -117,6 +118,12 @@
     }
   }
 
+  if ($(this.list).attr('role') == 'listbox') {
+    this.aria_listbox = true;
+    if (this.multiselect)
+      $(this.list).attr('aria-multiselectable', 'true');
+  }
+
   return this;
 },
 
@@ -159,6 +166,15 @@
       }, false);
     }
 
+    // label the list row with the subject col as descriptive label
+    if (this.aria_listbox) {
+      var lbl_id = 'l:' + row.id;
+      $(row)
+        .attr('role', 'option')
+        .attr('aria-labelledby', lbl_id)
+        .find(this.col_tagname()).eq(this.subject_col).attr('id', lbl_id);
+    }
+
     if (document.all)
       row.onselectstart = function() { return false; };
 

--
Gitblit v1.9.1