17 changed files with 271 additions and 140 deletions
@ -0,0 +1,39 @@
|
||||
class DoctrinesOffcanvasAccordionComponent < 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 accordion_name |
||||
"doctrinesOffCanvasAccordion" |
||||
end |
||||
|
||||
def accordion_body_name |
||||
"doctrinesOffCanvasAccordionBody" |
||||
end |
||||
|
||||
def parent_accordion_id |
||||
return accordion_body_name if search_result["parent_id"].blank? |
||||
|
||||
[accordion_name, search_result["parent_id"]].join |
||||
end |
||||
|
||||
def children_accordion_id |
||||
[accordion_name, search_result["heirarchy_level"], search_result["id"]].join |
||||
end |
||||
|
||||
def accordion_id |
||||
[accordion_name, search_result["id"]].join |
||||
end |
||||
|
||||
def accordion_body_id |
||||
[accordion_body_name, search_result["id"]].join |
||||
end |
||||
|
||||
def index_url |
||||
search_doctrines_path(subject_ids: [search_result["id"]], is_index_table: true) |
||||
end |
||||
end |
||||
@ -0,0 +1,25 @@
|
||||
<div class="accordion accordion-flush offcanvas-item" id="<%= accordion_id %>"> |
||||
<div class="accordion-item"> |
||||
<div class="accordion-header d-flex justify-content-between"> |
||||
<% if search_result["has_children?"].present? %> |
||||
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
||||
data-controller="subjects" data-subject-parent-id="<%= search_result["id"] %>" data-accordion-target="#<%= accordion_body_id %>" |
||||
data-action="click->subjects#loadSubjectsOffcanvasAccordion"> |
||||
<%= link_to search_result["name"], index_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
</div> |
||||
<% else %> |
||||
<%= link_to search_result["name"], index_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
<% end %> |
||||
</div> |
||||
|
||||
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= accordion_id %>"> |
||||
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-1" id="<%= accordion_body_id %>"> |
||||
<div class="text-center"> |
||||
<div class="spinner-border text-danger" role="status"> |
||||
<span class="visually-hidden">Loading...</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@ -1,38 +0,0 @@
|
||||
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 |
||||
|
||||
@ -1,56 +0,0 @@
|
||||
<% if opts[:accordionFor].present? %> |
||||
<div class="accordion accordion-flash offcanvas-item" id="<%= parent_accordion_id %>"> |
||||
<div class="accordion-item"> |
||||
<div class="accordion-header d-flex justify-content-between adadadeqe" id="<%= children_accordion_id %>"> |
||||
<% if search_result["has_children?"].present? %> |
||||
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
||||
data-controller="subjects" data-accordion-id="<%= children_accordion_id %>" |
||||
data-accordion-for="<%= opts[:accordionFor] %>" data-subject-parent-id="<%= search_result["id"] %>" |
||||
data-accordion-target="#<%= accordion_body_id %>" data-action="click->subjects#loadSubjectsAccordion"> |
||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
</div> |
||||
<% else %> |
||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
<% end %> |
||||
</div> |
||||
|
||||
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= parent_accordion_id %>"> |
||||
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-1" id="<%= accordion_body_id %>"> |
||||
<div class="text-center"> |
||||
<div class="spinner-border text-danger" role="status"> |
||||
<span class="visually-hidden">Loading...</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<% else %> |
||||
<div class="accordion accordion-flash" id="<%= parent_accordion_id %>"> |
||||
<div class="accordion-item"> |
||||
<div class="accordion-header d-flex justify-content-between" id="<%= children_accordion_id %>"> |
||||
<% if search_result["has_children?"].present? %> |
||||
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
||||
data-controller="subjects" data-accordion-id="<%= children_accordion_id %>" data-subject-parent-id="<%= search_result["id"] %>" |
||||
data-accordion-target="#<%= accordion_body_id %>" data-action="click->subjects#loadSubjectsAccordion"> |
||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
<%= link_to '<i class="fas fa-folder-plus"></i>'.html_safe, new_subject_index_path(parent_id: search_result["id"]), class: "text-decoration-none d-block sub#{search_result["heirarchy_level"]} clickable-link position-absolute end-0 me-5" %> |
||||
</div> |
||||
<% else %> |
||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
<%= link_to '<i class="fas fa-folder-plus"></i>'.html_safe, new_subject_index_path(parent_id: search_result["id"]), class: "text-decoration-none d-block sub#{search_result["heirarchy_level"]} clickable-link position-absolute end-0 non-toggle" %> |
||||
<% end %> |
||||
</div> |
||||
|
||||
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= parent_accordion_id %>"> |
||||
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-0" id="<%= accordion_body_id %>"> |
||||
<div class="text-center"> |
||||
<div class="spinner-border text-danger" role="status"> |
||||
<span class="visually-hidden">Loading...</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<% end %> |
||||
@ -0,0 +1,38 @@
|
||||
class SubjectsAccordionComponent < 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 accordion_name |
||||
"subjectsAccordion" |
||||
end |
||||
|
||||
def accordion_body_name |
||||
"subjectsAccordionBody" |
||||
end |
||||
|
||||
def parent_accordion_id |
||||
[accordion_name, search_result["parent_id"]].join |
||||
end |
||||
|
||||
def children_accordion_id |
||||
[accordion_name, search_result["heirarchy_level"], search_result["id"]].join |
||||
end |
||||
|
||||
def accordion_id |
||||
[accordion_name, search_result["id"]].join |
||||
end |
||||
|
||||
def accordion_body_id |
||||
[accordion_body_name, search_result["id"]].join |
||||
end |
||||
|
||||
def custom_url |
||||
subject_index_path(search_result["id"]) |
||||
end |
||||
end |
||||
|
||||
@ -0,0 +1,27 @@
|
||||
<div class="accordion accordion-flush" id="<%= accordion_id %>"> |
||||
<div class="accordion-item"> |
||||
<div class="accordion-header d-flex justify-content-between"> |
||||
<% if search_result["has_children?"].present? %> |
||||
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
||||
data-controller="subjects" data-subject-parent-id="<%= search_result["id"] %>" data-accordion-target="#<%= accordion_body_id %>" |
||||
data-action="click->subjects#loadSubjectsAccordion"> |
||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
<%= link_to '<i class="fas fa-folder-plus"></i>'.html_safe, new_subject_index_path(parent_id: search_result["id"]), class: "text-decoration-none d-block sub#{search_result["heirarchy_level"]} clickable-link position-absolute end-0 me-5" %> |
||||
</div> |
||||
<% else %> |
||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
<%= link_to '<i class="fas fa-folder-plus"></i>'.html_safe, new_subject_index_path(parent_id: search_result["id"]), class: "text-decoration-none d-block sub#{search_result["heirarchy_level"]} clickable-link position-absolute end-0 non-toggle" %> |
||||
<% end %> |
||||
</div> |
||||
|
||||
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= accordion_id %>"> |
||||
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-0" id="<%= accordion_body_id %>"> |
||||
<div class="text-center"> |
||||
<div class="spinner-border text-danger" role="status"> |
||||
<span class="visually-hidden">Loading...</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@ -0,0 +1,39 @@
|
||||
class SubjectsOffcanvasAccordionComponent < 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 accordion_name |
||||
"subjectsOffCanvasAccordion" |
||||
end |
||||
|
||||
def accordion_body_name |
||||
"subjectsOffCanvasAccordionBody" |
||||
end |
||||
|
||||
def parent_accordion_id |
||||
return accordion_body_name if search_result["parent_id"].blank? |
||||
|
||||
[accordion_name, search_result["parent_id"]].join |
||||
end |
||||
|
||||
def children_accordion_id |
||||
[accordion_name, search_result["heirarchy_level"], search_result["id"]].join |
||||
end |
||||
|
||||
def accordion_id |
||||
[accordion_name, search_result["id"]].join |
||||
end |
||||
|
||||
def accordion_body_id |
||||
[accordion_body_name, search_result["id"]].join |
||||
end |
||||
|
||||
def index_url |
||||
search_doctrines_path(subject_ids: [search_result["id"]], is_index_table: true) |
||||
end |
||||
end |
||||
@ -0,0 +1,25 @@
|
||||
<div class="accordion accordion-flush offcanvas-item" id="<%= accordion_id %>"> |
||||
<div class="accordion-item"> |
||||
<div class="accordion-header d-flex justify-content-between"> |
||||
<% if search_result["has_children?"].present? %> |
||||
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
||||
data-controller="subjects" data-subject-parent-id="<%= search_result["id"] %>" data-accordion-target="#<%= accordion_body_id %>" |
||||
data-action="click->subjects#loadSubjectsOffcanvasAccordion"> |
||||
<%= link_to search_result["name"], index_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
</div> |
||||
<% else %> |
||||
<%= link_to search_result["name"], index_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||
<% end %> |
||||
</div> |
||||
|
||||
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= accordion_id %>"> |
||||
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-1" id="<%= accordion_body_id %>"> |
||||
<div class="text-center"> |
||||
<div class="spinner-border text-danger" role="status"> |
||||
<span class="visually-hidden">Loading...</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@ -0,0 +1 @@
|
||||
<%= render(DoctrinesOffcanvasAccordionComponent.with_collection(search_results, current_user: current_user, opts: opts)) %> |
||||
@ -1 +1 @@
|
||||
<%= render(SubjectAccordionComponent.with_collection(search_results, current_user: current_user, opts: opts)) %> |
||||
<%= render(SubjectsAccordionComponent.with_collection(search_results, current_user: current_user, opts: opts)) %> |
||||
|
||||
@ -0,0 +1 @@
|
||||
<%= render(SubjectsOffcanvasAccordionComponent.with_collection(search_results, current_user: current_user, opts: opts)) %> |
||||
Loading…
Reference in new issue