Module: MaterialDesign::ChipHelper

Defined in:
app/helpers/material_design/chip_helper.rb

Instance Method Summary collapse

Instance Method Details

#md_filter_chip(label = nil, leading_icon: nil, trailing_icon: nil, selected: false, data: {}, style: nil, &block) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/helpers/material_design/chip_helper.rb', line 3

def md_filter_chip(label=nil, leading_icon: nil, trailing_icon: nil, selected: false, data: {}, style: nil, &block)
  merged_data = data.merge(controller: "filter-chip", filter_chip_selected_value: selected, action: "#{block_given? ? "click->filter-chip#toggleDropdown" : "click->filter-chip#toggleSelect"}")

  chip_content = (:div, class: "filter-chip__container", data: merged_data) do
    concat((:div, class: class_names("filter-chip", selected: selected), data: { filter_chip_target: "chip"}, style: style) do
      concat((:span, class: "dropdown--hidden", data: {filter_chip_target: "selectedIcon"}) do
        render("material_design/icons/icon", locals: { icon: "check", size: 18 })
      end)
      concat((:span, data: {filter_chip_target: "leadingIcon"}) do
        render("material_design/icons/icon", locals: { icon: leading_icon, size: 18 }) if leading_icon
      end)
      concat((:p, label, class: "filter-chip__label", data: {filter_chip_target: "label"}))
      concat((:span, data: {filter_chip_target: "chevronIcon"}) do
        render("material_design/icons/icon", locals: { icon: "arrow_drop_down", size: 18 })
      end) if block_given?
      concat((:span, data: {filter_chip_target: "trailingIcon"}) do
        render("material_design/icons/icon", locals: { icon: trailing_icon, size: 18 }) if trailing_icon && !block_given?
      end)
    end)
    if block_given?
      concat((:div,  class: "dropdown--hidden filter-chip__dropdown", data: {filter_chip_target: "dropdown"}) do
        capture(&block)
      end)
    end
  end

  chip_content
end