Browse Source

Operation elements now have decreasing z-index properties, meaning dropdowns do not get hidden. Fixes #925

n1474335 5 years ago
parent
commit
928178716a
1 changed files with 15 additions and 0 deletions
  1. 15 0
      src/web/waiters/RecipeWaiter.mjs

+ 15 - 0
src/web/waiters/RecipeWaiter.mjs

@@ -51,6 +51,7 @@ class RecipeWaiter {
                 }
                 }
             }.bind(this),
             }.bind(this),
             onSort: function(evt) {
             onSort: function(evt) {
+                this.updateZIndices();
                 if (evt.from.id === "rec-list") {
                 if (evt.from.id === "rec-list") {
                     document.dispatchEvent(this.manager.statechange);
                     document.dispatchEvent(this.manager.statechange);
                 }
                 }
@@ -149,6 +150,19 @@ class RecipeWaiter {
     }
     }
 
 
 
 
+    /**
+     * Sets the z-index property on each operation to make sure that operations higher in the list
+     * have a higher index, meaning dropdowns are not hidden underneath subsequent operations.
+     */
+    updateZIndices() {
+        const operations = document.getElementById("rec-list").children;
+        for (let i = 0; i < operations.length; i++) {
+            const operation = operations[i];
+            operation.style.zIndex = 100 + operations.length - i;
+        }
+    }
+
+
     /**
     /**
      * Handler for favourite dragover events.
      * Handler for favourite dragover events.
      * If the element being dragged is an operation, displays a visual cue so that the user knows it can
      * If the element being dragged is an operation, displays a visual cue so that the user knows it can
@@ -466,6 +480,7 @@ class RecipeWaiter {
         log.debug(`'${e.target.querySelector(".op-title").textContent}' added to recipe`);
         log.debug(`'${e.target.querySelector(".op-title").textContent}' added to recipe`);
 
 
         this.triggerArgEvents(e.target);
         this.triggerArgEvents(e.target);
+        this.updateZIndices();
         window.dispatchEvent(this.manager.statechange);
         window.dispatchEvent(this.manager.statechange);
     }
     }