class SubjectAccordionComponent < BaseComponent with_collection_parameter :search_result attr_reader :search_result, :opts def initialize(search_result:, current_user:, opts: {}) @search_result = search_result @opts = opts end def parent_accordion_id return "subjectsAccordion" if search_result["parent_id"].blank? ["subjectsAccordion", search_result["parent_id"]].join end def children_accordion_id ["subjectsAccordion", search_result["id"]].join end def accordion_id ["subjectsAccordion", search_result["id"]].join end def accordion_body_id return ["subjectsAccordionBody", search_result["id"]].join if opts[:accordionFor].blank? accordion_body = opts[:accordionFor].to_s.eql?("subjects") ? "subjectsOffCanvasAccordionBody" : "doctrinesOffCanvasAccordionBody" [accordion_body, search_result["id"]].join end def custom_url return search_doctrines_path(subject_ids: [search_result["id"]], is_index_table: true) if opts[:accordionFor].present? && opts[:accordionFor].to_s.eql?("subjects") return search_doctrines_path(subject_ids: [search_result["id"]], is_index_table: false) if opts[:accordionFor].present? && opts[:accordionFor].to_s.eql?("doctrines") subject_index_path(search_result["id"]) end end