Sha256: 961a4a74cc3bce0e79b6708a4e06e7c77a11cdf6650a669a255c6e47eed91d38

Contents?: true

Size: 1.19 KB

Versions: 30

Compression:

Stored size: 1.19 KB

Contents

module Unpoly
  module Rails
    class Change
      class Layer
        class CannotClose < Error; end

        def initialize(change, mode:, context:)
          @change = change
          @mode = mode.presence || 'root'
          @context = context
        end

        ##
        # TODO: Docs
        attr_reader :mode

        ##
        # TODO: Docs
        attr_reader :context

        ##
        # TODO: Docs
        def overlay?
          not root?
        end

        ##
        # TODO: Docs
        def root?
          mode == 'root'
        end

        ##
        # TODO: Docs
        def emit(type, options = {})
          change.emit(type, options.merge(layer: 'current'))
        end

        ##
        # TODO: Docs
        def accept(value = nil)
          overlay? or raise CannotClose, 'Cannot accept the root layer'
          change.response.headers['X-Up-Accept-Layer'] = value.to_json
        end

        ##
        # TODO: Docs
        def dismiss(value = nil)
          overlay? or raise CannotClose, 'Cannot dismiss the root layer'
          change.response.headers['X-Up-Dismiss-Layer'] = value.to_json
        end

        private

        attr_reader :change

      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
unpoly-rails-2.7.2 lib/unpoly/rails/change/layer.rb
unpoly-rails-3.0.0.rc2 lib/unpoly/rails/change/layer.rb
unpoly-rails-3.0.0.rc1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.7.1.1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.7.1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.6.1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.6.0 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.5.3 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.5.2 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.5.1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.5.0 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.4.1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.4.0 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.3.0 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.2.1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.2.0 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.2.0.pre.rc1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.1.0 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.0.1 lib/unpoly/rails/change/layer.rb
unpoly-rails-2.0.0 lib/unpoly/rails/change/layer.rb