Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eeff06d

Browse files
committed
incapsulate drag/drop into plugin
1 parent 0b3b47c commit eeff06d

File tree

4 files changed

+117
-43
lines changed

4 files changed

+117
-43
lines changed

dist/gridstack.js

Lines changed: 57 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,18 @@
140140
return this;
141141
};
142142

143+
GridStackDragDropPlugin.prototype.droppable = function(el, opts) {
144+
return this;
145+
};
146+
147+
GridStackDragDropPlugin.prototype.isDroppable = function(el) {
148+
return false;
149+
};
150+
151+
GridStackDragDropPlugin.prototype.on = function(el, eventName, callback) {
152+
return this;
153+
};
154+
143155
/**
144156
* @class JQueryUIGridStackDragDropPlugin
145157
* jQuery UI implementation of drag'n'drop gridstack plugin.
@@ -152,6 +164,7 @@
152164
JQueryUIGridStackDragDropPlugin.prototype.constructor = JQueryUIGridStackDragDropPlugin;
153165

154166
JQueryUIGridStackDragDropPlugin.prototype.resizable = function(el, opts) {
167+
el = $(el);
155168
if (opts === 'disable' || opts === 'enable') {
156169
el.resizable(opts);
157170
} else {
@@ -165,6 +178,7 @@
165178
};
166179

167180
JQueryUIGridStackDragDropPlugin.prototype.draggable = function(el, opts) {
181+
el = $(el);
168182
if (opts === 'disable' || opts === 'enable') {
169183
el.draggable(opts);
170184
} else {
@@ -178,6 +192,28 @@
178192
return this;
179193
};
180194

195+
JQueryUIGridStackDragDropPlugin.prototype.droppable = function(el, opts) {
196+
el = $(el);
197+
if (opts === 'disable' || opts === 'enable') {
198+
el.droppable(opts);
199+
} else {
200+
el.droppable({
201+
accept: opts.accept
202+
});
203+
}
204+
return this;
205+
};
206+
207+
JQueryUIGridStackDragDropPlugin.prototype.isDroppable = function(el, opts) {
208+
el = $(el);
209+
return Boolean(el.data('droppable'));
210+
};
211+
212+
JQueryUIGridStackDragDropPlugin.prototype.on = function(el, eventName, callback) {
213+
$(el).on(eventName, callback);
214+
return this;
215+
};
216+
181217
var idSeq = 0;
182218

183219
var GridStackEngine = function(width, onchange, floatMode, height, items) {
@@ -765,21 +801,21 @@
765801

766802
if (!self.opts.staticGrid && typeof self.opts.removable === 'string') {
767803
var trashZone = $(self.opts.removable);
768-
if (!trashZone.data('droppable')) {
769-
trashZone.droppable({
804+
if (!this.dd.isDroppable(trashZone)) {
805+
this.dd.droppable(trashZone, {
770806
accept: '.' + self.opts.itemClass
771807
});
772808
}
773-
trashZone
774-
.on('dropover', function(event, ui) {
809+
this.dd
810+
.on(trashZone, 'dropover', function(event, ui) {
775811
var el = $(ui.draggable);
776812
var node = el.data('_gridstack_node');
777813
if (node._grid !== self) {
778814
return;
779815
}
780816
self._setupRemovingTimeout(el);
781817
})
782-
.on('dropout', function(event, ui) {
818+
.on(trashZone, 'dropout', function(event, ui) {
783819
var el = $(ui.draggable);
784820
var node = el.data('_gridstack_node');
785821
if (node._grid !== self) {
@@ -829,16 +865,18 @@
829865
}
830866
};
831867

832-
$(self.container).droppable({
833-
accept: function(el) {
834-
el = $(el);
835-
var node = el.data('_gridstack_node');
836-
if (node && node._grid === self) {
837-
return false;
868+
this.dd
869+
.droppable(self.container, {
870+
accept: function(el) {
871+
el = $(el);
872+
var node = el.data('_gridstack_node');
873+
if (node && node._grid === self) {
874+
return false;
875+
}
876+
return el.is(self.opts.acceptWidgets === true ? '.grid-stack-item' : self.opts.acceptWidgets);
838877
}
839-
return el.is(self.opts.acceptWidgets === true ? '.grid-stack-item' : self.opts.acceptWidgets);
840-
},
841-
over: function(event, ui) {
878+
})
879+
.on(self.container, 'dropover', function(event, ui) {
842880
var offset = self.container.offset();
843881
var el = $(ui.draggable);
844882
var cellWidth = self.cellWidth();
@@ -855,8 +893,8 @@
855893
el.data('_gridstack_node_orig', origNode);
856894

857895
el.on('drag', onDrag);
858-
},
859-
out: function(event, ui) {
896+
})
897+
.on(self.container, 'dropout', function(event, ui) {
860898
var el = $(ui.draggable);
861899
el.unbind('drag', onDrag);
862900
var node = el.data('_gridstack_node');
@@ -865,8 +903,8 @@
865903
self.placeholder.detach();
866904
self._updateContainerHeight();
867905
el.data('_gridstack_node', el.data('_gridstack_node_orig'));
868-
},
869-
drop: function(event, ui) {
906+
})
907+
.on(self.container, 'drop', function(event, ui) {
870908
self.placeholder.detach();
871909

872910
var node = $(ui.draggable).data('_gridstack_node');
@@ -893,8 +931,7 @@
893931
self._triggerChangeEvent();
894932

895933
self.grid.endUpdate();
896-
}
897-
});
934+
});
898935
}
899936
};
900937

0 commit comments

Comments
 (0)