From ecbb253986a03293a41572f47acdd058ec08de81 Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Wed, 27 Apr 2016 14:17:32 +0800 Subject: [PATCH 1/3] fix: set `recent` default value correctly, close: #97 --- examples/range.js | 2 +- src/Slider.jsx | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/range.js b/examples/range.js index 2cd9a73..25c431f 100644 --- a/examples/range.js +++ b/examples/range.js @@ -95,7 +95,7 @@ ReactDOM.render(

Basic Range,`step=20`

- +

Basic Range,`step=20, dots`

diff --git a/src/Slider.jsx b/src/Slider.jsx index 07ea2d1..a330d7f 100644 --- a/src/Slider.jsx +++ b/src/Slider.jsx @@ -48,8 +48,9 @@ class Slider extends React.Component { if (props.range && upperBound === lowerBound) { if (lowerBound === max) { recent = 'lowerBound'; - } - if (upperBound === min) { + } else if (upperBound === min) { + recent = 'upperBound'; + } else { recent = 'upperBound'; } } else { From 37b7f508daaa2bb4b3d6552d9e0c372b91e29d88 Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Wed, 27 Apr 2016 14:29:45 +0800 Subject: [PATCH 2/3] fix: use the latest `step`, close: #96 --- src/Slider.jsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Slider.jsx b/src/Slider.jsx index a330d7f..3078a50 100644 --- a/src/Slider.jsx +++ b/src/Slider.jsx @@ -241,9 +241,8 @@ class Slider extends React.Component { return this.props.vertical ? rect.top : rect.left; } - getPrecision() { - const props = this.props; - const stepString = props.step.toString(); + getPrecision(step) { + const stepString = step.toString(); let precision = 0; if (stepString.indexOf('.') >= 0) { precision = stepString.length - stepString.indexOf('.') - 1; @@ -283,7 +282,7 @@ class Slider extends React.Component { const diffs = points.map((point) => Math.abs(val - point)); const closestPoint = points[diffs.indexOf(Math.min.apply(Math, diffs))]; - return step !== null ? parseFloat(closestPoint.toFixed(this.getPrecision())) : closestPoint; + return step !== null ? parseFloat(closestPoint.toFixed(this.getPrecision(step))) : closestPoint; } calcOffset(value) { From e4396ae4bd6ca695e93fda683af767f56bb21d1f Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Wed, 27 Apr 2016 14:35:47 +0800 Subject: [PATCH 3/3] refactor: simplify code --- src/Slider.jsx | 8 +------- src/Steps.jsx | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/Slider.jsx b/src/Slider.jsx index 3078a50..22919bc 100644 --- a/src/Slider.jsx +++ b/src/Slider.jsx @@ -46,13 +46,7 @@ class Slider extends React.Component { let recent; if (props.range && upperBound === lowerBound) { - if (lowerBound === max) { - recent = 'lowerBound'; - } else if (upperBound === min) { - recent = 'upperBound'; - } else { - recent = 'upperBound'; - } + recent = lowerBound === max ? 'lowerBound' : 'upperBound'; } else { recent = 'upperBound'; } diff --git a/src/Steps.jsx b/src/Steps.jsx index 5b7a2b5..208f10a 100644 --- a/src/Steps.jsx +++ b/src/Steps.jsx @@ -3,7 +3,7 @@ import classNames from 'classnames'; import warning from 'warning'; function calcPoints(vertical, marks, dots, step, min, max) { - warning(dots ? step : true, '`Slider[step]` should be a positive number in order to make Slider[dots] work.'); + warning(dots ? step > 0 : true, '`Slider[step]` should be a positive number in order to make Slider[dots] work.'); const points = Object.keys(marks).map(parseFloat); if (dots) { for (let i = min; i <= max; i = i + step) {