@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
261 lines • 7.1 kB
CSS
/*
* Slider component
*
*/
/*
* Utilities
*/
.dnb-slider {
--slider-track-height: 0.25rem;
--slider-thumb-size: 2rem;
--slider-button-size: 1.5rem;
--slider-space: 1rem;
--slider-line-before: black;
--slider-line-after: gray;
--slider-line-before--disabled: dimgray;
--slider-line-after--disabled: lightgray;
--slider-marker: var(--slider-line-before);
--slider-marker-height: calc(var(--slider-thumb-size) * 0.75);
--slider-marker-width: 0.125rem;
-webkit-user-select: none;
user-select: none;
-webkit-touch-callout: none;
display: flex;
font-size: var(--font-size-small);
line-height: var(--slider-thumb-size);
}
.dnb-slider--stretch {
width: 100%;
}
.dnb-slider--vertical {
display: flex;
width: auto;
height: 100%;
min-width: inherit;
min-height: inherit;
}
.dnb-slider__wrapper {
display: inline-flex;
flex-direction: column;
flex: 1;
width: 100%;
}
.dnb-slider--vertical .dnb-slider__wrapper {
align-items: center;
width: auto;
height: 100%;
}
.dnb-slider__inner {
display: inline-flex;
height: var(--slider-thumb-size);
}
.dnb-slider__suffix {
align-self: center;
}
.dnb-slider--vertical .dnb-slider__suffix {
padding-left: 0;
padding-top: 0.5rem;
}
.dnb-slider__marker {
position: absolute;
top: 0;
bottom: 0;
z-index: 3;
margin: auto;
width: var(--slider-marker-width);
height: var(--slider-marker-height);
background-color: var(--slider-marker);
}
.dnb-slider__marker:focus {
outline: none;
outline: none;
}
html[data-whatinput=keyboard] .dnb-slider__marker:focus {
--border-color: var(--focus-ring-color);
--border-width: var(--focus-ring-width);
box-shadow: 0 0 0 var(--border-width) var(--border-color);
border-color: transparent;
}
.dnb-slider__marker::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
transform: scale(10, 1);
}
.dnb-slider--vertical .dnb-slider__marker {
top: auto;
right: 0;
bottom: auto;
left: 0;
height: var(--slider-marker-width);
width: var(--slider-marker-height);
}
.dnb-slider--vertical .dnb-slider__marker::before {
transform: scale(1, 10);
}
.dnb-slider__track {
touch-action: none;
position: relative;
flex: 1;
margin: 0 calc(var(--slider-space) * 1.5);
min-width: 2rem;
cursor: pointer;
}
.dnb-slider--vertical .dnb-slider__track {
margin: calc(var(--slider-space) * 1.5) 0;
min-height: 2rem;
min-width: auto;
}
.dnb-slider--no-buttons .dnb-slider__track {
margin: 0 calc(var(--slider-space));
}
.dnb-slider--no-buttons.dnb-slider--vertical .dnb-slider__track {
margin: calc(var(--slider-space)) 0;
}
.dnb-slider--vertical .dnb-slider__inner {
flex-direction: column;
width: var(--slider-thumb-size);
height: inherit;
min-width: inherit;
min-height: inherit;
}
.dnb-slider__line {
position: absolute;
left: 0;
top: 50%;
margin: 0 calc(0px - var(--slider-space));
height: var(--slider-track-height);
transform: translate3d(0, -50%, 0);
background-color: var(--slider-line-before);
border-radius: var(--slider-track-height);
}
.dnb-slider__line__before {
z-index: 2;
}
.dnb-slider__line__after {
z-index: 1;
right: 0;
background-color: var(--slider-line-after);
}
.dnb-slider--vertical .dnb-slider__line {
width: var(--slider-track-height);
height: auto;
left: 50%;
top: 0;
margin: calc(0px - var(--slider-space)) 0;
transform: translate3d(-50%, 0, 0);
}
.dnb-slider--vertical .dnb-slider__line__before {
top: 0;
bottom: 0;
}
.dnb-slider--vertical .dnb-slider__line__after {
bottom: 0;
}
.dnb-slider__thumb {
box-shadow: var(--shadow-sharp);
}
.dnb-slider__button-helper, .dnb-slider__thumb {
position: absolute;
left: 0;
top: 0;
z-index: 4;
display: flex;
justify-content: center;
transform: translate3d(-50%, 0, 0);
border-radius: 50%;
}
.dnb-slider__button-helper,
.dnb-slider__button-helper .dnb-button, .dnb-slider__thumb,
.dnb-slider__thumb .dnb-button {
height: var(--slider-thumb-size);
width: var(--slider-thumb-size);
}
.dnb-slider--vertical .dnb-slider__thumb {
transform: translate3d(0, -50%, 0);
}
.dnb-slider__button.dnb-button--size-small {
height: var(--slider-button-size);
width: var(--slider-button-size);
line-height: var(--slider-button-size);
transform: translateY(0.25rem);
z-index: 2;
}
.dnb-slider--vertical .dnb-slider__button.dnb-button--size-small {
transform: translateX(0.25rem);
}
.dnb-slider__state--disabled .dnb-slider__track, .dnb-slider__state--disabled .dnb-slider__thumb, .dnb-slider__state--disabled .dnb-slider__line {
cursor: not-allowed;
}
.dnb-slider__state--animate .dnb-slider__thumb, .dnb-slider__state--animate .dnb-slider__line {
transition: left 250ms var(--easing-default), top 250ms var(--easing-default), bottom 250ms var(--easing-default), right 250ms var(--easing-default), box-shadow 250ms var(--easing-default);
}
@media (prefers-reduced-motion: reduce) {
.dnb-slider__state--animate .dnb-slider__thumb, .dnb-slider__state--animate .dnb-slider__line {
transition-duration: 0.01ms;
}
}
html[data-visual-test] .dnb-slider__thumb, html[data-visual-test] .dnb-slider__line {
transition: none ;
}
.dnb-slider__button-helper {
pointer-events: none;
z-index: 2;
opacity: 0;
transform: translate3d(0.0625rem, 0, 0);
}
.dnb-slider__button-helper:not(:disabled):focus ~ .dnb-button {
outline: none;
}
html[data-whatinput=keyboard] .dnb-slider__button-helper:not(:disabled):focus ~ .dnb-button {
--border-color: var(--focus-ring-color);
--border-width: var(--focus-ring-width);
box-shadow: 0 0 0 var(--border-width) var(--border-color);
border-color: transparent;
}
.dnb-slider > .dnb-form-label {
align-self: flex-start;
margin-right: 1rem;
line-height: var(--slider-thumb-size);
}
.dnb-slider > .dnb-form-label--vertical {
margin-right: 0;
line-height: var(--line-height-basis);
}
.dnb-slider__label--vertical {
flex-direction: column;
}
.dnb-slider__label--vertical.dnb-slider--vertical {
align-items: center;
}
.dnb-slider__label--vertical.dnb-slider--vertical .dnb-form-label {
text-align: center;
width: 100%;
margin-right: 0;
margin-bottom: 0.5rem;
}
.dnb-slider .dnb-form-status {
order: 2;
margin-top: 0.5rem;
}
.dnb-slider--vertical .dnb-form-status {
margin-top: 1rem;
}
@media screen and (max-width: 40em) {
.dnb-responsive-component .dnb-slider {
display: flex;
flex-direction: column;
align-items: flex-start;
margin-bottom: 0.5rem;
}
.dnb-responsive-component .dnb-slider > .dnb-form-label {
margin-bottom: 0.5rem;
}
}
.dnb-slider.dnb-skeleton .dnb-slider__line, .dnb-slider.dnb-skeleton .dnb-slider__marker, .dnb-slider.dnb-skeleton .dnb-slider__state--disabled .dnb-slider__line {
background-color: var(--skeleton-color);
}
.dnb-slider.dnb-skeleton .dnb-slider__track::before, .dnb-slider.dnb-skeleton .dnb-slider__track::after, .dnb-slider.dnb-skeleton .dnb-slider__state--disabled.dnb-slider__track::before, .dnb-slider.dnb-skeleton .dnb-slider__state--disabled.dnb-slider__track::after {
background-color: var(--skeleton-color);
}