From 208d01b1fe9d06770af380f206a0fb9ce42a68db Mon Sep 17 00:00:00 2001
From: kalpitk <kkothari1999@gmail.com>
Date: Mon, 17 Jun 2019 20:45:58 +0530
Subject: [PATCH] Fix sidebar not opening first time

Summary:
On devices with <992px width (sm, xs), sidebar doesn't open when swh-push-menu is clicked first time.
This was due to webapp-utils.js:5 setting collapseSidebar to false by default on all devices.

Reviewers: #reviewers, vlorentz, anlambert

Reviewed By: #reviewers, vlorentz, anlambert

Subscribers: anlambert, vlorentz

Differential Revision: https://forge.softwareheritage.org/D1583
---
 swh/web/assets/src/bundles/browse/browse-utils.js |  4 +++-
 swh/web/assets/src/bundles/webapp/webapp-utils.js | 10 ++++++++--
 swh/web/assets/src/utils/constants.js             |  4 ++++
 3 files changed, 15 insertions(+), 3 deletions(-)
 create mode 100644 swh/web/assets/src/utils/constants.js

diff --git a/swh/web/assets/src/bundles/browse/browse-utils.js b/swh/web/assets/src/bundles/browse/browse-utils.js
index d7be7839b..3cce9854a 100644
--- a/swh/web/assets/src/bundles/browse/browse-utils.js
+++ b/swh/web/assets/src/bundles/browse/browse-utils.js
@@ -5,6 +5,8 @@
  * See top-level LICENSE file for more information
  */
 
+import {BREAKPOINT_SM} from 'utils/constants';
+
 $(document).ready(() => {
 
   $('.dropdown-submenu a.dropdown-item').on('click', e => {
@@ -24,7 +26,7 @@ $(document).ready(() => {
     html: true,
     placement: function() {
       const width = $(window).width();
-      if (width < 768) {
+      if (width < BREAKPOINT_SM) {
         return 'top';
       } else {
         return 'right';
diff --git a/swh/web/assets/src/bundles/webapp/webapp-utils.js b/swh/web/assets/src/bundles/webapp/webapp-utils.js
index 50f2d5ed8..340d9d3bc 100644
--- a/swh/web/assets/src/bundles/webapp/webapp-utils.js
+++ b/swh/web/assets/src/bundles/webapp/webapp-utils.js
@@ -1,6 +1,7 @@
 import objectFitImages from 'object-fit-images';
 import {Layout} from 'admin-lte';
 import {selectText} from 'utils/functions';
+import {BREAKPOINT_MD} from 'utils/constants';
 
 let collapseSidebar = false;
 let previousSidebarState = localStorage.getItem('swh-sidebar-collapsed');
@@ -23,6 +24,11 @@ Layout.prototype.fixLayoutHeight = () => {
 };
 
 $(document).on('DOMContentLoaded', () => {
+  // set state to collapsed on smaller devices
+  if ($(window).width() < BREAKPOINT_MD) {
+    collapseSidebar = true;
+  }
+
   // restore previous sidebar state (collapsed/expanded)
   if (collapseSidebar) {
     // hack to avoid animated transition for collapsing sidebar
@@ -42,7 +48,7 @@ $(document).on('DOMContentLoaded', () => {
 });
 
 $(document).on('collapsed.lte.pushmenu', event => {
-  if ($('body').width() > 980) {
+  if ($('body').width() >= BREAKPOINT_MD) {
     $('.swh-words-logo-swh').css('visibility', 'visible');
   }
 });
@@ -71,7 +77,7 @@ $(document).ready(() => {
   ensureNoFooterOverflow();
   $(window).resize(function() {
     ensureNoFooterOverflow();
-    if ($('body').hasClass('sidebar-collapse') && $('body').width() > 980) {
+    if ($('body').hasClass('sidebar-collapse') && $('body').width() >= BREAKPOINT_MD) {
       $('.swh-words-logo-swh').css('visibility', 'visible');
     }
   });
diff --git a/swh/web/assets/src/utils/constants.js b/swh/web/assets/src/utils/constants.js
new file mode 100644
index 000000000..166e1dc11
--- /dev/null
+++ b/swh/web/assets/src/utils/constants.js
@@ -0,0 +1,4 @@
+// Constants defining Bootstrap Breakpoints
+export const BREAKPOINT_SM = 768;
+export const BREAKPOINT_MD = 992;
+export const BREAKPOINT_LG = 1200;
-- 
GitLab