From 1791a1e7a23c0aaf126ba099a73564e8c4e88cee Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Tue, 27 May 2014 11:39:26 -0400 Subject: [PATCH] Remove list row 'unfocused' state and keep 'selected' classes even when list loses focus. For visual distinguishing .focus tr.selected can be used --- program/js/list.js | 29 +++++++---------------------- 1 files changed, 7 insertions(+), 22 deletions(-) diff --git a/program/js/list.js b/program/js/list.js index fa37353..62f1b1c 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -116,7 +116,7 @@ this.focus_elem = $('<a>') .attr('tabindex', '0') .attr('style', 'display:block; width:1px; height:1px; line-height:1px; overflow:hidden; position:fixed; top:-1000px') - .html('Select List') + .html($(this.list).attr('summary') || 'Select List') .insertAfter(this.list) .on('focus', function(e){ me.focus(e); }) .on('blur', function(e){ me.blur(e); }); @@ -213,6 +213,7 @@ if (!this.fixed_header) { this.fixed_header = $('<table>') .attr('class', this.list.className + ' fixedcopy') + .attr('role', 'presentation') .css({ position:'fixed' }) .append(clone) .append('<tbody></tbody>'); @@ -392,15 +393,7 @@ if (this.focused) return; - var n, id; this.focused = true; - - for (n in this.selection) { - id = this.selection[n]; - if (this.rows[id] && this.rows[id].obj) { - $(this.rows[id].obj).addClass('selected').removeClass('unfocused'); - } - } if (e) rcube_event.cancel(e); @@ -429,15 +422,7 @@ */ blur: function(e) { - var n, id; this.focused = false; - for (n in this.selection) { - id = this.selection[n]; - if (this.rows[id] && this.rows[id].obj) { - $(this.rows[id].obj).removeClass('selected focused').addClass('unfocused'); - } - } - $(this.list).removeClass('focus'); }, @@ -1086,7 +1071,7 @@ this.highlight_row(n, true, true); } else { - $(this.rows[n].obj).removeClass('selected').removeClass('unfocused'); + $(this.rows[n].obj).removeClass('selected').removeAttr('aria-selected'); } } @@ -1143,7 +1128,7 @@ else { for (n in this.selection) if (this.rows[this.selection[n]]) { - $(this.rows[this.selection[n]].obj).removeClass('selected').removeClass('unfocused'); + $(this.rows[this.selection[n]].obj).removeClass('selected').removeAttr('aria-selected'); } this.selection = []; @@ -1206,13 +1191,13 @@ if (this.selection.length > 1 || !this.in_selection(id)) { this.clear_selection(null, true); this.selection[0] = id; - $(this.rows[id].obj).addClass('selected'); + $(this.rows[id].obj).addClass('selected').attr('aria-selected', 'true'); } } else { if (!this.in_selection(id)) { // select row this.selection.push(id); - $(this.rows[id].obj).addClass('selected'); + $(this.rows[id].obj).addClass('selected').attr('aria-selected', 'true'); if (!norecur && !this.rows[id].expanded) this.highlight_children(id, true); } @@ -1222,7 +1207,7 @@ a_post = this.selection.slice(p+1, this.selection.length); this.selection = a_pre.concat(a_post); - $(this.rows[id].obj).removeClass('selected').removeClass('unfocused'); + $(this.rows[id].obj).removeClass('selected').removeAttr('aria-selected'); if (!norecur && !this.rows[id].expanded) this.highlight_children(id, false); } -- Gitblit v1.9.1