8 changed files with 214 additions and 66 deletions
@ -1,8 +1,10 @@
|
||||
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 |
||||
@subjects = subjects |
||||
@opts = opts |
||||
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