Skip to content

Commit f20274e

Browse files
author
vvo
committed
fix(Slider): do not render Slider when range.min === range.max
1 parent 8c89862 commit f20274e

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

functional-tests/app/app.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ search.addWidget(
8282

8383
search.addWidget(
8484
instantsearch.widgets.currentRefinedValues({
85+
autoHideContainer: false,
8586
container: '#current-refined-values',
8687
cssClasses: {
8788
header: 'facet-title',

src/components/Slider/Slider.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ class Slider extends React.Component {
2222
}
2323

2424
render() {
25+
if (this.props.range.min === this.props.range.max) {
26+
// There's no need to try to render the Slider, it will not be usable
27+
// and will throw
28+
return null;
29+
}
30+
2531
// setup pips
2632
let pips;
2733
if (this.props.pips === false) {

src/components/Slider/__tests__/Slider-test.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ describe('Slider', () => {
1515
let renderer;
1616
let Slider;
1717
let Nouislider;
18+
let props;
1819

1920
beforeEach(() => {
2021
let {createRenderer} = TestUtils;
@@ -23,6 +24,9 @@ describe('Slider', () => {
2324
// need to be required AFTER jsdom has initialized global.window/navigator
2425
Slider = require('../Slider.js');
2526
Nouislider = require('react-nouislider');
27+
props = {
28+
range: {min: 0, max: 5000}
29+
};
2630
});
2731

2832

@@ -33,17 +37,22 @@ describe('Slider', () => {
3337
animate={false}
3438
behaviour="snap"
3539
connect
36-
cssClasses={{}}
3740
cssPrefix="ais-range-slider--"
3841
onChange={() => {}}
3942
pips={{density: 3, format: {to: function noRefCheck() {}}, mode: 'positions', stepped: true, values: [0, 50, 100]}}
40-
templateProps={{}}
43+
range={props.range}
4144
/>
4245
);
4346
});
4447

48+
it('should not render anything when ranges are equal', () => {
49+
props.range.min = props.range.max = 8;
50+
let out = render();
51+
expect(out).toEqual(null);
52+
});
53+
4554
function render() {
46-
renderer.render(<Slider cssClasses={{}} templateProps={{}} />);
55+
renderer.render(<Slider {...props} />);
4756
return renderer.getRenderOutput();
4857
}
4958
});

0 commit comments

Comments
 (0)