Sha256: 96e5a1dbc3b2c90bd17986edd911775a8a43ec371189a593e47dc2cc46a43b19

Contents?: true

Size: 1.84 KB

Versions: 25

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

module PopoverExtension
  # Add popover to a component
  #
  # By tooltip object
  #
  #   popover = UiBibz::Ui::Core::Notifications::Popover.new("My Popover")
  #   UiBibz::Ui::Core::Component.new("My content", popover: popover)
  #
  # By Hash
  #
  #   UiBibz::Ui::Core::Component.new("My content", popover: { content: "My Popover" })
  #
  # By String
  #
  #   UiBibz::Ui::Core::Component.new("My content", popover: "My Popover")
  #
  def popover_data_html
    return if options[:popover].nil?

    html_options.update(generate_popover.render)
  end

  # Add tooltip to a component
  #
  # By tooltip object
  #
  #   tooltip = UiBibz::Ui::Core::Notifications::Tooltip.new("My tooltip")
  #   UiBibz::Ui::Core::Component.new("My content", tooltip: tooltip)
  #
  # By Boolean
  #
  #   UiBibz::Ui::Core::Component.new("My content", tooltip: true)
  #   # or
  #   UiBibz::Ui::Core::Component.new("My content", {tooltip: true}, { title: 'My tooltip' })
  #
  # By Hash
  #
  #   UiBibz::Ui::Core::Component.new("My content", tooltip: { title: 'My tooltip' })
  #
  def tooltip_data_html
    return if options[:tooltip].nil?

    html_options.update(generate_tooltip.render)
  end

  private

  def generate_tooltip
    case options[:tooltip].class.name
    when 'UiBibz::Ui::Core::Notifications::Tooltip'
      options[:tooltip]
    when 'TrueClass'
      tooltip_content = html_options.delete(:title) || (sanitize_text(content) if options[:text] == false)
      UiBibz::Ui::Core::Notifications::Tooltip.new(tooltip_content)
    else
      UiBibz::Ui::Core::Notifications::Tooltip.new(options[:tooltip])
    end
  end

  def generate_popover
    case options[:popover].class.name
    when 'UiBibz::Ui::Core::Notifications::Popover'
      options[:popover]
    else
      UiBibz::Ui::Core::Notifications::Popover.new(options[:popover])
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
ui_bibz-3.0.13 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.12 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.11 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.10 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.9 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.8 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.7 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.6 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.5 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.4 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.3 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.2 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.1 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.0 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.0.beta19 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.0.beta18 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.0.beta17 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.0.beta16 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.0.beta15 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb
ui_bibz-3.0.0.beta14 lib/ui_bibz/ui/extensions/core/component/popover_extension.rb