diff --git a/draftlogs/5771_fix.md b/draftlogs/5771_fix.md new file mode 100644 index 00000000000..12466352283 --- /dev/null +++ b/draftlogs/5771_fix.md @@ -0,0 +1,2 @@ + - Allow clickable legend group titles when group has no pie-like traces [[#5771](https://github.com/plotly/plotly.js/pull/5771)] + diff --git a/src/components/legend/get_legend_data.js b/src/components/legend/get_legend_data.js index 7d236ae7617..6e54ac137f9 100644 --- a/src/components/legend/get_legend_data.js +++ b/src/components/legend/get_legend_data.js @@ -118,7 +118,7 @@ module.exports = function getLegendData(calcdata, opts) { legendData[i].forEach(function(a, k) { a._preSort = k; }); legendData[i].sort(orderFn2); - var firstItem = legendData[i][0]; + var firstItemTrace = legendData[i][0].trace; var groupTitle = null; // get group title text @@ -134,12 +134,23 @@ module.exports = function getLegendData(calcdata, opts) { if(reversed) legendData[i].reverse(); if(groupTitle) { + var hasPieLike = false; + for(j = 0; j < legendData[i].length; j++) { + if(Registry.traceIs(legendData[i][j].trace, 'pie-like')) { + hasPieLike = true; + break; + } + } + // set group title text legendData[i].unshift({ i: -1, groupTitle: groupTitle, + noClick: hasPieLike, trace: { - showlegend: firstItem.trace.showlegend + showlegend: firstItemTrace.showlegend, + legendgroup: firstItemTrace.legendgroup, + visible: firstItemTrace.visible } }); } diff --git a/src/components/legend/handle_click.js b/src/components/legend/handle_click.js index 8c33fb975de..f2b21412f04 100644 --- a/src/components/legend/handle_click.js +++ b/src/components/legend/handle_click.js @@ -32,7 +32,7 @@ module.exports = function handleClick(g, gd, numClicks) { []; var legendItem = g.data()[0][0]; - if(legendItem.groupTitle) return; // no click on group legends for now + if(legendItem.groupTitle && legendItem.noClick) return; var fullData = gd._fullData; var fullTrace = legendItem.trace;