123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- @use 'sass:map';
- @use 'mixins/mixins' as *;
- @use 'mixins/utils' as *;
- @use 'mixins/var' as *;
- @use 'common/var' as *;
- $slider-height: () !default;
- $slider-height: map.merge(
- (
- 'large': 40px,
- 'default': 32px,
- 'small': 24px,
- ),
- $slider-height
- );
- @include b(slider) {
- @include set-component-css-var('slider', $slider);
- }
- @include b(slider) {
- width: 100%;
- height: map.get($slider-height, 'default');
- display: flex;
- align-items: center;
- @include e(runway) {
- flex: 1;
- height: getCssVar('slider-height');
- background-color: getCssVar('slider-runway-bg-color');
- border-radius: getCssVar('slider-border-radius');
- position: relative;
- cursor: pointer;
- &.show-input {
- margin-right: 30px;
- width: auto;
- }
- &.is-disabled {
- cursor: default;
- .#{$namespace}-slider__bar {
- background-color: getCssVar('slider-disabled-color');
- }
- .#{$namespace}-slider__button {
- border-color: getCssVar('slider-disabled-color');
- }
- .#{$namespace}-slider__button-wrapper {
- &:hover,
- &.hover {
- cursor: not-allowed;
- }
- &.dragging {
- cursor: not-allowed;
- }
- }
- .#{$namespace}-slider__button {
- &:hover,
- &.hover,
- &.dragging {
- transform: scale(1);
- }
- &:hover,
- &.hover {
- cursor: not-allowed;
- }
- &.dragging {
- cursor: not-allowed;
- }
- }
- }
- }
- @include e(input) {
- flex-shrink: 0;
- width: 130px;
- }
- @include e(bar) {
- height: getCssVar('slider-height');
- background-color: getCssVar('slider-main-bg-color');
- border-top-left-radius: getCssVar('slider-border-radius');
- border-bottom-left-radius: getCssVar('slider-border-radius');
- position: absolute;
- }
- @include e(button-wrapper) {
- height: getCssVar('slider-button-wrapper-size');
- width: getCssVar('slider-button-wrapper-size');
- position: absolute;
- z-index: 1;
- top: getCssVar('slider-button-wrapper-offset');
- transform: translateX(-50%);
- background-color: transparent;
- text-align: center;
- user-select: none;
- line-height: normal;
- outline: none;
- @include utils-vertical-center;
- &:hover,
- &.hover {
- cursor: grab;
- }
- &.dragging {
- cursor: grabbing;
- }
- }
- @include e(button) {
- display: inline-block;
- width: getCssVar('slider-button-size');
- height: getCssVar('slider-button-size');
- vertical-align: middle;
- border: solid 2px getCssVar('slider-main-bg-color');
- background-color: getCssVar('color-white');
- border-radius: 50%;
- box-sizing: border-box;
- transition: getCssVar('transition-duration-fast');
- user-select: none;
- &:hover,
- &.hover,
- &.dragging {
- transform: scale(1.2);
- }
- &:hover,
- &.hover {
- cursor: grab;
- }
- &.dragging {
- cursor: grabbing;
- }
- }
- @include e(stop) {
- position: absolute;
- height: getCssVar('slider-height');
- width: getCssVar('slider-height');
- border-radius: getCssVar('border-radius-circle');
- background-color: getCssVar('slider-stop-bg-color');
- transform: translateX(-50%);
- }
- @include e(marks) {
- top: 0;
- left: 12px;
- width: 18px;
- height: 100%;
- @include e(marks-text) {
- position: absolute;
- transform: translateX(-50%);
- font-size: 14px;
- color: getCssVar('color-info');
- margin-top: 15px;
- white-space: pre;
- }
- }
- @include when(vertical) {
- position: relative;
- display: inline-flex;
- width: auto;
- height: 100%;
- flex: 0;
- .#{$namespace}-slider__runway {
- width: getCssVar('slider-height');
- height: 100%;
- margin: 0 16px;
- }
- .#{$namespace}-slider__bar {
- width: getCssVar('slider-height');
- height: auto;
- border-radius: 0 0 3px 3px;
- }
- .#{$namespace}-slider__button-wrapper {
- top: auto;
- left: getCssVar('slider-button-wrapper-offset');
- transform: translateY(50%);
- }
- .#{$namespace}-slider__stop {
- transform: translateY(50%);
- }
- @include e(marks-text) {
- margin-top: 0;
- left: 15px;
- transform: translateY(50%);
- }
- }
- @each $size in (large, small) {
- @include m($size) {
- height: map.get($slider-height, $size);
- @include e(runway) {
- }
- }
- }
- }
|