UNPKG

wix-style-react

Version:
284 lines (236 loc) • 6.14 kB
: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; }