Skip to content

Commit 6f8473f

Browse files
committed
use custom config visibility calculation in modifyPlotProps throughout while keeping existing logic
1 parent d889f5f commit 6f8473f

File tree

3 files changed

+43
-14
lines changed

3 files changed

+43
-14
lines changed

src/components/fields/HoverLabelNameLength.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, {Component} from 'react';
22
import PropTypes from 'prop-types';
3-
import {connectToContainer} from 'lib';
3+
import {connectToContainer, isValidCustomConfigObject} from 'lib';
44
import Field from './Field';
55
import RadioBlocks from '../widgets/RadioBlocks';
66
import NumericInput from '../widgets/NumericInput';
@@ -84,8 +84,11 @@ UnconnectedHoverLabelNameLength.contextTypes = {
8484
export default connectToContainer(UnconnectedHoverLabelNameLength, {
8585
modifyPlotProps: (props, context, plotProps) => {
8686
const {container} = plotProps;
87-
plotProps.isVisible =
87+
const baseRule =
8888
(container.hoverinfo && container.hoverinfo.includes('name')) ||
8989
(container.hovertemplate || container.hovertemplate === ' ');
90+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
91+
? plotProps.isVisible && baseRule
92+
: baseRule;
9093
},
9194
});

src/components/fields/LocationSelector.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, {Component} from 'react';
22
import PropTypes from 'prop-types';
3-
import {connectToContainer} from 'lib';
3+
import {connectToContainer, isValidCustomConfigObject, applyCustomConfigVisibility} from 'lib';
44
import Field from './Field';
55
import Radio from './Radio';
66
import {UnconnectedDropdown} from './Dropdown';
@@ -9,8 +9,11 @@ import DataSelector from './DataSelector';
99
const LocationmodeVisible = connectToContainer(UnconnectedDropdown, {
1010
modifyPlotProps: (props, context, plotProps) => {
1111
if (!plotProps.fullValue) {
12-
plotProps.isVisible = true;
1312
plotProps.fullValue = plotProps.container.locationmode;
13+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
14+
? applyCustomConfigVisibility(props, plotProps.fullValue, context.customConfig)
15+
: true;
16+
1417
return;
1518
}
1619
},

src/components/fields/derived.js

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@ import Info from './Info';
1111
import {UnconnectedColorPicker} from './ColorPicker';
1212
import {UnconnectedTextEditor} from './TextEditor';
1313
import {UnconnectedVisibilitySelect} from './VisibilitySelect';
14-
import {connectToContainer, getAllAxes, getAxisTitle, axisIdToAxisName} from 'lib';
14+
import {
15+
applyCustomConfigVisibility,
16+
connectToContainer,
17+
getAllAxes,
18+
getAxisTitle,
19+
axisIdToAxisName,
20+
isValidCustomConfigObject,
21+
} from 'lib';
1522

1623
export const AxisAnchorDropdown = connectToContainer(UnconnectedDropdown, {
1724
modifyPlotProps: (props, context, plotProps) => {
@@ -80,7 +87,9 @@ export const RangesliderVisible = connectToContainer(UnconnectedRadio, {
8087
if (!plotProps.fullValue) {
8188
plotProps.fullValue = false;
8289
plotProps.visible = false;
83-
plotProps.isVisible = true;
90+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
91+
? applyCustomConfigVisibility(props, plotProps.fullValue, context.customConfig)
92+
: true;
8493
return;
8594
}
8695
},
@@ -162,7 +171,9 @@ export const TickFormat = connectToContainer(UnconnectedDropdownCustom, {
162171
export const ShowInLegend = connectToContainer(UnconnectedVisibilitySelect, {
163172
modifyPlotProps: (props, context, plotProps) => {
164173
if (context.container.type && context.container.type !== 'sunburst') {
165-
plotProps.isVisible = context.fullLayout.showlegend;
174+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
175+
? plotProps.isVisible && context.fullLayout.showlegend
176+
: context.fullLayout.showlegend;
166177
}
167178

168179
return plotProps;
@@ -171,23 +182,31 @@ export const ShowInLegend = connectToContainer(UnconnectedVisibilitySelect, {
171182

172183
export const HistogramInfoVertical = connectToContainer(Info, {
173184
modifyPlotProps: (props, context, plotProps) => {
174-
plotProps.isVisible =
175-
context.fullContainer.type === 'histogram' && context.fullContainer.orientation === 'v';
185+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
186+
? plotProps.isVisible &&
187+
context.fullContainer.type === 'histogram' &&
188+
context.fullContainer.orientation === 'v'
189+
: context.fullContainer.type === 'histogram' && context.fullContainer.orientation === 'v';
176190
return plotProps;
177191
},
178192
});
179193

180194
export const HistogramInfoHorizontal = connectToContainer(Info, {
181195
modifyPlotProps: (props, context, plotProps) => {
182-
plotProps.isVisible =
183-
context.fullContainer.type === 'histogram' && context.fullContainer.orientation === 'h';
196+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
197+
? plotProps.isVisible &&
198+
context.fullContainer.type === 'histogram' &&
199+
context.fullContainer.orientation === 'h'
200+
: context.fullContainer.type === 'histogram' && context.fullContainer.orientation === 'h';
184201
return plotProps;
185202
},
186203
});
187204

188205
export const Histogram2d = connectToContainer(Info, {
189206
modifyPlotProps: (props, context, plotProps) => {
190-
plotProps.isVisible = context.fullContainer.type === 'histogram2d';
207+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
208+
? plotProps.isVisible && context.fullContainer.type === 'histogram2d'
209+
: context.fullContainer.type === 'histogram2d';
191210
return plotProps;
192211
},
193212
});
@@ -707,7 +726,9 @@ export const HovermodeDropdown = connectToContainer(UnconnectedVisibilitySelect,
707726

708727
export const HoverColor = connectToContainer(UnconnectedColorPicker, {
709728
modifyPlotProps: (props, context, plotProps) => {
710-
plotProps.isVisible = Boolean(context.fullLayout.hovermode);
729+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
730+
? plotProps.isVisible && Boolean(context.fullLayout.hovermode)
731+
: Boolean(context.fullLayout.hovermode);
711732
return plotProps;
712733
},
713734
});
@@ -717,7 +738,9 @@ export const LevelRendered = connectToContainer(UnconnectedDropdown, {
717738
const _ = context.localize;
718739

719740
if (context.container.ids && context.container.ids.length) {
720-
plotProps.isVisible = true;
741+
plotProps.isVisible = isValidCustomConfigObject(context.customConfig)
742+
? plotProps.isVisible
743+
: true;
721744
plotProps.options = [{label: _('Root'), value: ''}].concat(
722745
context.container.ids.map(i => ({label: i, value: i}))
723746
);

0 commit comments

Comments
 (0)