Sha256: f2c354cefc3f5cc120d5731b66090b301742347c2488d2bda64890dde9d5eacc

Contents?: true

Size: 1.83 KB

Versions: 6

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

module Decidim
  module Comments
    # A helper to expose the comments component for a commentable
    module CommentsHelper
      # Render commentable comments inside the `expanded` template content.
      #
      # resource - A commentable resource
      def comments_for(resource)
        return unless resource.commentable?

        content_for :expanded do
          inline_comments_for(resource)
        end
      end

      # Creates a Comments component which is rendered using `ReactDOM`
      #
      # resource - A commentable resource
      #
      # Returns a div which contain a RectComponent
      def inline_comments_for(resource)
        return unless resource.commentable?

        commentable_type = resource.commentable_type
        commentable_id = resource.id.to_s
        node_id = "comments-for-#{commentable_type.demodulize}-#{commentable_id}"
        react_comments_component(node_id, commentableType: commentable_type,
                                          commentableId: commentable_id,
                                          locale: I18n.locale)
      end

      # Private: Render Comments component using inline javascript
      #
      # node_id - The id of the DOMElement to render the React component
      # props   - A hash corresponding to Comments component props
      def react_comments_component(node_id, props)
        content_tag("div", "", id: node_id) +
          javascript_include_tag("decidim/comments/comments") +
          javascript_tag(%{
            window.DecidimComments.renderCommentsComponent(
              '#{node_id}',
              {
                commentableType: "#{props[:commentableType]}",
                commentableId: "#{props[:commentableId]}",
                locale: "#{props[:locale]}"
              }
            );
          })
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
decidim-comments-0.22.0 lib/decidim/comments/comments_helper.rb
decidim-comments-0.21.0 lib/decidim/comments/comments_helper.rb
decidim-comments-0.20.1 lib/decidim/comments/comments_helper.rb
decidim-comments-0.20.0 lib/decidim/comments/comments_helper.rb
decidim-comments-0.19.1 lib/decidim/comments/comments_helper.rb
decidim-comments-0.19.0 lib/decidim/comments/comments_helper.rb