From ee0dd09a4fb1284dff4326d83747c9a7d62c5f40 Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Mon, 23 Nov 2015 15:57:51 +0800 Subject: [PATCH] fix: support decimal step --- package.json | 2 +- src/Slider.jsx | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8482037..bcff807 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rc-slider", - "version": "3.1.1", + "version": "3.1.2", "description": "slider ui component for react", "keywords": [ "react", diff --git a/src/Slider.jsx b/src/Slider.jsx index df8b3bb..e858937 100644 --- a/src/Slider.jsx +++ b/src/Slider.jsx @@ -203,6 +203,16 @@ class Slider extends React.Component { return rect.left; } + getPrecision() { + const props = this.props; + const stepString = props.step.toString(); + let precision = 0; + if (stepString.indexOf('.') >= 0) { + precision = stepString.length - stepString.indexOf('.') - 1; + } + return precision; + } + trimAlignValue(v) { const state = this.state || {}; const {handle, lowerBound, upperBound} = state; @@ -231,7 +241,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 closestPoint; + return step !== null ? parseFloat(closestPoint.toFixed(this.getPrecision())) : closestPoint; } calcOffset(value) {