From 77d6719c68a6c97964a20397d0db5330bb91bc15 Mon Sep 17 00:00:00 2001 From: Maxwell Rebo Date: Mon, 25 Jul 2016 18:32:55 -0400 Subject: [PATCH 1/3] Update package.json --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d6b19c..da5c975 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "description": "A Packery component for React.js", "dependencies": { "packery": "eiriklv/packery", - "imagesloaded": "eiriklv/imagesloaded" + "imagesloaded": "eiriklv/imagesloaded", + "draggabilly": "^2.1.1" }, "devDependencies": {}, "scripts": { From 068ec74287c01cae6fdd7ddd7cdab4ccab17962d Mon Sep 17 00:00:00 2001 From: Maxwell Rebo Date: Mon, 25 Jul 2016 19:24:38 -0400 Subject: [PATCH 2/3] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index da5c975..23f620d 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "main": "./lib/index", "description": "A Packery component for React.js", "dependencies": { - "packery": "eiriklv/packery", + "packery": "metafizzy/packery", "imagesloaded": "eiriklv/imagesloaded", "draggabilly": "^2.1.1" }, From aabbabc8caf488546dddc7a817e722ed1b4c6aaf Mon Sep 17 00:00:00 2001 From: Maxwell Rebo Date: Mon, 25 Jul 2016 19:27:39 -0400 Subject: [PATCH 3/3] Update index.js --- lib/index.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/index.js b/lib/index.js index 35ce392..366c307 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,8 +1,10 @@ var isBrowser = (typeof window !== 'undefined'); var Packery = isBrowser ? window.Packery || require('packery') : null; +var Draggabilly = isBrowser ? window.Draggabilly || require('draggabilly') : null; var imagesloaded = isBrowser ? require('imagesloaded') : null; var refName = 'packeryContainer'; + function PackeryComponent(React) { return React.createClass({ packery: false, @@ -25,6 +27,13 @@ function PackeryComponent(React) { }; }, + makeEachDraggable: function(itemElem){ + // make element draggable with Draggabilly + var draggie = new Draggabilly(itemElem); + // bind Draggabilly events to Packery + this.packery.bindDraggabillyEvents(draggie); + }, + initializePackery: function(force) { if (!this.packery || force) { this.packery = new Packery( @@ -32,6 +41,7 @@ function PackeryComponent(React) { this.props.options ); + this.packery.getItemElements().forEach( this.makeEachDraggable ); this.domChildren = this.getNewDomChildren(); } }, @@ -124,22 +134,18 @@ function PackeryComponent(React) { if (diff.removed.length > 0) { this.packery.remove(diff.removed); - this.packery.reloadItems(); } if (diff.appended.length > 0) { this.packery.appended(diff.appended); - this.packery.reloadItems(); } if (diff.prepended.length > 0) { this.packery.prepended(diff.prepended); } - if (diff.moved.length > 0) { - this.packery.reloadItems(); - } - + this.packery.reloadItems(); + this.packery.getItemElements().forEach( this.makeEachDraggable ); this.packery.layout(); },