Skip to content

Commit 40aca01

Browse files
authored
Merge pull request #1128 from plotly/updatemenus-events
Add event and test for updatemenus events
2 parents 653fe76 + 5ab16d8 commit 40aca01

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/components/updatemenus/draw.js

+2
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,8 @@ function drawButtons(gd, gHeader, gButton, menuOpts) {
299299
setActive(gd, menuOpts, buttonOpts, gHeader, gButton, buttonIndex);
300300

301301
Plots.executeAPICommand(gd, buttonOpts.method, buttonOpts.args);
302+
303+
gd.emit('plotly_buttonclicked', {menu: menuOpts, button: buttonOpts, active: menuOpts.active});
302304
});
303305

304306
button.on('mouseover', function() {

test/jasmine/tests/updatemenus_test.js

+25
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,31 @@ describe('update menus interactions', function() {
380380
});
381381
});
382382

383+
it('should emit an event on button click', function(done) {
384+
var clickCnt = 0;
385+
var data = [];
386+
gd.on('plotly_buttonclicked', function(datum) {
387+
data.push(datum);
388+
clickCnt++;
389+
});
390+
391+
click(selectHeader(0)).then(function() {
392+
expect(clickCnt).toEqual(0);
393+
394+
return click(selectButton(2));
395+
}).then(function() {
396+
expect(clickCnt).toEqual(1);
397+
expect(data.length).toEqual(1);
398+
expect(data[0].active).toEqual(2);
399+
400+
return click(selectButton(1));
401+
}).then(function() {
402+
expect(clickCnt).toEqual(2);
403+
expect(data.length).toEqual(2);
404+
expect(data[1].active).toEqual(1);
405+
}).catch(fail).then(done);
406+
});
407+
383408
it('should apply update on button click', function(done) {
384409
var header0 = selectHeader(0),
385410
header1 = selectHeader(1);

0 commit comments

Comments
 (0)