aboutsummaryrefslogtreecommitdiff
path: root/p/scripts/draggable.js
diff options
context:
space:
mode:
Diffstat (limited to 'p/scripts/draggable.js')
-rw-r--r--p/scripts/draggable.js23
1 files changed, 14 insertions, 9 deletions
diff --git a/p/scripts/draggable.js b/p/scripts/draggable.js
index 5e99e3227..1077e98f9 100644
--- a/p/scripts/draggable.js
+++ b/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;
}