Sha256: 38f1b67b48c220662c85e0761e2270e67a087a66de4cf2e9ed1392505d004d5b

Contents?: true

Size: 1.52 KB

Versions: 18

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

module Decidim
  # Helper that provides a single method to create filter resource forms
  module FiltersHelper
    # This method wraps everything in a div with class filters and calls
    # the form_for helper with a custom builder
    #
    # filter       - A filter object
    # url          - A String with the URL to post the from. Self URL by default.
    # html_options - Extra HTML options to be passed to form_for
    # block        - A block to be called with the form builder
    #
    # Returns the filter resource form wrapped in a div
    def filter_form_for(filter, url = url_for, html_options = {})
      content_tag :div, class: "filters" do
        form_for(
          filter,
          namespace: filter_form_namespace,
          builder: FilterFormBuilder,
          url: url,
          as: :filter,
          method: :get,
          remote: true,
          html: { id: nil }.merge(html_options)
        ) do |form|
          # Cannot use `concat()` here because it's not available in cells
          inner = []
          inner << hidden_field_tag("per_page", params[:per_page], id: nil) if params[:per_page]
          inner << capture { yield form }
          inner.join.html_safe
        end
      end
    end

    private

    # Creates a unique namespace for a filter form to prevent dupliacte IDs in
    # the DOM when multiple filter forms are rendered with the same fields (e.g.
    # for desktop and mobile).
    def filter_form_namespace
      "filters_#{SecureRandom.uuid}"
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
decidim-core-0.27.9 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.8 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.7 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.6 app/helpers/decidim/filters_helper.rb
decidim-core-0.26.10 app/helpers/decidim/filters_helper.rb
decidim-core-0.26.9 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.5 app/helpers/decidim/filters_helper.rb
decidim-core-0.26.8 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.4 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.3 app/helpers/decidim/filters_helper.rb
decidim-core-0.26.7 app/helpers/decidim/filters_helper.rb
decidim-core-0.26.5 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.2 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.1 app/helpers/decidim/filters_helper.rb
decidim-core-0.26.4 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.0 app/helpers/decidim/filters_helper.rb
decidim-core-0.26.3 app/helpers/decidim/filters_helper.rb
decidim-core-0.27.0.rc2 app/helpers/decidim/filters_helper.rb