@true-directive/base
Version:
The set of base classes for the TrueDirective Grid
50 lines (49 loc) • 2.19 kB
JavaScript
/**
* Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company.
* @link https://truedirective.com/
* @license MIT
*/
/**
* Некоторый набор правил, который разрешает или запрещает
* бросать строки в указанную позицию при drag and drop.
*/
var RowDragOverseer = /** @class */ (function () {
function RowDragOverseer() {
}
/**
* Возвращает позицию, в которую можно бросить относительно таргета
* @param resultRows [description]
* @param draggedRows [description]
* @param dropRow [description]
* @param dropPos [description]
* @param isTree [description]
* @return Если пустая строка - никуда бросить нельзя
*/
RowDragOverseer.prototype.canDrop = function (resultRows, draggedRows, dropRow, dropPos, isTree) {
if (isTree === void 0) { isTree = false; }
if (draggedRows.filter(function (r) { return r === dropRow; }).length > 0) {
// Навели на одну из перетаскиваемых строк
return '';
}
var previousRow = null;
var nextRow = null;
var ri = resultRows.indexOf(dropRow);
if (ri > 0) {
previousRow = resultRows[ri - 1];
if (draggedRows.filter(function (r) { return r === previousRow; }).length > 0 && dropPos === 'before') {
// Предыдущая строка - одна из перетаскиваемых строк
return '';
}
}
if (ri < resultRows.length - 1) {
nextRow = resultRows[ri + 1];
if (draggedRows.filter(function (r) { return r === nextRow; }).length > 0 && dropPos !== 'before') {
// Следующая строка - одна из перетаскиваемых строк
return '';
}
}
return dropPos;
};
return RowDragOverseer;
}());
export { RowDragOverseer };