From 09fcf3ec1f2739f95dc61213340042d0977be2e3 Mon Sep 17 00:00:00 2001
From: Jack Reed <phillipjreed@gmail.com>
Date: Thu, 4 Apr 2019 14:42:25 -0600
Subject: [PATCH] Do not render components that are not visible

---
 .../src/components/WorkspaceMenu.test.js      |  3 +-
 src/components/WorkspaceMenu.js               | 70 +++++++++++--------
 2 files changed, 43 insertions(+), 30 deletions(-)

diff --git a/__tests__/src/components/WorkspaceMenu.test.js b/__tests__/src/components/WorkspaceMenu.test.js
index 383c63cc2..f769729e2 100644
--- a/__tests__/src/components/WorkspaceMenu.test.js
+++ b/__tests__/src/components/WorkspaceMenu.test.js
@@ -42,7 +42,8 @@ describe('WorkspaceMenu', () => {
   describe('handleMenuItemClose', () => {
     it('resets the anchor state', () => {
       wrapper.instance().handleMenuItemClose('windowList')();
-      expect(wrapper.find(WindowList).props().open).toBe(false);
+      expect(Boolean(wrapper.state('windowList').anchorEl)).toEqual(false);
+      expect(wrapper.find(WindowList).length).toBe(0);
     });
   });
 
diff --git a/src/components/WorkspaceMenu.js b/src/components/WorkspaceMenu.js
index daf3f9cde..d1a203d3c 100644
--- a/src/components/WorkspaceMenu.js
+++ b/src/components/WorkspaceMenu.js
@@ -171,35 +171,47 @@ export class WorkspaceMenu extends Component {
             <Typography variant="body1">{t('importWorkspace')}</Typography>
           </MenuItem>
         </Menu>
-        <WindowList
-          anchorEl={windowList.anchorEl}
-          open={Boolean(windowList.anchorEl)}
-          handleClose={this.handleMenuItemClose('windowList')}
-        />
-        <WorkspaceSettings
-          open={Boolean(toggleZoom.open)}
-          handleClose={this.handleMenuItemClose('toggleZoom')}
-        />
-        <WorkspaceSettings
-          open={Boolean(settings.open)}
-          container={container}
-          handleClose={this.handleMenuItemClose('settings')}
-        />
-        <WorkspaceSelectionDialog
-          open={Boolean(workspaceSelection.open)}
-          container={container}
-          handleClose={this.handleMenuItemClose('workspaceSelection')}
-        />
-        <WorkspaceExport
-          open={Boolean(exportWorkspace.open)}
-          container={container}
-          handleClose={this.handleMenuItemClose('exportWorkspace')}
-        />
-        <WorkspaceImport
-          open={Boolean(importWorkspace.open)}
-          container={container}
-          handleClose={this.handleMenuItemClose('importWorkspace')}
-        />
+        {Boolean(windowList.anchorEl) && (
+          <WindowList
+            anchorEl={windowList.anchorEl}
+            open={Boolean(windowList.anchorEl)}
+            handleClose={this.handleMenuItemClose('windowList')}
+          />
+        )}
+        {Boolean(toggleZoom.open) && (
+          <WorkspaceSettings
+            open={Boolean(toggleZoom.open)}
+            handleClose={this.handleMenuItemClose('toggleZoom')}
+          />
+        )}
+        {Boolean(settings.open) && (
+          <WorkspaceSettings
+            open={Boolean(settings.open)}
+            container={container}
+            handleClose={this.handleMenuItemClose('settings')}
+          />
+        )}
+        {Boolean(workspaceSelection.open) && (
+          <WorkspaceSelectionDialog
+            open={Boolean(workspaceSelection.open)}
+            container={container}
+            handleClose={this.handleMenuItemClose('workspaceSelection')}
+          />
+        )}
+        {Boolean(exportWorkspace.open) && (
+          <WorkspaceExport
+            open={Boolean(exportWorkspace.open)}
+            container={container}
+            handleClose={this.handleMenuItemClose('exportWorkspace')}
+          />
+        )}
+        {Boolean(importWorkspace.open) && (
+          <WorkspaceImport
+            open={Boolean(importWorkspace.open)}
+            container={container}
+            handleClose={this.handleMenuItemClose('importWorkspace')}
+          />
+        )}
       </>
     );
   }
-- 
GitLab