diff --git a/app/assets/javascripts/app/app.js b/app/assets/javascripts/app/app.js index 93b0f65e3..cd6ebbd68 100644 --- a/app/assets/javascripts/app/app.js +++ b/app/assets/javascripts/app/app.js @@ -144,6 +144,9 @@ var app = { // add placeholder support for old browsers $("input, textarea").placeholder(); + // init autosize plugin + autosize($("textarea")); + // setup remote forms $(document).on("ajax:success", "form[data-remote]", function() { $(this).clearForm(); diff --git a/app/assets/javascripts/app/views.js b/app/assets/javascripts/app/views.js index ae4d35282..fe1f54eda 100644 --- a/app/assets/javascripts/app/views.js +++ b/app/assets/javascripts/app/views.js @@ -53,6 +53,9 @@ app.views.Base = Backbone.View.extend({ // add placeholder support for old browsers this.$("input, textarea").placeholder(); + // init autosize plugin + autosize(this.$("textarea")); + this.postRenderTemplate(); }, diff --git a/app/assets/javascripts/app/views/comment_stream_view.js b/app/assets/javascripts/app/views/comment_stream_view.js index fe7c240e3..87dce7e12 100644 --- a/app/assets/javascripts/app/views/comment_stream_view.js +++ b/app/assets/javascripts/app/views/comment_stream_view.js @@ -30,7 +30,7 @@ app.views.CommentStream = app.views.Base.extend({ // add autoexpanders to new comment textarea this.$("textarea").val(this.textareaValue); - autosize(this.$("textarea")); + autosize.update(this.$("textarea")); }, presenter: function(){ diff --git a/app/assets/javascripts/app/views/publisher_view.js b/app/assets/javascripts/app/views/publisher_view.js index 8115674e3..89e5e38f5 100644 --- a/app/assets/javascripts/app/views/publisher_view.js +++ b/app/assets/javascripts/app/views/publisher_view.js @@ -94,9 +94,6 @@ app.views.Publisher = Backbone.View.extend({ this.viewPollCreator.render(); }); - // init autosize plugin - autosize(this.inputEl); - this.initSubviews(); this.checkSubmitAvailability(); return this; diff --git a/app/assets/javascripts/mobile/mobile.js b/app/assets/javascripts/mobile/mobile.js index f8c1ece61..cc8d84a59 100644 --- a/app/assets/javascripts/mobile/mobile.js +++ b/app/assets/javascripts/mobile/mobile.js @@ -37,6 +37,9 @@ $(document).ready(function(){ .toggleClass('inactive'); }; + // init autosize plugin + autosize($("textarea")); + /* Drawer menu */ $("#menu-badge").bind("tap click", function(evt){ evt.preventDefault(); diff --git a/app/assets/javascripts/mobile/publisher.js b/app/assets/javascripts/mobile/publisher.js index 7e96c2fd5..9468ac210 100644 --- a/app/assets/javascripts/mobile/publisher.js +++ b/app/assets/javascripts/mobile/publisher.js @@ -38,6 +38,4 @@ $(document).ready(function(){ evt.preventDefault(); $("#new_status_message").submit(); }); - - autosize($("#status_message_text")); }); diff --git a/spec/javascripts/app/app_spec.js b/spec/javascripts/app/app_spec.js index bbdcae351..06f9a14b0 100644 --- a/spec/javascripts/app/app_spec.js +++ b/spec/javascripts/app/app_spec.js @@ -45,6 +45,13 @@ describe("app", function() { expect($.fn.placeholder).toHaveBeenCalled(); expect($.fn.placeholder.calls.mostRecent().object.selector).toBe("input, textarea"); }); + + it("initializes autosize for textareas", function(){ + spyOn(window, "autosize"); + app.setupForms(); + expect(window.autosize).toHaveBeenCalled(); + expect(window.autosize.calls.mostRecent().args[0].selector).toBe("textarea"); + }); }); describe("setupAjaxErrorRedirect", function() { diff --git a/spec/javascripts/app/views/comment_stream_view_spec.js b/spec/javascripts/app/views/comment_stream_view_spec.js index cd5ddf0fe..58fa00323 100644 --- a/spec/javascripts/app/views/comment_stream_view_spec.js +++ b/spec/javascripts/app/views/comment_stream_view_spec.js @@ -15,10 +15,10 @@ describe("app.views.CommentStream", function(){ describe("postRenderTemplate", function(){ it("autoResizes the new comment textarea", function(){ - spyOn(window, "autosize"); + spyOn(window.autosize, "update"); this.view.postRenderTemplate(); - expect(window.autosize).toHaveBeenCalled(); - expect(window.autosize.calls.mostRecent().args[0].selector).toBe("textarea"); + expect(window.autosize.update).toHaveBeenCalled(); + expect(window.autosize.update.calls.mostRecent().args[0].selector).toBe("textarea"); }); }); diff --git a/spec/javascripts/app/views_spec.js b/spec/javascripts/app/views_spec.js index 1204ca4d1..7fb340b35 100644 --- a/spec/javascripts/app/views_spec.js +++ b/spec/javascripts/app/views_spec.js @@ -1,10 +1,12 @@ describe("app.views.Base", function(){ + beforeEach(function(){ + var StaticTemplateClass = app.views.Base.extend({ templateName : "static-text" }); + this.model = new Backbone.Model({text : "model attributes are in the default presenter"}); + this.view = new StaticTemplateClass({model: this.model}); + }); + describe("#render", function(){ beforeEach(function(){ - var staticTemplateClass = app.views.Base.extend({ templateName : "static-text" }); - - this.model = new Backbone.Model({text : "model attributes are in the default presenter"}); - this.view = new staticTemplateClass({model: this.model}); this.view.render(); }); @@ -85,4 +87,20 @@ describe("app.views.Base", function(){ }); }); }); + + describe("#renderTemplate", function(){ + it("calls jQuery.placeholder() for inputs", function() { + spyOn($.fn, "placeholder"); + this.view.renderTemplate(); + expect($.fn.placeholder).toHaveBeenCalled(); + expect($.fn.placeholder.calls.mostRecent().object.selector).toBe("input, textarea"); + }); + + it("initializes autosize for textareas", function(){ + spyOn(window, "autosize"); + this.view.renderTemplate(); + expect(window.autosize).toHaveBeenCalled(); + expect(window.autosize.calls.mostRecent().args[0].selector).toBe("textarea"); + }); + }); });