Class: Glimmer::Web::Component::MultiCheckboxDropdown

Inherits:
Object
  • Object
show all
Includes:
Glimmer::Web::Component
Defined in:
lib/glimmer/web/component/multi_checkbox_dropdown.rb

Constant Summary collapse

TRANSLATIONS_DEFAULT =
{
  en: {
    select: 'Select',
    items_selected: 'items selected',
  },
  fr: {
    select: 'Sélectionnez',
    items_selected: 'articles sélectionnés',
  },
  es: {
    select: 'Seleccione',
    items_selected: 'artículos seleccionados',
  },
}
SELECTED_VALUES_FORMATTER_DEFAULT =
->(multi_checkbox_dropdown) {
  selected_value_count = multi_checkbox_dropdown.selected_values&.size.to_i
  case selected_value_count
  when 0
    multi_checkbox_dropdown.locale_translations[:select]
  when 1, 2
    multi_checkbox_dropdown.selected_display_values.join(', ')
  else
    items_selected_translation = multi_checkbox_dropdown.locale_translations[:items_selected]
    "#{selected_value_count} #{items_selected_translation}"
  end
}
REGEXP_LOCALE_COUNTRY =
/-|_/
CSS_CLASS_CONTENT_HIDDEN =
"#{MultiCheckboxDropdown.component_element_class}-content-hidden"
CSS_CLASS_CONTENT_UL =
"#{MultiCheckboxDropdown.component_element_class}-ul"

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#display_contentObject

Returns the value of attribute display_content.



61
62
63
# File 'lib/glimmer/web/component/multi_checkbox_dropdown.rb', line 61

def display_content
  @display_content
end

Instance Method Details

#display_value_for(value) ⇒ Object



106
107
108
# File 'lib/glimmer/web/component/multi_checkbox_dropdown.rb', line 106

def display_value_for(value)
  display_values[values.index(value)]
end

#locale_translationsObject



88
89
90
91
92
93
94
95
96
# File 'lib/glimmer/web/component/multi_checkbox_dropdown.rb', line 88

def locale_translations
  the_translations = translations[locale.to_s.downcase.to_sym]
  if the_translations.nil? && locale.to_s.match(REGEXP_LOCALE_COUNTRY)
    # treat fr-CA as fr, or en-US as en
    partial_locale = locale.to_s.split(REGEXP_LOCALE_COUNTRY).first.downcase.to_sym
    the_translations = translations[partial_locale]
  end
  the_translations || {}
end

#selected_display_valuesObject



102
103
104
# File 'lib/glimmer/web/component/multi_checkbox_dropdown.rb', line 102

def selected_display_values
  selected_indexes.map { |selected_index| display_values[selected_index] }
end

#selected_indexesObject



98
99
100
# File 'lib/glimmer/web/component/multi_checkbox_dropdown.rb', line 98

def selected_indexes
  selected_values.map { |selected_value| values.index(selected_value) }
end

#toggle_content(display = nil) ⇒ Object



110
111
112
113
# File 'lib/glimmer/web/component/multi_checkbox_dropdown.rb', line 110

def toggle_content(display = nil)
  new_value = display.nil? ? !self.display_content : display
  self.display_content = new_value
end