Sha256: d3c19b9e49c08d18e691080c97ab6563302a2758b8e0294ea1dd85224c3d7134

Contents?: true

Size: 1.12 KB

Versions: 114

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

require "virtus"

class DropdownButtonItem < ActionView::Base
  include ActionView::Helpers::TagHelper
  include Virtus.model(mass_assignment: false)

  attribute :title, String
  attribute :url, String
  attribute :icon, String
  attribute :url_options, Hash
  attribute :enabled, Boolean

  def initialize(**options)
    @title = options.delete(:title)
    @url = options.delete(:url)
    @icon = options.delete(:icon)
    @url_options = options
    @enabled = options.delete(:enabled) { true }
  end

  def to_html
    enabled? ? enabled_html : disabled_html
  end

  private

  def enabled_html
    content_tag(:li) do
      capture do
        link_to(url, url_options) do
          concat(icon_html)
          concat(title) if title.present?
        end
      end
    end
  end

  def disabled_html
    content_tag(:li, class: "disabled") do
      concat(icon_html)
      concat(title) if title.present?
    end
  end

  # rubocop:disable Rails/OutputSafety
  def icon_html
    return if icon.blank?

    "<i class='fa fa-link-annotation #{icon}'></i>".html_safe
  end
  # rubocop:enable Rails/OutputSafety
end

Version data entries

114 entries across 114 versions & 1 rubygems

Version Path
renalware-core-2.1.1 lib/dropdown_button_item.rb
renalware-core-2.1.0 lib/dropdown_button_item.rb
renalware-core-2.0.167 lib/dropdown_button_item.rb
renalware-core-2.0.166 lib/dropdown_button_item.rb
renalware-core-2.0.165 lib/dropdown_button_item.rb
renalware-core-2.0.164 lib/dropdown_button_item.rb
renalware-core-2.0.163 lib/dropdown_button_item.rb
renalware-core-2.0.162 lib/dropdown_button_item.rb
renalware-core-2.0.161 lib/dropdown_button_item.rb
renalware-core-2.0.160 lib/dropdown_button_item.rb
renalware-core-2.0.159 lib/dropdown_button_item.rb
renalware-core-2.0.158 lib/dropdown_button_item.rb
renalware-core-2.0.157 lib/dropdown_button_item.rb
renalware-core-2.0.156 lib/dropdown_button_item.rb
renalware-core-2.0.155 lib/dropdown_button_item.rb
renalware-core-2.0.153 lib/dropdown_button_item.rb
renalware-core-2.0.152 lib/dropdown_button_item.rb
renalware-core-2.0.151 lib/dropdown_button_item.rb
renalware-core-2.0.149 lib/dropdown_button_item.rb
renalware-core-2.0.148 lib/dropdown_button_item.rb