Class: Brut::FrontEnd::Forms::RadioButtonGroupInput

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/brut/front_end/forms/radio_button_group_input.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input_definition:, value:, index:) ⇒ RadioButtonGroupInput

Create the input with the given definition and value

Parameters:



15
16
17
18
19
20
21
22
23
# File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 15

def initialize(input_definition:, value:, index:)
  @input_definition = input_definition
  @validity_state = Brut::FrontEnd::Forms::ValidityState.new
  @index = index
  if input_definition.array?
    value ||= []
  end
  self.value=(value)
end

Instance Attribute Details

#typed_valueDate|Time|BigDecimal|String|true|false|nil (readonly)

The value of the input, as coerced to the type used to evaluate constraints. Returns nil if the value could not be coerced (which likely means there is or will be a constraint violation), or if it is a blank String.

Of note, type=color will return a String here, but that String should be parseable into a hex code, i.e. #XXXXXX, where each "X" is 0-9 or a-f. Further, type=time will also return a string in the format HH:MM or HH:MM:SS, where the time is in 24 hour time. Lastly, type=datetime-local will return a Time, even though the control allows the visitor to choose an invalid time. If there is no valueMissing constraint violation, but this attribute returns nil, #value will return the string sent by the browser, even if it's not a real timestamp.

Returns:

  • (Date|Time|BigDecimal|String|true|false|nil)

    the value of the input, as coerced to the type used to evaluate constraints. Returns nil if the value could not be coerced (which likely means there is or will be a constraint violation), or if it is a blank String.

    Of note, type=color will return a String here, but that String should be parseable into a hex code, i.e. #XXXXXX, where each "X" is 0-9 or a-f. Further, type=time will also return a string in the format HH:MM or HH:MM:SS, where the time is in 24 hour time. Lastly, type=datetime-local will return a Time, even though the control allows the visitor to choose an invalid time. If there is no valueMissing constraint violation, but this attribute returns nil, #value will return the string sent by the browser, even if it's not a real timestamp.



9
10
11
# File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 9

def typed_value
  @typed_value
end

#validity_stateBrut::FrontEnd::Forms::ValidityState (readonly)

Returns Validity state that captures the current constraint violations, if any.

Returns:



12
13
14
# File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 12

def validity_state
  @validity_state
end

#valueString

Returns the input's value. DO NOTE this returns a string. This is because HTML stores these values as Strings. When using a checkbox, in particular, the value will not be a boolean. You cannot do if input.value and expect that work. See #typed_value instead.

Returns:

  • (String)

    the input's value. DO NOTE this returns a string. This is because HTML stores these values as Strings. When using a checkbox, in particular, the value will not be a boolean. You cannot do if input.value and expect that work. See #typed_value instead.



6
7
8
# File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 6

def value
  @value
end

Instance Method Details

#server_side_constraint_violation(key, context = true) ⇒ Object

Set a server-side constraint violation on this input. This is essentially arbitrary, but note that key should not be a key used for client-side validations.

Parameters:

  • key (String|Symbol)

    the I18n key fragment that describes the server side constraint violation

  • context (Hash|nil) (defaults to: true)

    any interpolations required to render the message



48
49
50
# File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 48

def server_side_constraint_violation(key,context=true)
  @validity_state.server_side_constraint_violation(key: key, context: context)
end

#valid?true|false

Returns true if the underlying #validity_state has no constraint violations.

Returns:

  • (true|false)

    true if the underlying #validity_state has no constraint violations



53
# File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 53

def valid? = @validity_state.valid?