wix-style-react
Version:
284 lines (236 loc) • 6.14 kB
CSS
:import {
-st-from: '../Foundation/stylable/colors.st.css';
-st-named: D10-10, D10, D50, THEME-COLOR-10, THEME-COLOR-40, F00, B00, D80;
}
:import {
-st-from: "../Foundation/stylable/shadows.st.css";
-st-named: shadow30;
}
:import {
-st-from: '../Foundation/stylable/typography.st.css';
-st-named: text-small-normal;
}
:import {
-st-from: "wix-ui-core/dist/src/hocs/Focusable/Focusable.st.css";
-st-default: Focusable;
}
:import {
-st-from: "../Text/Text.st.css";
-st-default: Text;
}
:import {
-st-from: "../Tooltip/Tooltip.st.css";
-st-default: Tooltip;
}
:vars {
sliderPadding: 4.5px;
sliderRailHeight: 3px;
sliderMarginTop: 9px;
sliderMarginBottom: 6px;
sliderMarkLine: 6px;
sliderMarkTextMarginTop: 12px;
sliderMarkTextSize: 18px;
sliderThumbSize: 12px;
clickableAreaSize: 24px;
}
@custom-selector :--slider :global(.wsr-slider);
@custom-selector :--slider-disabled :global(.wsr-slider-disabled);
@custom-selector :--slider-with-marks :global(.wsr-slider-with-marks);
@custom-selector :--slider-rail :global(.wsr-slider-rail);
@custom-selector :--slider-track :global(.wsr-slider-track);
@custom-selector :--slider-mark :global(.wsr-slider-mark);
@custom-selector :--slider-mark-text :global(.wsr-slider-mark-text);
@custom-selector :--slider-mark-text-active :global(.wsr-slider-mark-text-active);
@custom-selector :--slider-step :global(.wsr-slider-step);
@custom-selector :--slider-vertical :global(.wsr-slider.wsr-slider-vertical);
.root {
height: 100%;
}
.root :--slider {
position: relative;
height: calc(value(sliderRailHeight) + 2 * value(sliderPadding));
width: 100%;
touch-action: none;
box-sizing: border-box;
margin: value(sliderMarginTop) 0 value(sliderMarginBottom) 0;
}
.root :--slider-vertical {
width: calc(value(sliderRailHeight) + 2 * value(sliderPadding));
height: 100%;
margin: 0 value(sliderMarginTop) 0 value(sliderMarginBottom);
}
.root :--slider:not(:--slider-disabled) {
cursor: pointer;
}
/* extending clickable area */
.root :--slider::before {
content: '';
position: absolute;
top: -12px;
bottom: -12px;
left: 0;
right: 0;
}
.root :--slider-with-marks {
height: calc(value(sliderRailHeight) + 2 * value(sliderPadding) + value(sliderMarginBottom) + value(sliderMarkLine) + value(sliderMarkTextMarginTop) + value(sliderMarkTextSize));
margin-bottom: 0;
}
/* extending clickable area*/
.root :--slider-with-marks::before {
content: '';
position: absolute;
top: -12px;
bottom: 0;
left: 0;
right: 0;
}
.root :--slider-rail {
position: absolute;
width: 100%;
background-color: value(THEME-COLOR-40);
height: value(sliderRailHeight);
border-radius: 10px;
margin: value(sliderPadding) 0;
}
.root :--slider-vertical :--slider-rail {
position: absolute;
height: 100%;
width: value(sliderRailHeight);
margin: 0 value(sliderPadding);
}
.root :--slider-track {
position: absolute;
left: 0;
background-color: value(THEME-COLOR-10);
height: value(sliderRailHeight);
border-radius: 10px;
margin: value(sliderPadding) 0;
}
.root :--slider-vertical :--slider-track {
position: absolute;
top: 0;
background-color: value(THEME-COLOR-10);
width: value(sliderRailHeight);
border-radius: 10px;
height: 100%;
margin: 0 value(sliderPadding);
}
.root :--slider-mark {
position: absolute;
top: calc(value(sliderRailHeight) + value(sliderMarkLine) + value(sliderPadding) + value(sliderMarginBottom));
left: 0;
width: 100%;
}
.root :--slider-vertical :--slider-mark {
position: absolute;
top: 0;
left: calc(value(sliderRailHeight) + value(sliderMarkLine) + value(sliderPadding) + value(sliderMarginBottom));
height: 100%;
}
.root :--slider-mark-text {
position: absolute;
display: inline-block;
vertical-align: middle;
text-align: center;
color: value(D10);
}
.root :--slider-mark-text-active {
color: value(D10);
}
.root :--slider-step {
position: absolute;
width: 100%;
height: value(sliderRailHeight);
background: transparent;
margin: value(sliderPadding) 0;
}
.root :--slider-vertical :--slider-step {
height: 100%;
width: value(sliderRailHeight);
}
.root :--slider-disabled :--slider-rail {
background-color: value(D10-10);
}
.root :--slider-disabled :--slider-track {
background-color: value(D50);
}
.root :--slider-vertical:--slider-disabled :--slider-track {
background-color: value(D50);
}
.sliderHandle {
-st-states: disabled;
position: absolute;
box-sizing:border-box;
touch-action: pan-x;
outline: none;
}
.sliderHandle:disabled {
cursor: default;
}
.sliderHandle:disabled .sliderThumb {
background-color: value(D50);
cursor: default;
}
.sliderHandle:not(:disabled) .sliderThumb:hovered {
transform: scale(1.5);
}
.sliderThumb {
-st-states: hovered;
margin: auto;
width: value(sliderThumbSize);
height: value(sliderThumbSize);
border-radius: 50%;
background-color: value(THEME-COLOR-10);
}
.sliderHandleWrapper {
-st-extends: Focusable;
}
.sliderHandleWrapper:focus-visible .sliderHandle:not(:disabled) .sliderThumb:not(:hovered) {
box-shadow: 0 0 0 3px value(F00);
z-index: 2;
}
.sliderHandleWrapper:focus .sliderHandle:not(:disabled) .sliderThumb {
box-shadow: 0 0 0 3px transparent;
/* rc-slider focus overwrite */
border: 0 solid transparent;
z-index: 2;
/* removing native browser focus */
outline: none;
}
.markLine {
position: relative;
margin: auto;
width: 1px;
height: value(sliderMarkLine);
background-color: value(D50);
}
:--slider-vertical .markLine {
position: relative;
margin: auto;
height: 1px;
width: value(sliderMarkLine);
background-color: value(D50);
}
.markValue {
position: relative;
margin-top: value(sliderMarkTextMarginTop);
}
:--slider-vertical .markValue {
position: relative;
margin-top: 0;
margin-left: value(sliderMarkTextMarginTop);
}
.mark {
-st-states: direction(enum(vertical, horizontal));
}
.mark:direction(vertical) {
display: flex;
flex-direction: row;
align-items: center;
}
.markLabel {
-st-extends: Text;
}
.sliderHandleTooltip {
-st-extends: Tooltip;
}