Commit 06838eeea7cc1d8eab680592294935e58e701d7e:
    disable save button when item changed


Branch: refs/heads/master
Author: Sam Ruby <[email protected]>
Committer: Sam Ruby <[email protected]>
Pusher: rubys <[email protected]>

------------------------------------------------------------
spec/form_spec.rb                                            | +++ ---
views/forms/add-comment.js.rb                                | +++++++++ ---
views/models/pending.js.rb                                   | + 
------------------------------------------------------------
30 changes: 21 additions, 9 deletions.
------------------------------------------------------------


diff --git a/spec/form_spec.rb b/spec/form_spec.rb
index f9514d1..706808f 100644
--- a/spec/form_spec.rb
+++ b/spec/form_spec.rb
@@ -6,7 +6,7 @@
   it "has an add-comment form with a disabled Save button" do
     on_react_server do
       server = {pending: {}, initials: 'sr'}
-      React.render _AddComment(server: server), document.body do
+      React.render _AddComment(item: {}, server: server), document.body do
         response.end document.body.innerHTML
       end
     end
@@ -22,10 +22,10 @@
   it "should enable Save button after input" do
     on_react_server do
       server = {pending: {}, initials: 'sr'}
-      React.render _AddComment(server: server), document.body do
+      React.render _AddComment(item: {}, server: server), document.body do
         node = ~'#comment_text'
         node.textContent = 'Good job!'
-        Simulate.input node, target: {value: 'Good job!'}
+        Simulate.change node, target: {value: 'Good job!'}
         response.end document.body.innerHTML
       end
     end
diff --git a/views/forms/add-comment.js.rb b/views/forms/add-comment.js.rb
index 3a0e5ff..b5eb4e6 100644
--- a/views/forms/add-comment.js.rb
+++ b/views/forms/add-comment.js.rb
@@ -1,6 +1,7 @@
 class AddComment < React
   def initialize
     @save_disabled = true
+    @base = @comment = @@item.pending
   end
 
   def self.button
@@ -28,8 +29,8 @@ def render
       #input field: comment text
       _div.form_group do
         _label 'Comment', for: 'comment-text'
-        _textarea.comment_text!.form_control label: 'Comment',
-          placeholder: 'comment', rows: 5, onInput: self.input
+        _textarea.comment_text!.form_control value: @comment, label: 'Comment',
+          placeholder: 'comment', rows: 5, onChange: self.change
       end
 
       # footer buttons
@@ -45,17 +46,27 @@ def componentDidMount()
     end
   end
 
-  # enable/disable save when input changes
-  def input(event)
-    @save_disabled = ( event.target.value.length == 0 )
+  # enable/disable save when comment changes
+  def change(event)
+    @save_disabled = ( event.target.value == @base )
+    @comment = event.target.value
   end
 
+  # when item changes, reset base and comment
+  def componentWillReceiveProps(props)
+    if props.item.href != @@item.href
+      @base = @comment = props.item.pending || ''
+      @save_disabled = true
+    end
+  end
+
+  # when save button is pushed, post comment and dismiss modal when complete
   def save(event)
     data = {
       agenda: Agenda.file,
       attach: @@item.attach,
       initials: ~'#comment_initials'.value,
-      comment: ~'#comment_text'.value
+      comment: @comment
     }
 
     post 'comment', data do |pending|
diff --git a/views/models/pending.js.rb b/views/models/pending.js.rb
index ed7398b..29c147c 100644
--- a/views/models/pending.js.rb
+++ b/views/models/pending.js.rb
@@ -6,6 +6,7 @@
 class Pending
   def self.load(value)
     Server.pending = value
+    Main.refresh()
     return value
   end
 

Reply via email to