5 changed files with 83 additions and 17 deletions
@ -0,0 +1,11 @@ |
|||||||
|
class DoctrinesOffcanvasComponent < BaseComponent |
||||||
|
attr_reader :opts |
||||||
|
|
||||||
|
def initialize(current_user:, opts: {}) |
||||||
|
@opts = opts |
||||||
|
end |
||||||
|
|
||||||
|
def render? |
||||||
|
opts[:is_render].present? |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,38 @@ |
|||||||
|
<div class="offcanvas offcanvas-start offcanvas-contents" data-bs-scroll="true" tabindex="-1" data-bs-backdrop="false" id="doctrinesOffCanvas" data-controller="subjects"> |
||||||
|
<div class="offcanvas-header"> |
||||||
|
<h5 class="offcanvas-title"> Doctrines </h5> |
||||||
|
<hr class="m-0"> |
||||||
|
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="offcanvas-body"> |
||||||
|
<div class="accordion accordion-flush subject-index-body" id="doctrinesOffCanvasMainAccordion" > |
||||||
|
<% Cdao::Subject.roots.order(name: :asc).each do |root| %> |
||||||
|
<div class="accordion-item"> |
||||||
|
<div class="accordion-header d-flex justify-content-between"> |
||||||
|
<% if root.children.present? %> |
||||||
|
<div class="accordion-button collapsed m-0 p-0" data-bs-toggle="collapse" data-bs-target="#<%= ["doctrinesOffCanvasAccordion", root.id].join %>" |
||||||
|
data-controller="subjects" data-subject-parent-id="<%= root.id %>" |
||||||
|
data-accordion-target="#<%= ['doctrinesOffCanvasAccordionBody', root.id].join %>" |
||||||
|
data-action="click->subjects#loadDoctrinesOffcanvasAccordion"> |
||||||
|
<%= link_to root.name, subject_index_path(root.id), class: "accordion-link text-decoration-none text-dark d-block sub1 clickable-link" %> |
||||||
|
</div> |
||||||
|
<% else %> |
||||||
|
<%= link_to root.name, subject_index_path(root.id), class: "accordion-link text-decoration-none text-dark d-block sub1 clickable-link" %> |
||||||
|
<% end %> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="accordion-collapse collapse" id="<%= ["doctrinesOffCanvasAccordion", root.id].join %>" data-bs-parent="#doctrinesOffCanvasMainAccordion"> |
||||||
|
<div class="accordion-body pt-1 pb-1 sub-body1" id="<%= ["doctrinesOffCanvasAccordionBody", root.id].join %>"> |
||||||
|
<div class="text-center"> |
||||||
|
<div class="spinner-border text-danger" role="status"> |
||||||
|
<span class="visually-hidden">Loading...</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<% end %> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
@ -1,15 +1,38 @@ |
|||||||
<div class="offcanvas offcanvas-start offcanvas-contents" data-bs-scroll="true" tabindex="-1" data-bs-backdrop="false" id="<%= opts[:element_id] %>" data-controller="subjects"> |
<div class="offcanvas offcanvas-start offcanvas-contents" data-bs-scroll="true" tabindex="-1" data-bs-backdrop="false" id="subjectsOffCanvas" data-controller="subjects"> |
||||||
<div class="offcanvas-header"> |
<div class="offcanvas-header"> |
||||||
<h5 class="offcanvas-title"> <%=opts[:header_title]%> </h5> |
<h5 class="offcanvas-title"> Subjects </h5> |
||||||
<hr class="m-0"> |
<hr class="m-0"> |
||||||
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> |
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="offcanvas-body" id="<%= opts[:accordion_body_id] %>"> |
<div class="offcanvas-body"> |
||||||
<div class="text-center"> |
<div class="accordion accordion-flush subject-index-body" id="subjectsOffCanvasMainAccordion" > |
||||||
<div class="spinner-border text-danger" role="status"> |
<% Cdao::Subject.roots.order(name: :asc).each do |root| %> |
||||||
<span class="visually-hidden">Loading...</span> |
<div class="accordion-item"> |
||||||
</div> |
<div class="accordion-header d-flex justify-content-between"> |
||||||
|
<% if root.children.present? %> |
||||||
|
<div class="accordion-button collapsed m-0 p-0" data-bs-toggle="collapse" data-bs-target="#<%= ["subjectsOffCanvasAccordion", root.id].join %>" |
||||||
|
data-controller="subjects" data-subject-parent-id="<%= root.id %>" |
||||||
|
data-accordion-target="#<%= ['subjectsOffCanvasAccordionBody', root.id].join %>" |
||||||
|
data-action="click->subjects#loadSubjectsOffcanvasAccordion"> |
||||||
|
<%= link_to root.name, subject_index_path(root.id), class: "accordion-link text-decoration-none text-dark d-block sub1 clickable-link" %> |
||||||
|
</div> |
||||||
|
<% else %> |
||||||
|
<%= link_to root.name, subject_index_path(root.id), class: "accordion-link text-decoration-none text-dark d-block sub1 clickable-link" %> |
||||||
|
<% end %> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="accordion-collapse collapse" id="<%= ["subjectsOffCanvasAccordion", root.id].join %>" data-bs-parent="#subjectsOffCanvasMainAccordion"> |
||||||
|
<div class="accordion-body pt-1 pb-1 sub-body1" id="<%= ["subjectsOffCanvasAccordionBody", root.id].join %>"> |
||||||
|
<div class="text-center"> |
||||||
|
<div class="spinner-border text-danger" role="status"> |
||||||
|
<span class="visually-hidden">Loading...</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<% end %> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
|
|||||||
Loading…
Reference in new issue