Sha256: 073984f64baf2aa64c78c4edda5b7d6b77f1fbce982fe3d209fd64fbd572545c

Contents?: true

Size: 1.59 KB

Versions: 6

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

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

        attr_reader :form

        define_html_attribute_methods :input_attributes

        def initialize(form:, input: {}, **)
          super(**)

          @form = form

          update_input_attributes(**input)
        end

        def name
          query_attribute || raise(ArgumentError, "No query attribute. " \
                                                  "Does your collection include Katalyst::Tables::Collection::Query?")
        end

        def collection
          form.object
        end

        private

        def default_html_attributes
          {
            class: "query-input",
            data:  {
              controller:      "tables--query-input",
              turbo_permanent: "",
            },
          }
        end

        def default_input_attributes
          {
            spellcheck: false,
            data:       {
              action:                     %w[
                tables--query-input#update
                keydown.enter->tables--query#closeModal:prevent
                keydown.esc->tables--query#clear:prevent
              ],
              tables__query_input_target: "input",
            },
          }
        end

        def placeholder
          t(".placeholder", name: collection.model_name.human.pluralize.downcase)
        end

        def query_attribute
          collection.class.attribute_types.detect { |_, a| a.type == :query }&.first
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
katalyst-tables-3.5.5 app/components/katalyst/tables/query/input_component.rb
katalyst-tables-3.5.4 app/components/katalyst/tables/query/input_component.rb
katalyst-tables-3.5.3 app/components/katalyst/tables/query/input_component.rb
katalyst-tables-3.5.2 app/components/katalyst/tables/query/input_component.rb
katalyst-tables-3.5.1 app/components/katalyst/tables/query/input_component.rb
katalyst-tables-3.5.0 app/components/katalyst/tables/query/input_component.rb