Sha256: cded4319cf0cb9dc84f156cb4c8355eb9b38db390556d1a69e2077bc569edf66

Contents?: true

Size: 1.99 KB

Versions: 55

Compression:

Stored size: 1.99 KB

Contents

# frozen_string_literal: true

module UiBibz::Ui::Core::Notifications
  # Create a spinner
  #
  # This element is an extend of UiBibz::Ui::Core::Component.
  #
  # ==== Attributes
  #
  # * +content+ - Content of element
  # * +options+ - Options of element
  # * +html_options+ - Html Options of element
  #
  # ==== Options
  #
  # You can add HTML attributes using the +html_options+.
  # You can pass arguments in options attribute:
  # * +status+ - status of element with symbol value:
  #   (+:primary+, +:secondary+, +:success+, +:danger+, +:warning+, +:info+, +:light+, +:dark+)
  # * +size+
  #   (+:xs+, +:sm+, +:lg+)
  # * +type+
  #   (+:border+, +:grow+)
  #
  # ==== Signatures
  #
  #   UiBibz::Ui::Core::Notifications::Spinner.new(content, options = nil, html_options = nil)
  #
  #   UiBibz::Ui::Core::Notifications::Spinner.new(options = nil, html_options = nil) do
  #     content
  #   end
  #
  # ==== Examples
  #
  #   UiBibz::Ui::Core::Notifications::Spinner.new(content, status: :success, type: :pill).render
  #
  #   UiBibz::Ui::Core::Notifications::Spinner.new() do
  #     #content
  #   end.render
  #
  # ==== Helper
  #
  #   ui_spinner(content, options = {}, html_options = {})
  #
  #   ui_spinner(options = {}, html_options = {}) do
  #     content
  #   end
  #
  class Spinner < UiBibz::Ui::Core::Component
    # See UiBibz::Ui::Core::Component.initialize

    # Render html tag
    def pre_render
      content_tag tag_html, html_options do
        content_tag :span, @content || 'Loading...', class: 'sr-only'
      end
    end

    private

    def component_html_options
      super.merge({ role: 'status' })
    end

    def component_html_classes
      ["spinner-#{type}", status, size]
    end

    def status
      "text-#{@options[:status] || :secondary}" if options[:status]
    end

    def type
      @options[:type] || 'border'
    end

    def size
      "spinner-#{type}-#{options[:size]}" if options[:size]
    end

    def tag_html
      options[:tag] || :div
    end
  end
end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
ui_bibz-4.0.0.beta18 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta17 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta16 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta15 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta14 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta13 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta10 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta9 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta8 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta7 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta6 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta4 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-4.0.0.beta3 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-3.0.13 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-3.0.12 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-3.0.11 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-3.0.10 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-3.0.9 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-3.0.8 lib/ui_bibz/ui/core/notifications/spinner.rb
ui_bibz-3.0.7 lib/ui_bibz/ui/core/notifications/spinner.rb