From b7612887a85d2d8d406da1bc3464a193bb30fc1e Mon Sep 17 00:00:00 2001
From: Chris Beer <cabeer@stanford.edu>
Date: Fri, 8 Mar 2019 14:05:16 -0800
Subject: [PATCH] Allow multiple companion windows in companion areas, except
 for the left one

---
 src/containers/CompanionArea.js      |  1 +
 src/state/actions/companionWindow.js | 20 +++++++++++++-------
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/containers/CompanionArea.js b/src/containers/CompanionArea.js
index 22095d65e..90c4c6b81 100644
--- a/src/containers/CompanionArea.js
+++ b/src/containers/CompanionArea.js
@@ -26,6 +26,7 @@ const styles = theme => ({
   },
   horizontal: {
     width: '100%',
+    flexDirection: 'column',
   },
   toggle: {
     position: 'absolute',
diff --git a/src/state/actions/companionWindow.js b/src/state/actions/companionWindow.js
index e01867b88..81ea10c5f 100644
--- a/src/state/actions/companionWindow.js
+++ b/src/state/actions/companionWindow.js
@@ -21,7 +21,7 @@ export function addCompanionWindow(payload, defaults = defaultProps) {
 /** */
 export function updateCompanionWindow(windowId, id, payload) {
   return (dispatch, getState) => {
-    if (payload.position) {
+    if (payload.position === 'left') {
       const { windows, companionWindows } = getState();
       const { companionWindowIds } = windows[windowId];
 
@@ -66,11 +66,11 @@ export function popOutCompanionWindow(windowId, panelType, position) {
     const { windows, companionWindows } = getState();
     const { companionWindowIds } = windows[windowId];
 
-    companionWindowIds
-      .filter(id => companionWindows[id].position === position)
-      .map(id => dispatch(removeCompanionWindow(id)));
-
     if (position === 'left') {
+      companionWindowIds
+        .filter(id => companionWindows[id].position === position)
+        .map(id => dispatch(removeCompanionWindow(id)));
+
       dispatch(setWindowSideBarPanel(windowId, panelType));
 
       dispatch(setCompanionAreaOpen(windowId, true));
@@ -79,8 +79,14 @@ export function popOutCompanionWindow(windowId, panelType, position) {
     const action = dispatch(addCompanionWindow({ content: panelType, position }));
 
     const companionWindowId = action.id;
-    const existingCompanionWindowIds = companionWindowIds
-      .filter(id => (companionWindows[id].position !== position));
+    let existingCompanionWindowIds;
+
+    if (position === 'left') {
+      existingCompanionWindowIds = companionWindowIds
+        .filter(id => (companionWindows[id].position !== position));
+    } else {
+      existingCompanionWindowIds = companionWindowIds;
+    }
 
     dispatch(updateWindow(windowId, {
       companionWindowIds: existingCompanionWindowIds.concat([companionWindowId]),
-- 
GitLab