view_component_reflex 1.1.1 → 1.2.0
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
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4ed2f845769bba6d5142bef6d6fc601b44841080c49ee47abc0036801f62b145
         | 
| 4 | 
            +
              data.tar.gz: 73e625d1948e5b477def8e098a4a4d55b9a02763c575e1d4bdd4c734e0f208b0
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 76c5b53b3acb0fa68084b762ad14fddbaa0aee1d0b9bbe67f33910f088e7b60062bf5dcf61c7703932b2cfa228f4bccfc768e6b9ab64253397e3483efd50cfb5
         | 
| 7 | 
            +
              data.tar.gz: 077a34955920288651b183d77971d30eb4fbfeabe45aaa799d78f2ea242cb46f328d23223508d053e53210c00e9aeb570e9d234b571aba3005e57b6448afd5fc
         | 
    
        data/README.md
    CHANGED
    
    | @@ -53,6 +53,13 @@ end | |
| 53 53 | 
             
            <%= render(TodoComponent.with_collection(Todo.all)) %>
         | 
| 54 54 | 
             
            ```
         | 
| 55 55 |  | 
| 56 | 
            +
            ## API
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            ### permit_parameter?(initial_param, new_params)
         | 
| 59 | 
            +
            If a new parameter is passed to the component during rendering, it is used instead of what's in state.
         | 
| 60 | 
            +
            If you're storing instances in state, you can use this to properly compare them.
         | 
| 61 | 
            +
             | 
| 62 | 
            +
             | 
| 56 63 | 
             
            ## Custom State Adapters
         | 
| 57 64 |  | 
| 58 65 | 
             
            ViewComponentReflex uses session for its state by default. To change this, add
         | 
| @@ -76,13 +83,13 @@ class YourAdapter | |
| 76 83 | 
             
              end
         | 
| 77 84 |  | 
| 78 85 | 
             
              ##
         | 
| 79 | 
            -
              # set_state is used to modify the state. | 
| 80 | 
            -
              # access to the request, as well as the controller and other useful objects. 
         | 
| 86 | 
            +
              # set_state is used to modify the state.
         | 
| 81 87 | 
             
              #
         | 
| 82 | 
            -
              #  | 
| 88 | 
            +
              # request - a rails request object
         | 
| 89 | 
            +
              # controller - the current controller
         | 
| 83 90 | 
             
              # key - a unique string that identifies the component
         | 
| 84 91 | 
             
              # new_state - the new state to set
         | 
| 85 | 
            -
              def self.set_state( | 
| 92 | 
            +
              def self.set_state(request, controller, key, new_state)
         | 
| 86 93 | 
             
                # update the state
         | 
| 87 94 | 
             
              end
         | 
| 88 95 |  | 
| @@ -72,7 +72,7 @@ module ViewComponentReflex | |
| 72 72 | 
             
                      end
         | 
| 73 73 |  | 
| 74 74 | 
             
                      def set_state(new_state = {})
         | 
| 75 | 
            -
                        ViewComponentReflex::Engine.state_adapter.set_state( | 
| 75 | 
            +
                        ViewComponentReflex::Engine.state_adapter.set_state(request, controller, element.dataset[:key], new_state)
         | 
| 76 76 | 
             
                      end
         | 
| 77 77 |  | 
| 78 78 | 
             
                      def state
         | 
| @@ -125,6 +125,10 @@ module ViewComponentReflex | |
| 125 125 | 
             
                  nil
         | 
| 126 126 | 
             
                end
         | 
| 127 127 |  | 
| 128 | 
            +
                def permit_parameter?(initial_param, new_param)
         | 
| 129 | 
            +
                  initial_param != new_param
         | 
| 130 | 
            +
                end
         | 
| 131 | 
            +
             | 
| 128 132 | 
             
                def key
         | 
| 129 133 | 
             
                  # initialize session state
         | 
| 130 134 | 
             
                  if !stimulus_reflex? || session[@key].nil?
         | 
| @@ -140,9 +144,13 @@ module ViewComponentReflex | |
| 140 144 | 
             
                      new_state[k] = instance_variable_get(k)
         | 
| 141 145 | 
             
                    end
         | 
| 142 146 | 
             
                    ViewComponentReflex::Engine.state_adapter.store_state(request, @key, new_state)
         | 
| 147 | 
            +
                    ViewComponentReflex::Engine.state_adapter.store_state(request, "#{@key}_initial", new_state)
         | 
| 143 148 | 
             
                  else
         | 
| 149 | 
            +
                    initial_state = ViewComponentReflex::Engine.state_adapter.state(request, "#{@key}_initial")
         | 
| 144 150 | 
             
                    ViewComponentReflex::Engine.state_adapter.state(request, @key).each do |k, v|
         | 
| 145 | 
            -
                       | 
| 151 | 
            +
                      unless permit_parameter?(initial_state[k], instance_variable_get(k))
         | 
| 152 | 
            +
                        instance_variable_set(k, v)
         | 
| 153 | 
            +
                      end
         | 
| 146 154 | 
             
                    end
         | 
| 147 155 | 
             
                  end
         | 
| 148 156 | 
             
                  @key
         | 
| @@ -5,12 +5,12 @@ module ViewComponentReflex | |
| 5 5 | 
             
                    request.session[key] ||= {}
         | 
| 6 6 | 
             
                  end
         | 
| 7 7 |  | 
| 8 | 
            -
                  def self.set_state( | 
| 8 | 
            +
                  def self.set_state(request, controller, key, new_state)
         | 
| 9 9 | 
             
                    new_state.each do |k, v|
         | 
| 10 | 
            -
                      state( | 
| 10 | 
            +
                      state(request, key)[k] = v
         | 
| 11 11 | 
             
                    end
         | 
| 12 | 
            -
                    store =  | 
| 13 | 
            -
                    store.commit_session  | 
| 12 | 
            +
                    store = request.session.instance_variable_get("@by")
         | 
| 13 | 
            +
                    store.commit_session request, controller.response
         | 
| 14 14 | 
             
                  end
         | 
| 15 15 |  | 
| 16 16 | 
             
                  def self.store_state(request, key, new_state = {})
         |