Sha256: 49b076b3dc37b6e6a6dd0ac911611c3178cbb3f1537281801db44b768c54e440

Contents?: true

Size: 1.16 KB

Versions: 10

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

module Katalyst
  module Navigation
    module HasLink
      extend ActiveSupport::Concern

      HTTP_METHODS = %w[get post patch put delete].index_by(&:itself).freeze
      TARGETS      = %w[self top blank kpop].index_by(&:itself).freeze

      class_methods do
        def permitted_params
          super + %i[url http_method target]
        end
      end

      included do
        validates :url, :http_method, :target, presence: true

        attribute :http_method, :string, default: "get"

        enum http_method: HTTP_METHODS, _prefix: :http

        attribute :target, :string, default: "self"

        enum target: TARGETS, _prefix: :target
      end

      def link_attributes
        options = if target_self?
                    {} # default
                  elsif target_blank? || target_top?
                    { target: "_#{target}" } # browser will handle this target
                  else
                    { data: { turbo_frame: target } } # turbo target
                  end

        options.deep_merge!({ data: { turbo_method: http_method } }) unless http_get? || target_blank?

        options
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
katalyst-navigation-1.8.3 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.8.2 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.8.1 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.8.0 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.6.0 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.5.2 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.5.1 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.5.0 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.4.1 app/models/concerns/katalyst/navigation/has_link.rb
katalyst-navigation-1.4.0 app/models/concerns/katalyst/navigation/has_link.rb