Merge pull request #15641 from skjbulcher/kanban-click-drag-scroll
This commit is contained in:
commit
830a788294
1 changed files with 40 additions and 0 deletions
|
|
@ -337,6 +337,7 @@ frappe.provide("frappe.views");
|
|||
|
||||
function bind_events() {
|
||||
bind_add_column();
|
||||
bind_clickdrag();
|
||||
}
|
||||
|
||||
function setup_sortable() {
|
||||
|
|
@ -392,6 +393,45 @@ frappe.provide("frappe.views");
|
|||
});
|
||||
}
|
||||
|
||||
function bind_clickdrag() {
|
||||
let isDown = false;
|
||||
let startX;
|
||||
let scrollLeft;
|
||||
let draggable = self.$kanban_board[0];
|
||||
|
||||
draggable.addEventListener('mousedown', (e) => {
|
||||
// don't trigger scroll if one of the ancestors of the
|
||||
// clicked element matches any of these selectors
|
||||
let ignoreEl = [
|
||||
'.kanban-column .kanban-column-header',
|
||||
'.kanban-column .add-card',
|
||||
'.kanban-column .kanban-card.new-card-area',
|
||||
'.kanban-card-wrapper',
|
||||
];
|
||||
if (ignoreEl.some((el) => e.target.closest(el))) return;
|
||||
|
||||
isDown = true;
|
||||
draggable.classList.add('clickdrag-active');
|
||||
startX = e.pageX - draggable.offsetLeft;
|
||||
scrollLeft = draggable.scrollLeft;
|
||||
});
|
||||
draggable.addEventListener('mouseleave', () => {
|
||||
isDown = false;
|
||||
draggable.classList.remove('clickdrag-active');
|
||||
});
|
||||
draggable.addEventListener('mouseup', () => {
|
||||
isDown = false;
|
||||
draggable.classList.remove('clickdrag-active');
|
||||
});
|
||||
draggable.addEventListener('mousemove', (e) => {
|
||||
if (!isDown) return;
|
||||
e.preventDefault();
|
||||
const x = e.pageX - draggable.offsetLeft;
|
||||
const walk = (x - startX);
|
||||
draggable.scrollLeft = scrollLeft - walk;
|
||||
});
|
||||
}
|
||||
|
||||
function setup_restore_columns() {
|
||||
var cur_list = store.getState().cur_list;
|
||||
var columns = store.getState().columns;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue