Class: Formtastic::Inputs::SelectManyInput
- Inherits:
-
SelectInput
- Object
- SelectInput
- Formtastic::Inputs::SelectManyInput
- Defined in:
- lib/formtastic/inputs/select_many_input.rb
Instance Method Summary collapse
- #buttons_html ⇒ Object
- #hidden_input ⇒ Object
- #search_box_html ⇒ Object
- #select_dst_html ⇒ Object
- #select_src_html ⇒ Object
- #to_html ⇒ Object
Instance Method Details
#buttons_html ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/formtastic/inputs/select_many_input.rb', line 33 def template.content_tag( :div, class: 'buttons' ) do template.link_to( '→'.html_safe, 'Javascript:void(0)', class: 'add' ) + template.link_to( '←'.html_safe, 'Javascript:void(0)', class: 'remove' ) + template.link_to( '↑'.html_safe, 'Javascript:void(0)', class: 'move_up' ) + template.link_to( '↓'.html_safe, 'Javascript:void(0)', class: 'move_down' ) end end |
#hidden_input ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/formtastic/inputs/select_many_input.rb', line 23 def hidden_input template.content_tag( :div, class: 'values', 'data-name': [:name] ) do values = object.send( input_name ) values = [values] if values.is_a? Fixnum values.each do |value| template.concat template.hidden_field_tag( [:name], value, {id: nil} ) end if values end end |
#search_box_html ⇒ Object
42 43 44 45 |
# File 'lib/formtastic/inputs/select_many_input.rb', line 42 def search_box_html @opts ||= {id: nil, class: 'search-select', placeholder: .delete( :placeholder ), 'data-remote-collection': [:'data-remote-collection'], 'data-search': [:search_param] ? [:search_param] : 'name_contains', 'data-text': [:text_key] ? [:text_key] : 'name', 'data-value': [:value_key] ? [:value_key] : 'id'} template.text_field_tag( nil, '', @opts ) end |
#select_dst_html ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/formtastic/inputs/select_many_input.rb', line 60 def select_dst_html selected = object.send( input_name ) selected = [selected] if selected.is_a? Fixnum coll = selected ? collection.select { |option| selected.include?( option[1] ) } : collection opts = .merge( name: nil, id: nil, multiple: true, 'data-select': 'dst', size: [:size] ? [:size] : 4 ) template.select_tag nil, template.( coll ), opts end |
#select_src_html ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/formtastic/inputs/select_many_input.rb', line 47 def select_src_html coll = if [:'data-remote-collection'] [] else # TODO: add option unique ? selected = object.send( input_name ) selected = [selected] if selected.is_a? Fixnum selected ? collection.select { |option| !selected.include?( option[1] ) } : collection end opts = .merge( name: nil, id: nil, multiple: true, 'data-select': 'src', size: [:size] ? [:size] : 4 ) template.select_tag nil, template.( coll ), opts end |
#to_html ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/formtastic/inputs/select_many_input.rb', line 4 def to_html [:'data-remote-collection'] = .delete( :remote_collection ) opts = { class: 'select-many-inputs' } opts[:sortable] = .delete( :sortable ) if [:sortable] input_wrapping do label_html << template.content_tag( :div, opts ) do hidden_input << search_box_html << template.content_tag( :span, '', class: 'empty' ) << template.content_tag( :span, template.t( 'inputs.select_many.available' ), class: 'available' ) << template.content_tag( :span, template.t( 'inputs.select_many.selected' ), class: 'selected' ) << select_src_html << << select_dst_html end end end |