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

Skip to content

Commit 187e13a

Browse files
committed
Trigger change event for add/remove
Trigger change event for add_widget / remove_widget methods and refactor the trigger into a method for uniformity
1 parent 5b73939 commit 187e13a

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
@@ -158,7 +158,7 @@ to completely lock the widget.
158158

159159
### onchange(items)
160160

161-
Occurs when widgets change their position/size
161+
Occurs when adding/removing widgets or existing widgets change their position/size
162162

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

src/gridstack.js

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

513528
GridStack.prototype._init_styles = function() {
514529
if (this._styles_id) {
@@ -638,9 +653,7 @@
638653
.attr('data-gs-height', node.height)
639654
.removeAttr('style');
640655
self._update_container_height();
641-
var elements = self.grid.get_dirty_nodes();
642-
if (elements && elements.length)
643-
self.container.trigger('change', [elements]);
656+
self._trigger_change_event();
644657

645658
self.grid.end_update();
646659
};
@@ -704,6 +717,7 @@
704717
this.container.append(el);
705718
this._prepare_element(el);
706719
this._update_container_height();
720+
this._trigger_change_event(true);
707721

708722
return el;
709723
};
@@ -722,6 +736,7 @@
722736
this._update_container_height();
723737
if (detach_node)
724738
el.remove();
739+
this._trigger_change_event(true);
725740
};
726741

727742
GridStack.prototype.remove_all = function(detach_node) {
@@ -846,9 +861,7 @@
846861
callback.call(this, el, node);
847862

848863
self._update_container_height();
849-
var elements = self.grid.get_dirty_nodes();
850-
if (elements && elements.length)
851-
self.container.trigger('change', [elements]);
864+
self._trigger_change_event();
852865

853866
self.grid.end_update();
854867
};

0 commit comments

Comments
 (0)