39 lines
1.3 KiB
Ruby
39 lines
1.3 KiB
Ruby
module ArrangementHelper
|
|
def arrangement_tag(book, **, &)
|
|
tag.div data: {
|
|
controller: "arrangement reading-progress",
|
|
arrangement_cursor_class: "arrangement-cursor",
|
|
arrangement_selected_class: "arrangement-selected",
|
|
arrangement_placeholder_class: "arrangement-placeholder",
|
|
arrangement_adding_mode_class: "arrangement--adding",
|
|
arrangement_move_mode_class: "arrangement-move-mode",
|
|
arrangement_url_value: book_leaves_moves_url(book),
|
|
reading_progress_book_id_value: book.id,
|
|
reading_progress_last_read_class: "toc__leaf--last-read"
|
|
}, **, &
|
|
end
|
|
|
|
def arrangement_actions
|
|
actions = {
|
|
"click": "click",
|
|
"dragstart": "dragStart",
|
|
"dragover": "dragOver:prevent",
|
|
"dragend": "dragEnd",
|
|
"drop": "drop",
|
|
"keydown.up": "moveBefore",
|
|
"keydown.right": "moveAfter",
|
|
"keydown.down": "moveAfter",
|
|
"keydown.left": "moveBefore",
|
|
"keydown.shift+up": "moveBefore",
|
|
"keydown.shift+right": "moveAfter",
|
|
"keydown.shift+down": "moveAfter",
|
|
"keydown.shift+left": "moveBefore",
|
|
"keydown.space": "toggleMoveMode",
|
|
"keydown.enter": "applyMoveMode",
|
|
"keydown.esc": "cancelMoveMode"
|
|
}
|
|
|
|
actions.map { |action, target| "#{action}->arrangement##{target}" }.join(" ")
|
|
end
|
|
end
|