You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
5.2 KiB
212 lines
5.2 KiB
@import '../abstracts/variables';
|
|
|
|
.slider {
|
|
color: var(--palette-text-primary);
|
|
display: inline-block;
|
|
width: 100%;
|
|
user-select: none;
|
|
|
|
& > .typography {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
&.slider-vertical {
|
|
transform: rotate(270deg);
|
|
height: 100%;
|
|
width: unset;
|
|
}
|
|
|
|
.slider-input {
|
|
-webkit-appearance: none;
|
|
-moz-appearance: none;
|
|
position: relative;
|
|
display: block;
|
|
width: 100%;
|
|
background-color: transparent;
|
|
cursor: pointer;
|
|
|
|
&:focus {
|
|
outline: none;
|
|
}
|
|
|
|
&:active {
|
|
& + .slider-value-label {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@include slider-track {
|
|
border-radius: var(--default-borderradius);
|
|
width: 100%;
|
|
}
|
|
|
|
|
|
@include slider-thumb {
|
|
appearance: none;
|
|
-webkit-appearance: none;
|
|
border: none;
|
|
border-radius: 50%;
|
|
cursor: pointer;
|
|
transition: box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
|
|
}
|
|
|
|
&:disabled {
|
|
cursor: default;
|
|
opacity: 0.38;
|
|
|
|
@include slider-track {
|
|
background-color: var(--palette-text-disabled);
|
|
}
|
|
|
|
@include slider-thumb {
|
|
background-color: rgb( 0, 0, 0);
|
|
color: rgb(255, 255, 255);
|
|
box-shadow: 0 0 0 1px rgb( 255, 255, 255) !important;
|
|
transform: scale(4, 4);
|
|
|
|
&:hover {
|
|
box-shadow: 0 0 0 1px rgb( 255, 255, 255) !important;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@each $color in $palette-colors {
|
|
&.slider-#{$color} {
|
|
.slider-filled {
|
|
background-color: var(--palette-#{$color});
|
|
}
|
|
|
|
.slider-track-tick {
|
|
background-color: var(--palette-#{$color});
|
|
}
|
|
|
|
.slider-value-label {
|
|
color: var(--palette-#{$color}-text);
|
|
background-color: var(--palette-#{$color});
|
|
}
|
|
|
|
|
|
.slider-input {
|
|
@include slider-track {
|
|
background-color: rgba(var(--palette-#{$color}-rgb), 0.30);
|
|
}
|
|
|
|
@include slider-thumb {
|
|
background-color: var(--palette-#{$color});
|
|
box-shadow: 0px 1px 2px -1px rgba(var(--palette-#{$color}-rgb),0.3);
|
|
}
|
|
|
|
@include slider-thumb {
|
|
&:hover {
|
|
box-shadow: 0px 1px 2px -1px rgba(var(--palette-#{$color}-rgb),0.3),0 0 0 1px rgba(var(--palette-#{$color}-rgb), 0.24);
|
|
}
|
|
}
|
|
|
|
|
|
&:active, &:focus-visible {
|
|
@include slider-thumb {
|
|
box-shadow: 0px 1px 2px -1px rgba(var(--palette-#{$color}-rgb),0.3),0 0 0 2px rgba(var(--palette-#{$color}-rgb), 0.24);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$slider-sizes: ("small": 2, "medium": 4, "large": 6);
|
|
$tickcount: 50;
|
|
$margincount: 10;
|
|
$thumbscale: 6;
|
|
|
|
@each $size, $value in $slider-sizes {
|
|
&.slider-#{$size} {
|
|
.slider-filled {
|
|
height: #{$value}px;
|
|
}
|
|
|
|
.slider-track-tick {
|
|
width: #{$value}px;
|
|
height: #{$value}px;
|
|
}
|
|
|
|
.slider-track-tick-label {
|
|
transform: translateX(-50%) translateY(#{$tickcount + "%"});
|
|
}
|
|
|
|
.slider-input {
|
|
@include slider-track {
|
|
height: #{$value}px;
|
|
margin: #{$margincount}px 0;
|
|
}
|
|
|
|
@include slider-thumb {
|
|
height: #{$value}px;
|
|
width: #{$value}px;
|
|
transform: scale(#{$thumbscale}, #{$thumbscale});
|
|
}
|
|
}
|
|
}
|
|
|
|
$tickcount: $tickcount + 30;
|
|
$margincount: $margincount + 2;
|
|
$thumbscale: $thumbscale - 1;
|
|
}
|
|
|
|
|
|
|
|
.slider-container {
|
|
position: relative;
|
|
width: 100%;
|
|
display: flex;
|
|
align-content: center;
|
|
}
|
|
|
|
.slider-filled {
|
|
border-radius: var(--default-borderradius);
|
|
}
|
|
|
|
.slider-inner-container {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.slider-value-label {
|
|
position: absolute;
|
|
top: 0;
|
|
transform: translateX(-50%) translateY(-125%);
|
|
padding: 4px 8px;
|
|
text-align: center;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 12px;
|
|
border-radius: 2px;
|
|
line-height: normal;
|
|
opacity: 0;
|
|
transition: opacity .2s ease-in-out;
|
|
pointer-events: none;
|
|
user-select: none;
|
|
}
|
|
|
|
.slider-tickmarks {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
.slider-track-tick {
|
|
border-radius: 9999%;
|
|
background-color: var(--palette-primary);
|
|
}
|
|
|
|
.slider-track-tick-label {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
}
|