Sha256: 5af47239a979389b30f560256eec474cfe699f77f97e54efa8f4051445bee6ea

Contents?: true

Size: 1.65 KB

Versions: 87

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

module Playbook
  module PbButton
    class Button
      include Playbook::Props

      partial "pb_button/button"

      prop :dark, type: Playbook::Props::Boolean,
                  default: false
      prop :disabled, type: Playbook::Props::Boolean,
                      default: false
      prop :full_width, type: Playbook::Props::Boolean,
                        default: false
      prop :link
      prop :loading, type: Playbook::Props::Boolean,
                     default: false
      prop :new_window, type: Playbook::Props::Boolean,
                        default: false
      prop :variant, type: Playbook::Props::Enum,
                     values: %w[primary secondary link],
                     default: "primary"
      prop :text
      prop :type
      prop :value

      def options
        {
          id: id,
          data: data,
          class: classname,
          disabled: disabled,
          aria: aria,
          type: type,
          value: value,
        }.compact
      end

      def link_options
        options.merge(
          href: link,
          target: new_window ? "_blank" : "_self"
        )
      end

      def tag
        link ? "a" : "button"
      end

    private

      def classname
        generate_classname("pb_button_kit", variant, full_width_class, disabled_class, loading_class, dark_class)
      end

      def dark_class
        dark ? "dark" : nil
      end

      def disabled_class
        disabled ? "disabled" : "enabled"
      end

      def full_width_class
        full_width ? "block" : "inline"
      end

      def loading_class
        loading ? "loading" : nil
      end
    end
  end
end

Version data entries

87 entries across 87 versions & 1 rubygems

Version Path
playbook_ui-6.0.1.pre.alpha5 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-6.0.1.pre.alpha4 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-6.0.1.pre.alpha3 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-6.0.1.pre.alpha2 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.2.0.pre.alpha15 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.2.0.pre.alpha14 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.2.0.pre.alpha13 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-6.0.1 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.2.0.pre.alpha12 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-6.0.0 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.2.0.pre.alpha11 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.5.1.pre.alpha4 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.5.1.pre.alpha3 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.5.1.pre.alpha2 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.5.1.pre.alpha1 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.2.0.pre.alpha10 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.5.1 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.5.0 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.5.0.pre.alpha1 app/pb_kits/playbook/pb_button/button.rb
playbook_ui-5.2.0.pre.alpha9 app/pb_kits/playbook/pb_button/button.rb