Sortable handles
This commit is contained in:
parent
e569bcb246
commit
37e9c5461c
6 changed files with 24 additions and 12 deletions
|
|
@ -307,3 +307,7 @@ details.tree {
|
||||||
.sc-level-aaa {
|
.sc-level-aaa {
|
||||||
background-color: $purple;
|
background-color: $purple;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.handle {
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
|
@ -6,16 +6,22 @@ import { put } from "@rails/request.js";
|
||||||
export default class extends Controller {
|
export default class extends Controller {
|
||||||
linkedElement = null
|
linkedElement = null
|
||||||
connect() {
|
connect() {
|
||||||
this.element.style.cursor = "grab"
|
// this.element.style.cursor = "grab"
|
||||||
|
|
||||||
if (this.element.dataset["linkedElementId"]) {
|
if (this.element.dataset["linkedElementId"]) {
|
||||||
this.linkedElement = document.getElementById(this.element.dataset["linkedElementId"])
|
this.linkedElement = document.getElementById(this.element.dataset["linkedElementId"])
|
||||||
}
|
}
|
||||||
|
|
||||||
new Sortable(this.element, {
|
let draggableSelector = ".item"
|
||||||
group: this.groupValue,
|
if (this.element.dataset["draggableSelector"]) {
|
||||||
|
draggableSelector = this.element.dataset["draggableSelector"]
|
||||||
|
}
|
||||||
|
console.log(draggableSelector, new Sortable(this.element, {
|
||||||
|
// group: this.groupValue,
|
||||||
onEnd: this.onEndFactory(this.linkedElement),
|
onEnd: this.onEndFactory(this.linkedElement),
|
||||||
})
|
handle: ".handle",
|
||||||
|
// draggable: draggableSelector,
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
onEndFactory(linkedElement) {
|
onEndFactory(linkedElement) {
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
</p>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div id="<%= dom_id(element, :success_criteria_list) %>" class="mb-3" data-controller="sortable" data-form-name="success_criterion" data-position-attribute= "position">
|
<div id="<%= dom_id(element, :success_criteria_list) %>" class="mb-3" data-controller="sortable" data-form-name="success_criterion" data-position-attribute= "position" data-draggable-selector=".draggable">
|
||||||
<% element.success_criteria.each do |sc| %>
|
<% element.success_criteria.each do |sc| %>
|
||||||
<%= render sc %>
|
<%= render sc %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,10 @@ li id=dom_id(element, :page_nav_row) data={ "sortable-url": element_path(element
|
||||||
i.bi.bi-boxes.me-2
|
i.bi.bi-boxes.me-2
|
||||||
span id=dom_id(element, :page_nav_title)
|
span id=dom_id(element, :page_nav_title)
|
||||||
= "#{element.number} #{element.title}"
|
= "#{element.number} #{element.title}"
|
||||||
|
i.bi.bi-grip-vertical.float-end.handle
|
||||||
- else
|
- else
|
||||||
=< link_to(report_path(element.report, page_id: element.page.id, anchor: dom_id(element)), data: { "turbo": false }) do
|
=< link_to(report_path(element.report, page_id: element.page.id, anchor: dom_id(element)), data: { "turbo": false }) do
|
||||||
i.bi.bi-boxes.me-2
|
i.bi.bi-boxes.me-2
|
||||||
span id=dom_id(element, :page_nav_title)
|
span id=dom_id(element, :page_nav_title)
|
||||||
=< "#{element.number} #{element.title}"
|
=< "#{element.number} #{element.title}"
|
||||||
|
i.bi.bi-grip-vertical.float-end.handle
|
||||||
|
|
@ -14,14 +14,15 @@
|
||||||
- is_current = current_page == page
|
- is_current = current_page == page
|
||||||
li data={ "sortable-url": page_path(page), "form-name": "page", "position-attribute": "position" }
|
li data={ "sortable-url": page_path(page), "form-name": "page", "position-attribute": "position" }
|
||||||
details.tree open=current_page_displayed(page) class=""
|
details.tree open=current_page_displayed(page) class=""
|
||||||
summary class=(is_current ? "active" : nil)
|
summary.d-flex class=(is_current ? "active" : nil)
|
||||||
.content
|
.content.flex-fill
|
||||||
i.bi.me-1 class="bi-file-earmark-check#{is_current ? "" : "" }"
|
i.bi.me-1 class="bi-file-earmark-check#{is_current ? "" : "" }"
|
||||||
- if is_current
|
- if is_current
|
||||||
span id=dom_id(page, :title) =< "#{page.position} #{page.path}"
|
span id=dom_id(page, :title) =< "#{page.position} #{page.path}"
|
||||||
- else
|
- else
|
||||||
=< link_to(report_path(report, page_id: page.id), data: { "turbo-frame": :_top }) do
|
=< link_to(report_path(report, page_id: page.id), data: { "turbo-frame": :_top }) do
|
||||||
span id=dom_id(page, :title) =< "#{page.position} #{page.path}"
|
span id=dom_id(page, :title) =< "#{page.position} #{page.path}"
|
||||||
|
i.bi.bi-grip-vertical.align-self-end.handle
|
||||||
ul id=dom_id(page, :page_nav_elements) data={ controller: "sortable", "linked-element-id": "element_list" }
|
ul id=dom_id(page, :page_nav_elements) data={ controller: "sortable", "linked-element-id": "element_list" }
|
||||||
- page.elements.each do |element|
|
- page.elements.each do |element|
|
||||||
= render partial: "elements/page_nav_row", locals: { element: element, current_page: current_page == element.page }
|
= render partial: "elements/page_nav_row", locals: { element: element, current_page: current_page == element.page }
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
- edit_mode = action_name == "edit"
|
- edit_mode = action_name == "edit"
|
||||||
summary.d-flex.align-items-start id=dom_id(success_criterion, :header)
|
summary.d-flex.align-items-start id=dom_id(success_criterion, :header)
|
||||||
.content.d-flex.align-items-center
|
.content.d-flex.align-items-center.w-100
|
||||||
.result-icon.flex-shrink-0 class=[success_criterion_result_color_classes(success_criterion)]
|
.result-icon.flex-shrink-0 class=[success_criterion_result_color_classes(success_criterion)]
|
||||||
span.h1.bi class=[success_criterion_result_icon_classes(success_criterion)]
|
span.h1.bi class=[success_criterion_result_icon_classes(success_criterion)]
|
||||||
.fs-
|
.flex-fill
|
||||||
span id=dom_id(success_criterion, :position)
|
span id=dom_id(success_criterion, :position)
|
||||||
= success_criterion.page.position
|
= success_criterion.page.position
|
||||||
| .
|
| .
|
||||||
|
|
@ -19,5 +19,4 @@ summary.d-flex.align-items-start id=dom_id(success_criterion, :header)
|
||||||
= success_criterion_badge(success_criterion.check.external_number, extra_classes: "text-bg-info me-1")
|
= success_criterion_badge(success_criterion.check.external_number, extra_classes: "text-bg-info me-1")
|
||||||
|
|
||||||
= success_criterion_badge(success_criterion.level, extra_classes: "sc-level-#{success_criterion.level.to_s.downcase} me-1")
|
= success_criterion_badge(success_criterion.level, extra_classes: "sc-level-#{success_criterion.level.to_s.downcase} me-1")
|
||||||
|
i.bi.bi-grip-vertical.handle
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue