Skip to content

Commit b9dad67

Browse files
committed
add user-select-none to text elements
1 parent 86f5e2d commit b9dad67

File tree

18 files changed

+46
-14
lines changed

18 files changed

+46
-14
lines changed

src/components/annotations/draw.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,9 @@ function drawRaw(gd, options, index, subplotId, xa, ya) {
217217
Lib.templateString(options.text, fullLayout._meta) :
218218
options.text;
219219

220-
var annText = annTextGroupInner.append('text')
220+
var annText = annTextGroupInner
221+
.classed('user-select-none', true)
222+
.append('text')
221223
.classed('annotation-text', true)
222224
.text(text);
223225

src/components/colorbar/draw.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ function draw(gd) {
5353
Lib.ensureSingle(g, 'g', cn.cbfills);
5454
Lib.ensureSingle(g, 'g', cn.cblines);
5555
Lib.ensureSingle(g, 'g', cn.cbaxis, function(s) { s.classed(cn.crisp, true); });
56-
Lib.ensureSingle(g, 'g', cn.cbtitleunshift, function(s) { s.append('g').classed(cn.cbtitle, true); });
56+
Lib.ensureSingle(g, 'g', cn.cbtitleunshift, function(s) {
57+
s.append('g')
58+
.classed('user-select-none', true)
59+
.classed(cn.cbtitle, true);
60+
});
5761
Lib.ensureSingle(g, 'rect', cn.cboutline);
5862

5963
var done = drawColorBar(g, opts, gd);

src/components/fx/hover.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,7 @@ function createHoverText(hoverData, opts, gd) {
813813
var commonLabel = container.selectAll('g.axistext')
814814
.data(showCommonLabel ? [0] : []);
815815
commonLabel.enter().append('g')
816+
.classed('user-select-none', true)
816817
.classed('axistext', true);
817818
commonLabel.exit().remove();
818819

@@ -1083,6 +1084,7 @@ function createHoverText(hoverData, opts, gd) {
10831084
return hoverDataKey(d);
10841085
});
10851086
hoverLabels.enter().append('g')
1087+
.classed('user-select-none', true)
10861088
.classed('hovertext', true)
10871089
.each(function() {
10881090
var g = d3.select(this);

src/components/legend/style.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,10 @@ module.exports = function style(s, gd, legend) {
282282
var txt = ptgroup.selectAll('g.pointtext')
283283
.data(showText ? dMod : []);
284284
txt.enter()
285-
.append('g').classed('pointtext', true)
286-
.append('text').attr('transform', 'translate(20,0)');
285+
.append('g')
286+
.classed('user-select-none', true)
287+
.classed('pointtext', true)
288+
.append('text').attr('transform', 'translate(20,0)');
287289
txt.exit().remove();
288290
txt.selectAll('text').call(Drawing.textPointStyle, tMod, gd);
289291
}

src/components/titles/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ function draw(gd, titleClass, options) {
105105
var elShouldExist = txt || editable;
106106

107107
if(!group) {
108-
group = Lib.ensureSingle(fullLayout._infolayer, 'g', 'g-' + titleClass);
108+
group = Lib.ensureSingle(fullLayout._infolayer, 'g', 'g-' + titleClass)
109+
.classed('user-select-none', true);
109110
}
110111

111112
var el = group.selectAll('text')

src/plots/cartesian/axes.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2732,6 +2732,7 @@ axes.drawLabels = function(gd, ax, opts) {
27322732
var labelsReady = [];
27332733

27342734
tickLabels.enter().append('g')
2735+
.classed('user-select-none', true)
27352736
.classed(cls, 1)
27362737
.append('text')
27372738
// only so tex has predictable alignment that we can

src/traces/bar/plot.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
122122
var bars = pointGroup.selectAll('g.point').data(Lib.identity, keyFunc);
123123

124124
bars.enter().append('g')
125+
.classed('user-select-none', true)
125126
.classed('point', true);
126127

127128
bars.exit().remove();

src/traces/carpet/plot.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ module.exports = function plot(gd, plotinfo, cdcarpet, carpetLayer) {
3434
var minorLayer = Lib.ensureSingle(axisLayer, 'g', 'minorlayer');
3535
var majorLayer = Lib.ensureSingle(axisLayer, 'g', 'majorlayer');
3636
var boundaryLayer = Lib.ensureSingle(axisLayer, 'g', 'boundarylayer');
37-
var labelLayer = Lib.ensureSingle(axisLayer, 'g', 'labellayer');
37+
var labelLayer = Lib.ensureSingle(axisLayer, 'g', 'labellayer')
38+
.classed('user-select-none', true);
3839

3940
axisLayer.style('opacity', trace.opacity);
4041

@@ -206,7 +207,8 @@ function drawAxisTitle(gd, layer, trace, t, xy, dxy, axis, xa, ya, labelOrientat
206207
var titleJoin = layer.selectAll('text.' + labelClass).data(data);
207208
var offset = labelOrientation.maxExtent;
208209

209-
titleJoin.enter().append('text')
210+
titleJoin.enter()
211+
.append('text')
210212
.classed(labelClass, true);
211213

212214
// There's only one, but we'll do it as a join so it's updated nicely:
@@ -227,7 +229,8 @@ function drawAxisTitle(gd, layer, trace, t, xy, dxy, axis, xa, ya, labelOrientat
227229

228230
var el = d3.select(this);
229231

230-
el.text(axis.title.text)
232+
el.classed('user-select-none', true)
233+
.text(axis.title.text)
231234
.call(svgTextUtils.convertToTspans, gd);
232235

233236
if(reverseTitle) {
@@ -239,7 +242,6 @@ function drawAxisTitle(gd, layer, trace, t, xy, dxy, axis, xa, ya, labelOrientat
239242
'rotate(' + orientation.angle + ') ' +
240243
'translate(0,' + offset + ')'
241244
)
242-
.classed('user-select-none', true)
243245
.attr('text-anchor', 'middle')
244246
.call(Drawing.font, axis.title.font);
245247
});

src/traces/contour/plot.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ function makeLinesAndLabels(plotgroup, pathinfo, gd, cd0, contours) {
228228
labelGroup.exit().remove();
229229

230230
labelGroup.enter().append('g')
231+
.classed('user-select-none', true)
231232
.classed('contourlabels', true);
232233

233234
if(showLabels) {

src/traces/contourcarpet/plot.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ function makeLinesAndLabels(plotgroup, pathinfo, gd, cd0, contours, plotinfo, ca
161161
labelGroup.exit().remove();
162162

163163
labelGroup.enter().append('g')
164+
.classed('user-select-none', true)
164165
.classed('contourlabels', true);
165166

166167
if(showLabels) {

src/traces/funnelarea/plot.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ module.exports = function plot(gd, cdModule) {
8989
.data(pt.text && (textPosition !== 'none') ? [0] : []);
9090

9191
sliceTextGroup.enter().append('g')
92+
.classed('user-select-none', true)
9293
.classed('slicetext', true);
9394
sliceTextGroup.exit().remove();
9495

@@ -141,6 +142,7 @@ module.exports = function plot(gd, cdModule) {
141142
.data(trace.title.text ? [0] : []);
142143

143144
titleTextGroup.enter().append('g')
145+
.classed('user-select-none', true)
144146
.classed('titletext', true);
145147
titleTextGroup.exit().remove();
146148

src/traces/parcats/parcats.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ function performPlot(parcatsModels, graphDiv, layout, svg) {
225225

226226
// Initialize category label
227227
categoryGroupEnterSelection
228+
.classed('user-select-none', true)
228229
.append('text')
229230
.attr('class', 'catlabel')
230231
.attr('pointer-events', 'none');

src/traces/pie/plot.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ function plot(gd, cdModule) {
140140
.data(pt.text && (textPosition !== 'none') ? [0] : []);
141141

142142
sliceTextGroup.enter().append('g')
143+
.classed('user-select-none', true)
143144
.classed('slicetext', true);
144145
sliceTextGroup.exit().remove();
145146

@@ -212,6 +213,7 @@ function plot(gd, cdModule) {
212213
.data(trace.title.text ? [0] : []);
213214

214215
titleTextGroup.enter().append('g')
216+
.classed('user-select-none', true)
215217
.classed('titletext', true);
216218
titleTextGroup.exit().remove();
217219

src/traces/scatter/plot.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition
470470

471471
// each text needs to go in its own 'g' in case
472472
// it gets converted to mathjax
473-
join.enter().append('g').classed('textpoint', true).append('text');
473+
join.enter().append('g')
474+
.classed('user-select-none', true)
475+
.classed('textpoint', true)
476+
.append('text');
474477

475478
join.order();
476479

src/traces/scattergeo/plot.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ var style = require('./style');
2323

2424
function plot(gd, geo, calcData) {
2525
var scatterLayer = geo.layers.frontplot.select('.scatterlayer');
26-
var gTraces = Lib.makeTraceGroups(scatterLayer, calcData, 'trace scattergeo');
26+
var gTraces = Lib.makeTraceGroups(scatterLayer, calcData, 'trace scattergeo')
27+
.classed('user-select-none', true);
2728

2829
function removeBADNUM(d, node) {
2930
if(d.lonlat[0] === BADNUM) {

src/traces/sunburst/plot.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,9 @@ function plotOne(gd, cd, element, transitionOpts) {
254254

255255
slicePath.call(styleOne, pt, trace);
256256

257-
var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext');
257+
var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext')
258+
.classed('user-select-none', true);
259+
258260
var sliceText = Lib.ensureSingle(sliceTextGroup, 'text', '', function(s) {
259261
// prohibit tex interpretation until we can handle
260262
// tex and regular text together

src/traces/treemap/draw_ancestors.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,9 @@ module.exports = function drawAncestors(gd, cd, entry, slices, opts) {
134134

135135
pt._text = (helpers.getPtLabel(pt) || '').split('<br>').join(' ') || '';
136136

137-
var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext');
137+
var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext')
138+
.classed('user-select-none', true);
139+
138140
var sliceText = Lib.ensureSingle(sliceTextGroup, 'text', '', function(s) {
139141
// prohibit tex interpretation until we can handle
140142
// tex and regular text together

src/traces/treemap/draw_descendants.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) {
175175
}
176176
}
177177

178-
var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext');
178+
var sliceTextGroup = Lib.ensureSingle(sliceTop, 'g', 'slicetext')
179+
.classed('user-select-none', true);
180+
179181
var sliceText = Lib.ensureSingle(sliceTextGroup, 'text', '', function(s) {
180182
// prohibit tex interpretation until we can handle
181183
// tex and regular text together

0 commit comments

Comments
 (0)