UNPKG

@true-directive/base

Version:

The set of base classes for the TrueDirective Grid

50 lines (49 loc) 2.19 kB
/** * 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 };