"use strict";
// Class definition
var KTJKanbanDemoFixedHeight = function () {
var element;
var kanbanEl;
// Private functions
var exampleFixedHeight = function () {
// Get kanban height value
const kanbanHeight = kanbanEl.getAttribute('data-kt-jkanban-height');
// Init jKanban
var kanban = new jKanban({
element: element,
gutter: '0',
widthBoard: '250px',
boards: [{
'id': '_fixed_height',
'title': 'Fixed Height',
'class': 'primary',
'item': [
{
'title': '<span class="fw-bold">Item 1</span>'
},
{
'title': '<span class="fw-bold">Item 2</span>'
},
{
'title': '<span class="fw-bold">Item 3</span>'
},
{
'title': '<span class="fw-bold">Item 4</span>'
},
{
'title': '<span class="fw-bold">Item 5</span>'
},
{
'title': '<span class="fw-bold">Item 6</span>'
},
{
'title': '<span class="fw-bold">Item 7</span>'
},
{
'title': '<span class="fw-bold">Item 8</span>'
},
{
'title': '<span class="fw-bold">Item 9</span>'
},
{
'title': '<span class="fw-bold">Item 10</span>'
},
{
'title': '<span class="fw-bold">Item 11</span>'
},
{
'title': '<span class="fw-bold">Item 12</span>'
},
{
'title': '<span class="fw-bold">Item 13</span>'
},
{
'title': '<span class="fw-bold">Item 14</span>'
},
{
'title': '<span class="fw-bold">Item 15</span>'
},
]
},
{
'id': '_fixed_height2',
'title': 'Fixed Height 2',
'class': 'success',
'item': [
{
'title': '<span class="fw-bold">Item 1</span>'
},
{
'title': '<span class="fw-bold">Item 2</span>'
},
{
'title': '<span class="fw-bold">Item 3</span>'
},
{
'title': '<span class="fw-bold">Item 4</span>'
},
{
'title': '<span class="fw-bold">Item 5</span>'
},
{
'title': '<span class="fw-bold">Item 6</span>'
},
{
'title': '<span class="fw-bold">Item 7</span>'
},
{
'title': '<span class="fw-bold">Item 8</span>'
},
{
'title': '<span class="fw-bold">Item 9</span>'
},
{
'title': '<span class="fw-bold">Item 10</span>'
},
{
'title': '<span class="fw-bold">Item 11</span>'
},
{
'title': '<span class="fw-bold">Item 12</span>'
},
{
'title': '<span class="fw-bold">Item 13</span>'
},
{
'title': '<span class="fw-bold">Item 14</span>'
},
{
'title': '<span class="fw-bold">Item 15</span>'
},
]
}
],
// Handle item scrolling
dragEl: function (el, source) {
document.addEventListener('mousemove', isDragging);
},
dragendEl: function (el) {
document.removeEventListener('mousemove', isDragging);
}
});
// Set jKanban max height
const allBoards = kanbanEl.querySelectorAll('.kanban-drag');
allBoards.forEach(board => {
board.style.maxHeight = kanbanHeight + 'px';
});
}
const isDragging = (e) => {
const allBoards = kanbanEl.querySelectorAll('.kanban-drag');
allBoards.forEach(board => {
// Get inner item element
const dragItem = board.querySelector('.gu-transit');
// Stop drag on inactive board
if (!dragItem) {
return;
}
// Get jKanban drag container
const containerRect = board.getBoundingClientRect();
// Get inner item size
const itemSize = dragItem.offsetHeight;
// Get dragging element position
const dragMirror = document.querySelector('.gu-mirror');
const mirrorRect = dragMirror.getBoundingClientRect();
// Calculate drag element vs jKanban container
const topDiff = mirrorRect.top - containerRect.top;
const bottomDiff = containerRect.bottom - mirrorRect.bottom;
// Scroll container
if (topDiff <= itemSize) {
// Scroll up if item at top of container
board.scroll({
top: board.scrollTop - 3,
});
} else if (bottomDiff <= itemSize) {
// Scroll down if item at bottom of container
board.scroll({
top: board.scrollTop + 3,
});
} else {
// Stop scroll if item in middle of container
board.scroll({
top: board.scrollTop,
});
}
});
}
return {
// Public Functions
init: function () {
element = '#kt_docs_jkanban_fixed_height';
kanbanEl = document.querySelector(element);
exampleFixedHeight();
}
};
}();
// On document ready
KTUtil.onDOMContentLoaded(function () {
KTJKanbanDemoFixedHeight.init();
});