Class: Primer::Forms::TextField

Inherits:
BaseComponent show all
Defined in:
app/lib/primer/forms/text_field.rb

Overview

:nodoc:

Constant Summary collapse

INPUT_WRAP_SIZE =
{
  small: "FormControl-input-wrap--small",
  large: "FormControl-input-wrap--large"
}.freeze

Instance Method Summary collapse

Methods inherited from BaseComponent

#content, inherited, #input?, #perform_render, #render?, #to_component, #type

Methods included from ActsAsComponent

#base_template_path, #compile!, extended, #renders_templates, #template_root_path

Methods included from ClassNameHelper

#class_names

Constructor Details

#initialize(input:) ⇒ TextField

Returns a new instance of TextField.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/lib/primer/forms/text_field.rb', line 14

def initialize(input:)
  @input = input

  @input.add_input_classes(
    "FormControl-input",
    Primer::Forms::Dsl::Input::SIZE_MAPPINGS[@input.size]
  )

  @field_wrap_arguments = {
    class: class_names(
      "FormControl-input-wrap",
      INPUT_WRAP_SIZE[input.size],
      "FormControl-input-wrap--trailingAction": @input.show_clear_button?,
      "FormControl-input-wrap--trailingVisual": @input.trailing_visual?,
      "FormControl-input-wrap--leadingVisual": @input.leading_visual?
    ),
    hidden: @input.hidden?
  }
end

Instance Method Details

#auto_check_authenticity_tokenObject



34
35
36
37
38
39
40
41
42
43
# File 'app/lib/primer/forms/text_field.rb', line 34

def auto_check_authenticity_token
  return @auto_check_authenticity_token if defined?(@auto_check_authenticity_token)

  @auto_check_authenticity_token =
    if @input.auto_check_src
      @view_context.form_authenticity_token(
        form_options: { method: :post, action: @input.auto_check_src }
      )
    end
end

#trailing_visual_componentObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'app/lib/primer/forms/text_field.rb', line 45

def trailing_visual_component
  return @trailing_visual_component if defined?(@trailing_visual_component)
  visual = @input.trailing_visual

  # Render icon if specified
  @trailing_visual_component =
    if (icon_arguments = visual[:icon])
      Primer::Beta::Octicon.new(**icon_arguments)
    elsif (label_arguments = visual[:label])
      # Render label if specified
      label_arguments[:classes] = class_names(
        label_arguments.delete(:classes),
        "FormControl-input-trailingVisualLabel"
      )

      text = label_arguments.delete(:text)
      Primer::Beta::Label.new(**label_arguments).with_content(text)
    elsif (counter_arguments = visual[:counter])
      # Render counter if specified
      counter_arguments[:classes] = class_names(
        counter_arguments.delete(:classes),
        "FormControl-input-trailingVisualCounter"
      )

      Primer::Beta::Counter.new(**counter_arguments)
    elsif (truncate_arguments = visual[:text])
      # Render text if specified
      truncate_arguments[:classes] = class_names(
        truncate_arguments.delete(:classes),
        "FormControl-input-trailingVisualText"
      )
      text = truncate_arguments.delete(:text)
      Primer::Beta::Truncate.new(**truncate_arguments).with_content(text)
    end
end