From 582d59123187fc293602e3d754b9dd8feb7d3a39 Mon Sep 17 00:00:00 2001
From: sjhuang26 <sjhuang26@gmail.com>
Date: Sat, 2 Jun 2018 15:54:37 -0400
Subject: [PATCH] Move z-index values to separate file

---
 .../browser-modal/browser-modal.css           |  3 ++-
 src/components/cards/card.css                 |  9 ++++----
 src/components/coming-soon/coming-soon.css    |  5 +++--
 src/components/context-menu/context-menu.css  |  3 ++-
 src/components/drag-layer/drag-layer.css      |  3 ++-
 src/components/gui/gui.css                    |  3 ++-
 src/components/import-modal/import-modal.css  |  3 ++-
 src/components/loader/loader.css              |  3 ++-
 src/components/menu-bar/menu-bar.css          |  4 ++--
 src/components/modal/modal.css                |  3 ++-
 src/components/monitor/monitor.css            |  5 +++--
 .../preview-modal/preview-modal.css           |  3 ++-
 src/components/stage-header/stage-header.css  |  3 ++-
 src/components/stage/stage.css                |  9 ++++----
 src/components/webgl-modal/webgl-modal.css    |  3 ++-
 src/css/z-index.css                           | 21 +++++++++++++++++++
 16 files changed, 59 insertions(+), 24 deletions(-)
 create mode 100644 src/css/z-index.css

diff --git a/src/components/browser-modal/browser-modal.css b/src/components/browser-modal/browser-modal.css
index b93eb0db4..aa8840c4c 100644
--- a/src/components/browser-modal/browser-modal.css
+++ b/src/components/browser-modal/browser-modal.css
@@ -1,6 +1,7 @@
 @import "../../css/colors.css";
 @import "../../css/units.css";
 @import "../../css/typography.css";
+@import "../../css/z-index.css";
 
 .modal-overlay {
     position: fixed;
@@ -8,7 +9,7 @@
     left: 0;
     right: 0;
     bottom: 0;
-    z-index: 1000;
+    z-index: $z-index-modal;
     background-color: $ui-modal-overlay;
 }
 
diff --git a/src/components/cards/card.css b/src/components/cards/card.css
index 84b6e6bf7..0f0616a04 100644
--- a/src/components/cards/card.css
+++ b/src/components/cards/card.css
@@ -1,9 +1,10 @@
 @import "../../css/units.css";
 @import "../../css/colors.css";
+@import "../../css/z-index.css";
 
 .card-container {
     position:absolute;
-    z-index: 100;
+    z-index: $z-index-card;
 }
 
 .left-card, .right-card {
@@ -13,7 +14,7 @@
     background: $ui-white;
     border: 1px solid $ui-tertiary;
     width: 10px;
-    z-index: 99;
+    z-index: 10;
     opacity: 0.9;
     overflow: hidden;
 }
@@ -46,7 +47,7 @@
     position: absolute;
     top: 50%;
     margin-top: -15px;
-    z-index: 101;
+    z-index: 20;
     user-select: none;
     cursor: pointer;
     background: $motion-primary;
@@ -73,7 +74,7 @@
     display: flex;
     flex-direction: column;
     cursor: move;
-    z-index: 101;
+    z-index: 20;
     overflow: hidden;
     box-shadow: 0px 5px 25px 5px $ui-black-transparent;
     align-items: center;
diff --git a/src/components/coming-soon/coming-soon.css b/src/components/coming-soon/coming-soon.css
index db737e1c8..bdd7f87eb 100644
--- a/src/components/coming-soon/coming-soon.css
+++ b/src/components/coming-soon/coming-soon.css
@@ -5,17 +5,18 @@
  */
 
 @import "../../css/colors.css";
+@import "../../css/z-index.css";
 
 .coming-soon {
     background-color: $data-primary !important;
-    border: 1px solid $ui-black-transparent) !important;
+    border: 1px solid $ui-black-transparent !important;
     border-radius: .25rem !important;
     box-shadow: 0 0 .5rem $ui-black-transparent !important;
     padding: .75rem 1rem !important;
     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;
     font-size: 1rem !important;
     line-height: 1.25rem !important;
-    z-index: 100 !important;
+    z-index: $z-index-coming-soon !important;
 }
 
 .coming-soon:after {
diff --git a/src/components/context-menu/context-menu.css b/src/components/context-menu/context-menu.css
index ff2505ff9..5a02ce797 100644
--- a/src/components/context-menu/context-menu.css
+++ b/src/components/context-menu/context-menu.css
@@ -1,5 +1,6 @@
 @import "../../css/colors.css";
 @import "../../css/units.css";
+@import "../../css/z-index.css";
 
 .context-menu {
     min-width: 130px;
@@ -13,7 +14,7 @@
     box-shadow: 0px 0px 5px 1px $ui-black-transparent;
     pointer-events: none;
     transition: opacity 0.2s ease;
-    z-index: 200; /* Above the stage */
+    z-index: $z-index-context-menu;
 }
 
 .menu-item {
diff --git a/src/components/drag-layer/drag-layer.css b/src/components/drag-layer/drag-layer.css
index 711b5eea8..0e89c6b5c 100644
--- a/src/components/drag-layer/drag-layer.css
+++ b/src/components/drag-layer/drag-layer.css
@@ -1,10 +1,11 @@
 @import "../../css/units.css";
 @import "../../css/colors.css";
+@import "../../css/z-index.css";
 
 .drag-layer {
     position: fixed;
     pointer-events: none;
-    z-index: 1000; /* Above everything */
+    z-index: $z-index-drag-layer;
     left: 0;
     top: 0;
     width: 100%;
diff --git a/src/components/gui/gui.css b/src/components/gui/gui.css
index 2e4e7b846..e1739444a 100644
--- a/src/components/gui/gui.css
+++ b/src/components/gui/gui.css
@@ -1,5 +1,6 @@
 @import "../../css/units.css";
 @import "../../css/colors.css";
+@import "../../css/z-index.css";
 
 .page-wrapper {
     height: 100%;
@@ -190,7 +191,7 @@
     position: absolute;
     bottom: 0;
     left: 0;
-    z-index: 50; /** Force extension button above the ScratchBlocks flyout. */
+    z-index: $z-index-extension-button;
     background: $motion-primary;
 
     border: 1px solid $motion-primary;
diff --git a/src/components/import-modal/import-modal.css b/src/components/import-modal/import-modal.css
index 93480429b..b41c02b1b 100644
--- a/src/components/import-modal/import-modal.css
+++ b/src/components/import-modal/import-modal.css
@@ -1,6 +1,7 @@
 @import "../../css/colors.css";
 @import "../../css/units.css";
 @import "../../css/typography.css";
+@import "../../css/z-index.css";
 
 .modal-overlay {
     position: fixed;
@@ -8,7 +9,7 @@
     left: 0;
     right: 0;
     bottom: 0;
-    z-index: 1000;
+    z-index: $z-index-modal;
     background-color: $ui-modal-overlay;
 }
 
diff --git a/src/components/loader/loader.css b/src/components/loader/loader.css
index 8ebbdb5cf..9f97b3e81 100644
--- a/src/components/loader/loader.css
+++ b/src/components/loader/loader.css
@@ -1,4 +1,5 @@
 @import "../../css/colors.css";
+@import "../../css/z-index.css";
 
 .background {
     position: fixed;
@@ -6,7 +7,7 @@
     left: 0;
     width: 100%;
     height: 100%;
-    z-index: 999; /* Below preview modal */
+    z-index: $z-index-loader;
     display: flex;
     justify-content: center;
     align-items: center;
diff --git a/src/components/menu-bar/menu-bar.css b/src/components/menu-bar/menu-bar.css
index 96c64b345..8063361d9 100644
--- a/src/components/menu-bar/menu-bar.css
+++ b/src/components/menu-bar/menu-bar.css
@@ -1,5 +1,6 @@
 @import "../../css/colors.css";
 @import "../../css/units.css";
+@import "../../css/z-index.css";
 
 .menu-bar {
     display: flex;
@@ -44,8 +45,7 @@
 }
 
 .menu {
-    /* blocklyToolboxDiv is 40 */
-    z-index: 50;
+    z-index: $z-index-menu-bar;
     top: $menu-bar-height;
 }
 
diff --git a/src/components/modal/modal.css b/src/components/modal/modal.css
index 2a69d8ba6..3aa21280b 100644
--- a/src/components/modal/modal.css
+++ b/src/components/modal/modal.css
@@ -1,5 +1,6 @@
 @import "../../css/colors.css";
 @import "../../css/units.css";
+@import "../../css/z-index.css";
 
 .modal-overlay {
     position: fixed;
@@ -7,7 +8,7 @@
     left: 0;
     right: 0;
     bottom: 0;
-    z-index: 1000;
+    z-index: $z-index-modal;
     background-color: $ui-modal-overlay;
 }
 
diff --git a/src/components/monitor/monitor.css b/src/components/monitor/monitor.css
index f7337e90f..97a62e02d 100644
--- a/src/components/monitor/monitor.css
+++ b/src/components/monitor/monitor.css
@@ -1,10 +1,11 @@
 @import "../../css/units.css";
 @import "../../css/colors.css";
+@import "../../css/z-index.css";
 
 .monitor-container {
     position: absolute;
     background: $ui-primary;
-    z-index: 100;
+    z-index: $z-index-monitor;
     border: 1px solid $ui-black-transparent;
     border-radius: calc($space / 2);
     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
@@ -19,7 +20,7 @@
 }
 
 .dragging {
-    z-index: 101;
+    z-index: $z-index-monitor-dragging;
     box-shadow: 3px 3px 5px #888888;
 }
 
diff --git a/src/components/preview-modal/preview-modal.css b/src/components/preview-modal/preview-modal.css
index 837ed92cf..2c35acf63 100644
--- a/src/components/preview-modal/preview-modal.css
+++ b/src/components/preview-modal/preview-modal.css
@@ -1,6 +1,7 @@
 @import "../../css/colors.css";
 @import "../../css/units.css";
 @import "../../css/typography.css";
+@import "../../css/z-index.css";
 
 .modal-overlay {
     position: fixed;
@@ -8,7 +9,7 @@
     left: 0;
     right: 0;
     bottom: 0;
-    z-index: 1000;
+    z-index: $z-index-modal;
     background-color: $ui-modal-overlay;
 }
 
diff --git a/src/components/stage-header/stage-header.css b/src/components/stage-header/stage-header.css
index 2ac722efc..24194b332 100644
--- a/src/components/stage-header/stage-header.css
+++ b/src/components/stage-header/stage-header.css
@@ -1,5 +1,6 @@
 @import "../../css/units.css";
 @import "../../css/colors.css";
+@import "../../css/z-index.css";
 
 .stage-header-wrapper {
     position: relative;
@@ -11,7 +12,7 @@
     top: 0;
     left: 0;
     right: 0;
-    z-index: 5000;
+    z-index: $z-index-stage-header;
 }
 
 .stage-menu-wrapper {
diff --git a/src/components/stage/stage.css b/src/components/stage/stage.css
index d2c7894c7..15ac8bcc1 100644
--- a/src/components/stage/stage.css
+++ b/src/components/stage/stage.css
@@ -1,5 +1,6 @@
 @import "../../css/units.css";
 @import "../../css/colors.css";
+@import "../../css/z-index.css";
 
 .stage {
     /*
@@ -21,7 +22,7 @@
 
 .with-color-picker {
     cursor: none;
-    z-index: 2001;
+    z-index: $z-index-stage-with-color-picker;
 }
 
 .color-picker-background {
@@ -30,7 +31,7 @@
     height: 100%;
     background-color: rgba(0, 0, 0, 0.55);
     display: block;
-    z-index: 2000;
+    z-index: $z-index-stage-color-picker-background;
     top: 0;
     left: 0;
 }
@@ -45,7 +46,7 @@
     left: 0;
     right: 0;
     bottom: 0;
-    z-index: 5000;
+    z-index: $z-index-stage-wrapper-overlay;
     background-color: $ui-white;
 }
 
@@ -86,6 +87,6 @@
     position: absolute;
     top: 0;
     left: 0;
-    z-index: 1000; /* Above everything so it is draggable into other panes */
+    z-index: $z-index-dragging-sprite;
     filter: drop-shadow(5px 5px 5px $ui-black-transparent);
  }
diff --git a/src/components/webgl-modal/webgl-modal.css b/src/components/webgl-modal/webgl-modal.css
index 334ef8f68..f1b6ff6ef 100644
--- a/src/components/webgl-modal/webgl-modal.css
+++ b/src/components/webgl-modal/webgl-modal.css
@@ -1,6 +1,7 @@
 @import "../../css/colors.css";
 @import "../../css/units.css";
 @import "../../css/typography.css";
+@import "../../css/z-index.css";
 
 .modal-overlay {
     position: fixed;
@@ -8,7 +9,7 @@
     left: 0;
     right: 0;
     bottom: 0;
-    z-index: 1000;
+    z-index: $z-index-modal;
     background-color: $ui-modal-overlay;
 }
 
diff --git a/src/css/z-index.css b/src/css/z-index.css
new file mode 100644
index 000000000..dfca96245
--- /dev/null
+++ b/src/css/z-index.css
@@ -0,0 +1,21 @@
+/*
+    Contains constants for the z-index values of elements that are part of the global stack context.
+    In other words, z-index values that are "inside" a component are not added here.
+    This prevents conflicts between identical z-index values in different components.
+*/
+
+$z-index-extension-button: 50; /* Force extension button above the ScratchBlocks flyout */
+$z-index-menu-bar: 50; /* blocklyToolboxDiv is 40 */
+$z-index-card: 100;
+$z-index-coming-soon: 100;
+$z-index-monitor: 100;
+$z-index-monitor-dragging: 101;
+$z-index-context-menu: 200; /* above the stage */
+$z-index-loader: 999; /* below modals */
+$z-index-modal: 1000;
+$z-index-drag-layer: 1000; /* above everything */
+$z-index-dragging-sprite: 1000; /* above everything so it is draggable into other panes */
+$z-index-stage-color-picker-background: 2000;
+$z-index-stage-with-color-picker: 2001;
+$z-index-stage-header: 5000;
+$z-index-stage-wrapper-overlay: 5000;
\ No newline at end of file
-- 
GitLab