Class: BetterUi::General::Input::Text::Component

Inherits:
ViewComponent::Base
  • Object
show all
Defined in:
app/components/better_ui/general/input/text/component.rb

Constant Summary collapse

TEXT_INPUT_THEME =

Temi supportati per il Text Input

{
  default: 'border-gray-300 focus:border-blue-500 focus:ring-blue-500',
  white: 'border-white focus:border-gray-300 focus:ring-gray-300 bg-white',
  red: 'border-red-300 focus:border-red-500 focus:ring-red-500',
  rose: 'border-rose-300 focus:border-rose-500 focus:ring-rose-500',
  orange: 'border-orange-300 focus:border-orange-500 focus:ring-orange-500',
  green: 'border-green-300 focus:border-green-500 focus:ring-green-500',
  blue: 'border-blue-300 focus:border-blue-500 focus:ring-blue-500',
  yellow: 'border-yellow-300 focus:border-yellow-500 focus:ring-yellow-500',
  violet: 'border-violet-300 focus:border-violet-500 focus:ring-violet-500'
}.freeze
TEXT_INPUT_SIZES =

Dimensioni supportate per il Text Input

{
  small: 'h-8 px-2 py-1 text-xs',
  medium: 'h-10 px-3 py-2 text-sm',
  large: 'h-12 px-4 py-3 text-base'
}.freeze
TEXT_INPUT_RADIUS =

Border radius supportati per il Text Input

{
  none: 'rounded-none',
  small: 'rounded-sm',
  medium: 'rounded-md',
  large: 'rounded-lg',
  full: 'rounded-full'
}.freeze
TEXT_INPUT_TYPES =

Tipi supportati per il Text Input

[
  :text, :password, :email, :tel, :url, :number, :search,
  :date, :time, :datetime_local, :month, :week, :color
].freeze
TEXT_INPUT_BASE_CLASSES =

Classi base per il Text Input

'block w-full border shadow-sm disabled:bg-gray-100 disabled:cursor-not-allowed focus:outline-none focus:ring-1'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, value: nil, placeholder: nil, required: false, disabled: false, type: :text, theme: :default, size: :medium, rounded: :medium, classes: '', form: nil, **options) ⇒ Component

Returns a new instance of Component.

Parameters:

  • name (String)

    Nome del campo input

  • value (String) (defaults to: nil)

    Valore del campo

  • placeholder (String) (defaults to: nil)

    Placeholder del campo

  • required (Boolean) (defaults to: false)

    Se il campo è obbligatorio

  • disabled (Boolean) (defaults to: false)

    Se il campo è disabilitato

  • type (Symbol) (defaults to: :text)

    Tipo del campo input (:text, :password, :email, :tel, :url, :number, :search, :date, :time, :datetime_local, :month, :week, :color)

  • theme (Symbol) (defaults to: :default)

    Tema del componente (:default, :white, :red, :rose, :orange, :green, :blue, :yellow, :violet)

  • size (Symbol) (defaults to: :medium)

    Dimensione del componente (:small, :medium, :large)

  • rounded (Symbol) (defaults to: :medium)

    Border radius (:none, :small, :medium, :large, :full)

  • classes (String) (defaults to: '')

    Classi CSS aggiuntive

  • form (ActionView::Helpers::FormBuilder) (defaults to: nil)

    Form builder Rails opzionale

  • options (Hash)

    Opzioni aggiuntive per l’input



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'app/components/better_ui/general/input/text/component.rb', line 61

def initialize(name:, value: nil, placeholder: nil, required: false, disabled: false, 
               type: :text, theme: :default, size: :medium, rounded: :medium, classes: '', form: nil, **options)
  @name = name
  @value = value
  @placeholder = placeholder
  @required = required
  @disabled = disabled
  @type = type
  @theme = theme
  @size = size
  @rounded = rounded
  @classes = classes
  @form = form
  @options = options

  validate_params
  super()
end

Instance Attribute Details

#classesObject (readonly)

Returns the value of attribute classes.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def classes
  @classes
end

#disabledObject (readonly)

Returns the value of attribute disabled.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def disabled
  @disabled
end

#formObject (readonly)

Returns the value of attribute form.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def form
  @form
end

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def options
  @options
end

#placeholderObject (readonly)

Returns the value of attribute placeholder.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def placeholder
  @placeholder
end

#requiredObject (readonly)

Returns the value of attribute required.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def required
  @required
end

#roundedObject (readonly)

Returns the value of attribute rounded.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def rounded
  @rounded
end

#sizeObject (readonly)

Returns the value of attribute size.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def size
  @size
end

#themeObject (readonly)

Returns the value of attribute theme.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def theme
  @theme
end

#typeObject (readonly)

Returns the value of attribute type.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def type
  @type
end

#valueObject (readonly)

Returns the value of attribute value.



8
9
10
# File 'app/components/better_ui/general/input/text/component.rb', line 8

def value
  @value
end

Instance Method Details

#form_input_attributesObject

Attributi per l’elemento input con form builder



95
96
97
98
99
100
101
102
# File 'app/components/better_ui/general/input/text/component.rb', line 95

def form_input_attributes
  {
    class: build_classes,
    placeholder: @placeholder,
    required: @required,
    disabled: @disabled
  }.merge(@options)
end

#input_attributesObject

Attributi per l’elemento input standalone



81
82
83
84
85
86
87
88
89
90
91
92
# File 'app/components/better_ui/general/input/text/component.rb', line 81

def input_attributes
  {
    type: @type,
    name: @name,
    id: @name,
    value: @value,
    placeholder: @placeholder,
    required: @required,
    disabled: @disabled,
    class: build_classes
  }.merge(@options)
end