UNPKG

rsuite

Version:

A suite of react components

234 lines (195 loc) 4.6 kB
@import '../../styles/common'; // // Slider // -------------------------------------------------- .@{ns}slider { position: relative; .@{ns}tooltip { display: none; &.@{ns}tooltip-placement-top .@{ns}tooltip-arrow { margin: auto; left: 0; right: 0; } } &-disabled { opacity: 0.3; cursor: not-allowed; .@{ns}slider-bar, .@{ns}slider-handle::before { cursor: not-allowed; } } &-with-mark:not(&-vertical) { //White space for mark margin-bottom: @line-height-computed + @slider-mark-margin-top; } } // Mark .@{ns}slider-mark { position: absolute; top: @slider-bar-side-length + @slider-mark-margin-top; left: -2px; white-space: nowrap; &-content { margin-left: -50%; } } .@{ns}slider-last-mark { left: auto; right: -2px; .@{ns}slider-mark-content { margin-left: auto; margin-right: -50%; } } // Bar .@{ns}slider-bar { height: @slider-bar-side-length; border-radius: @slider-bar-side-length / 2; background-color: @slider-bar-default-bg; cursor: pointer; &:hover { background-color: @slider-bar-hover-bg; } .@{ns}slider-vertical & { height: 100%; width: @slider-bar-side-length; } } // Graduator .@{ns}slider-graduator { width: 100%; ul, li { list-style: none; } > ul { display: flex; padding-left: 0; width: 100%; > li { flex: 1 1 1%; position: relative; &:last-child::after, &::before { content: ''; display: block; position: absolute; width: @slider-calibration-diameter; height: @slider-calibration-diameter; border-radius: 50%; background-color: @slider-calibration-bg; box-sizing: border-box; border: @slider-calibration-border-width solid @slider-calibration-border-color; margin-left: -4px; top: -1px; transition: border-color 0.3s ease-in; // Vertical styles .@{ns}slider-vertical & { top: -4px; margin-left: -1px; } } &:last-child::after { right: -4px; // Vertical styles .@{ns}slider-vertical & { left: 0; top: auto; bottom: -4px; } } &.@{ns}slider-pass::before { border-color: @slider-calibration-pass-border-color; } &.@{ns}slider-active::before { visibility: hidden; } } } // Vertical styles .@{ns}slider-vertical & { display: block; height: 100%; > ul { width: @slider-bar-side-length; display: flex; flex-direction: column; height: 100%; padding: 0; & > li { display: block; padding: 0; } } } } // Progress bar .@{ns}slider-progress-bar { position: absolute; height: @slider-bar-side-length; border-radius: @slider-bar-side-length / 2 0 0 @slider-bar-side-length / 2; background-color: @slider-progress-bar-bg; .@{ns}slider-vertical & { width: @slider-bar-side-length; border-radius: @slider-bar-side-length / 2 @slider-bar-side-length / 2 0 0; } } // Handle .@{ns}slider-handle { position: absolute; top: -50%; &::before { content: ''; position: absolute; width: @slider-handle-diameter; height: @slider-handle-diameter; border-radius: 50%; border: @slider-handle-border-width solid @slider-handle-default-border-color; background-color: @slider-handle-default-bg; margin-left: -@slider-handle-diameter / 2; cursor: pointer; transition: box-shadow @slider-handle-transition, background-color @slider-handle-transition, transform @slider-handle-transition; } &:hover::before { box-shadow: @slider-handle-hover-box-shadow; } .@{ns}slider-dragging &::before, .@{ns}slider-dragging &:hover::before { box-shadow: none; transform: scale(1.2); } .@{ns}slider-vertical &::before { left: (@slider-handle-diameter - @slider-bar-side-length)/2; margin-top: -@slider-handle-diameter / 2; } } .@{ns}slider-handle:hover .@{ns}tooltip, .@{ns}slider-showtip .@{ns}tooltip { display: block; opacity: 1; top: -30px; .@{ns}slider-vertical & { top: -33px; // Make sure tooltip align center. margin-left: 3px; } } // Vertical .@{ns}slider-vertical { height: 100%; // Reset all setting .@{ns}slider-mark { top: -8px; left: @slider-bar-side-length + @slider-mark-margin-top; &-content { margin-left: auto; } } .@{ns}slider-last-mark { top: auto; bottom: -8px; } }