class app.views.Results extends app.View @className: '_list' @events: click: 'onClick' @routes: after: 'afterRoute' constructor: (@sidebar, @search) -> super deactivate: -> if super @empty() return init: -> @addSubview @listFocus = new app.views.ListFocus @el @addSubview @listSelect = new app.views.ListSelect @el @search .on 'results', @onResults .on 'noresults', @onNoResults .on 'clear', @onClear return onResults: (entries, flags) => @listFocus?.blur() if flags.initialResults @empty() if flags.initialResults @append @tmpl('sidebarResult', entries) if flags.initialResults if flags.urlSearch then @openFirst() else @focusFirst() return onNoResults: => @html @tmpl('sidebarNoResults') return onClear: => @empty() return focusFirst: -> @listFocus?.focusOnNextFrame @el.firstElementChild unless app.isMobile() return openFirst: -> @el.firstElementChild?.click() return onDocEnabled: (doc) -> app.router.show(doc.fullPath()) @sidebar.onDocEnabled() afterRoute: (route, context) => if route is 'entry' @listSelect.selectByHref context.entry.fullPath() else @listSelect.deselect() return onClick: (event) => return if event.which isnt 1 if slug = $.eventTarget(event).getAttribute('data-enable') $.stopEvent(event) doc = app.disabledDocs.findBy('slug', slug) app.enableDoc(doc, @onDocEnabled.bind(@, doc), $.noop) if doc
class app.views.Results extends app.View
@className: '_list'
@events:
click: 'onClick'
@routes:
after: 'afterRoute'
constructor: (@sidebar, @search) -> super
deactivate: ->
if super
@empty()
return
init: ->
@addSubview @listFocus = new app.views.ListFocus @el
@addSubview @listSelect = new app.views.ListSelect @el
@search
.on 'results', @onResults
.on 'noresults', @onNoResults
.on 'clear', @onClear
return
onResults: (entries, flags) =>
@listFocus?.blur() if flags.initialResults
@empty() if flags.initialResults
@append @tmpl('sidebarResult', entries)
if flags.initialResults
if flags.urlSearch then @openFirst() else @focusFirst()
return
onNoResults: =>
@html @tmpl('sidebarNoResults')
return
onClear: =>
@empty()
return
focusFirst: ->
@listFocus?.focusOnNextFrame @el.firstElementChild unless app.isMobile()
return
openFirst: ->
@el.firstElementChild?.click()
return
onDocEnabled: (doc) ->
app.router.show(doc.fullPath())
@sidebar.onDocEnabled()
afterRoute: (route, context) =>
if route is 'entry'
@listSelect.selectByHref context.entry.fullPath()
else
@listSelect.deselect()
return
onClick: (event) =>
return if event.which isnt 1
if slug = $.eventTarget(event).getAttribute('data-enable')
$.stopEvent(event)
doc = app.disabledDocs.findBy('slug', slug)
app.enableDoc(doc, @onDocEnabled.bind(@, doc), $.noop) if doc