Просмотр исходного кода

Fixed: drag&drop Sharing/User Query (#6505)

maTh 1 год назад
Родитель
Сommit
9de4f23bb7
1 измененных файлов с 14 добавлено и 9 удалено
  1. 14 9
      p/scripts/draggable.js

+ 14 - 9
p/scripts/draggable.js

@@ -13,9 +13,11 @@ const init_draggable_list = function () {
 	let source;
 	const draggableList = document.querySelector('.draggableList');
 	const addMarker = (position, element) => {
-		const hr = draggableList.querySelector('hr.drag-drop-marker');
-		if (null === hr) {
-			element.insertAdjacentHTML(position, '<hr class="drag-drop-marker" />');
+		if (source) {
+			const hr = draggableList.querySelector('hr.drag-drop-marker');
+			if (null === hr) {
+				element.insertAdjacentHTML(position, '<hr class="drag-drop-marker" />');
+			}
 		}
 	};
 	const removeMarker = () => {
@@ -27,12 +29,14 @@ const init_draggable_list = function () {
 
 	draggableList.addEventListener('dragstart', event => {
 		source = event.target.closest('[draggable="true"]');
-		const dragbox = source.closest('.dragbox');
-		if (dragbox) {
-			source = dragbox;
+		if (source) {
+			const dragbox = source.closest('.dragbox');
+			if (dragbox) {
+				source = dragbox;
+			}
+			event.dataTransfer.setData('text/html', source.outerHTML);
+			event.dataTransfer.effectAllowed = 'move';
 		}
-		event.dataTransfer.setData('text/html', source.outerHTML);
-		event.dataTransfer.effectAllowed = 'move';
 	});
 	draggableList.addEventListener('dragover', event => {
 		event.preventDefault();
@@ -72,7 +76,8 @@ const init_draggable_list = function () {
 		if (dragbox) {
 			draggableItem = dragbox;
 		}
-		if (null === draggableItem || source === draggableItem) {
+		if (!source || null === draggableItem || source === draggableItem) {
+			removeMarker();
 			return;
 		}