Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit 1322548

Browse files
committed
update rangeslider and add a test for it
1 parent 65a1ba0 commit 1322548

File tree

2 files changed

+48
-18
lines changed

2 files changed

+48
-18
lines changed

src/fragments/RangeSlider.react.js

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,11 @@ import {propTypes, defaultProps} from '../components/RangeSlider.react';
1010
export default class RangeSlider extends Component {
1111
constructor(props) {
1212
super(props);
13-
this.propsToState = this.propsToState.bind(this);
1413
this.DashSlider = props.tooltip
1514
? createSliderWithTooltip(Range)
1615
: Range;
1716
this._computeStyle = computeSliderStyle();
18-
this.state = {
19-
value: props.value,
20-
drag_value: props.value,
21-
};
22-
this.props.setProps({drag_value: props.value});
23-
}
24-
25-
propsToState(newProps) {
26-
if (newProps.value !== this.props.value) {
27-
this.setState({value: newProps.value, drag_value: newProps.value});
28-
}
17+
this.state = {value: props.value};
2918
}
3019

3120
UNSAFE_componentWillReceiveProps(newProps) {
@@ -34,11 +23,17 @@ export default class RangeSlider extends Component {
3423
? createSliderWithTooltip(Range)
3524
: Range;
3625
}
37-
this.propsToState(newProps);
26+
if (newProps.value !== this.props.value) {
27+
this.props.setProps({drag_value: newProps.value});
28+
this.setState({value: newProps.value});
29+
}
3830
}
3931

4032
UNSAFE_componentWillMount() {
41-
this.propsToState(this.props);
33+
if (this.props.value !== null) {
34+
this.props.setProps({drag_value: this.props.value});
35+
this.setState({value: this.props.value});
36+
}
4237
}
4338

4439
render() {

tests/integration/sliders/test_sliders.py

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,11 @@ def update_output(value):
188188
return "You have selected {}".format(value)
189189

190190
dash_dcc.start_server(app)
191+
slider = dash_dcc.find_element("#slider")
192+
191193
dash_dcc.wait_for_text_to_equal("#out-value", "You have selected 5")
192-
# assert dash_dcc.find_element("#out-drag-value").text == "You have dragged 5"
193-
# dash_dcc.wait_for_text_to_equal("#out-drag-value", "You have dragged 5")
194+
dash_dcc.wait_for_text_to_equal("#out-drag-value", "You have dragged 5")
194195

195-
slider = dash_dcc.find_element("#slider")
196196
dash_dcc.click_and_hold_at_coord_fractions(slider, 0.25, 0.25)
197197
dash_dcc.move_to_coord_fractions(slider, 0.75, 0.25)
198198
dash_dcc.wait_for_text_to_equal("#out-drag-value", "You have dragged 15")
@@ -203,4 +203,39 @@ def update_output(value):
203203

204204

205205
def test_slsl007_drag_value_rangeslider(dash_dcc):
206-
pass # todo: xx
206+
app = dash.Dash(__name__)
207+
app.layout = html.Div(
208+
[
209+
dcc.RangeSlider(
210+
id="slider",
211+
min=0,
212+
max=20,
213+
step=1,
214+
value=(5, 15),
215+
tooltip={"always_visible": True},
216+
),
217+
html.Div(id="out-value"),
218+
html.Div(id="out-drag-value"),
219+
]
220+
)
221+
222+
@app.callback(Output("out-drag-value", "children"), [Input("slider", "drag_value")])
223+
def update_output(value):
224+
value = value or (None, None)
225+
return "You have dragged {}-{}".format(*value)
226+
227+
@app.callback(Output("out-value", "children"), [Input("slider", "value")])
228+
def update_output(value):
229+
return "You have selected {}-{}".format(*value)
230+
231+
dash_dcc.start_server(app)
232+
slider = dash_dcc.find_element("#slider")
233+
234+
dash_dcc.wait_for_text_to_equal("#out-value", "You have selected 5-15")
235+
dash_dcc.wait_for_text_to_equal("#out-drag-value", "You have dragged 5-15")
236+
237+
dash_dcc.click_and_hold_at_coord_fractions(slider, 0.25, 0.25)
238+
dash_dcc.move_to_coord_fractions(slider, 0.5, 0.25)
239+
dash_dcc.wait_for_text_to_equal("#out-drag-value", "You have dragged 10-15")
240+
dash_dcc.release()
241+
dash_dcc.wait_for_text_to_equal("#out-value", "You have selected 10-15")

0 commit comments

Comments
 (0)