From 32c1a92dc3e77ac3de7c5b767df17bd0ce5b8515 Mon Sep 17 00:00:00 2001 From: Joan Karadimov Date: Mon, 5 Feb 2018 20:18:55 +0200 Subject: [PATCH 1/8] Improve the handling of coordinates when sorting horizontally --- addon/services/drag-coordinator.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/addon/services/drag-coordinator.js b/addon/services/drag-coordinator.js index 5852a34..4c5f89f 100644 --- a/addon/services/drag-coordinator.js +++ b/addon/services/drag-coordinator.js @@ -62,18 +62,26 @@ export default Ember.Service.extend({ const currentOffsetItem = this.get('currentOffsetItem'); const pos = this.relativeClientPosition(emberObject.$()[0], event); const hasSameSortingScope = this.get('currentDragItem.sortingScope') === emberObject.get('sortingScope'); - let moveDirection = false; + let moveDirections = []; if (!this.get('lastEvent')) { this.set('lastEvent', event); } if (event.originalEvent.clientY < this.get('lastEvent').originalEvent.clientY) { - moveDirection = 'up'; + moveDirections.push('up'); } if (event.originalEvent.clientY > this.get('lastEvent').originalEvent.clientY) { - moveDirection = 'down'; + moveDirections.push('down'); + } + + if (event.originalEvent.clientX < this.get('lastEvent').originalEvent.clientX) { + moveDirections.push('left'); + } + + if (event.originalEvent.clientX > this.get('lastEvent').originalEvent.clientX) { + moveDirections.push('right'); } this.set('lastEvent', event); @@ -81,7 +89,10 @@ export default Ember.Service.extend({ if (!this.get('isMoving')) { if (event.target !== this.get('currentDragEvent').target && hasSameSortingScope) { //if not dragging over self if (currentOffsetItem !== emberObject) { - if (pos.py > 0.33 && moveDirection === 'up' || pos.py > 0.33 && moveDirection === 'down') { + if (pos.py < 0.67 && moveDirections.indexOf('up') >= 0 || + pos.py > 0.33 && moveDirections.indexOf('down') >= 0 || + pos.px < 0.67 && moveDirections.indexOf('left') >= 0 || + pos.px > 0.33 && moveDirections.indexOf('right') >= 0) { this.moveElements(emberObject); this.set('currentOffsetItem', emberObject); From 2f9d18bb43a1f56591671ff7fc605eeba29c73c2 Mon Sep 17 00:00:00 2001 From: Mike Swieton Date: Wed, 22 Jan 2020 15:05:40 -0500 Subject: [PATCH 2/8] Fixing originalEvent reference --- addon/services/drag-coordinator.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addon/services/drag-coordinator.js b/addon/services/drag-coordinator.js index c9356ae..d9f81ee 100644 --- a/addon/services/drag-coordinator.js +++ b/addon/services/drag-coordinator.js @@ -83,19 +83,19 @@ export default Service.extend({ this.set('lastEvent', event); } - if (event.clientY < this.get('lastEvent').originalEvent.clientY) { + if (event.clientY < this.get('lastEvent').clientY) { moveDirections.push('up'); } - if (event.clientY > this.get('lastEvent').originalEvent.clientY) { + if (event.clientY > this.get('lastEvent').clientY) { moveDirections.push('down'); } - if (event.clientX < this.get('lastEvent').originalEvent.clientX) { + if (event.clientX < this.get('lastEvent').clientX) { moveDirections.push('left'); } - if (event.clientX > this.get('lastEvent').originalEvent.clientX) { + if (event.clientX > this.get('lastEvent').clientX) { moveDirections.push('right'); } From cce5a7d00405027d5cb86c7936c141c53b400574 Mon Sep 17 00:00:00 2001 From: Marc de Niverville Date: Fri, 17 Apr 2020 16:51:39 -0400 Subject: [PATCH 3/8] passes dragged element to trigger dragend event --- test-support/helpers/drag-drop.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test-support/helpers/drag-drop.js b/test-support/helpers/drag-drop.js index 77f30f0..a8189d3 100644 --- a/test-support/helpers/drag-drop.js +++ b/test-support/helpers/drag-drop.js @@ -12,7 +12,7 @@ async function dragOver(dropSelector, moves) { } } -async function drop(dragSelector, dragEvent, options) { +async function drop(dragElement, dragEvent, options) { let { drop: dropSelector, dropEndOptions, dragOverMoves } = options; let dropElement = await find(dropSelector); @@ -29,11 +29,12 @@ async function drop(dragSelector, dragEvent, options) { let event = new MockEvent().useDataTransferData(dragEvent); await triggerEvent(dropSelector, 'drop', event); - return await triggerEvent(dragSelector, 'dragend', dropEndOptions); + return await triggerEvent(dragElement, 'dragend', dropEndOptions); } export async function drag(dragSelector, options = {}) { let dragEvent = new MockEvent(options.dragStartOptions); + const dragElement = document.querySelector(dragSelector); await triggerEvent(dragSelector, 'mouseover'); @@ -44,6 +45,6 @@ export async function drag(dragSelector, options = {}) { } if (options.drop) { - await drop(dragSelector, dragEvent, options); + await drop(dragElement, dragEvent, options); } -} \ No newline at end of file +} From 98c710691c48d7c698ad0206e9bdf0c456fb07b6 Mon Sep 17 00:00:00 2001 From: Josiah Campbell Date: Thu, 7 May 2020 15:05:16 -0400 Subject: [PATCH 4/8] fix ember mouseEnter deprecation --- addon/components/draggable-object-target.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/addon/components/draggable-object-target.js b/addon/components/draggable-object-target.js index 97c2c8d..5c19f2c 100644 --- a/addon/components/draggable-object-target.js +++ b/addon/components/draggable-object-target.js @@ -55,13 +55,23 @@ export default Component.extend(Droppable, { } }, - mouseEnter(e) { + handleMouseEnter(e) { let mouseEnter = this.get('onMouseEnter'); if (mouseEnter) { mouseEnter(e); } }, + didInsertElement() { + this._super(...arguments); + this.element.addEventListener('mouseenter', this.handleMouseEnter); + }, + + willDestroyElement() { + this._super(...arguments); + this.element.removeEventListener('mouseenter', this.handleMouseEnter); + }, + actions: { acceptForDrop() { let hashId = this.get('coordinator.clickedId'); From b034f92117e39b58e9ae873f213a438dd83e7a79 Mon Sep 17 00:00:00 2001 From: Jack Rowlingson Date: Thu, 23 Jul 2020 11:04:59 -0400 Subject: [PATCH 5/8] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 5571140..ee9b02d 100644 --- a/README.md +++ b/README.md @@ -360,7 +360,6 @@ export default Ember.ArrayController.extend({ post.save(); } } -} }); ``` From 71f86301796d630ac25c95279e7e35055e7978d1 Mon Sep 17 00:00:00 2001 From: "Gabriel J. Csapo" Date: Fri, 6 Mar 2020 11:27:58 -0800 Subject: [PATCH 6/8] [strict] when trying to use the strict resolver, the service is not found because of the casing. --- .travis.yml | 2 +- addon/components/draggable-object.js | 4 ++-- addon/components/sortable-objects.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index cc1ba6e..889b709 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: node_js node_js: # we recommend testing addons with the same minimum supported node version as Ember CLI # so that your addon works for all apps - - "8" + - "10" sudo: false dist: trusty diff --git a/addon/components/draggable-object.js b/addon/components/draggable-object.js index 8a32d24..07d8236 100644 --- a/addon/components/draggable-object.js +++ b/addon/components/draggable-object.js @@ -7,7 +7,7 @@ import { set } from '@ember/object'; import { wrapper } from 'ember-drag-drop/utils/proxy-unproxy-objects'; export default Component.extend({ - dragCoordinator: service(), + dragCoordinator: service('drag-coordinator'), overrideClass: 'draggable-object', classNameBindings: [':js-draggableObject','isDraggingObject:is-dragging-object:', 'overrideClass'], attributeBindings: ['dragReady:draggable'], @@ -26,7 +26,7 @@ export default Component.extend({ proxyContent: computed('content', function() { return wrapper(this.get('content')); }), - + init() { this._super(...arguments); diff --git a/addon/components/sortable-objects.js b/addon/components/sortable-objects.js index 9ca3ade..a4fef47 100644 --- a/addon/components/sortable-objects.js +++ b/addon/components/sortable-objects.js @@ -3,7 +3,7 @@ import { inject as service } from '@ember/service'; import { A } from '@ember/array'; export default Component.extend( { - dragCoordinator: service(), + dragCoordinator: service('drag-coordinator'), overrideClass: 'sortable-objects', classNameBindings: ['overrideClass'], enableSort: true, From b7c654f480dea3559d7f4a6c8ec56d8506f8f0c0 Mon Sep 17 00:00:00 2001 From: Gabriel Csapo Date: Mon, 27 Jul 2020 10:27:48 -0700 Subject: [PATCH 7/8] trying to trigger ci --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 889b709..1d3284d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,7 @@ env: global: # See https://git.io/vdao3 for details. - JOBS=1 + matrix: # we recommend new addons test the current and previous LTS # as well as latest stable release (bonus points to beta/canary) From f932f1ed3e9c011c5b8786e22e17b8d58368a55b Mon Sep 17 00:00:00 2001 From: Nicholas Rutherford Date: Wed, 26 Aug 2020 02:30:24 +0100 Subject: [PATCH 8/8] Throw Errors, not strings so Bugsnag and the like can get a Stacktrace, and not complain about it being a string --- addon/components/object-bin.js | 2 +- app/models/obj-hash.js | 2 +- test-support/helpers/drag-drop.js | 2 +- test-support/helpers/ember-drag-drop.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addon/components/object-bin.js b/addon/components/object-bin.js index 58011e4..be2f5db 100644 --- a/addon/components/object-bin.js +++ b/addon/components/object-bin.js @@ -7,7 +7,7 @@ function removeOne(arr,obj) { var l2 = arr.get('length'); if (l-1 !== l2) { - throw "bad length " + l + " " + l2; + throw new Error("bad length " + l + " " + l2); } } diff --git a/app/models/obj-hash.js b/app/models/obj-hash.js index c6581e7..bff7cd4 100644 --- a/app/models/obj-hash.js +++ b/app/models/obj-hash.js @@ -21,7 +21,7 @@ export default EmberObject.extend({ getObj: function(key) { var res = this.get('content')[key]; if (!res) { - throw "no obj for key "+key; + throw new Error("no obj for key "+key); } return res; }, diff --git a/test-support/helpers/drag-drop.js b/test-support/helpers/drag-drop.js index 77f30f0..17a94cd 100644 --- a/test-support/helpers/drag-drop.js +++ b/test-support/helpers/drag-drop.js @@ -17,7 +17,7 @@ async function drop(dragSelector, dragEvent, options) { let dropElement = await find(dropSelector); if (!dropElement) { - throw(`There are no drop targets by the given selector: '${dropSelector}'`); + throw new Error(`There are no drop targets by the given selector: '${dropSelector}'`); } await dragOver(dropSelector, dragOverMoves); diff --git a/test-support/helpers/ember-drag-drop.js b/test-support/helpers/ember-drag-drop.js index edb2c53..45f1c9f 100644 --- a/test-support/helpers/ember-drag-drop.js +++ b/test-support/helpers/ember-drag-drop.js @@ -6,7 +6,7 @@ function drop($dragHandle, dropCssPath, dragEvent) { let dropTarget = document.querySelector(dropCssPath); if (dropTarget.length === 0) { - throw(`There are no drop targets by the given selector: '${dropCssPath}'`); + throw new Error(`There are no drop targets by the given selector: '${dropCssPath}'`); } run(() => {