From a98c7ab25fee6a8172e9c44ee4d0f28db812a798 Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Sun, 10 Apr 2022 12:02:15 +0200
Subject: [PATCH] work in progress

---
 app/components/viewer/index.js             | 25 +++++++++++++---------
 app/components/viewer/pages.hbs            |  2 +-
 app/components/viewer/thumbnails/index.hbs |  2 +-
 app/components/viewer/thumbnails/index.js  |  4 +++-
 4 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/app/components/viewer/index.js b/app/components/viewer/index.js
index c5cf3c3..f6f94c6 100644
--- a/app/components/viewer/index.js
+++ b/app/components/viewer/index.js
@@ -153,7 +153,12 @@ export default class ViewerComponent extends Component {
 
   @action
   onThumbnailsPositionChanged({original_pos, drop_pos, page_ids}) {
-    let all_pages = this.pages;
+    let all_pages, drop_placeholder_pos;
+
+    drop_placeholder_pos = this.pages.findIndex(item => item.is_drop_placeholder);
+
+    console.log(`Drop placeholder ${drop_placeholder_pos}`);
+    all_pages = this.pages;
 
     this.pages = reposition_items({
       items: all_pages,
@@ -165,14 +170,14 @@ export default class ViewerComponent extends Component {
   @action
   onAddThumbnailPlaceholderAt(pos) {
     let new_pages,
-      placeholder;
+      drop_placeholder;
 
     new_pages = Array.from(this.pages);
-    placeholder = {'is_placeholder': true};
+    drop_placeholder = {'is_drop_placeholder': true};
 
-    if (!new_pages.find(item => item.is_placeholder)) {
-      // Only one placeholder is allowed
-      new_pages.splice(pos, 0, placeholder);
+    if (!new_pages.find(item => item.is_drop_placeholder)) {
+      // Only one drop placeholder is allowed
+      new_pages.splice(pos, 0, drop_placeholder);
       this.pages = new_pages;
     }
   }
@@ -180,13 +185,13 @@ export default class ViewerComponent extends Component {
   @action
   onRemoveThumbnailPlaceholder() {
     let new_pages,
-      placeholder_pos;
+      drop_placeholder_pos;
 
     new_pages = Array.from(this.pages);
-    placeholder_pos = new_pages.findIndex(item => item.is_placeholder);
+    drop_placeholder_pos = new_pages.findIndex(item => item.is_drop_placeholder);
 
-    if (placeholder_pos >= 0) {
-      new_pages.splice(placeholder_pos, 1);
+    if (drop_placeholder_pos >= 0) {
+      new_pages.splice(drop_placeholder_pos, 1);
       this.pages = new_pages;
     }
   }
diff --git a/app/components/viewer/pages.hbs b/app/components/viewer/pages.hbs
index bc6fa94..59746e7 100644
--- a/app/components/viewer/pages.hbs
+++ b/app/components/viewer/pages.hbs
@@ -1,7 +1,7 @@
 <div class="d-flex flex-column pages"
   {{adjust_element_height}}>
     {{#each @pages as |page|}}
-      {{#if page.is_placeholder}}
+      {{#if page.is_drop_placeholder}}
         <!-- no op -->
       {{else}}
         <Viewer::Page
diff --git a/app/components/viewer/thumbnails/index.hbs b/app/components/viewer/thumbnails/index.hbs
index 7844c67..c28be67 100644
--- a/app/components/viewer/thumbnails/index.hbs
+++ b/app/components/viewer/thumbnails/index.hbs
@@ -8,7 +8,7 @@
 
   {{adjust_element_height}}>
   {{#each @pages as |page|}}
-    {{#if page.is_placeholder}}
+    {{#if page.is_drop_placeholder}}
       <Viewer::Thumbnail::DropPlaceholder />
     {{else}}
       <Viewer::Thumbnail
diff --git a/app/components/viewer/thumbnails/index.js b/app/components/viewer/thumbnails/index.js
index 523d887..ea5c16e 100644
--- a/app/components/viewer/thumbnails/index.js
+++ b/app/components/viewer/thumbnails/index.js
@@ -25,8 +25,8 @@ export default class ViewerThumbnailsComponent extends Component {
       drop_pos,
       source_doc_id;
 
-    event.preventDefault();
     data = event.dataTransfer.getData('application/x.page');
+
     if (!data) {
       console.warn('Accepts only application/x.page data');
       return;
@@ -124,6 +124,8 @@ export default class ViewerThumbnailsComponent extends Component {
       // suggest position to drop ONLY if cursor is outside of all thumbnails
       console.log(`suggested_pos=${suggested_pos}; original_pos=${original_pos}`);
       if (Math.abs(original_pos - suggested_pos) >= 1 && suggested_pos != original_pos + 1) {
+        // prevent default to allow drop
+        event.preventDefault();
         this.args.onAddThumbnailPlaceholderAt(suggested_pos);
       }
     } else {
-- 
GitLab