From dfe3fd1afd70132510f2f6294ff32283af979c4d Mon Sep 17 00:00:00 2001 From: "cristian.corcoveanu" Date: Sun, 24 Apr 2016 15:33:33 +0300 Subject: [PATCH] Hide/Show sidebar when dragging it or typing into the serarch input --- assets/javascripts/app/settings.coffee | 9 ++++++++ .../javascripts/views/layout/document.coffee | 21 +++++++++++++++++++ .../javascripts/views/layout/resizer.coffee | 6 ++++++ assets/javascripts/views/search/search.coffee | 3 +++ 4 files changed, 39 insertions(+) diff --git a/assets/javascripts/app/settings.coffee b/assets/javascripts/app/settings.coffee index 1cd5c48d..0f9ada84 100644 --- a/assets/javascripts/app/settings.coffee +++ b/assets/javascripts/app/settings.coffee @@ -79,6 +79,15 @@ class app.Settings catch return + hasLayout: (name) -> + try + layout = (Cookies.get(LAYOUT_KEY) || '').split(' ') + $.arrayDelete(layout, '') + console.log(layout) + return layout.indexOf(name) isnt -1 + catch + return false + setSize: (value) -> try Cookies.set SIZE_KEY, value, path: '/', expires: 1e8 diff --git a/assets/javascripts/views/layout/document.coffee b/assets/javascripts/views/layout/document.coffee index 6d7e5d9a..c39859e9 100644 --- a/assets/javascripts/views/layout/document.coffee +++ b/assets/javascripts/views/layout/document.coffee @@ -46,6 +46,27 @@ class app.views.Document extends app.View app.appCache?.updateInBackground() return + hideSidebar: (saveLayout = true) -> + sidebarHidden = app.el.classList.contains(HIDE_SIDEBAR_CLASS) + return if sidebarHidden + app.el.classList.add(HIDE_SIDEBAR_CLASS) + return unless saveLayout + app.settings.setLayout(HIDE_SIDEBAR_CLASS, true) + app.appCache?.updateInBackground() + return + + showSidebar: (saveLayout = true) -> + sidebarHidden = app.el.classList.contains(HIDE_SIDEBAR_CLASS) + return unless sidebarHidden + app.el.classList.remove(HIDE_SIDEBAR_CLASS) + return unless saveLayout + app.settings.setLayout(HIDE_SIDEBAR_CLASS, false) + app.appCache?.updateInBackground() + return + + hasSidebar: -> + return !app.el.classList.contains(HIDE_SIDEBAR_CLASS) && !app.settings.hasLayout(HIDE_SIDEBAR_CLASS) + setTitle: (title) -> @el.title = if title then "DevDocs - #{title}" else 'DevDocs API Documentation' diff --git a/assets/javascripts/views/layout/resizer.coffee b/assets/javascripts/views/layout/resizer.coffee index 7cb3e4ed..daec4e37 100644 --- a/assets/javascripts/views/layout/resizer.coffee +++ b/assets/javascripts/views/layout/resizer.coffee @@ -55,6 +55,12 @@ class app.views.Resizer extends app.View onDragEnd: (event) => $.off(window, 'dragover', @onDrag) value = event.pageX or (event.screenX - window.screenX) + if value <= 5 + app.document.hideSidebar() + return + else if !app.document.hasSidebar() + app.document.showSidebar() + if @lastDragValue and not (@lastDragValue - 5 < value < @lastDragValue + 5) # https://github.com/Thibaut/devdocs/issues/265 value = @lastDragValue @resize(value, true) diff --git a/assets/javascripts/views/search/search.coffee b/assets/javascripts/views/search/search.coffee index addd030e..d9454dd3 100644 --- a/assets/javascripts/views/search/search.coffee +++ b/assets/javascripts/views/search/search.coffee @@ -65,11 +65,14 @@ class app.views.Search extends app.View onInput: => return if not @value? or # ignore events pre-"ready" @value is @input.value + @value = @input.value if @value.length + app.document.showSidebar(false) @search() else + app.document.hideSidebar(false) unless app.document.hasSidebar() @clear() return