You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

38 lines
1.3 KiB

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