nested_form_fields 0.7.8 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.travis.yml +2 -2
- data/README.md +39 -10
- data/lib/assets/javascripts/nested_form_fields.js.coffee +3 -2
- data/lib/nested_form_fields.rb +12 -5
- data/lib/nested_form_fields/version.rb +1 -1
- data/nested_form_fields.gemspec +7 -4
- data/spec/spec_helper.rb +4 -0
- metadata +56 -17
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 236d8d7b63143d4f30595622869bee46712a055ef652de7fd57ae6b754d8e19f
         | 
| 4 | 
            +
              data.tar.gz: fc404d3d852c8d65097a2559478e8fb7057cdf7d4aab93f151accec28366c3b4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b77de97deb51cbe1022d436f41d22f9fb89a559d22aa02477d5f7cd8c5d08eb500090c6c5a6771bc437567edffeca7a8edba99543b545693f5123f04570e11b4
         | 
| 7 | 
            +
              data.tar.gz: ea3b05a99b66042edf6e48798bd8be2903dddad0638d7cb89cb0d370a4673abcd762d05d99453335efdd9e858a982c53f0e399e37578b17567e14535546ae44b
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -14,15 +14,44 @@ It uses jQuery to dynamically add and remove nested associations. | |
| 14 14 |  | 
| 15 15 | 
             
            Add this line to your application's Gemfile:
         | 
| 16 16 |  | 
| 17 | 
            -
             | 
| 17 | 
            +
            ```ruby
         | 
| 18 | 
            +
            gem 'nested_form_fields'
         | 
| 19 | 
            +
            ```
         | 
| 18 20 |  | 
| 19 21 | 
             
            And then execute:
         | 
| 20 22 |  | 
| 21 | 
            -
             | 
| 23 | 
            +
            ```console
         | 
| 24 | 
            +
            $ bundle
         | 
| 25 | 
            +
            ```
         | 
| 22 26 |  | 
| 23 27 | 
             
            In your application.js file add:
         | 
| 24 28 |  | 
| 25 | 
            -
             | 
| 29 | 
            +
            ```javascript
         | 
| 30 | 
            +
            //= require nested_form_fields
         | 
| 31 | 
            +
            ```
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            ### Rails 5.1+
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            You will need to install jQuery as Rails dropped it from its default stack.
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            Add to Gemfile:
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            ```ruby
         | 
| 40 | 
            +
            gem 'jquery-rails'
         | 
| 41 | 
            +
            ```
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            Execute:
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            ```console
         | 
| 46 | 
            +
            $ bundle
         | 
| 47 | 
            +
            ```
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            Add to application.js:
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            ```javascript
         | 
| 52 | 
            +
            //= require jquery3
         | 
| 53 | 
            +
            //= require jquery_ujs
         | 
| 54 | 
            +
            ```
         | 
| 26 55 |  | 
| 27 56 | 
             
            ## Usage
         | 
| 28 57 |  | 
| @@ -80,7 +109,7 @@ f.add_nested_fields_link :videos, 'Add another funtastic video', class: 'btn btn | |
| 80 109 | 
             
            You can supply a block to the `remove_nested_fields_link` and the `add_nested_fields_link` helpers, as you can with `link_to`:
         | 
| 81 110 |  | 
| 82 111 | 
             
            ```haml
         | 
| 83 | 
            -
            = ff.remove_nested_fields_link
         | 
| 112 | 
            +
            = ff.remove_nested_fields_link do
         | 
| 84 113 | 
             
              Remove me %span.icon-trash
         | 
| 85 114 | 
             
            ```
         | 
| 86 115 |  | 
| @@ -141,8 +170,8 @@ def user_params | |
| 141 170 | 
             
                params.require(:user)
         | 
| 142 171 | 
             
                    .permit(:name,:email,videos_attributes:[:video_title,:_destroy,:id])
         | 
| 143 172 | 
             
            #                            ^^^                 ^^^           ^^^
         | 
| 144 | 
            -
            #                            nested model attrs | 
| 145 | 
            -
            #                                                             they will let you delete the nested model | 
| 173 | 
            +
            #                            nested model attrs
         | 
| 174 | 
            +
            #                                                             they will let you delete the nested model
         | 
| 146 175 | 
             
            end
         | 
| 147 176 | 
             
            ```
         | 
| 148 177 |  | 
| @@ -190,11 +219,11 @@ $(document).on "fields_added.nested_form_fields", (event, param) -> | |
| 190 219 |  | 
| 191 220 | 
             
            ## Index replacement string
         | 
| 192 221 |  | 
| 193 | 
            -
            Sometimes your code needs to know what index it has when it is instantiated onto the page. | 
| 194 | 
            -
            HTML data elements may need point to other form elements for instance. | 
| 195 | 
            -
            with rails3-jquery-autocomplete. | 
| 222 | 
            +
            Sometimes your code needs to know what index it has when it is instantiated onto the page.
         | 
| 223 | 
            +
            HTML data elements may need to point to other form elements for instance. This is needed for integration
         | 
| 224 | 
            +
            with rails3-jquery-autocomplete.
         | 
| 196 225 |  | 
| 197 | 
            -
            To enable string substitution with the current index use the magic string  | 
| 226 | 
            +
            To enable string substitution with the current index use the magic string `__nested_field_for_replace_with_index__`.
         | 
| 198 227 |  | 
| 199 228 | 
             
            ## Contributing
         | 
| 200 229 |  | 
| @@ -39,7 +39,8 @@ nested_form_fields.bind_nested_forms_links = () -> | |
| 39 39 | 
             
              $('body').off("click", '.remove_nested_fields_link')
         | 
| 40 40 | 
             
              $('body').on 'click', '.remove_nested_fields_link', ->
         | 
| 41 41 | 
             
                $link = $(this)
         | 
| 42 | 
            -
                return false unless $.rails.allowAction($link)
         | 
| 42 | 
            +
                return false unless $.rails == undefined || $.rails.allowAction($link)
         | 
| 43 | 
            +
                return false if $link.attr('disabled')
         | 
| 43 44 | 
             
                object_class = $link.data('object-class')
         | 
| 44 45 | 
             
                delete_association_field_name = $link.data('delete-association-field-name')
         | 
| 45 46 | 
             
                removed_index = parseInt(delete_association_field_name.match('(\\d+\\]\\[_destroy])')[0].match('\\d+')[0])
         | 
| @@ -51,7 +52,7 @@ nested_form_fields.bind_nested_forms_links = () -> | |
| 51 52 | 
             
                else
         | 
| 52 53 | 
             
                  $nested_fields_container.before "<input type='hidden' name='#{delete_association_field_name}' value='1' />"
         | 
| 53 54 | 
             
                $nested_fields_container.hide()
         | 
| 54 | 
            -
                $nested_fields_container.find('input[required]:hidden').removeAttr('required')
         | 
| 55 | 
            +
                $nested_fields_container.find('input[required]:hidden, select[required]:hidden, textarea[required]:hidden').removeAttr('required')
         | 
| 55 56 | 
             
                $nested_fields_container.trigger("fields_removed.nested_form_fields",{object_class: object_class, delete_association_field_name: delete_association_field_name, removed_index: removed_index});
         | 
| 56 57 | 
             
                false
         | 
| 57 58 |  | 
    
        data/lib/nested_form_fields.rb
    CHANGED
    
    | @@ -73,12 +73,14 @@ module ActionView::Helpers | |
| 73 73 | 
             
                    wrapper_options = options[:wrapper_options].clone || {}
         | 
| 74 74 | 
             
                    if child._destroy == true
         | 
| 75 75 | 
             
                      wrapper_options[:style] = wrapper_options[:style] ? wrapper_options[:style] + ';' + 'display:none' : 'display:none'
         | 
| 76 | 
            +
                      output << destroy_hidden_field(association_name, index)
         | 
| 76 77 | 
             
                    end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
                       | 
| 78 | 
            +
             | 
| 79 | 
            +
                    # Build the wrapper + content and do substitution with the current index allows JS functions to have proper references
         | 
| 80 | 
            +
                    wrapped_block = nested_fields_wrapper(association_name, options[:wrapper_tag], options[:legend], wrapper_options) do
         | 
| 81 | 
            +
                      fields_for_nested_model("#{name}[#{options[:child_index] || nested_child_index(name)}]", child, options, block)
         | 
| 81 82 | 
             
                    end
         | 
| 83 | 
            +
                    output << wrapped_block.gsub('__nested_field_for_replace_with_index__', index.to_s).html_safe
         | 
| 82 84 | 
             
                  end
         | 
| 83 85 |  | 
| 84 86 | 
             
                  output << nested_model_template(name, association_name, options, block)
         | 
| @@ -114,7 +116,7 @@ module ActionView::Helpers | |
| 114 116 | 
             
                end
         | 
| 115 117 |  | 
| 116 118 | 
             
                def association_path association_name
         | 
| 117 | 
            -
                  "#{object_name.gsub('][','_').gsub(/_attributes/,'').sub('[','_').sub(']','')}_#{association_name}"
         | 
| 119 | 
            +
                  "#{object_name.to_s.gsub('][','_').gsub(/_attributes/,'').sub('[','_').sub(']','')}_#{association_name}"
         | 
| 118 120 | 
             
                end
         | 
| 119 121 |  | 
| 120 122 | 
             
                def index_placeholder association_name
         | 
| @@ -132,6 +134,11 @@ module ActionView::Helpers | |
| 132 134 | 
             
                  end
         | 
| 133 135 | 
             
                end
         | 
| 134 136 |  | 
| 137 | 
            +
                def destroy_hidden_field(association_name, index)
         | 
| 138 | 
            +
                  @template.hidden_field "#{object_name}[#{association_name}_attributes][#{index}]",
         | 
| 139 | 
            +
                                         :_destroy, value: 1
         | 
| 140 | 
            +
                end
         | 
| 141 | 
            +
             | 
| 135 142 | 
             
                def add_default_classes_to_wrapper_options(association_name, wrapper_options)
         | 
| 136 143 | 
             
                  default_classes = ["nested_fields", "nested_#{association_path(association_name)}"]
         | 
| 137 144 | 
             
                  wrapper_options[:class] = wrapper_options[:class].is_a?(String) ? wrapper_options[:class].split(" ") : wrapper_options[:class].to_a
         | 
    
        data/nested_form_fields.gemspec
    CHANGED
    
    | @@ -21,13 +21,16 @@ Gem::Specification.new do |gem| | |
| 21 21 | 
             
              gem.add_dependency 'coffee-rails', '>= 3.2.1'
         | 
| 22 22 | 
             
              gem.add_dependency 'jquery-rails'
         | 
| 23 23 |  | 
| 24 | 
            -
              gem.add_development_dependency 'rspec-rails', '~>  | 
| 24 | 
            +
              gem.add_development_dependency 'rspec-rails', '~> 3.5'
         | 
| 25 | 
            +
              gem.add_development_dependency 'nokogiri', '1.6.8.1'
         | 
| 25 26 | 
             
              gem.add_development_dependency 'assert_difference'
         | 
| 26 27 | 
             
              gem.add_development_dependency 'capybara'
         | 
| 27 | 
            -
              gem.add_development_dependency ' | 
| 28 | 
            -
              gem.add_development_dependency ' | 
| 28 | 
            +
              gem.add_development_dependency 'geckodriver-helper'
         | 
| 29 | 
            +
              gem.add_development_dependency 'selenium-webdriver', '> 3.0.5'
         | 
| 30 | 
            +
              gem.add_development_dependency 'sqlite3', '~> 1.3.6'
         | 
| 29 31 | 
             
              gem.add_development_dependency 'haml', '>= 3.1.5'
         | 
| 30 | 
            -
              gem.add_development_dependency 'haml-rails'
         | 
| 32 | 
            +
              gem.add_development_dependency 'haml-rails', '~> 0.4.0'
         | 
| 31 33 | 
             
              gem.add_development_dependency 'sass-rails', '~> 3.2.3'
         | 
| 32 34 | 
             
              gem.add_development_dependency 'test-unit', '1.2.3'
         | 
| 35 | 
            +
              gem.add_development_dependency 'public_suffix', '~> 1.4.6'
         | 
| 33 36 | 
             
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -9,6 +9,10 @@ ENV["RAILS_ENV"] = 'test' | |
| 9 9 | 
             
            require_relative "dummy/config/environment"
         | 
| 10 10 |  | 
| 11 11 | 
             
            require 'rspec/rails'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            # prevent Test::Unit's AutoRunner from executing during RSpec's rake task see https://github.com/rspec/rspec-rails/issues/1171
         | 
| 14 | 
            +
            Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
         | 
| 15 | 
            +
             | 
| 12 16 | 
             
            require 'assert_difference'
         | 
| 13 17 | 
             
            require 'sqlite3'
         | 
| 14 18 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: nested_form_fields
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.8.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Nico Ritsche
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-07-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -58,14 +58,28 @@ dependencies: | |
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 61 | 
            +
                    version: '3.5'
         | 
| 62 62 | 
             
              type: :development
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 66 | 
             
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: ' | 
| 68 | 
            +
                    version: '3.5'
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: nokogiri
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - '='
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: 1.6.8.1
         | 
| 76 | 
            +
              type: :development
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - '='
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: 1.6.8.1
         | 
| 69 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 84 | 
             
              name: assert_difference
         | 
| 71 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -95,7 +109,7 @@ dependencies: | |
| 95 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 110 | 
             
                    version: '0'
         | 
| 97 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name:  | 
| 112 | 
            +
              name: geckodriver-helper
         | 
| 99 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 114 | 
             
                requirements:
         | 
| 101 115 | 
             
                - - ">="
         | 
| @@ -108,20 +122,34 @@ dependencies: | |
| 108 122 | 
             
                - - ">="
         | 
| 109 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 124 | 
             
                    version: '0'
         | 
| 125 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 126 | 
            +
              name: selenium-webdriver
         | 
| 127 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 | 
            +
                requirements:
         | 
| 129 | 
            +
                - - ">"
         | 
| 130 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            +
                    version: 3.0.5
         | 
| 132 | 
            +
              type: :development
         | 
| 133 | 
            +
              prerelease: false
         | 
| 134 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 | 
            +
                requirements:
         | 
| 136 | 
            +
                - - ">"
         | 
| 137 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            +
                    version: 3.0.5
         | 
| 111 139 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 140 | 
             
              name: sqlite3
         | 
| 113 141 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 142 | 
             
                requirements:
         | 
| 115 | 
            -
                - - " | 
| 143 | 
            +
                - - "~>"
         | 
| 116 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version:  | 
| 145 | 
            +
                    version: 1.3.6
         | 
| 118 146 | 
             
              type: :development
         | 
| 119 147 | 
             
              prerelease: false
         | 
| 120 148 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 149 | 
             
                requirements:
         | 
| 122 | 
            -
                - - " | 
| 150 | 
            +
                - - "~>"
         | 
| 123 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version:  | 
| 152 | 
            +
                    version: 1.3.6
         | 
| 125 153 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 126 154 | 
             
              name: haml
         | 
| 127 155 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -140,16 +168,16 @@ dependencies: | |
| 140 168 | 
             
              name: haml-rails
         | 
| 141 169 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 142 170 | 
             
                requirements:
         | 
| 143 | 
            -
                - - " | 
| 171 | 
            +
                - - "~>"
         | 
| 144 172 | 
             
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            -
                    version:  | 
| 173 | 
            +
                    version: 0.4.0
         | 
| 146 174 | 
             
              type: :development
         | 
| 147 175 | 
             
              prerelease: false
         | 
| 148 176 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 177 | 
             
                requirements:
         | 
| 150 | 
            -
                - - " | 
| 178 | 
            +
                - - "~>"
         | 
| 151 179 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            -
                    version:  | 
| 180 | 
            +
                    version: 0.4.0
         | 
| 153 181 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 154 182 | 
             
              name: sass-rails
         | 
| 155 183 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -178,6 +206,20 @@ dependencies: | |
| 178 206 | 
             
                - - '='
         | 
| 179 207 | 
             
                  - !ruby/object:Gem::Version
         | 
| 180 208 | 
             
                    version: 1.2.3
         | 
| 209 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 210 | 
            +
              name: public_suffix
         | 
| 211 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 212 | 
            +
                requirements:
         | 
| 213 | 
            +
                - - "~>"
         | 
| 214 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 215 | 
            +
                    version: 1.4.6
         | 
| 216 | 
            +
              type: :development
         | 
| 217 | 
            +
              prerelease: false
         | 
| 218 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 219 | 
            +
                requirements:
         | 
| 220 | 
            +
                - - "~>"
         | 
| 221 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 222 | 
            +
                    version: 1.4.6
         | 
| 181 223 | 
             
            description: |-
         | 
| 182 224 | 
             
              Rails gem for dynamically adding and removing nested has_many association fields in a form.
         | 
| 183 225 | 
             
                                       Uses jQuery and supports multiple nesting levels. Requires Ruby 1.9+ and the asset pipeline.
         | 
| @@ -194,8 +236,6 @@ files: | |
| 194 236 | 
             
            - LICENSE
         | 
| 195 237 | 
             
            - README.md
         | 
| 196 238 | 
             
            - Rakefile
         | 
| 197 | 
            -
            - lib/assets/.DS_Store
         | 
| 198 | 
            -
            - lib/assets/javascripts/.DS_Store
         | 
| 199 239 | 
             
            - lib/assets/javascripts/nested_form_fields.js.coffee
         | 
| 200 240 | 
             
            - lib/nested_form_fields.rb
         | 
| 201 241 | 
             
            - lib/nested_form_fields/version.rb
         | 
| @@ -271,8 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 271 311 | 
             
                - !ruby/object:Gem::Version
         | 
| 272 312 | 
             
                  version: '0'
         | 
| 273 313 | 
             
            requirements: []
         | 
| 274 | 
            -
             | 
| 275 | 
            -
            rubygems_version: 2.5.1
         | 
| 314 | 
            +
            rubygems_version: 3.0.4
         | 
| 276 315 | 
             
            signing_key: 
         | 
| 277 316 | 
             
            specification_version: 4
         | 
| 278 317 | 
             
            summary: Rails gem for dynamically adding and removing nested has_many association
         |