From 2ece8d13da24fbdbfe5228368a237b2e5ca093b8 Mon Sep 17 00:00:00 2001 From: Thibaut Courouble <thibaut@me.com> Date: Sat, 23 Jan 2016 15:17:43 -0500 Subject: [PATCH] Improve doc list for versioned docs Ref #25. --- assets/javascripts/templates/sidebar_tmpl.coffee | 15 ++++++++++----- assets/javascripts/views/list/list_focus.coffee | 10 ++++++++-- assets/javascripts/views/list/list_fold.coffee | 4 ++-- assets/javascripts/views/sidebar/doc_list.coffee | 16 +++++++++++++++- .../javascripts/views/sidebar/doc_picker.coffee | 2 +- assets/stylesheets/components/_sidebar.scss | 1 + 6 files changed, 37 insertions(+), 11 deletions(-) diff --git a/assets/javascripts/templates/sidebar_tmpl.coffee b/assets/javascripts/templates/sidebar_tmpl.coffee index 885af928..6cb5718b 100644 --- a/assets/javascripts/templates/sidebar_tmpl.coffee +++ b/assets/javascripts/templates/sidebar_tmpl.coffee @@ -3,13 +3,15 @@ templates = app.templates templates.sidebarDoc = (doc, options = {}) -> link = """<a href="#{doc.fullPath()}" class="_list-item _icon-#{doc.icon} """ link += if options.disabled then '_list-disabled' else '_list-dir' - link += """" data-slug="#{doc.slug}" title="#{doc.name}">""" + link += """" data-slug="#{doc.slug}" title="#{doc.name} #{doc.version || ''}">""" if options.disabled link += """<span class="_list-enable" data-enable="#{doc.slug}">Enable</span>""" else link += """<span class="_list-arrow"></span>""" link += """<span class="_list-count">#{doc.release}</span>""" if doc.release - link + "#{doc.name}</a>" + link += "#{doc.name}" + link += " #{doc.version}" if options.disabled and doc.version + link + "</a>" templates.sidebarType = (type) -> """<a href="#{type.fullPath()}" class="_list-item _list-dir" data-slug="#{type.slug}"><span class="_list-arrow"></span><span class="_list-count">#{type.count}</span>#{type.name}</a>""" @@ -48,12 +50,15 @@ templates.sidebarVersionedDoc = (doc, versions, options = {}) -> html += " open" if options.open html + """"><span class="_list-arrow"></span>#{doc.name}</div><div class="_list _list-sub">#{versions}</div>""" -templates.sidebarDisabledList = (options) -> - """<div class="_disabled-list">#{templates.render 'sidebarDoc', options.docs, disabled: true}</div>""" - templates.sidebarDisabled = (options) -> """<h6 class="_list-title"><span class="_list-arrow"></span>Disabled (#{options.count})</h6>""" +templates.sidebarDisabledList = (html) -> + """<div class="_disabled-list">#{html}</div>""" + +templates.sidebarDisabledVersionedDoc = (doc, versions) -> + """<a class="_list-item _list-dir _icon-#{doc.icon} _list-disabled"><span class="_list-arrow"></span>#{doc.name}</a><div class="_list _list-sub">#{versions}</div>""" + templates.sidebarPickerNote = """ <div class="_list-note">Tip: for faster and better search results, select only the docs you need.</div> <a href="https://trello.com/b/6BmTulfx/devdocs-documentation" class="_list-link" target="_blank">Vote for new documentation</a> diff --git a/assets/javascripts/views/list/list_focus.coffee b/assets/javascripts/views/list/list_focus.coffee index 117d5bf3..6b8c1744 100644 --- a/assets/javascripts/views/list/list_focus.coffee +++ b/assets/javascripts/views/list/list_focus.coffee @@ -38,7 +38,10 @@ class app.views.ListFocus extends app.View $.click(next) @findNext cursor else if next.tagName is 'DIV' # sub-list - @findFirst(next) or @findNext(next) + if cursor.className.indexOf('open') >= 0 + @findFirst(next) or @findNext(next) + else + @findNext(next) else if next.tagName is 'H6' # title @findNext(next) else if cursor.parentElement isnt @el @@ -61,7 +64,10 @@ class app.views.ListFocus extends app.View $.click(prev) @findPrev cursor else if prev.tagName is 'DIV' # sub-list - @findLast(prev) or @findPrev(prev) + if prev.previousSibling.className.indexOf('open') >= 0 + @findLast(prev) or @findPrev(prev) + else + @findPrev(prev) else if prev.tagName is 'H6' # title @findPrev(prev) else if cursor.parentElement isnt @el diff --git a/assets/javascripts/views/list/list_fold.coffee b/assets/javascripts/views/list/list_fold.coffee index b5476212..e33aedf0 100644 --- a/assets/javascripts/views/list/list_fold.coffee +++ b/assets/javascripts/views/list/list_fold.coffee @@ -10,7 +10,7 @@ class app.views.ListFold extends app.View left: 'onLeft' right: 'onRight' - constructor: (@el, @options = {}) -> super + constructor: (@el) -> super open: (el) -> if el and not el.classList.contains @constructor.activeClass @@ -60,5 +60,5 @@ class app.views.ListFold extends app.View $.stopEvent(event) @toggle el.parentElement else if el.classList.contains @constructor.targetClass - if @options.toggleOnclick then @toggle(el) else @open(el) + if el.hasAttribute('href') then @open(el) else @toggle(el) return diff --git a/assets/javascripts/views/sidebar/doc_list.coffee b/assets/javascripts/views/sidebar/doc_list.coffee index 3ee4ea14..338cd29d 100644 --- a/assets/javascripts/views/sidebar/doc_list.coffee +++ b/assets/javascripts/views/sidebar/doc_list.coffee @@ -54,7 +54,21 @@ class app.views.DocList extends app.View return appendDisabledList: -> - @append @tmpl('sidebarDisabledList', docs: app.disabledDocs.all()) + html = '' + docs = [].concat(app.disabledDocs.all()...) + + while doc = docs.shift() + if doc.version + versions = '' + loop + versions += @tmpl('sidebarDoc', doc, disabled: true) + break if docs[0].name isnt doc.name + doc = docs.shift() + html += @tmpl('sidebarDisabledVersionedDoc', doc, versions) + else + html += @tmpl('sidebarDoc', doc, disabled: true) + + @append @tmpl('sidebarDisabledList', html) @disabledTitle.classList.add('open-title') @refreshElements() return diff --git a/assets/javascripts/views/sidebar/doc_picker.coffee b/assets/javascripts/views/sidebar/doc_picker.coffee index 2bcd0cad..9cc73183 100644 --- a/assets/javascripts/views/sidebar/doc_picker.coffee +++ b/assets/javascripts/views/sidebar/doc_picker.coffee @@ -11,7 +11,7 @@ class app.views.DocPicker extends app.View enter: 'onEnter' init: -> - @addSubview @listFold = new app.views.ListFold(@el, toggleOnclick: true) + @addSubview @listFold = new app.views.ListFold(@el) return activate: -> diff --git a/assets/stylesheets/components/_sidebar.scss b/assets/stylesheets/components/_sidebar.scss index cd8d820f..2d878aa0 100644 --- a/assets/stylesheets/components/_sidebar.scss +++ b/assets/stylesheets/components/_sidebar.scss @@ -197,6 +197,7 @@ .open + & { display: block; } > ._list-item { padding-left: 2.375rem; } > ._list-dir, > ._list-sub > ._list-item { padding-left: 2.75rem; } + > ._list-disabled { padding-left: 3.875rem; } > ._list-item:before { content: none; } > ._list-dir { line-height: 1.375rem; }