Sha256: 6367987ca70b296c60b3900050dd4918bb0d71a8e0efe048fa022ffbd494e7a6

Contents?: true

Size: 1.05 KB

Versions: 31

Compression:

Stored size: 1.05 KB

Contents

module GovukPublishingComponents
  module Presenters
    class SelectHelper
      attr_reader :options, :option_markup, :selected_option

      def initialize(options)
        @options = options
        @option_markup = get_options
      end

      def data_tracking?
        @options.any? { |item| item[:data_attributes] && item[:data_attributes][:track_category] && item[:data_attributes][:track_action] }
      end

    private

      def get_options
        return if options.nil?

        options.map { |option|
          @selected_option = option[:value] if option[:selected]
          [
            option[:text],
            option[:value],
            options_data_attribute(option[:data_attributes]),
          ]
        }
      end

      def options_data_attribute(attributes)
        return {} if attributes.nil?

        attrs = {}
        attributes.each do |key, value|
          key_name = "data-#{key.to_s.split('_').join('-')}"
          attrs[key_name] = value.is_a?(Hash) ? value.to_json : value
        end

        attrs
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
govuk_publishing_components-21.45.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.44.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.43.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.42.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.41.4 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.41.3 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.41.2 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.41.1 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.41.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.40.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.39.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.38.5 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.38.4 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.38.3 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.38.2 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.38.1 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.38.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.37.0 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.36.1 lib/govuk_publishing_components/presenters/select.rb
govuk_publishing_components-21.36.0 lib/govuk_publishing_components/presenters/select.rb