소스 검색

feat: Add click-drag scrolling to kanban boards

version-14
John Bulcher 3 년 전
부모
커밋
115bb8faed
1개의 변경된 파일40개의 추가작업 그리고 0개의 파일을 삭제
  1. +40
    -0
      frappe/public/js/frappe/views/kanban/kanban_board.js

+ 40
- 0
frappe/public/js/frappe/views/kanban/kanban_board.js 파일 보기

@@ -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;


불러오는 중...
취소
저장