diff --git a/docs/src/pages/lab/slider/CustomIconSlider.js b/docs/src/pages/lab/slider/CustomIconSlider.js
index 94cf4e782071ec..f409efb05dd020 100644
--- a/docs/src/pages/lab/slider/CustomIconSlider.js
+++ b/docs/src/pages/lab/slider/CustomIconSlider.js
@@ -37,7 +37,7 @@ class CustomIconSlider extends React.Component {
Image thumb
Icon thumb
}
diff --git a/docs/src/pages/lab/slider/DisabledSlider.js b/docs/src/pages/lab/slider/DisabledSlider.js
index 56747d7bc46806..3307d4b2a34968 100644
--- a/docs/src/pages/lab/slider/DisabledSlider.js
+++ b/docs/src/pages/lab/slider/DisabledSlider.js
@@ -17,9 +17,9 @@ function DisabledSlider(props) {
return (
-
-
-
+
+
+
);
}
diff --git a/docs/src/pages/lab/slider/SimpleSlider.js b/docs/src/pages/lab/slider/SimpleSlider.js
index a95faf14812786..e418d05d049597 100644
--- a/docs/src/pages/lab/slider/SimpleSlider.js
+++ b/docs/src/pages/lab/slider/SimpleSlider.js
@@ -30,7 +30,7 @@ class SimpleSlider extends React.Component {
Slider label
-
+
);
}
diff --git a/packages/material-ui-lab/src/Slider/Slider.js b/packages/material-ui-lab/src/Slider/Slider.js
index 5ef370e8d1824a..6b39e8a5c6e232 100644
--- a/packages/material-ui-lab/src/Slider/Slider.js
+++ b/packages/material-ui-lab/src/Slider/Slider.js
@@ -16,7 +16,7 @@ export const styles = theme => {
const trackTransitions = theme.transitions.create(['width', 'height'], commonTransitionsOptions);
const thumbCommonTransitions = theme.transitions.create(
- ['width', 'height', 'left', 'right', 'top', 'box-shadow'],
+ ['width', 'height', 'left', 'right', 'bottom', 'box-shadow'],
commonTransitionsOptions,
);
// no transition on the position
@@ -76,6 +76,7 @@ export const styles = theme => {
transform: 'translate(-50%, 0)',
left: '50%',
top: 'initial',
+ bottom: 0,
width: 2,
},
},
@@ -120,6 +121,9 @@ export const styles = theme => {
'&$jumped': {
boxShadow: `0px 0px 0px ${pressedOutlineRadius * 2}px ${colors.thumbOutline}`,
},
+ '&$vertical': {
+ transform: 'translate(-50%, +50%)',
+ },
},
/* Class applied to the thumb element if custom thumb icon provided. */
thumbIconWrapper: {
@@ -152,10 +156,10 @@ function roundToStep(number, step) {
function getOffset(node) {
const { pageYOffset, pageXOffset } = global;
- const { left, top } = node.getBoundingClientRect();
+ const { left, bottom } = node.getBoundingClientRect();
return {
- top: top + pageYOffset,
+ bottom: bottom + pageYOffset,
left: left + pageXOffset,
};
}
@@ -176,10 +180,10 @@ function getMousePosition(event) {
function calculatePercent(node, event, isVertical, isRtl) {
const { width, height } = node.getBoundingClientRect();
- const { top, left } = getOffset(node);
+ const { bottom, left } = getOffset(node);
const { x, y } = getMousePosition(event);
- const value = isVertical ? y - top : x - left;
+ const value = isVertical ? bottom - y : x - left;
const onePercent = (isVertical ? height : width) / 100;
return isRtl && !isVertical ? 100 - clamp(value / onePercent) : clamp(value / onePercent);
@@ -413,6 +417,7 @@ class Slider extends React.Component {
[classes.jumped]: !disabled && currentState === 'jumped',
[classes.focused]: !disabled && currentState === 'focused',
[classes.activated]: !disabled && currentState === 'activated',
+ [classes.vertical]: vertical,
};
const className = classNames(
@@ -428,17 +433,12 @@ class Slider extends React.Component {
[classes.vertical]: vertical,
});
- const trackBeforeClasses = classNames(classes.track, classes.trackBefore, commonClasses, {
- [classes.vertical]: vertical,
- });
-
- const trackAfterClasses = classNames(classes.track, classes.trackAfter, commonClasses, {
- [classes.vertical]: vertical,
- });
+ const trackBeforeClasses = classNames(classes.track, classes.trackBefore, commonClasses);
+ const trackAfterClasses = classNames(classes.track, classes.trackAfter, commonClasses);
const trackProperty = vertical ? 'height' : 'width';
const horizontalMinimumPosition = theme.direction === 'ltr' ? 'left' : 'right';
- const thumbProperty = vertical ? 'top' : horizontalMinimumPosition;
+ const thumbProperty = vertical ? 'bottom' : horizontalMinimumPosition;
const inlineTrackBeforeStyles = { [trackProperty]: this.calculateTrackBeforeStyles(percent) };
const inlineTrackAfterStyles = { [trackProperty]: this.calculateTrackAfterStyles(percent) };
const inlineThumbStyles = { [thumbProperty]: `${percent}%` };