From 3680612a5f9b7e457f429c8900214d590d2e73ff Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Fri, 20 Jan 2017 14:20:29 +0000 Subject: Fixed currentIndex being shared across dropdowns --- app/assets/javascripts/droplab/droplab.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/droplab/droplab.js b/app/assets/javascripts/droplab/droplab.js index c79f0230951..4d10d4e004d 100644 --- a/app/assets/javascripts/droplab/droplab.js +++ b/app/assets/javascripts/droplab/droplab.js @@ -58,6 +58,7 @@ var CustomEvent = require('./custom_event_polyfill'); var utils = require('./utils'); var DropDown = function(list) { + this.currentIndex = 0; this.hidden = true; this.list = list; this.items = []; @@ -576,7 +577,7 @@ require('./window')(function(w){ var isUpArrow = false; var isDownArrow = false; var removeHighlight = function removeHighlight(list) { - var listItems = list.list.querySelectorAll('li'); + var listItems = list.list.querySelectorAll('li:not(.divider)'); for(var i = 0; i < listItems.length; i++) { listItems[i].classList.remove('dropdown-active'); } @@ -589,7 +590,10 @@ require('./window')(function(w){ if(!listItems[currentIndex-1]){ currentIndex = currentIndex-1; } - listItems[currentIndex-1].classList.add('dropdown-active'); + + if (listItems[currentIndex-1]) { + listItems[currentIndex-1].classList.add('dropdown-active'); + } } }; @@ -617,6 +621,8 @@ require('./window')(function(w){ var keydown = function keydown(e){ var typedOn = e.target; + var dropdown = e.detail.hook.list; + currentIndex = dropdown.currentIndex; isUpArrow = false; isDownArrow = false; @@ -649,6 +655,7 @@ require('./window')(function(w){ if(isDownArrow){ currentIndex++; } if(currentIndex < 0){ currentIndex = 0; } setMenuForArrows(e.detail.hook.list); + dropdown.currentIndex = currentIndex; }; w.addEventListener('mousedown.dl', mousedown); -- cgit v1.2.3