Skip to content

Commit 851d204

Browse files
committed
fix(slider): fix Slider origin and decimal issues
closes #124
1 parent af3552a commit 851d204

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

src/components/Slider/Slider.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ const Slider = React.forwardRef(function Slider(props, ref) {
284284

285285
const marks =
286286
marksProp === true && step !== null
287-
? [...Array(Math.floor((max - min) / step) + 1)].map((_, index) => ({
287+
? [...Array(Math.round((max - min) / step) + 1)].map((_, index) => ({
288288
value: min + step * index
289289
}))
290290
: marksProp || [];
@@ -497,7 +497,8 @@ const Slider = React.forwardRef(function Slider(props, ref) {
497497
isDisabled={disabled}
498498
vertical={vertical}
499499
style={{
500-
[vertical ? 'bottom' : 'left']: `${(m.value / (max - min)) *
500+
[vertical ? 'bottom' : 'left']: `${((m.value - min) /
501+
(max - min)) *
501502
100}%`
502503
}}
503504
key={(m.value / (max - min)) * 100}
@@ -516,7 +517,7 @@ const Slider = React.forwardRef(function Slider(props, ref) {
516517
id='swag'
517518
style={{
518519
[vertical ? 'bottom' : 'left']: `${(vertical ? -100 : 0) +
519-
(100 * valueDerived) / (max - min)}%`
520+
(100 * (valueDerived - min)) / (max - min)}%`
520521
}}
521522
tabIndex={disabled ? null : 0}
522523
vertical={vertical}

src/components/Slider/Slider.spec.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -194,16 +194,18 @@ describe('<Slider />', () => {
194194

195195
it('should use min as the step origin', () => {
196196
const { getByRole } = renderWithTheme(
197-
<Slider defaultValue={150} step={100} max={750} min={150} />
197+
<Slider defaultValue={4} step={2} max={12} min={2} />
198198
);
199199
const thumb = getByRole('slider');
200200
thumb.focus();
201201

202202
fireEvent.keyDown(document.activeElement, moveRightEvent);
203-
expect(thumb).toHaveAttribute('aria-valuenow', '250');
203+
expect(thumb).toHaveAttribute('aria-valuenow', '6');
204204

205205
fireEvent.keyDown(document.activeElement, moveLeftEvent);
206-
expect(thumb).toHaveAttribute('aria-valuenow', '150');
206+
expect(thumb).toHaveAttribute('aria-valuenow', '4');
207+
208+
expect(thumb.style.left).toBe('20%');
207209
});
208210

209211
it('should reach right edge value', () => {

src/components/Slider/Slider.stories.js

+12-3
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,26 @@ storiesOf('Slider', module)
4646
.add('restricted values', () => (
4747
<Slider
4848
size='300px'
49-
min={0}
49+
min={1.35}
5050
max={6}
5151
step={null}
52-
defaultValue={0}
5352
marks={[
54-
{ value: 0, label: '0°C' },
5553
{ value: 1.35, label: '1.35°C' },
54+
{ value: 2.75, label: '2.75°C' },
5655
{ value: 6, label: '6°C' }
5756
]}
5857
/>
5958
))
59+
.add('decimal values', () => (
60+
<Slider
61+
size='300px'
62+
min={0.8}
63+
max={1.2}
64+
defaultValue={1}
65+
step={0.1}
66+
marks
67+
/>
68+
))
6069
.add('disabled', () => (
6170
<Slider
6271
disabled

0 commit comments

Comments
 (0)