From 00ee6ebedd47a986e79ec6ab92341dc9358a1920 Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Tue, 11 Dec 2018 13:20:05 +0000 Subject: [PATCH] Fixed drag-n-drop reorder of gallery images not responding to drops no issue - https://github.com/TryGhost/Ghost-Admin/pull/1081 introduced a bug where the `insertIndex` was being cleared every time we showed the drop position indicator because we hide the indicator as a reset every time we show the indicator. This meant every drop was missing the required insertIndex. - added a flag to the `_hideDropIndicator` function so that a reset when showing the indicator doesn't clear the required information --- .../addon/services/koenig-drag-drop-handler.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ghost/admin/lib/koenig-editor/addon/services/koenig-drag-drop-handler.js b/ghost/admin/lib/koenig-editor/addon/services/koenig-drag-drop-handler.js index 4706d0fd5f..9d922a1b06 100644 --- a/ghost/admin/lib/koenig-editor/addon/services/koenig-drag-drop-handler.js +++ b/ghost/admin/lib/koenig-editor/addon/services/koenig-drag-drop-handler.js @@ -341,8 +341,8 @@ export default Service.extend({ _showDropIndicator({direction, position, beforeElems, afterElems}) { let dropIndicator = this._dropIndicator; - // reset everything before re-displaying indicator - this._hideDropIndicator(); + // reset everything except insertIndex before re-displaying indicator + this._hideDropIndicator({clearInsertIndex: false}); if (direction === 'horizontal') { beforeElems.forEach((elem) => { @@ -405,12 +405,15 @@ export default Service.extend({ // TODO: handle vertical drag/drop }, - _hideDropIndicator() { + _hideDropIndicator({clearInsertIndex = true} = {}) { // make sure the indicator isn't shown due to a running timeout run.cancel(this._dropIndicatorTimeout); - // clear droppable insert index - delete this.draggableInfo.insertIndex; + // clear droppable insert index unless instructed not to (eg, when + // resetting the display before re-positioning the indicator) + if (clearInsertIndex) { + delete this.draggableInfo.insertIndex; + } // reset all transforms this._transformedDroppables.forEach((elem) => {