Class: Domkey::View::LabeledGroup

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/domkey/view/labeled_group.rb

Overview

Interfact to CheckboxGroup and RadioGroup elements through corresponding label elements; radio and checkbox controls form a group by name attribute however they don’t have visible text indicators to the user who is looking at the page. The common strategy is to provide a lable element such that its for: attribute value maps to id: attribute value of an individual control in a group. The labels become visual indicators for the user. Clicking corresponding lable activates the control.

Instance Method Summary collapse

Constructor Details

#initialize(group) ⇒ LabeledGroup

Returns a new instance of LabeledGroup.



15
16
17
# File 'lib/domkey/view/labeled_group.rb', line 15

def initialize group
  __setobj__(group)
end

Instance Method Details

#before_setObject



19
20
21
# File 'lib/domkey/view/labeled_group.rb', line 19

def before_set
  __getobj__.set false
end

#optionsArray<String>

Returns label texts for all elements in a group.

Returns:

  • (Array<String>)

    label texts for all elements in a group



37
38
39
# File 'lib/domkey/view/labeled_group.rb', line 37

def options
  LabelMapper.for(__getobj__).map { |e| e.element.text }
end

#set(value) ⇒ Object

Parameters:

  • value (String)

    a label text to set a corresponding element referenced

  • value (Array<String>)

    one or more labels



25
26
27
28
# File 'lib/domkey/view/labeled_group.rb', line 25

def set value
  before_set
  set_strategy(value)
end

#valueArray<String>

Returns label texts for selected elements.

Returns:

  • (Array<String>)

    label texts for selected elements



31
32
33
34
# File 'lib/domkey/view/labeled_group.rb', line 31

def value
  selected_ones = __getobj__.find_all { |e| e.element.set? }
  LabelMapper.for(selected_ones).map { |e| e.element.text }
end