class app.views.Mobile extends app.View @className: '_mobile' @elements: body: 'body' content: '._container' sidebar: '._sidebar' @routes: after: 'afterRoute' constructor: -> @el = document.documentElement super init: -> FastClick.attach @body app.shortcuts.stop() $.on @body, 'click', @onClick $.on $('._home-link'), 'click', @onClickHome $.on $('._menu-link'), 'click', @onClickMenu $.on $('._search'), 'touchend', @onTapSearch app.document.sidebar.search .on 'searching', @showSidebar .on 'clear', @hideSidebar @activate() return showSidebar: => return if @isSidebarShown() @contentTop = @body.scrollTop @content.style.display = 'none' @sidebar.style.display = 'block' if selection = @findByClass app.views.ListSelect.activeClass $.scrollTo selection, @body, 'center' else @body.scrollTop = @findByClass(app.views.ListFold.activeClass) and @sidebarTop or 0 return hideSidebar: => return unless @isSidebarShown() @sidebarTop = @body.scrollTop @sidebar.style.display = 'none' @content.style.display = 'block' @body.scrollTop = @contentTop or 0 return isSidebarShown: -> @sidebar.style.display isnt 'none' onClick: (event) => if event.target.hasAttribute 'data-pick-docs' @showSidebar() return onClickHome: => app.shortcuts.trigger 'escape' @hideSidebar() return onClickMenu: => if @isSidebarShown() then @hideSidebar() else @showSidebar() return onTapSearch: => @body.scrollTop = 0 afterRoute: => @hideSidebar() return