From f63ff69097e7c99aebb26b0ada86ba2f4a3dbc96 Mon Sep 17 00:00:00 2001 From: Chris Rodriguez Date: Thu, 30 Jul 2015 15:01:56 -0400 Subject: [PATCH] Assigning focus to the selected topic TNL-2620 --- .../view/discussion_thread_view_spec.coffee | 12 ++++++++++++ .../discussion/views/discussion_thread_view.coffee | 1 + .../common/templates/discussion/thread.underscore | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/common/static/coffee/spec/discussion/view/discussion_thread_view_spec.coffee b/common/static/coffee/spec/discussion/view/discussion_thread_view_spec.coffee index 85fb7ad760..3c5717815a 100644 --- a/common/static/coffee/spec/discussion/view/discussion_thread_view_spec.coffee +++ b/common/static/coffee/spec/discussion/view/discussion_thread_view_spec.coffee @@ -158,6 +158,18 @@ describe "DiscussionThreadView", -> expect($.ajax).not.toHaveBeenCalled() expect(@view.$el.find(".responses li").length).toEqual(0) + describe "focus", -> + it "sends focus to the conversation when opened", -> + DiscussionViewSpecHelper.setNextResponseContent({resp_total: 0, children: []}) + @view.render() + @view.expand() + waitsFor (-> + # This is the implementation of "toBeFocused". However, simply calling that method + # with no wait seems to be flaky. + article = @view.$el.find('.discussion-article') + return article[0] == article[0].ownerDocument.activeElement + ), "conversation did not receive focus", 3000 + describe "expand/collapse", -> it "shows/hides appropriate content", -> DiscussionViewSpecHelper.setNextResponseContent({resp_total: 0, children: []}) diff --git a/common/static/coffee/src/discussion/views/discussion_thread_view.coffee b/common/static/coffee/src/discussion/views/discussion_thread_view.coffee index f9a6d21b00..b830e2288c 100644 --- a/common/static/coffee/src/discussion/views/discussion_thread_view.coffee +++ b/common/static/coffee/src/discussion/views/discussion_thread_view.coffee @@ -162,6 +162,7 @@ if Backbone? ) @trigger "thread:responses:rendered" @loadedResponses = true + @$el.find('.discussion-article[data-id="' + @model.id + '"]').focus() # Sends focus to the discussion once the thread loads error: (xhr, textStatus) => return if textStatus == 'abort' diff --git a/common/static/common/templates/discussion/thread.underscore b/common/static/common/templates/discussion/thread.underscore index 8498c9ae8d..fea3d35517 100644 --- a/common/static/common/templates/discussion/thread.underscore +++ b/common/static/common/templates/discussion/thread.underscore @@ -1,5 +1,5 @@ -
-
+
+