Skip to content

Commit 7df0e86

Browse files
author
Alain Dumesny
authored
Merge pull request #1175 from adumesny/develop
added multiple event callbacks
2 parents 8900ee0 + bdecbdb commit 7df0e86

File tree

11 files changed

+46
-47
lines changed

11 files changed

+46
-47
lines changed

demo/advance.html

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,11 @@ <h1>Advanced Demo</h1>
117117
acceptWidgets: '.newWidget'
118118
});
119119

120-
grid.on('added', function(e, items) { log('added ', items) });
121-
grid.on('removed', function(e, items) { log('removed ', items) });
122-
grid.on('change', function(e, items) { log('change ', items) });
123-
function log(type, items) {
120+
grid.on('added removed change', function(e, items) {
124121
var str = '';
125122
items.forEach(function(item) { str += ' (x,y)=' + item.x + ',' + item.y; });
126-
console.log(type + items.length + ' items.' + str );
127-
}
123+
console.log(e.type + ' ' + items.length + ' items:' + str );
124+
});
128125

129126
// TODO: switch jquery-ui out
130127
$('.newWidget').draggable({

demo/column.html

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,11 @@ <h1>column() grid demo</h1>
3838
var grid = GridStack.init({float: true});
3939
var text = document.querySelector('#column-text');
4040

41-
grid.on('added', function(e, items) {log('added ', items)});
42-
grid.on('removed', function(e, items) {log('removed ', items)});
43-
grid.on('change', function(e, items) {log('change ', items)});
44-
function log(type, items) {
41+
grid.on('added removed change', function(e, items) {
4542
var str = '';
4643
items.forEach(function(item) { str += ' (x,y)=' + item.x + ',' + item.y; });
47-
console.log(type + items.length + ' items.' + str );
48-
}
44+
console.log(e.type + ' ' + items.length + ' items:' + str );
45+
});
4946

5047
var items = [
5148
/* match karma testing

demo/serialization.html

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,11 @@ <h1>Serialization demo</h1>
2828
<script type="text/javascript">
2929
var grid = GridStack.init();
3030

31-
grid.on('added', function(e, items) {log('added ', items)});
32-
grid.on('removed', function(e, items) {log('removed ', items)});
33-
grid.on('change', function(e, items) {log('change ', items)});
34-
function log(type, items) {
31+
grid.on('added removed change', function(e, items) {
3532
var str = '';
3633
items.forEach(function(item) { str += ' (x,y)=' + item.x + ',' + item.y; });
37-
console.log(type + items.length + ' items.' + str );
38-
}
34+
console.log(e.type + ' ' + items.length + ' items:' + str );
35+
});
3936

4037
var serializedData = [
4138
{x: 0, y: 0, width: 2, height: 2},

demo/two.html

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,11 @@ <h1>Two grids demo</h1>
116116
];
117117

118118
grids.forEach(function (grid, i) {
119-
grid.on('added', function(e, items) { log(i, ' added ', items) });
120-
grid.on('removed', function(e, items) { log(i, ' removed ', items) });
121-
grid.on('change', function(e, items) { log(i, ' change ', items) });
122-
function log(id, type, items) {
119+
grid.on('added removed change', function(e, items) {
123120
var str = '';
124121
items.forEach(function(item) { str += ' (x,y)=' + item.x + ',' + item.y; });
125-
console.log('grid' + id + type + items.length + ' items.' + str );
126-
}
122+
console.log('grid' + i + ' ' + e.type + ' ' + items.length + ' items:' + str );
123+
});
127124

128125
grid.batchUpdate();
129126
items.forEach(function (node) {

doc/CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Change log
3535

3636
- fix [(1166)](https://github.com/gridstack/gridstack.js/issues/1166) resize not taking margin height into account
3737
- fix [(1155)](https://github.com/gridstack/gridstack.js/issues/1155) `maxRow` now limit initial item placement if out of bound, preventing broken drag behavior
38+
- fix [(1171)](https://github.com/gridstack/gridstack.js/issues/1171) added event support to call `grid.on('added removed change', callback)` again even with native events.
3839

3940
## v1.0.0 (2020-02-23)
4041

doc/README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,11 @@ to completely lock the widget.
123123

124124
## Events
125125

126-
Those are the events set by the grid when items are added/removed or changed - they use standard JS calls with a CustomElement that stores the list
127-
of nodes that changed (id, x, y, width, height, etc...)
126+
Those are the events set by the grid when items are added/removed or changed - they use standard JS calls with a CustomElement `detail` that stores the list
127+
of nodes that changed (id, x, y, width, height, etc...).
128+
129+
You can call it on a single event name, or space separated list:
130+
`grid.on('added removed change', ...)`
128131

129132
### added(event, items)
130133

spec/e2e/html/1142_change_event_missing.html

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,11 @@
2424
<script type="text/javascript">
2525
var grid = GridStack.init({float: false});
2626

27-
grid.on('added', function(e, items) {log('added ', items)});
28-
grid.on('removed', function(e, items) {log('removed ', items)});
29-
grid.on('change', function(e, items) {log('change ', items)});
30-
function log(type, items) {
27+
grid.on('added removed change', function(e, items) {
3128
var str = '';
3229
items.forEach(function(item) { str += ' (x,y)=' + item.x + ',' + item.y; });
33-
console.log(type + items.length + ' items.' + str);
34-
}
30+
console.log(e.type + ' ' + items.length + ' items:' + str );
31+
});
3532

3633
$('.grid-stack .grid-stack-item').click(function(e) {
3734
var item = $(e.currentTarget).closest('.grid-stack-item');

spec/e2e/html/1143_nested_acceptWidget_types.html

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,11 @@
6161
var grid = GridStack.init({ acceptWidgets: '.otherWidgetType' }, '.grid-stack.outer');
6262
var gridNest = GridStack.init({ acceptWidgets: '.newWidget' }, '.grid-stack.nested');
6363

64-
grid.on('added', function(e, items) {log('added ', items)});
65-
grid.on('removed', function(e, items) {log('removed ', items)});
66-
grid.on('change', function(e, items) {log('change ', items)});
67-
function log(type, items) {
64+
grid.on('added removed change', function(e, items) {
6865
var str = '';
6966
items.forEach(function(item) { str += ' (x,y)=' + item.x + ',' + item.y; });
70-
console.log(type + items.length + ' items.' + str );
71-
}
67+
console.log(e.type + ' ' + items.length + ' items:' + str );
68+
});
7269

7370
$('.newWidget').draggable({
7471
revert: 'invalid',

spec/e2e/html/events.html

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,11 @@ <h1>Events test</h1>
3030
+ count++ + '</div></div>');
3131
};
3232

33-
grid.on('added', function(e, items) {log('added ', items)});
34-
grid.on('removed', function(e, items) {log('removed ', items)});
35-
grid.on('change', function(e, items) {log('change ', items)});
36-
function log(type, items) {
33+
grid.on('added removed change', function(e, items) {
3734
var str = '';
38-
items.forEach(function(item) { str += ' (x,y,wxh)=' + item.x + ',' + item.y + ' ' + item.width + 'x' + item.height; });
39-
console.log(type + items.length + ' items.' + str );
40-
}
35+
items.forEach(function(item) { str += ' (x,y)=' + item.x + ',' + item.y; });
36+
console.log(e.type + ' ' + items.length + ' items:' + str );
37+
});
4138

4239
grid.on('disable', function(event) {
4340
var grid = event.target;

src/gridstack.d.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ interface GridStackHTMLElement extends HTMLElement {
2424
gridstack: GridStack;
2525
}
2626
type GridStackEvent = 'added' | 'change' | 'disable' | 'dragstart' | 'dragstop' | 'dropped' |
27-
'enable' | 'removed' | 'resize' | 'resizestart' | 'gsresizestop';
27+
'enable' | 'removed' | 'resize' | 'resizestart' | 'gsresizestop' | string;
2828

2929
interface GridStack {
3030
/**
@@ -296,12 +296,14 @@ interface GridStack {
296296
/**
297297
* Event handler that extracts our CustomEvent data out automatically for receiving custom
298298
* notifications (see doc for supported events)
299-
* @param name of the event (see possible values)
299+
* @param name of the event (see possible values) or list of names space separated
300300
* @param callback function called with event and optional second/third param
301301
* (see README documentation for each signature).
302302
*
303303
* @example
304304
* grid.on('added', function(e, items) { log('added ', items)} );
305+
* or
306+
* grid.on('added removed change', function(e, items) { log(e.type, items)} );
305307
*
306308
* Note: in some cases it is the same as calling native handler and parsing the event.
307309
* grid.el.addEventListener('added', function(event) { log('added ', event.detail)} );

0 commit comments

Comments
 (0)