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

Skip to content

Commit 7f0d622

Browse files
committed
Merge pull request gridstack#190 from boreal-is/master
Trigger change event for add/remove
2 parents ed29eed + 187e13a commit 7f0d622

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ to completely lock the widget.
159159

160160
### onchange(items)
161161

162-
Occurs when widgets change their position/size
162+
Occurs when adding/removing widgets or existing widgets change their position/size
163163

164164
```javascript
165165
var serialize_widget_map = function (items) {

src/gridstack.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,21 @@
511511
$(window).resize(this.on_resize_handler);
512512
this.on_resize_handler();
513513
};
514+
515+
GridStack.prototype._trigger_change_event = function(forceTrigger) {
516+
var elements = this.grid.get_dirty_nodes();
517+
var hasChanges = false;
518+
519+
var eventParams = [];
520+
if (elements && elements.length) {
521+
eventParams.push(elements);
522+
hasChanges = true;
523+
}
524+
525+
if (hasChanges || forceTrigger === true) {
526+
this.container.trigger('change', eventParams);
527+
}
528+
};
514529

515530
GridStack.prototype._init_styles = function() {
516531
if (this._styles_id) {
@@ -640,9 +655,7 @@
640655
.attr('data-gs-height', node.height)
641656
.removeAttr('style');
642657
self._update_container_height();
643-
var elements = self.grid.get_dirty_nodes();
644-
if (elements && elements.length)
645-
self.container.trigger('change', [elements]);
658+
self._trigger_change_event();
646659

647660
self.grid.end_update();
648661
};
@@ -706,6 +719,7 @@
706719
this.container.append(el);
707720
this._prepare_element(el);
708721
this._update_container_height();
722+
this._trigger_change_event(true);
709723

710724
return el;
711725
};
@@ -724,6 +738,7 @@
724738
this._update_container_height();
725739
if (detach_node)
726740
el.remove();
741+
this._trigger_change_event(true);
727742
};
728743

729744
GridStack.prototype.remove_all = function(detach_node) {
@@ -857,9 +872,7 @@
857872
callback.call(this, el, node);
858873

859874
self._update_container_height();
860-
var elements = self.grid.get_dirty_nodes();
861-
if (elements && elements.length)
862-
self.container.trigger('change', [elements]);
875+
self._trigger_change_event();
863876

864877
self.grid.end_update();
865878
};

0 commit comments

Comments
 (0)