Sha256: cf38f29eafd9511f21d62bbc2d25ea439344195f8fa3c7ac05945ec1465feafd

Contents?: true

Size: 1.72 KB

Versions: 124

Compression:

Stored size: 1.72 KB

Contents

# frozen_string_literal: true

module NfgUi
  module Components
    module Elements
      # Step doc coming soon
      class Step < NfgUi::Components::Elements::NavItem
        include Bootstrap::Utilities::Activatable

        include NfgUi::Components::Utilities::Iconable

        include NfgUi::Components::Traits::Active
        include NfgUi::Components::Traits::Step

        # Override #active from Activatable
        def active
          # Active is a transitory state for steps
          # So when a step is active, it is automatically visited.
          # This sets visited to true.
          # This is also accounted for in the #active_trait for steps.
          options[:visited] = true if options[:active]
          super
        end

        def component_family
          :steps
        end

        # NOTE: DISABLED TOOLTIPS DO NOT YET WORK ON STEPS
        # NAVITEM DOES NOT INCLUDE DISABLEABLE MODULE
        # JR: 06-21-2019
        def disabled
          options[:disabled] || (!visited && !active)
        end

        def render
          content_tag(as, html_options) do
            NfgUi::Components::Elements::StepIndicator.new({ step: step.to_s, body: (block_given? ? yield : body), icon: icon, href: href, disabled: disabled }, view_context).render
          end
        end

        def step
          options.fetch(:step, nil)
        end

        def visited
          options.fetch(:visited, false)
        end

        private

        def base_element
          as
        end

        def css_classes
          [
            super,
            ('visited' if visited)
          ].join(' ').squish
        end

        def non_html_attribute_options
          super.push(:visited, :step)
        end
      end
    end
  end
end

Version data entries

124 entries across 124 versions & 1 rubygems

Version Path
nfg_ui-6.17.2 lib/nfg_ui/components/elements/step.rb
nfg_ui-6.17.1 lib/nfg_ui/components/elements/step.rb
nfg_ui-6.17.0 lib/nfg_ui/components/elements/step.rb
nfg_ui-6.16.3 lib/nfg_ui/components/elements/step.rb
nfg_ui-6.16.2 lib/nfg_ui/components/elements/step.rb
nfg_ui-6.16.1 lib/nfg_ui/components/elements/step.rb
nfg_ui-6.16.0 lib/nfg_ui/components/elements/step.rb
nfg_ui-5.15.7 lib/nfg_ui/components/elements/step.rb
nfg_ui-5.15.6 lib/nfg_ui/components/elements/step.rb
nfg_ui-5.15.5 lib/nfg_ui/components/elements/step.rb
nfg_ui-5.15.4 lib/nfg_ui/components/elements/step.rb
nfg_ui-5.15.3 lib/nfg_ui/components/elements/step.rb
nfg_ui-0.15.2 lib/nfg_ui/components/elements/step.rb
nfg_ui-0.15.1 lib/nfg_ui/components/elements/step.rb
nfg_ui-0.15.0 lib/nfg_ui/components/elements/step.rb
nfg_ui-0.14.7 lib/nfg_ui/components/elements/step.rb
nfg_ui-0.14.6.3 lib/nfg_ui/components/elements/step.rb
nfg_ui-0.14.6.2 lib/nfg_ui/components/elements/step.rb
nfg_ui-0.14.6.1 lib/nfg_ui/components/elements/step.rb
nfg_ui-0.14.6 lib/nfg_ui/components/elements/step.rb