From 301d128ea6944ce87e9ff52d6837a83389979ce6 Mon Sep 17 00:00:00 2001
From: Eirikur Ingi Magnusson <eiiki0808@gmail.com>
Date: Thu, 9 Feb 2017 13:52:11 +0000
Subject: [PATCH] Fix explorer scrolling and closing behavior

---
 client/src/api/client.js                                  | 1 +
 client/src/components/explorer/ExplorerPanel.js           | 8 ++++++++
 client/webpack/base.config.js                             | 5 +----
 .../wagtailadmin/scss/components/_main-nav.scss           | 4 ++--
 4 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/client/src/api/client.js b/client/src/api/client.js
index e50021bd6f..830995b358 100644
--- a/client/src/api/client.js
+++ b/client/src/api/client.js
@@ -1,6 +1,7 @@
 import _ from 'lodash';
 
 const fetch = global.fetch;
+const Headers = global.Headers;
 
 // fetch wrapper for JSON APIs.
 export const get = (url) => {
diff --git a/client/src/components/explorer/ExplorerPanel.js b/client/src/components/explorer/ExplorerPanel.js
index 806ae5c709..fa14b56523 100644
--- a/client/src/components/explorer/ExplorerPanel.js
+++ b/client/src/components/explorer/ExplorerPanel.js
@@ -53,11 +53,19 @@ export default class ExplorerPanel extends React.Component {
 
     document.body.classList.add('explorer-open');
     document.addEventListener('click', this.clickOutside);
+    var Anchors = document.getElementsByTagName("a");
+    for (var i = 0; i < Anchors.length ; i++) {
+      Anchors[i].addEventListener("click", this.clickOutside)
+    }
   }
 
   componentWillUnmount() {
     document.body.classList.remove('explorer-open');
     document.removeEventListener('click', this.clickOutside);
+    var Anchors = document.getElementsByTagName("a");
+    for (var i = 0; i < Anchors.length ; i++) {
+      Anchors[i].removeEventListener("click", this.clickOutside)
+    }
   }
 
   clickOutside(e) {
diff --git a/client/webpack/base.config.js b/client/webpack/base.config.js
index b941c9546a..40de08676c 100644
--- a/client/webpack/base.config.js
+++ b/client/webpack/base.config.js
@@ -17,7 +17,7 @@ function entryPoint(filename) {
   var name = appName(filename);
   var entryName = path.basename(filename, '.entry.js');
   var outputPath = path.join('wagtail', name, 'static', name, 'js', entryName);
-  return [outputPath, ['babel-polyfill', filename]];
+  return [outputPath, ['whatwg-fetch', 'babel-polyfill', filename]];
 }
 
 
@@ -46,9 +46,6 @@ module.exports = function exports() {
       publicPath: '/static/js/'
     },
     plugins: [
-      new webpack.ProvidePlugin({
-        fetch: 'imports?this=>global!exports?global.fetch!whatwg-fetch'
-      }),
       new webpack.optimize.CommonsChunkPlugin('common', COMMON_PATH, Infinity)
     ],
     module: {
diff --git a/wagtail/wagtailadmin/static_src/wagtailadmin/scss/components/_main-nav.scss b/wagtail/wagtailadmin/static_src/wagtailadmin/scss/components/_main-nav.scss
index d80d9c231e..e5af869b13 100644
--- a/wagtail/wagtailadmin/static_src/wagtailadmin/scss/components/_main-nav.scss
+++ b/wagtail/wagtailadmin/static_src/wagtailadmin/scss/components/_main-nav.scss
@@ -441,9 +441,9 @@ body.explorer-open {
 
     .explorer {
         width: 400px;
-        position: absolute;
+        position: fixed;
         top: 0;
-        left: 99%;
+        left: $menu-width;
     }
 
     .dl-menu {