History

Add link to reveal the selected search result in the sidebar list

Thibaut committed 12 years ago

Commit 2b20c091 parent 791de077 files · +82 −29Browse files

Showing the changes to assets/javascripts (6 of 7 files). Show all

Unified · Split

6 files
  1. assets/javascripts/templates/sidebar_tmpl.coffee +1 −1
  2. assets/javascripts/views/sidebar/doc_list.coffee +27 −17
  3. assets/javascripts/views/sidebar/entry_list.coffee +0 −4
  4. assets/javascripts/views/sidebar/sidebar.coffee +11 −3
  5. assets/javascripts/views/sidebar/sidebar_hover.coffee +4 −1
  6. assets/javascripts/views/sidebar/type_list.coffee +3 −3
assets/javascripts/templates/sidebar_tmpl.coffee+1−1
@@ -15,7 +15,7 @@ templates.sidebarEntry = (entry) -> · 14 unmodified lines
1515 """<a href="#{entry.fullPath()}" class="_list-item _list-hover">#{$.escape entry.name}</a>"""
1616
1717 templates.sidebarResult = (entry) ->
18− """<a href="#{entry.fullPath()}" class="_list-item _list-hover _list-result _icon-#{entry.doc.slug}">#{$.escape entry.name}</a>"""
18+ """<a href="#{entry.fullPath()}" class="_list-item _list-hover _list-result _icon-#{entry.doc.slug}"><span class="_list-reveal" data-reset-list></span>#{$.escape entry.name}</a>"""
1919
2020 templates.sidebarPageLink = (count) ->
2121 """<span class="_list-item _list-pagelink">Show more… (#{count})</span>"""
assets/javascripts/views/sidebar/doc_list.coffee+27−17
@@ -35,6 +35,16 @@ class app.views.DocList extends app.View · 34 unmodified lines
3535 @append @tmpl('sidebarDoc', app.disabledDocs.all(), disabled: true)
3636 return
3737
38+ reset: ->
39+ @listSelect.deselect()
40+ @listFocus?.blur()
41+ @listFold.reset()
42+
43+ if model = app.router.context.type or app.router.context.entry
44+ @reveal model
45+ @select model
46+ return
47+
3848 onOpen: (event) =>
3949 $.stopEvent(event)
4050 doc = app.docs.findBy 'slug', event.target.getAttribute('data-slug')
@@ -56,14 +66,15 @@ class app.views.DocList extends app.View · 15 unmodified lines
5666 delete @lists[doc.slug]
5767 return
5868
59− revealType: (type) ->
60− @openDoc type.doc
69+ select: (model) ->
70+ @listSelect.selectByHref model?.fullPath()
6171 return
6272
63− revealEntry: (entry) ->
64− @openDoc entry.doc
65− @openType entry.getType() if entry.type
66− @lists[entry.doc.slug]?.revealEntry(entry)
73+ reveal: (model) ->
74+ @openDoc model.doc
75+ @openType model.getType() if model.type
76+ @paginateTo model
77+ @scrollTo model
6778 return
6879
6980 openDoc: (doc) ->
@@ -74,18 +85,17 @@ class app.views.DocList extends app.View · 4 unmodified lines
7485 @listFold.open @lists[type.doc.slug].find("[data-slug='#{type.slug}']")
7586 return
7687
77− afterRoute: (route, context) =>
78− if context.init
79− switch route
80− when 'type' then @revealType context.type
81− when 'entry' then @revealEntry context.entry
88+ paginateTo: (model) ->
89+ @lists[model.doc.slug]?.paginateTo(model)
90+ return
8291
83− if route in ['type', 'entry']
84− @listSelect.selectByHref (context.type or context.entry).fullPath()
85− else
86− @listSelect.deselect()
92+ scrollTo: (model) ->
93+ $.scrollTo @find("a[href='#{model.fullPath()}']")
94+ return
8795
96+ afterRoute: (route, context) =>
8897 if context.init
89− $.scrollTo @listSelect.getSelection()
90−
98+ @reset()
99+ else
100+ @select context.type or context.entry
91101 return
assets/javascripts/views/sidebar/entry_list.coffee+0−4
@@ -13,7 +13,3 @@ class app.views.EntryList extends app.views.PaginatedList · 12 unmodified lines
1313
1414 render: (entries) ->
1515 @tmpl 'sidebarEntry', entries
16−
17− revealEntry: (entry) ->
18− @paginateTo entry
19− return
assets/javascripts/views/sidebar/sidebar.coffee+11−3
@@ -3,6 +3,7 @@ class app.views.Sidebar extends app.View · 2 unmodified lines
33
44 @events:
55 focus: 'onFocus'
6+ click: 'onClick'
67
78 @shortcuts:
89 escape: 'onEscape'
@@ -67,9 +68,11 @@ class app.views.Sidebar extends app.View · 58 unmodified lines
6768 $.scrollTo event.target, @el, 'continuous', bottomGap: 2
6869 return
6970
70− onEscape: =>
71− @showDocList()
72− @scrollToTop()
71+ onClick: (event) =>
72+ if event.target.hasAttribute? 'data-reset-list'
73+ $.stopEvent(event)
74+ @showDocList()
75+ @docList.reset()
7376 return
7477
7578 onGlobalClick: (event) =>
@@ -79,3 +82,8 @@ class app.views.Sidebar extends app.View · 3 unmodified lines
7982 else if @view is @docPicker
8083 @showDocList() unless $.hasChild @el, event.target
8184 return
85+
86+ onEscape: =>
87+ @showDocList()
88+ @scrollToTop()
89+ return
assets/javascripts/views/sidebar/sidebar_hover.coffee+4−1
@@ -55,6 +55,9 @@ class app.views.SidebarHover extends app.View · 54 unmodified lines
5555 isTarget: (el) ->
5656 el.classList.contains @constructor.itemClass
5757
58+ isSelected: (el) ->
59+ el.classList.contains 'active'
60+
5861 isTruncated: (el) ->
5962 el.scrollWidth >= el.offsetWidth
6063
@@ -68,7 +71,7 @@ class app.views.SidebarHover extends app.View · 7 unmodified lines
6871 return
6972
7073 onMouseover: (event) =>
71− if @isTarget(event.target) and @mouseActivated()
74+ if @isTarget(event.target) and not @isSelected(event.target) and @mouseActivated()
7275 @show event.target
7376 return
7477
assets/javascripts/views/sidebar/type_list.coffee+3−3
@@ -45,7 +45,7 @@ class app.views.TypeList extends app.View · 44 unmodified lines
4545 delete @lists[type.slug]
4646 return
4747
48− revealEntry: (entry) ->
49− if entry.type
50− @lists[entry.getType().slug]?.revealEntry(entry)
48+ paginateTo: (model) ->
49+ if model.type
50+ @lists[model.getType().slug]?.paginateTo(model)
5151 return