Skip to content

Commit e32c830

Browse files
aulneauVeraZab
authored andcommitted
change from select to custom button for advanced trace selector
1 parent c82d00c commit e32c830

File tree

4 files changed

+61
-12
lines changed

4 files changed

+61
-12
lines changed

src/components/fields/TraceSelector.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import {
88
plotlyTraceToCustomTrace,
99
computeTraceOptionsFromSchema,
1010
} from 'lib';
11-
import TraceTypeSelector from 'components/widgets/TraceTypeSelector';
11+
import TraceTypeSelector, {
12+
TraceTypeSelectorButton,
13+
} from 'components/widgets/TraceTypeSelector';
14+
import Field from './Field';
1215

1316
class TraceSelector extends Component {
1417
constructor(props, context) {
@@ -96,12 +99,12 @@ class TraceSelector extends Component {
9699
const {advancedTraceTypeSelector} = this.context;
97100
if (advancedTraceTypeSelector) {
98101
return (
99-
<div
100-
className="trace-type-select-dropdown__wrapper"
101-
onClick={() => this.context.openModal(TraceTypeSelector, props)}
102-
>
103-
<UnconnectedDropdown {...props} />
104-
</div>
102+
<Field {...props}>
103+
<TraceTypeSelectorButton
104+
{...props}
105+
handleClick={() => this.context.openModal(TraceTypeSelector, props)}
106+
/>
107+
</Field>
105108
);
106109
}
107110

src/components/widgets/TraceTypeSelector.js

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
11
import React, {Component} from 'react';
22
import PropTypes from 'prop-types';
33
import {SearchIcon, ThumnailViewIcon, GraphIcon} from 'plotly-icons';
4-
import Modal, {ModalContent} from 'components/containers/Modal';
5-
import {traceTypeToPlotlyInitFigure, localize} from 'lib';
4+
import Modal from 'components/containers/Modal';
5+
import {
6+
traceTypeToPlotlyInitFigure,
7+
localize,
8+
plotlyTraceToCustomTrace,
9+
renderTraceIcon,
10+
} from 'lib';
11+
12+
export const TraceTypeSelectorButton = ({handleClick, fullValue, options}) => {
13+
const Icon = renderTraceIcon(fullValue);
14+
const {label} = options.find(type => type.value === fullValue)
15+
return (
16+
<div className="trace-type-select-button" onClick={() => handleClick()}>
17+
<div className="trace-type-select-button__icon">
18+
<Icon />
19+
</div>
20+
{label}
21+
</div>
22+
);
23+
};
624

725
const actions = ({value}) => [
826
{
@@ -44,7 +62,7 @@ const renderActionItems = (actionItems, item) =>
4462
* Trace Type Item
4563
*/
4664
const Item = ({item, active, handleClick}) => {
47-
const {label, value} = item;
65+
const {label, value, icon} = item;
4866
return (
4967
<div
5068
className={`trace-item${active ? ' trace-item--active' : ''}`}
@@ -54,7 +72,7 @@ const Item = ({item, active, handleClick}) => {
5472
{actions ? renderActionItems(actions, item) : null}
5573
</div>
5674
<div className="trace-item__image">
57-
<img src={`/_temp/ic-${value}.svg`} />
75+
<img src={`/_temp/ic-${icon ? icon : value}.svg`} />
5876
</div>
5977
<div className="trace-item__label">{label}</div>
6078
</div>
@@ -109,7 +127,7 @@ class TraceTypeSelector extends Component {
109127
render() {
110128
return (
111129
<Modal title="Select Chart Type">
112-
<div className="trace-grid">{this.renderCategories()}</div>
130+
<div className="trace-grid">{this.renderCategories()}</div>
113131
</Modal>
114132
);
115133
}

src/lib/traceTypes.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,16 +188,19 @@ export const traceTypes = _ => [
188188
},
189189
{
190190
value: 'scattergl',
191+
icon: 'scatter',
191192
label: _('Scatter'),
192193
category: chartCategory(_).WEB_GL,
193194
},
194195
{
195196
value: 'scatterpolarghl',
197+
icon: 'scatterpolar',
196198
label: _('Scatter Polar'),
197199
category: chartCategory(_).WEB_GL,
198200
},
199201
{
200202
value: 'heatmapgl',
203+
icon: 'heatmap',
201204
label: _('Heatmap'),
202205
category: chartCategory(_).WEB_GL,
203206
},

src/styles/components/widgets/trace-type-selector.scss renamed to src/styles/components/widgets/_trace-type-selector.scss

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,3 +175,28 @@ $item-size: 90px;
175175
}
176176
}
177177
}
178+
179+
.trace-type-select-button {
180+
display: flex;
181+
align-items: center;
182+
border: var(--border-default);
183+
width: 100%;
184+
height: 36px;
185+
border-radius: var(--border-radius);
186+
padding: 0 var(--spacing-quarter-unit);
187+
&:hover{
188+
cursor: pointer;
189+
border-color: var(--color-border-dark);
190+
}
191+
&__icon {
192+
max-width: 20px;
193+
margin-right: var(--spacing-quarter-unit);
194+
svg {
195+
max-width: 100%;
196+
display: block;
197+
*{
198+
fill: currentColor;
199+
}
200+
}
201+
}
202+
}

0 commit comments

Comments
 (0)