Sha256: 02c579cc60b37cd879f63cc16aa4fb6adc228c9f475d551244f5bc3decf63f14

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

module Katalyst
  module Tables
    module Query
      class SuggestionComponent < ViewComponent::Base
        include Katalyst::HtmlAttributes

        delegate :type, :value, to: :@suggestion

        def initialize(suggestion:, index:, **)
          super(**)

          @suggestion = suggestion
          @index      = index
        end

        def dom_id
          "suggestion_#{@index}"
        end

        def default_html_attributes
          {
            id:    dom_id,
            class: ["suggestion", type.to_s],
            role:  "option",
            data:  {
              action:                    %w[
                click->tables--query#selectSuggestion
                query:select->tables--query#selectSuggestion
              ],
              tables__query_value_param: value_param,
            },
          }
        end

        private

        def format_value(value)
          if /\A[\w.-]*\z/.match?(value.to_s)
            value.to_s
          else
            %("#{value}")
          end
        end

        def value_param
          return "#{@suggestion.value}:" if @suggestion.type == :attribute

          @suggestion.value
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
katalyst-tables-3.7.0 app/components/katalyst/tables/query/suggestion_component.rb
katalyst-tables-3.6.2 app/components/katalyst/tables/query/suggestion_component.rb
katalyst-tables-3.6.1 app/components/katalyst/tables/query/suggestion_component.rb
katalyst-tables-3.6.0 app/components/katalyst/tables/query/suggestion_component.rb