8 changed files with 214 additions and 66 deletions
@ -1,8 +1,10 @@ |
|||||||
class SubjectAccordionComponent < BaseComponent |
class SubjectAccordionComponent < BaseComponent |
||||||
attr_reader :parent |
attr_reader :parent, :subjects, :opts |
||||||
|
|
||||||
def initialize(current_user:, parent:) |
def initialize(current_user:, parent:, subjects: nil, opts: {}) |
||||||
@parent = parent |
@parent = parent |
||||||
|
@subjects = subjects |
||||||
|
@opts = opts |
||||||
end |
end |
||||||
end |
end |
||||||
|
|
||||||
@ -0,0 +1,11 @@ |
|||||||
|
class SubjectsOffcanvasComponent < BaseComponent |
||||||
|
attr_reader :opts |
||||||
|
|
||||||
|
def initialize(current_user:, opts: {}) |
||||||
|
@opts = opts |
||||||
|
end |
||||||
|
|
||||||
|
def render? |
||||||
|
opts[:is_render].present? |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
<div class="offcanvas offcanvas-start" data-bs-scroll="true" tabindex="-1" data-bs-backdrop="false" id="subjectsOffCanvas"> |
||||||
|
<div class="offcanvas-header"> |
||||||
|
<h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel">Subjects</h5> |
||||||
|
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="offcanvas-body" id="subjectsAccordion"> |
||||||
|
<% Cdao::Subject.roots.order(name: :asc).each do |root| %> |
||||||
|
<div class="accordion accordion-flash" id="mainPanel<%= root.id %>"> |
||||||
|
<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="#<%= ["rootLevel", root.id].join %>"> |
||||||
|
<%= 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="<%= ["rootLevel", root.id].join %>" data-bs-parent="#mainPanel<%= root.id %>"> |
||||||
|
<div class="accordion-body pt-1 pb-1"> |
||||||
|
|
||||||
|
<%= render(SubjectAccordionComponent.new(current_user: current_user, parent: root)) %> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<% end %> |
||||||
|
</div> |
||||||
|
</div> |
||||||
Loading…
Reference in new issue